Решение проблемы с поддержкой кодировок в утилитах lrelease.exe и linguist.exe

в 0:00, , рубрики: qt

Для разработки графического интерфейса использую Qt 4.8.6. Возникла необходимость написать приложение поддерживающее несколько языков интерфейса. При написании столкнулся с проблемой — отсутствие поддержки кодировки Windows-1251 в утилитах lrelease.exe и linguist.exe.

Для решения проблемы необходимо:

  1. Собрать $QtDirsrctoolsbootstrap без ключа QT_NO_CODECS
  2. Собрать $QtDirtoolslinguistlrelease
  3. Собрать $QtDirtoolslinguistlinguist предварительно внеся изменения в файл $QtDirtoolslinguistlinguistmessagemodel.cpp

в методе: bool DataModel::release(const QString &fileName, bool verbose, bool ignoreUnfinished, TranslatorSaveMode mode, QWidget *parent)

после строки: tor.setLanguageCode(locale.name());
добавить строку: tor.setCodecName(m_codecName);

Изменения в исходном коде утилиты linguist.exe необходимы если вы собираетесь использовать её для генерации QM файлов, в противном случае достаточно пересобрать только lrelease.

Данная проблема актуальна и для Qt 5.

Автор: push

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js