我有一个大型项目,其中一个 qmake 项目文件使用“子目录”模板定义所有项目组件。目前我在每个子项目的 qmake 文件中定义翻译文件。这导致为每个子项目生成单独的翻译文件,这很快就会变得太麻烦而无法维护。
如何让 lupdate 生成包含所有子项目的所有翻译字符串的单个翻译文件?
我有一个大型项目,其中一个 qmake 项目文件使用“子目录”模板定义所有项目组件。目前我在每个子项目的 qmake 文件中定义翻译文件。这导致为每个子项目生成单独的翻译文件,这很快就会变得太麻烦而无法维护。
如何让 lupdate 生成包含所有子项目的所有翻译字符串的单个翻译文件?
首先,将所有pro 文件拆分为pro和pri文件。然后将所有pri文件放入一个全局pro 文件中,并为该 pro 文件生成语言文件。
特殊语言 pro 文件如下所示:
TEMPLATE = app
DEPENDPATH += Proj1 Proj2 Proj3
include(Proj1/Proj1.pri)
include(Proj2/Proj2.pri)
include(Proj3/Proj3.pri)
TRANSLATIONS = en.ts fr.ts it.main.ts ja.main.ts nl.main.ts
一个脚本可以很容易地为你生成这个项目语言文件。
我知道这个问题已经很老了,但我仍然会附加我的解决方案。这最终得到了几个单一的翻译文件,但这是我真正想要达到的。然后您可以lupdate
在主项目文件上运行,它将生成/更新每个子目录中的 .ts 文件。
因此,在每个 pro 文件中,您必须指定一个TARGET
,并且该项目必须位于具有该名称的文件夹中。
在每个项目文件中,我都包含一个共享的 pri 文件:
# Including shared configurations
!include(../common/shared.pri) {
error(shared.pri not found)
}
然后,在这个 pri 文件中:
# Including traslations for every language
exists($$_PRO_FILE_PWD_/translations/) {
TRANSLATIONS += $$_PRO_FILE_PWD_/translations/$${TARGET}_de_DE.ts
message(> Found Translations for $${TARGET}: $$_PRO_FILE_PWD_/translations/$${TARGET}_de_DE.ts)
}
对于更多翻译语言,您可以添加一点逻辑。