diff --git a/src/i18n/I18nEngine.cpp b/src/i18n/I18nEngine.cpp index 3dcc26f..3c6d48e 100644 --- a/src/i18n/I18nEngine.cpp +++ b/src/i18n/I18nEngine.cpp @@ -106,7 +106,9 @@ std::string CI18nEngine::localizeEntry(const std::string& locale, uint64_t key, } CI18nLocale CI18nEngine::getSystemLocale() { - return CI18nLocale(std::locale("").name()); + try { + return CI18nLocale(std::locale("").name()); + } catch (...) { return CI18nLocale("en_US.UTF-8"); } } #ifdef HU_UNIT_TESTS diff --git a/src/i18n/I18nLocale.cpp b/src/i18n/I18nLocale.cpp index 8785bc6..2d77a29 100644 --- a/src/i18n/I18nLocale.cpp +++ b/src/i18n/I18nLocale.cpp @@ -49,13 +49,12 @@ std::string CI18nLocale::full() { #include TEST(I18n, Locale) { - setenv("LANG", "pl_PL.UTF-8", true); - setenv("LC_CTYPE", "pl_PL.UTF-8", true); - CI18nEngine engine; - EXPECT_EQ(engine.getSystemLocale().locale(), "pl_PL"); - EXPECT_EQ(engine.getSystemLocale().stem(), "pl"); + EXPECT_EQ(extractLocale("pl_PL.UTF-8"), "pl_PL"); + EXPECT_EQ(extractLocale("POSIX"), "en_US"); + EXPECT_EQ(extractLocale("*"), "en_US"); + EXPECT_EQ(extractLocale("LC_CTYPE=pl_PL.UTF-8"), "pl_PL"); } #endif