gettext(i18n)正在以root /系统进程运行

时间:2012-03-02 03:13:33

标签: c# locale gettext

以root身份运行进程的setlocale是不可能的,如何在这样的进程中使用gettext来获取本地化字符串(不会自动检测语言环境,也不能使用setlocale将其强制为特定值)。有没有解决方法?

编辑 - >添加代码,我用来测试问题。我强制将环境变量--LC_ALL,LANGUAGE,LANG更改为fr_FR.UTF8。我也明确地将语言环境设置为fr_FR.UTF8。所有putenv调用都返回0并且setlocale调用返回“C”。

 int err = putenv("LC_ALL=fr_FR.UTF8");
 err = putenv("LANG=fr_FR.UTF8");
 err = putenv("LANGUAGE=fr_FR.UTF8");
 char *loc = setlocale(LC_ALL, "fr_FR.UTF8");
 bindtextdomain("default", "locale");
 textdomain("default");
 char *text = gettext("hello");

如果我在用户进程中尝试,则相同的代码段可以正常工作。这两个进程的exe都在同一目录下,其中包含目录语言环境\ fr \ LC_MESSAGES \ default.mo

我们可以更改作为系统进程而不是用户运行的进程的语言环境吗?

0 个答案:

没有答案