c++ - 如何让 GetLocaleInfoEx 以特定语言返回其数据?
问题描述
我GetLocaleInfoEx
用于获取区域设置的“显示名称”:但是,我希望以该区域设置中使用的语言返回“显示名称”。
代码相当于此(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';
但是,返回的字符串是
Hiszpański (Meksyk)
大概是因为我的系统区域设置和显示语言设置为波兰语。
我能做些什么来强制GetLocaleInfoEx
以西班牙语返回字符串(在这种特殊情况下)?我希望它会像
Español (México)
到目前为止我尝试过的(两件事都是在打电话之前完成的GetLocaleInfoEx
):
- 将语言环境名称转换为 LCID 并设置线程语言环境:
SetThreadLocale(LocaleNameToLCID(localeName, 0));
- 设置首选 UI 语言:
const wchar_t preferredLangs[] = L"es-MX\0";
unsigned long numLangsSet;
SetProcessPreferredUILanguages(MUI_LANGUAGE_NAME, preferredLangs, &numLangsSet);
if (numLangsSet != 1) {
return 1;
}
但是,这些方法似乎都不起作用:返回的字符串仍然是Hiszpański (Meksyk)
.
还可以做些什么来设置所需GetLocaleInfoEx
的输出语言?
解决方案
您可以在LOCALE_SNATIVEDISPLAYNAME
调用.LOCALE_SLOCALIZEDDISPLAYNAME
GetLocaleInfoEx
推荐阅读
- react-native - React-native 相机显示空白屏幕
- php - 将 docker-compose 连接到 Laravel/Ubuntu 中的远程数据库
- python - 如何修复缺少 1 个必需的位置参数“请求”错误?
- ruby-on-rails - 格子和 QFX 文件中的交易是否有共同的唯一标识符?
- c# - itext7 PdfAConformanceException:超出最大阵列容量
- editor - Visual Studio .NET 2003 编辑器:Ctrl+向下箭头
- reactjs - 使用 React Query 时,如何确保跨数据集的查询对数据进行规范化?
- python - 每次单击后如何在 tkinter 中重置按钮操作?
- assembly - 将数据移动到变量中会产生无效的指令操作数
- cuda - Nvidia CUDA:Profiler 指示内存传输操作未异步执行