Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: DarkHobbit от Январь 30, 2016, 11:05



Название: qmake не находит файл перевода для ресурсов
Отправлено: DarkHobbit от Январь 30, 2016, 11:05
Добрый день.
Решил я поместить перевод в ресурсы.
В pro добавил:
Код:
TRANSLATIONS += ProjectName_ru_RU.ts

tr.commands = lrelease \
    $$_PRO_FILE_
QMAKE_EXTRA_TARGETS += tr
POST_TARGETDEPS += tr

RESOURCES += \
    ProjectName.qrc
(это чтобы make сам собирал переводы, как обсуждалось здесь (http://www.prog.org.ru/index.php?topic=21023))

В qrc:
Код:
<file>ProjectName_ru_RU.qm</file>

В загрузку программы:
Код:
    QTranslator tr;
    if (!tr.load(":/ProjectName_ru_RU.qm"))
        QMessageBox::critical(0, "Error", "UI loading error");
    a.installTranslator(&tr);

qmake ругается:
Цитировать
CC: Error in 'ProjectName.qrc': Cannot find file 'ProjectName_ru_RU.qm'
RCC: Warning: No resources in 'ProjectName.qrc'.

Предположил, что к моменту просмотрам ресурсов перевод ещё не готов. Закомментарил
RESOURCES в проекте. Проект собрался. Раскомментарил - снова собрался, перевод подхватился, все довольны.
Можно как-нибудь сделать, чтобы собиралось без извращений с комментариями и за один проход?

Ну кроме компиляции перевода вручную или из внешнего платформозависимого скрипта, разумеется :)


Название: Re: qmake не находит файл перевода для ресурсов
Отправлено: kambala от Январь 30, 2016, 17:00
POST_TARGETDEPS вызовется после сборки проекта насколько я понимаю, что неправильно. может там есть PRE_TARGETDEPS?


Название: Re: qmake не находит файл перевода для ресурсов
Отправлено: DarkHobbit от Февраль 05, 2016, 20:13
Заменил POST_TARGETDEPS на PRE_TARGETDEPS. qmake по-прежнему ругается
Код:
CC: Error in 'ProjectName.qrc': Cannot find file 'ProjectName_ru_RU.qm'
RCC: Warning: No resources in 'ProjectName.qrc'.
Но make отрабатывает корректно :) Спасибо.
Сделать бы ещё, чтобы qmake не ругался...


Название: Re: qmake не находит файл перевода для ресурсов
Отправлено: Bepec от Февраль 05, 2016, 20:26
Qrc же вроде компилирует файлы в .qrc, а если файла нет, то ничего он туда не закомпилирует.

Я точно не знаю в какой момент копилируется Qrc, но дедукция подсказывает что ДО компиляции кода и прочего. Вопрос только в том, когда у вас создается .qm

В принципе вы легко ответите на этот вопрос просто запустив чистую компиляцию и посмотрев даты создания файлов.