C语言 从首选语言获取Windows区域设置代码

tcomlyy6  于 2023-10-16  发布在  Windows
关注(0)|答案(1)|浏览(128)

如何从第一个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;
}
mrphzbgm

mrphzbgm1#

https://ss64.com/locale.html看起来更完整,并将12列为fr(法语)。基于你非常法国的用户名,这似乎是一个非常明智的结果。所以你的代码看起来是可以工作的。[1]你只是在看不正确的文档,或者文档是不完整的。
1.但这是不正确的。%d不是uint32_t的正确转换说明符。您可以使用

#include <inttypes.h>

printf( "%" PRIu32 ".\n", windowsLocaleCode );

相关问题