diff --git a/common/translation.cpp b/common/translation.cpp index 0b3d1237a9b..5598cbcf8cd 100644 --- a/common/translation.cpp +++ b/common/translation.cpp @@ -52,17 +52,12 @@ TranslationManager::TranslationManager() { const char *locale = setlocale(LC_ALL, ""); // Detect the language from the locale - if (!locale) { - strcpy(_syslang, "C"); - } else { - int len = strlen(locale); - if (len > 5) - len = 5; - strncpy(_syslang, locale, len); - _syslang[len] = 0; - } + if (!locale) + _syslang = "C"; + else + _syslang = locale; #else // DETECTLANG - strcpy(_syslang, "C"); + _syslang = "C"; #endif // DETECTLANG #ifdef TERMCONV @@ -84,7 +79,7 @@ TranslationManager::~TranslationManager() { void TranslationManager::setLanguage(const char *lang) { if (*lang == '\0') - po2c_setlang(_syslang); + po2c_setlang(_syslang.c_str()); else po2c_setlang(lang); diff --git a/common/translation.h b/common/translation.h index 7be21df60fa..a844c1f4387 100644 --- a/common/translation.h +++ b/common/translation.h @@ -61,7 +61,7 @@ typedef Array TLangArray; */ class TranslationManager : public Singleton { private: - char _syslang[6]; + Common::String _syslang; #ifdef TERMCONV iconv_t _conversion;