获取用户的国家/地区和键盘语言

Jes*_*ica 5 c macos cocoa

为了呈现正确的菜单文本和UI的其他一些方面,我试图获得当前用户的国家和键盘语言.
我知道语言环境(通过env.变量),但我找不到获取这两个信息的方法.

代码在C for Mac OS X中.我可以使用Cocoa API来获取它们但是需要从C调用它们.任何想法?

谢谢!

LaC*_*LaC 7

使用CFLocaleCopyCurrent,CFLocaleGetValueCFLocaleCopyPreferredLanguages(请注意,首选语言可能与语言环境的语言不匹配).请参阅文档.

编辑:好的,这是一些示例代码.

#include <CoreFoundation/CoreFoundation.h>
#include <stdio.h>

int main (int argc, char **argv)
{
    CFLocaleRef loc = CFLocaleCopyCurrent();
    CFStringRef countryCode = CFLocaleGetValue (loc, kCFLocaleCountryCode);
    CFStringRef countryName = CFLocaleCopyDisplayNameForPropertyValue (loc, kCFLocaleCountryCode, countryCode);
    CFShow(countryCode);
    CFShow(countryName);
    CFArrayRef langs = CFLocaleCopyPreferredLanguages();
    CFStringRef langCode = CFArrayGetValueAtIndex (langs, 0);
    CFStringRef langName = CFLocaleCopyDisplayNameForPropertyValue (loc, kCFLocaleLanguageCode, langCode);
    CFShow(langCode);
    CFShow(langName);
}
Run Code Online (Sandbox Code Playgroud)