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