为了呈现正确的菜单文本和UI的其他一些方面,我试图获取当前用户的国家和键盘语言。
我知道locale(通过env。变量),但我找不到获取这两个信息的方法。
代码在C中用于Mac OS X.我可以使用Cocoa API来获取它们但是需要从C调用它们。任何想法?
谢谢!
答案 0 :(得分:7)
使用CFLocaleCopyCurrent
,CFLocaleGetValue
和CFLocaleCopyPreferredLanguages
(请注意,首选语言可能与语言环境的语言不匹配)。请参阅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);
}