为什么ICU的Locale :: getDefault()返回"root"?

Pau*_*cas 7 c++ locale icu

使用带有C++的ICU库我正在做:

char const *lang = Locale::getDefault().getLanguage();
Run Code Online (Sandbox Code Playgroud)

如果我编写一个小测试程序并在我的Mac系统上运行它,我就可以enlang.但是,在我正在进行的一个更大的团队项目中,我得到了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" 
Run Code Online (Sandbox Code Playgroud)

如果我写一个小C程序:

char const *lang = setlocale( LC_ALL, "" ):
Run Code Online (Sandbox Code Playgroud)

我得到en_US.ISO8859-1.

操作系统:Mac OS X 10.6.4(Snow Leopard)
ICU版本:4.3.4(最新版本可通过MacPorts获得).

一点帮助?谢谢.

Ste*_*mis 1

root 肯定是一个奇怪的默认语言环境 - 现在你不会看到很多本地 root 使用者。

但说真的,在更大的系统上假设有人没有调用过 的变体之一是否安全setDefault("root")

在这个系统上返回什么东西/usr/bin/locale(如果你可以运行它)?

ICU 4.4 现在有一个名为“ icuinfo”的测试程序,它是否也返回 root 作为默认区域设置?

它运行在什么操作系统/平台上,以及 ICU 的版本是什么?