Pull to refresh

Решение проблемы с поддержкой кодировок в утилитах 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.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.