如何为qt5\u添加\u翻译指定输出名称?
我想使用如何为qt5\u添加\u翻译指定输出名称?,qt,cmake,translation,qt-linguist,Qt,Cmake,Translation,Qt Linguist,我想使用qt5\u add\u translation为不同语言的plenty*.ts文件生成plenty*.qm。所有*.ts文件都使用*.de_de.ts/*.fr_fr.ts/etc约定命名。但是qt5\u add\u translation生成输出,在第一个之前只使用basename,而不是最后一个 无法使用qt5_add_translation(QM_FILES“${PROJECT_NAME}.de_de.ts”options-QM“${PROJECT_NAME}.de_de.QM”)
qt5\u add\u translation
为不同语言的plenty*.ts
文件生成plenty*.qm
。所有*.ts
文件都使用*.de_de.ts
/*.fr_fr.ts
/etc约定命名。但是qt5\u add\u translation
生成输出,在第一个
之前只使用basename,而不是最后一个
无法使用qt5_add_translation(QM_FILES“${PROJECT_NAME}.de_de.ts”options-QM“${PROJECT_NAME}.de_de.QM”)将选项传递给lrelease
另外,为源*.ts
文件设置OUTPUT\u NAME
属性无效:
set_source_files_properties(
"${PROJECT_NAME}.de_DE.ts" PROPERTIES
OUTPUT_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}"
OUTPUT_NAME "${PROJECT_NAME}.de_DE.qm"
)
案例中生成的文件名仍然是“${PROJECT\u NAME}.qm”
,而不是“${PROJECT\u NAME}.de\u de.qm”
如何覆盖生成的*.qm
文件的生成名称
当然,我可以自定义命令并将其用于我的目的,但我更喜欢使用readyqt5\u add\u translation
编辑:
查看/usr/local/Qt-5.9.2/lib/cmake/Qt5LinguistTools/Qt5LinguistToolsMacros.cmake
我得出结论,使用现成的qt5_添加_翻译
无法达到预期效果,因为使用get_filename_组件(qm${abs FILE}NAME_WE)
来获取文件名:
NAME\u WE=没有目录或最长扩展名的文件名
出于我的目的,需要结合使用绝对值
(以获得带有完整后缀的文件名),然后,要多次应用EXT
并结合NAME\u,我们
提取文件名,但没有最短的扩展名。我使用下面的自定义函数添加翻译
替换qt5\u添加翻译
:
function(ADD_TRANSLATION _qm_files)
foreach(_basename ${ARGN})
set(qm "${CMAKE_CURRENT_SOURCE_DIR}/${_basename}.qm")
add_custom_command(
OUTPUT "${qm}"
COMMAND "${Qt5_LRELEASE_EXECUTABLE}"
ARGS -markuntranslated "Not translated!" -nounfinished -removeidentical -compress "${CMAKE_CURRENT_SOURCE_DIR}/${_basename}.ts" -qm "${qm}"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${_basename}.ts" VERBATIM
)
list(APPEND ${_qm_files} "${qm}")
endforeach()
set(${_qm_files} ${${_qm_files}} PARENT_SCOPE)
endfunction()
它接受*.ts
文件的基名,并生成生成的*.qm
文件列表:都在当前源目录中。请升级到Qt 5.9.4或更新版本。名称中带有点的.ts文件的处理已在此处修复,另请参见