Changeset - r27548:f07a388cf8d7
[Not reviewed]
master
0 2 0
Rubidium - 12 months ago 2023-06-07 04:57:15
rubidium@openttd.org
Codechange: use std::string for Windows' ISO code mangling
2 files changed with 9 insertions and 11 deletions:
0 comments (0 inline, 0 general)
src/os/windows/win32.cpp
Show inline comments
 
@@ -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)
src/strings.cpp
Show inline comments
 
@@ -1887,7 +1887,7 @@ bool ReadLanguagePack(const LanguageMeta
 
	SetCurrentGrfLangID(_current_language->newgrflangid);
 

	
 
#ifdef _WIN32
 
	extern void Win32SetCurrentLocaleName(const char *iso_code);
 
	extern void Win32SetCurrentLocaleName(std::string iso_code);
 
	Win32SetCurrentLocaleName(_current_language->isocode);
 
#endif
 

	
0 comments (0 inline, 0 general)