如何从第一个preferredLanguages中获取Windows区域设置代码?
目前,它返回我12(十进制),这不对应于任何windows区域设置(请参阅:https://learn.microsoft.com/en-us/openspecs/office_standards/ms-oe376/6c085406-a698-4e12-9d4d-c3b0ee3dbc4a)
#include <CoreFoundation/CoreFoundation.h>
int main() {
CFArrayRef preferredLanguages = CFLocaleCopyPreferredLanguages();
if (CFArrayGetCount(preferredLanguages) > 0) {
CFStringRef firstLanguage = CFArrayGetValueAtIndex(preferredLanguages, 0);
CFLocaleIdentifier localeIdentifier = CFLocaleCreateCanonicalLanguageIdentifierFromString(NULL, firstLanguage);
uint32_t windowsLocaleCode = CFLocaleGetWindowsLocaleCodeFromLocaleIdentifier(localeIdentifier);
printf("Windows locale code %d.\n", windowsLocaleCode);
} else {
printf("No preferred languages found.\n");
}
CFRelease(preferredLanguages);
return 0;
}
1条答案
按热度按时间mrphzbgm1#
https://ss64.com/locale.html
看起来更完整,并将12列为fr
(法语)。基于你非常法国的用户名,这似乎是一个非常明智的结果。所以你的代码看起来是可以工作的。[1]你只是在看不正确的文档,或者文档是不完整的。1.但这是不正确的。
%d
不是uint32_t
的正确转换说明符。您可以使用