00001 00002 #include "config.h" 00003 #include "glocale.h" 00004 00005 #include <stdlib.h> 00006 #include <string.h> 00007 #include <locale.h> 00008 00009 static char * 00010 locale_dir(void) 00011 { 00012 static char localedir[4096]; 00013 00014 const char *gisbase; 00015 00016 if (*localedir) 00017 return localedir; 00018 00019 gisbase = getenv("GISBASE"); 00020 if (!gisbase || !*gisbase) 00021 return ""; 00022 00023 strcpy(localedir, gisbase); 00024 strcat(localedir, "/locale"); 00025 00026 return localedir; 00027 } 00028 00029 char * 00030 G_gettext(const char *package, const char *msgid) 00031 { 00032 #if defined(HAVE_LIBINTL_H) && defined(USE_NLS) 00033 static char now_bound[4096]; 00034 static int initialized; 00035 00036 if (!initialized) 00037 { 00038 setlocale(LC_CTYPE, ""); 00039 setlocale(LC_MESSAGES, ""); 00040 initialized = 1; 00041 } 00042 00043 if (strcmp(now_bound, package) != 0) 00044 { 00045 strcpy(now_bound, package); 00046 bindtextdomain(package, locale_dir()); 00047 } 00048 00049 return dgettext(package, msgid); 00050 #else 00051 return (char *) msgid; 00052 #endif 00053 } 00054