diff --git a/src/os/windows/win32.cpp b/src/os/windows/win32.cpp --- a/src/os/windows/win32.cpp +++ b/src/os/windows/win32.cpp @@ -541,23 +541,21 @@ const char *GetCurrentLocale(const char static WCHAR _cur_iso_locale[16] = L""; -void Win32SetCurrentLocaleName(const char *iso_code) +void Win32SetCurrentLocaleName(std::string iso_code) { /* Convert the iso code into the format that windows expects. */ - char iso[16]; - if (strcmp(iso_code, "zh_TW") == 0) { - strecpy(iso, "zh-Hant", lastof(iso)); - } else if (strcmp(iso_code, "zh_CN") == 0) { - strecpy(iso, "zh-Hans", lastof(iso)); + if (iso_code == "zh_TW") { + iso_code = "zh-Hant"; + } else if (iso_code == "zh_CN") { + iso_code = "zh-Hans"; } else { /* Windows expects a '-' between language and country code, but we use a '_'. */ - strecpy(iso, iso_code, lastof(iso)); - for (char *c = iso; *c != '\0'; c++) { - if (*c == '_') *c = '-'; + for (char &c : iso_code) { + if (c == '_') c = '-'; } } - MultiByteToWideChar(CP_UTF8, 0, iso, -1, _cur_iso_locale, lengthof(_cur_iso_locale)); + MultiByteToWideChar(CP_UTF8, 0, iso_code.c_str(), -1, _cur_iso_locale, lengthof(_cur_iso_locale)); } int OTTDStringCompare(std::string_view s1, std::string_view s2)