[英]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.