一、QT命令,可以根据pro文件 和资源文件进行选择翻译
注意:
- pro文件需要自行添加好翻译文件
- 需要翻译的class要Q_OBJECT宏 ,或者使用QObject::tr()
// 操作
-help 显示帮助并退出
-no-obsolete 弃用无效字符串
-extensions <ext>[,<ext>]...
指定特定的文件更新翻译,扩展名列表必须用逗号分隔
默认: 'java,jui,ui,c,c++,cc,cpp,cxx,ch,h,h++,hh,hpp,hxx,js,qs,qml,qrc'.
-pluralonly
仅仅包含界面消息
-silent
Do not explain what is being done.
-no-sort
不要对TS文件中的上下文进行排序
-no-recursive
不要递归扫描目录。
-recursive
递归扫描目录(default).
-I <includepath> or -I<includepath>
查找包含文件的其他位置。可以指定多次。
-locations {absolute|relative|none}
可以指定并覆盖ts文件,若不指定且ts文件不存在,则会创建新的ts文件
-no-ui-lines
不记录UI文件里面的行号
-disable-heuristic {sametext|similartext|number}
禁用名称合法性检测,可被多次指定
-pro <filename>
project文件
-pro-out <directory>
输出目录
-pro-debug
处理两次pro文件
-source-language <language>[_<region>]
指定源文件的语言。
如果未指定,则默认为POSIX。
-target-language <language>[_<region>]
指定翻译文件的语言。
如果未指定,则从文件名判断。
-tr-function-alias <function>{+=,=}<alias>[,<function>{+=,=}<alias>]...
With +=, recognize <alias> as an alternative spelling of <function>.
With =, recognize <alias> as the only spelling of <function>.
Available <function>s (with their currently defined aliases) are:
Q_DECLARE_TR_FUNCTIONS (=Q_DECLARE_TR_FUNCTIONS)
QT_TR_NOOP (=QT_TR_NOOP)
QT_TRID_NOOP (=QT_TRID_NOOP)
QT_TRANSLATE_NOOP (=QT_TRANSLATE_NOOP)
QT_TRANSLATE_NOOP3 (=QT_TRANSLATE_NOOP3)
QT_TR_NOOP_UTF8 (=QT_TR_NOOP_UTF8)
QT_TRANSLATE_NOOP_UTF8 (=QT_TRANSLATE_NOOP_UTF8)
QT_TRANSLATE_NOOP3_UTF8 (=QT_TRANSLATE_NOOP3_UTF8)
findMessage (=findMessage)
qtTrId (=qtTrId)
tr (=tr)
trUtf8 (=trUtf8)
translate (=translate)
qsTr (=qsTr)
qsTrId (=qsTrId)
qsTranslate (=qsTranslate)
-ts <ts-file>...
指定输出文件,并且覆盖原有的
-version
显示lupdate的版本
@lst-file
读取其他文件名(每行一个)或包含路径(每行一个)
行,并在lst-file中以-I为前缀。
二、编写脚本更新所有文件的翻译
A、简单脚本:通过pro文件更新翻译
@echo on
cd..
lupdate -no-obsolete project.pro
@pause
- 优点:方便快
- 缺点:需要针对每一个项目配置好 .ts 文件,多个翻译文件
B、复杂脚本:通过工程项目和源文件更新翻译
@echo off
md Translation
cd Translation
md en
md ko
cd ..
cd source
for /d %%i in (*) do (
cd %%i
if exist ./translate_lupdate.bat (
translate_lupdate.bat
)else (
if exist "*.vcxproj" (
if exist GeneratedFiles del /F /S /Q .\GeneratedFiles
lupdate .\ -locations absolute -no-obsolete -ts ..\..\Translation\en\%%i_en.ts
lupdate .\ -locations absolute -no-obsolete -ts ..\..\Translation\ko\%%i_ko.ts
)
)
cd ..
)
@pause
@echo off
- 优点:能通过工程文件生产单独的ts文件,不需要配置pro文件
- 缺点:每一个项目存在一个 .ts 文件
C、简单脚本:通过源文件更新成一个翻译
@echo on
cd..
lupdate -no-obsolete ./application ./src ./include -ts .\Translation\en\hirender_en.ts
lupdate -no-obsolete ./application ./src ./include -ts .\Translation\ko\hirender_ko.ts
@pause
- 优点:通过源文件生产一个翻译文件,简化操作,避免重复翻译
- 缺点:耦合度高,不需要的项目可能也会用到翻译文件