Получение страны пользователя и языка клавиатуры - PullRequest
5 голосов
/ 29 июня 2011

Чтобы представить правильный текст меню и некоторые другие аспекты пользовательского интерфейса, я пытаюсь получить информацию о стране и языке клавиатуры текущего пользователя.
Я знаю локаль (через переменную env.), Но не могу найти способ получить эти две части информации.

Код написан на C для Mac OS X. Я могу использовать Cocoa API для их получения, но их нужно вызывать из C. Есть идеи?

Спасибо!

1 Ответ

7 голосов
/ 29 июня 2011

Используйте CFLocaleCopyCurrent, CFLocaleGetValue и CFLocaleCopyPreferredLanguages (обратите внимание, что предпочтительный язык может не соответствовать языку локали).См. документацию .

Редактировать: хорошо, вот пример кода.

#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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...