繁体   English   中英

没有过程语言环境的Gettext

[英]Gettext without process locale

我想为i18n使用gettext。 但是我需要将信息翻译成其他语言。 是否可以为一个gettext调用指定语言环境?

如果使用多个线程,那么如果使用POSIX.1-2008(在GLIBC 2.3中实现)中指定的与语言环境相关的功能,则可以使用gettext。 您将使用的关键功能是uselocale ,它有点像setlocale但仅适用于当前线程。

如果您使用的是Windows,那么您就不走运了uselocale不提供等效于uselocale ,我相信libintl在该平台上以非线程安全的方式IIRC模仿setlocale本身。

“ gettext的替换”中可以看到,我也遇到了类似的问题,只有在必须支持更多平台的情况下,情况才会变得更糟。

基本上,gettext仅真正适用于单线程交互式程序。

如果您有机会,那么可以使用其他翻译系统(ICU看起来不错)。

否则,有一些库可以直接读取.mo文件,并可以根据需要提供翻译:

http://art-blog.no-ip.info/cppcms/blog/post/16

我想为i18n使用gettext。 但是我需要将信息翻译成其他语言。

如果您的应用程序是单线程的,则可以切换语言环境,否则,您不能为此使用gettext库。

是否可以为一个gettext调用指定语言环境?

您可以使用支持gettext消息目录的非官方Boost库Boost.Locale 但这仅是C++

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM