GRASS GIS 7 Programmer's Manual  7.0.3(2016)-r00000
locale.c
Go to the documentation of this file.
1 
17 #include <grass/config.h>
18 #include <stdlib.h>
19 #include <string.h>
20 #include <locale.h>
21 #include <grass/glocale.h>
22 #include <grass/gis.h>
23 
24 void G_init_locale(void)
25 {
26  static int initialized;
27  const char *gisbase;
28 
29  if (G_is_initialized(&initialized))
30  return;
31 
32  setlocale(LC_CTYPE, "");
33 
34 #if defined(HAVE_LIBINTL_H) && defined(USE_NLS)
35 #ifdef LC_MESSAGES
36  setlocale(LC_MESSAGES, "");
37 #endif
38 
39  gisbase = getenv("GISBASE");
40  if (gisbase && *gisbase) {
41  char localedir[GPATH_MAX];
42 
43  strcpy(localedir, gisbase);
44  strcat(localedir, "/locale");
45 
46  bindtextdomain("grasslibs", localedir);
47  bindtextdomain("grassmods", localedir);
48  }
49 #endif
50 
51  G_initialize_done(&initialized);
52 }
53 
54 
63 char *G_gettext(const char *package, const char *msgid)
64 {
65 #if defined(HAVE_LIBINTL_H) && defined(USE_NLS)
66  G_init_locale();
67 
68  return dgettext(package, msgid);
69 #else
70  return (char *)msgid;
71 #endif
72 }
73 
84 char *G_ngettext(const char *package, const char *msgids, const char *msgidp, unsigned long int n)
85 {
86 #if defined(HAVE_LIBINTL_H) && defined(USE_NLS)
87  G_init_locale();
88 
89  return dngettext(package, msgids, msgidp, n);
90 #else
91  return n == 1 ? (char *)msgids : (char *)msgidp;
92 #endif
93 }
char * G_gettext(const char *package, const char *msgid)
Gets localized text.
Definition: locale.c:63
char * G_ngettext(const char *package, const char *msgids, const char *msgidp, unsigned long int n)
Gets localized text with correct plural forms.
Definition: locale.c:84
int G_is_initialized(int *p)
Definition: counter.c:59
void G_initialize_done(int *p)
Definition: counter.c:76
void G_init_locale(void)
Definition: locale.c:24