diff options
Diffstat (limited to '')
-rw-r--r-- | CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/main.cpp | 23 |
2 files changed, 22 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index d9091340..c73e14ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -256,9 +256,7 @@ elseif (STABLE_APPLICATION_BUILD) set(APPLICATION_BUILD 1) set(BASIC_ENV_CONFIG 1) # MULTI_LANG_SUPPORT now work only on Linux and macOS - if (LINUX OR APPLE) - set(MULTI_LANG_SUPPORT 1) - endif () + set(MULTI_LANG_SUPPORT 1) elseif (TEST_BUILD) message(STATUS "Build Test Cases") diff --git a/src/main.cpp b/src/main.cpp index b0537962..8250c77b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -147,13 +147,13 @@ void init_locale() { .GetLocaleDir() .c_str(); +#ifndef WINDOWS if (!lang.empty()) { std::string lc = lang.empty() ? "" : lang + ".UTF-8"; // set LC_ALL auto* locale_name = setlocale(LC_ALL, lc.c_str()); if (locale_name == nullptr) LOG(WARNING) << "set LC_ALL failed" << lc; -#ifndef WINDOWS auto language = getenv("LANGUAGE"); // set LANGUAGE std::string language_env = language == nullptr ? "en" : language; @@ -162,8 +162,27 @@ void init_locale() { if (setenv("LANGUAGE", language_env.c_str(), 1)) { LOG(WARNING) << "set LANGUAGE failed" << language_env; }; -#endif } +#else + if (!lang.empty()) { + std::string lc = lang.empty() ? "" : lang; + + // set LC_ALL + auto* locale_name = setlocale(LC_ALL, lc.c_str()); + if (locale_name == nullptr) LOG(WARNING) << "set LC_ALL failed" << lc; + + auto language = getenv("LANGUAGE"); + // set LANGUAGE + std::string language_env = language == nullptr ? "en" : language; + language_env.insert(0, lang + ":"); + language_env.insert(0, "LANGUAGE="); + LOG(INFO) << "language env" << language_env; + if (putenv(language_env.c_str())) { + LOG(WARNING) << "set LANGUAGE failed" << language_env; + }; + } +#endif + bindtextdomain(PROJECT_NAME, GpgFrontend::UI::GlobalSettingStation::GetInstance() |