diff --git a/src/util/platform.cpp b/src/util/platform.cpp index 061c78e2..77513fa9 100644 --- a/src/util/platform.cpp +++ b/src/util/platform.cpp @@ -65,17 +65,21 @@ int platform::get_process_id() { #else // _WIN32 #include +#include "frontend/locale.hpp" void platform::configure_encoding() { } std::string platform::detect_locale() { - std::string programLocaleName = setlocale(LC_ALL, nullptr); - std::string preferredLocaleName = + const char* const programLocaleName = setlocale(LC_ALL, nullptr); + const char* const preferredLocaleName = setlocale(LC_ALL, ""); // locale name format: ll_CC.encoding - setlocale(LC_ALL, programLocaleName.c_str()); + if (programLocaleName && preferredLocaleName) { + setlocale(LC_ALL, programLocaleName); - return preferredLocaleName.substr(0, 5); + return std::string(preferredLocaleName, 5); + } + return langs::FALLBACK_DEFAULT; } void platform::sleep(size_t millis) {