我有許多共享一些通用庫的應用程序。我正在嘗試使用boost :: locale國際化我的應用程序。我很容易爲每個通用庫和每個特定應用程序創建一個單獨的.mo文件。我是遊蕩,如果它是可以同時使用多個郵件域這樣的:你可以在boost :: locale中使用多個消息域嗎?
boost::locale::generator gen;
gen.add_messages_path(".");
gen.add_messages_domain("lib1");
gen.add_messages_domain("lib2");
std::locale::global(gen("zh_CN.UTF-8"));
.
.
.
boost::locale::gettext("Show image");
我期待的boost ::區域設置在兩個lib1.mo和lib2.mo進行搜索,但是這似乎並沒有工作。只發現添加的第一個域的消息,在本例中是lib1.mo。如果我在lib1之前添加lib2,則只會找到lib2的消息。
我知道你可以在這樣的調用明確使用域名:
boost::locale::dgettext("lib2", "Show image");
這並不工作,但我想避免指定每次調用的域。我也不確定這對於用xgettext提取字符串很有效。
我想要做什麼?我錯過了什麼嗎?
如果您知道一個,請提出任何其他建議。
我使用msvc 9.0(2008)和boost 1.48。