[英]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文件,并可以根据需要提供翻译:
我想为i18n使用gettext。 但是我需要将信息翻译成其他语言。
如果您的应用程序是单线程的,则可以切换语言环境,否则,您不能为此使用gettext库。
是否可以为一个gettext调用指定语言环境?
您可以使用支持gettext消息目录的非官方Boost库Boost.Locale 。 但这仅是C++
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.