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

时间:2011-06-29 13:11:28

标签: c cocoa macos

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

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

谢谢!

1 个答案:

答案 0 :(得分:7)

使用CFLocaleCopyCurrentCFLocaleGetValueCFLocaleCopyPreferredLanguages(请注意,首选语言可能与语言环境的语言不匹配)。请参阅the documentation

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

#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);
}