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

问题描述 投票:0回答:1

如何从第一个首选语言中获取 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;
}
c macos cocoa
1个回答
0
投票

https://ss64.com/locale.html
显得更完整,并将 12 列为
fr
(法语)。根据您非常法国的用户名,这似乎是一个非常明智的结果。所以您的代码似乎可以工作。[1] 您只是查看了不正确的文档,或者文档不完整。


  1. 但这并不正确。
    "%d"
    不是
    uint32_t
    的正确转换说明符。正确的说明符是
    "%" PRIu32
    ,它需要
    inttypes.h
© www.soinside.com 2019 - 2024. All rights reserved.