summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/language.cpp7
-rw-r--r--src/modules.cpp7
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