2010-02-17 199 views

回答

0

正如你可以從Replacements for gettext看到的 我有類似的問題,只有它變得更糟,如果你必須支持更多的平臺。

基本上gettext只適用於單線程交互式程序。

如果您有機會,那麼不同的翻譯系統(ICU看起來相當不錯)。

否則有讀取直接的.mo文件,並根據需要可以提供翻譯一些庫:

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

0

我想要使用gettext的國際化。但我需要翻譯messeges到不同的語言。

如果您的應用程序是單線程的,你可以切換語言環境,否則你無法使用 gettext庫用於這一目的。

是否可以爲一個gettext調用指定一個語言環境?

您可以使用支持gettext消息目錄的非官方Boost庫Boost.Locale。但它只是C++

1

如果您使用多個線程,那麼如果使用POSIX.1-2008中指定的語言環境相關設施(並在GLIBC 2.3中實現),則可以使用gettext。您可以使用的關鍵功能是uselocale,它有點像setlocale,但僅適用於當前線程。

如果您使用的是Windows,那麼你的運氣了 - MSVCRT並不uselocale提供等效的,我相信在這個平臺的libintl模擬setlocale本身,在非線程安全的方式IIRC。