如何解决在 Windows 上使用 setlocale 更改语言
我有一个 CLI 程序,它使用 libintl 的 gettext,并调用 setlocale(LC_ALL,"") 将输出语言更改为用户的首选语言。
我正在一台以美国英语为默认语言环境的机器上进行开发,并且想要测试德语输出。这在 Linux 上很容易,我可以在其中使用环境变量更改语言,如下所示:LANGUAGE=de_DE ./a.out
Windows 上好像没有这样的环境变量? setlocale 的 CRT 参考说:
语言环境名称设置为 GetUserDefaultLocaleName 返回的值。
我找不到有关如何更改单个进程的默认语言环境的内容。居然还有这种事?
解决方法
您可以使用支持的语言环境字符串调用 setlocale
来设置每个进程的语言环境。
函数_configthreadlocale
用于控制setlocale
是影响程序中所有线程的locale还是只影响调用线程的locale。
为什么不在程序中设置语言环境?
没关系,结果证明问题与 setlocale 无关。该程序正在使用 /usr/share/locale 调用 bindtextdomain,这在 Windows 上不存在。一旦我将其更改为在正确的位置搜索 .mo 文件,set LANG=de
就会按预期工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。