6

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

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

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

一点帮助?谢谢。

4

1 回答 1

1

root 肯定是一个奇怪的默认语言环境——这些天你看不到很多以 root 为母语的人。

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

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

ICU 4.4 现在有一个名为 ' icuinfo' 的测试程序,它是否也返回 root 作为默认语言环境?

这是在什么操作系统/平台上,以及 ICU 的哪个版本?

于 2010-06-22T02:15:26.350 回答