Повысить языковой стандарт & quot; Преобразование не выполнено & quot; для получения текста

Когда я запускаю этот пример кода из увеличение

#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 "ąę"

3

Решение

Boost выбрасывает это исключение, зачем пытаться конвертировать перевод.

Чтобы исправить это, просто измените поколение на:
locale::global(gen("pl_PL.UTF-8"));

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]