在 Windows 上使用 setlocale 更改语言

时间:2021-05-09 17:24:20

标签: c winapi gettext

我有一个 CLI 程序,它使用 libintl 的 gettext,并调用 setlocale(LC_ALL, "") 将输出语言更改为用户的首选语言。

我正在一台以美国英语为默认语言环境的机器上进行开发,并且想要测试德语输出。这在 Linux 上很容易,我可以在其中使用环境变量更改语言,如下所示:LANGUAGE=de_DE ./a.out

Windows 上好像没有这样的环境变量? setlocale 的 CRT 参考说:

<块引用>

语言环境名称设置为 GetUserDefaultLocaleName 返回的值。

我找不到有关如何更改单个进程的默认语言环境的内容。居然还有这种事?

2 个答案:

答案 0 :(得分:0)

您可以使用支持的语言环境字符串调用 setlocale 来设置每个进程的语言环境。
函数_configthreadlocale用于控制setlocale是影响程序中所有线程的locale还是只影响调用线程的locale。
为什么不在程序中设置语言环境?

答案 1 :(得分:0)

没关系,结果证明问题与 setlocale 无关。该程序正在使用 /usr/share/locale 调用 bindtextdomain,这在 Windows 上不存在。一旦我将其更改为在正确的位置搜索 .mo 文件,set LANG=de 就会按预期工作。