aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSaturneric <[email protected]>2021-12-08 13:56:34 +0000
committerSaturneric <[email protected]>2021-12-08 13:56:34 +0000
commit90aa64269884e4b4b6ac7657dba24413bea1fed8 (patch)
tree215fa30f15409f6098200158ae1e978863ea12e0 /src
parentFix retina screen problem (diff)
downloadGpgFrontend-90aa64269884e4b4b6ac7657dba24413bea1fed8.tar.gz
GpgFrontend-90aa64269884e4b4b6ac7657dba24413bea1fed8.zip
Fixed Multi Language Problem on Windows.
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp23
1 files changed, 21 insertions, 2 deletions
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()