gettext的区域设置“转换失败”

问题描述 投票:3回答:1

当我从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 "ąę"
c++ boost gettext mo boost-locale
1个回答
3
投票

Boost抛出这个异常为什么试图转换翻译。

要解决这个问题,只需将生成更改为:locale::global(gen("pl_PL.UTF-8"));

© www.soinside.com 2019 - 2024. All rights reserved.