Подтвердить что ты не робот

Как интегрировать интернационализацию QT в CMake?

Приветствуем всех,

Я пытаюсь использовать интернационализацию QT с помощью CMake. Я сконфигурировал свой файл cmake следующим образом:

#Internalization - this should generate core_jp.ts ?
SET(rinzo_core_TRANSLATIONS
   i18n/core_jp.ts
   )

#these are my source files in the project
SET(FILES_TO_TRANSLATE
   ${rinzo_core_srcs} 
   ${rinzo_core_moh_srcs}
 )

QT4_CREATE_TRANSLATION(QM_FILES ${FILES_TO_TRANSLATE} ${rinzo_core_TRANSLATIONS})
QT4_ADD_TRANSLATION(QM ${rinzo_core_TRANSLATIONS})

Но он не генерирует никаких файлов TS и QM.

Мои вопросы -

1.Cmake(используя инструменты QT) генерирует TS файлы, автоматически извлекающие методы "tr()" из источника? (это означает, что мне не нужно создавать какой-либо файл TS, а выше i18n/core_jp.ts будет автоматически размножаться)

2. Что это за файлы QM?

Заранее спасибо

4b9b3361

Ответ 1

В документации CMake смотрите макросы QT4_CREATE_TRANSLATION и QT4_ADD_TRANSLATION.

Итак, вы должны сделать следующее:

SET(Lang_files
  example.ts
)
...
QT4_CREATE_TRANSLATION(LangSrcs ${Lang_files})
...
ADD_EXECUTABLE(project_name ... others sources ... ${LangSrcs})

Ответ 2

Перевод двоичных файлов (*.qm) в соответствии с http://itk.org/Wiki/CMake:How_To_Build_Qt4_Software

Также из нижней части этого веб-сайта

Usage - Updating the .ts files

Если вы хотите, чтобы он обрабатывал все ваши исходные файлы (поиск новых текстов для перевести), настроить cmake для включения UPDATE_TRANSLATIONS, а затем сделайте ваш проект. CMake изменит ваш .ts в папках SOURCE в дополнение к генерации .qm файлов. ПРЕДУПРЕЖДЕНИЕ: Имейте в виду, что CMake будет обновлять исходные файлы .ts, а это означает, что если > вы сделаете make clean, он УДАЛЯЕТ ваши исходные файлы .ts! Поэтому было бы неплохо выключить UPDATE_TRANSLATIONS как можно скорее.

Ответ 3

Вы можете использовать lupdate.exe, linguist.exe и lrelease.exe из qt/[qt_version]/[msvc | mingw |...]/bin/?