X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=share%2Flang.c;h=999c2395180485c877ee903b9db6bfd1a5e73047;hb=4483dfdacd29073b37a6429ca8e123c80deac75a;hp=bd03bd59b74b2586de641c73154a7ef87ca39adf;hpb=02f9ab9f9dd5e4af976fbcce339d34d7ac976359;p=neverball diff --git a/share/lang.c b/share/lang.c index bd03bd5..999c239 100644 --- a/share/lang.c +++ b/share/lang.c @@ -17,8 +17,12 @@ #include #include #include +#include #include "lang.h" +#include "common.h" +#include "base_config.h" +#include "fs.h" /*---------------------------------------------------------------------------*/ @@ -26,16 +30,36 @@ /*---------------------------------------------------------------------------*/ -void lang_init(const char *domain, const char *default_dir) +void lang_init(const char *domain) { #if ENABLE_NLS - char *dir = getenv("NEVERBALL_LOCALE"); + char *dir = strdup(getenv("NEVERBALL_LOCALE")); - setlocale(LC_ALL, ""); + if (!dir) + { + if (path_is_abs(CONFIG_LOCALE)) + dir = strdup(CONFIG_LOCALE); + else + dir = concat_string(fs_base_dir(), "/", CONFIG_LOCALE, NULL); + } + + errno = 0; - bindtextdomain(domain, dir ? dir : default_dir); + if (!setlocale(LC_ALL, "")) + { + fprintf(stderr, "Failed to set LC_ALL to native locale: %s\n", + errno ? strerror(errno) : "Unknown error"); + } + + /* The C locale is guaranteed (sort of) to be available. */ + + setlocale(LC_NUMERIC, "C"); + + bindtextdomain(domain, dir); bind_textdomain_codeset(domain, DEFAULT_CODESET); textdomain(domain); + + free(dir); #else return; #endif