如何以特定语言制作 GetLocaleInfoEx return 其数据?
How to make GetLocaleInfoEx return its data in a specific language?
我正在使用 GetLocaleInfoEx
来获取语言环境的“显示名称”:但是,我希望“显示名称”return使用该语言环境中使用的语言语言环境。
代码是这样的(这里以ex-MX
为例):
const wchar_t localeName[] = L"es-MX";
wchar_t buf[1024];
GetLocaleInfoEx(localeName, LOCALE_SLOCALIZEDDISPLAYNAME, buf, sizeof(buf) / sizeof(*buf));
std::cout << to_utf8(buf) << '\n';
然而,return编辑的字符串是
Hiszpański (Meksyk)
大概是因为我的系统区域设置和显示语言设置为波兰语。
我能做些什么来强制 GetLocaleInfoEx
到 return 西班牙语字符串(在这种特殊情况下)?我希望它像
Español (México)
到目前为止我已经尝试过的(两件事都在 在 调用 GetLocaleInfoEx
之前完成):
- 将语言环境名称转换为 LCID 并设置线程语言环境:
SetThreadLocale(LocaleNameToLCID(localeName, 0));
- 设置首选 UI 语言:
const wchar_t preferredLangs[] = L"es-MX[=15=]";
unsigned long numLangsSet;
SetProcessPreferredUILanguages(MUI_LANGUAGE_NAME, preferredLangs, &numLangsSet);
if (numLangsSet != 1) {
return 1;
}
但是,这些方法中的 none 似乎有效:returned 字符串仍然是 Hiszpański (Meksyk)
.
还可以做什么来设置 GetLocaleInfoEx
输出的所需语言?
您可以在调用 GetLocaleInfoEx
时使用 LOCALE_SNATIVEDISPLAYNAME
而不是 LOCALE_SLOCALIZEDDISPLAYNAME
。
我正在使用 GetLocaleInfoEx
来获取语言环境的“显示名称”:但是,我希望“显示名称”return使用该语言环境中使用的语言语言环境。
代码是这样的(这里以ex-MX
为例):
const wchar_t localeName[] = L"es-MX";
wchar_t buf[1024];
GetLocaleInfoEx(localeName, LOCALE_SLOCALIZEDDISPLAYNAME, buf, sizeof(buf) / sizeof(*buf));
std::cout << to_utf8(buf) << '\n';
然而,return编辑的字符串是
Hiszpański (Meksyk)
大概是因为我的系统区域设置和显示语言设置为波兰语。
我能做些什么来强制 GetLocaleInfoEx
到 return 西班牙语字符串(在这种特殊情况下)?我希望它像
Español (México)
到目前为止我已经尝试过的(两件事都在 在 调用 GetLocaleInfoEx
之前完成):
- 将语言环境名称转换为 LCID 并设置线程语言环境:
SetThreadLocale(LocaleNameToLCID(localeName, 0));
- 设置首选 UI 语言:
const wchar_t preferredLangs[] = L"es-MX[=15=]";
unsigned long numLangsSet;
SetProcessPreferredUILanguages(MUI_LANGUAGE_NAME, preferredLangs, &numLangsSet);
if (numLangsSet != 1) {
return 1;
}
但是,这些方法中的 none 似乎有效:returned 字符串仍然是 Hiszpański (Meksyk)
.
还可以做什么来设置 GetLocaleInfoEx
输出的所需语言?
您可以在调用 GetLocaleInfoEx
时使用 LOCALE_SNATIVEDISPLAYNAME
而不是 LOCALE_SLOCALIZEDDISPLAYNAME
。