Bladeren bron

Introduce ngettext support and a new macro _n for it

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@59156 15284696-431f-4ddb-bdfa-cd5b030d7da7
Maris Nartiss 11 jaren geleden
bovenliggende
commit
8bfddec7d0
3 gewijzigde bestanden met toevoegingen van 23 en 0 verwijderingen
  1. 1 0
      include/defs/glocale.h
  2. 1 0
      include/glocale.h
  3. 21 0
      lib/gis/locale.c

+ 1 - 0
include/defs/glocale.h

@@ -3,5 +3,6 @@
 
 extern void G_init_locale(void);
 extern char *G_gettext(const char *, const char *) __attribute__((format_arg (2)));
+extern char *G_ngettext(const char *, const char *, const char *, unsigned long int) __attribute__((format_arg (2), format_arg (3)));
 
 #endif

+ 1 - 0
include/glocale.h

@@ -8,6 +8,7 @@
 #if defined(HAVE_LIBINTL_H) && defined(USE_NLS)
 #include <libintl.h>
 #define _(str) G_gettext(PACKAGE,(str))
+#define _n(strs,strp,num) G_ngettext(PACKAGE,(strs),(strp),num)
 #else
 #define _(str) (str)
 #endif

+ 21 - 0
lib/gis/locale.c

@@ -70,3 +70,24 @@ char *G_gettext(const char *package, const char *msgid)
     return (char *)msgid;
 #endif
 }
+
+/**
+ * \brief Gets localized text with correct plural forms.
+ *
+ * \param[in] package
+ * \param[in] msgids A singular version of string
+ * \param[in] msgidp A plural version of string
+ * \param[in] n The number
+ * \retval char * Pointer to string
+ */
+
+char *G_ngettext(const char *package, const char *msgids, const char *msgidp, unsigned long int n)
+{
+#if defined(HAVE_LIBINTL_H) && defined(USE_NLS)
+    G_init_locale();
+
+    return dngettext(package, msgids, msgidp, n);
+#else
+    return n == 1 ? (char *)msgids : (char *)msgidp;
+#endif
+}