diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/language.cpp | 7 | ||||
-rw-r--r-- | src/modules.cpp | 7 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/language.cpp b/src/language.cpp index ca55f0bb8..885394b0c 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -54,9 +54,12 @@ const Anope::string GetString(Anope::string language, LanguageString string) return language_strings[string]; #if GETTEXT_FOUND - setlocale(LC_ALL, language.c_str()); + extern int _nl_msg_cat_cntr; + ++_nl_msg_cat_cntr; + setenv("LANGUAGE", language.c_str(), 1); + setlocale(LC_ALL, "en_US"); const char *ret = dgettext("anope", language_strings[string].c_str()); - setlocale(LC_ALL, ""); + unsetenv("LANGUAGE"); return ret ? ret : ""; #endif diff --git a/src/modules.cpp b/src/modules.cpp index a76f2c5da..afcbb9ae6 100644 --- a/src/modules.cpp +++ b/src/modules.cpp @@ -299,9 +299,12 @@ void Module::SendMessage(BotInfo *from, User *to, const char *fmt, ...) #if GETTEXT_FOUND if (!language.empty()) { - setlocale(LC_ALL, language.c_str()); + extern int _nl_msg_cat_cntr; + ++_nl_msg_cat_cntr; + setenv("LANGUAGE", language.c_str(), 1); + setlocale(LC_ALL, "en_US"); message = dgettext(this->name.c_str(), fmt); - setlocale(LC_ALL, ""); + unsetenv("LANGUAGE"); } #endif |