Почему Locale :: getDefault () ICU возвращает "root"? - PullRequest
7 голосов
/ 20 июня 2010

Используя библиотеку ICU с C ++, я делаю:

char const *lang = Locale::getDefault().getLanguage();

Если я пишу небольшую тестовую программу и запускаю ее в своей системе Mac, я получаю en для lang.Однако внутри большого группового проекта, над которым я работаю, я получаю root.У кого-нибудь есть идеи, почему?Я нашел это:

http://userguide.icu -project.org / locale / resources

, поэтому я предполагаю, что при работе в более крупной системе некоторые ресурсы ICUне найдены, но я не знаю, какие ресурсы, почему они не найдены или как это исправить.

Дополнительная информация

/usr/bin/locale возвращает:

LANG="en_US.ISO8859-1"
LC_COLLATE="C" 
LC_CTYPE="C" 
LC_MESSAGES="C" 
LC_MONETARY="C" 
LC_NUMERIC="C" 
LC_TIME="C" 
LC_ALL="C" 

Если я напишу небольшую программу на C:

char const *lang = setlocale( LC_ALL, "" ):

Я получу en_US.ISO8859-1.

OS : Mac OS X 10.6.4(Снежный барс)
Версия ICU : 4.3.4 (последняя версия доступна через MacPorts).

Небольшая помощь?Спасибо.

1 Ответ

1 голос
/ 22 июня 2010

root, безусловно, является странным языком по умолчанию - в наши дни вы не видите много носителей языка.

А если серьезно, можно ли предположить в более крупной системе, что кто-то еще не назвал один из вариантов setDefault("root")?

Что возвращает что-то вроде /usr/bin/locale в этой системе (если вы можете запустить это)?

ICU 4.4 теперь имеет тестовую программу под названием icuinfo, он также возвращает root в качестве локали по умолчанию?

На какой ОС / платформе это находится и какая версия ICU?

...