为 gettext 提升语言环境 "Conversion failed"
Boost locale "Conversion failed" for gettext
当我 运行 这个示例代码来自 boost
#include <boost/locale.hpp>
#include <iostream>
using namespace std;
using namespace boost::locale;
int main()
{
generator gen;
// Specify location of dictionaries
gen.add_messages_path(".");
gen.add_messages_domain("foo");
// Generate locales and imbue them to iostream
locale::global(gen("pl_PL"));
cout.imbue(locale());
// Display a message using current system locale
cout << translate("Hello World") << endl;
}
我遇到这样的异常:std::runtime_error("Conversion failed")
仅当我在翻译中使用非 ascii 字符时才会出现问题。
示例内容来自我的 .mo
文件(命令:msgunfmt foo.mo
)
msgid "Hello World"
msgstr "ąę"
Boost 正在抛出此异常,为什么要尝试转换翻译。
要解决这个问题,只需将生成更改为:
locale::global(gen("pl_PL.UTF-8"));
当我 运行 这个示例代码来自 boost
#include <boost/locale.hpp>
#include <iostream>
using namespace std;
using namespace boost::locale;
int main()
{
generator gen;
// Specify location of dictionaries
gen.add_messages_path(".");
gen.add_messages_domain("foo");
// Generate locales and imbue them to iostream
locale::global(gen("pl_PL"));
cout.imbue(locale());
// Display a message using current system locale
cout << translate("Hello World") << endl;
}
我遇到这样的异常:std::runtime_error("Conversion failed")
仅当我在翻译中使用非 ascii 字符时才会出现问题。
示例内容来自我的 .mo
文件(命令:msgunfmt foo.mo
)
msgid "Hello World"
msgstr "ąę"
Boost 正在抛出此异常,为什么要尝试转换翻译。
要解决这个问题,只需将生成更改为:
locale::global(gen("pl_PL.UTF-8"));