vog*_*vog 8 resources qt qmake qt4
我有一个带有德语翻译的Qt项目Translation_de.ts
,它Translation_de.qm
通过Qmake 自动编译成:
TRANSLATIONS += Translation_de.ts
...
QMAKE_EXTRA_COMPILERS += lrelease
lrelease.input = TRANSLATIONS
lrelease.output = ${QMAKE_FILE_BASE}.qm
lrelease.commands = $$[QT_INSTALL_BINS]/lrelease ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_BASE}.qm
lrelease.CONFIG += no_link target_predeps
Run Code Online (Sandbox Code Playgroud)
Translation_de.qm
然后将生成的内容编译为最终应用程序作为资源:
RESOURCES += Resources.qrc
Run Code Online (Sandbox Code Playgroud)
这里Resources.qrc
看起来是这样的:
<RCC>
<qresource>
...
<file>Translation_de.qm</file>
</qresource>
</RCC>
Run Code Online (Sandbox Code Playgroud)
所有这一切都很好,除了在新结账时第一次调用Qmake会引发以下恼人的警告:
RCC: Error in 'Resources.qrc': Cannot find file 'Translation_de.qm'
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?如何正确指定自动生成的资源文件Translation_de.qm
?
http://doc.qt.io/qt-5/qmake-variable-reference.html
CONFIG + = lrelease#将* .qm文件从TRANSLATIONS =生成到目录builddir / .qm / CONFIG + = embed_translations#将它们添加为qrc资源
所以(不是)
CONFIG+=lrelease embed_translations
Run Code Online (Sandbox Code Playgroud)
不需要qmake魔术。您的qm文件将位于:/ i18n /下,除非您另外指定
QM_FILES_RESOURCE_PREFIX=/my/customtranslationdirectory
Run Code Online (Sandbox Code Playgroud)