summaryrefslogtreecommitdiff
path: root/navit/navit_nls.c
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2013-04-28 16:43:18 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2013-04-28 16:43:18 +0000
commit605f05bd9630ab5d7bdc8bcd4bce432d14627e58 (patch)
tree716c661abfc09710f64055805e59fb25d65592c0 /navit/navit_nls.c
parent1d94c3c46190ca91a043a141ed25ec1fa8015a5f (diff)
downloadnavit-605f05bd9630ab5d7bdc8bcd4bce432d14627e58.tar.gz
Add:Core:Allow multiple text domains for navit translations
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@5458 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/navit_nls.c')
-rw-r--r--navit/navit_nls.c50
1 files changed, 44 insertions, 6 deletions
diff --git a/navit/navit_nls.c b/navit/navit_nls.c
index 317410ded..692d3dcd3 100644
--- a/navit/navit_nls.c
+++ b/navit/navit_nls.c
@@ -1,33 +1,71 @@
#include "config.h"
#include "debug.h"
+#include <glib.h>
#ifdef USE_LIBGNUINTL
#include <libgnuintl.h>
#else
#include <libintl.h>
#endif
+static GList *textdomains;
+char *
+navit_nls_add_textdomain(const char *package, const char *dir)
+{
+#ifdef ENABLE_NLS
+ char *ret=bindtextdomain(package, dir);
+ bind_textdomain_codeset(package, "UTF-8");
+ textdomains=g_list_append(textdomains, g_strdup(package));
+ return ret;
+#endif
+}
+
+void
+navit_nls_remove_textdomain(const char *package)
+{
+#ifdef ENABLE_NLS
+ GList *i=textdomains;
+ while (i) {
+ if (!strcmp(i->data, package)) {
+ textdomains=g_list_remove_all(textdomains, i->data);
+ g_free(i->data);
+ return;
+ }
+ i=g_list_next(i);
+ }
+#endif
+}
const char *
navit_nls_gettext(const char *msgid)
{
#ifdef ENABLE_NLS
- return gettext(msgid);
-#else
- return msgid;
+ GList *i=textdomains;
+ while (i) {
+ const char *ret=dgettext(i->data, msgid);
+ if (ret != msgid)
+ return ret;
+ i=g_list_next(i);
+ }
#endif
+ return msgid;
}
const char *
navit_nls_ngettext(const char *msgid, const char *msgid_plural, unsigned long int n)
{
#ifdef ENABLE_NLS
- return ngettext(msgid, msgid_plural, n);
-#else
+ GList *i=textdomains;
+ while (i) {
+ const char *ret=dngettext(i->data, msgid, msgid_plural, n);
+ if (ret != msgid && ret != msgid_plural)
+ return ret;
+ i=g_list_next(i);
+ }
+#endif
if (n == 1) {
return msgid;
} else {
return msgid_plural;
}
-#endif
}