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

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

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

  1. Собрать $QtDir\src\tools\bootstrap\ без ключа QT_NO_CODECS
  2. Собрать $QtDir\tools\linguist\lrelease\
  3. Собрать $QtDir\tools\linguist\linguist\ предварительно внеся изменения в файл $QtDir\tools\linguist\linguist\messagemodel.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.
Метки:
Qt

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.