VMS快速发布qm文件教程
- 前言
想必大家都知道,只有一两个国家语言的话,大家直接右键更新发布即可。但是当我们一个项目下面有二十个小模块,每个模块下面又有30个国家语言的ts文件。想要将所有的ts文件发布到对应的国家的文件夹下。比如,我想要将阿拉伯语发布在ar文件夹下,将中文发布在zh-cn文件夹下面。那我们需要点击更新发布无数次。如果能够在点击生成解决方案的时候,就能够把所有模块的ts文件更新或者是发布到对应的文件夹下,那将会十分方便。于是进行了以下的研究。
二、前提配置
- 整个项目模块的配置,必须是Disabled.

原因:
(1)选择更新的话,会导致,每次编译代码都更新ts文件。当我们写完功能提交代码时,许多的xxx.ts文件掺杂在我们修改的文件中,使我们提交代码时候需要一个个去勾选掉,难以区分
(2)选择发布的话,会导致,每次编译代码都发布qm文件。如果很多国家或者很多模块在输出界面会跑很久
2.单独的ts文件的配置
(1)General项不用手动去改,不用管,它默认都是跟随父项配置。即:项目模块的配置Disabled的话他就是Disabled,项目模块配置的lupdate那它就是lupdate。

(2)lrelease文件的Ottput File Name配置发布的位置如图所示。ar.ts则是$(SolutionDir)bin\model_plugins\qm\ar文件夹,cs.ts则是cs文件夹,等等以此类推(此位置是不进行上传代码的位置,此处发布的qm文件,当项目清理解决方案的时候会被清理掉,我们不用管)

三、原理及原因
- 原理
启动项SmartVms生成后的事件,配置了代码。

解读代码:
setlocal EnableDelayedExpansion
for %%L in (
ar bg cs da de el en es es419 fi fr he hu id it ja ko
nl no pl pt ro ru sl sr sv th tr uk vi zh-cn zh-tw
) do (
set SRC=$(SolutionDir)bin\model_plugins\qm\%%L
set DST=$(SolutionDir)bin\Config\%%L
if exist "!SRC!\*.qm" (
if not exist "!DST!" mkdir "!DST!"
xcopy "!SRC!\*.qm" "!DST!\" /Y /Q >nul
)
)
此代码是指的,生成文件后,会将$(SolutionDir)bin\model_plugins\qm\ar
文件夹里生成的文件(前提配置中的第二条中配的qm生成地址)复制拷贝到bin\Config\ar下面。以此类推,for是写了32个国家不同语言的文件夹,从项目自动生成的文件夹目录:(SolutionDir)bin\model_plugins\qm这里拷贝到对应的bin\Config下面。
- 原因
前提配置中的第二条中配的qm生成地址不直接写成bin\Config的原因是,每当项目清理项目资源或者是重新生成解决方案的时候,qt会删除掉自己生成的文件。若是直接写成bin\Config那么当程序员重新生成解决方案后,再此提交代码,会发现很多qm文件被清理删除掉了。所以qm文件生成在(SolutionDir)bin\model_plugins\qm下面,然后再拷贝到想要发布的位置,这样避免清理时候发布位置qm文件被清理。
- 以后
以后想要增加一个国家的语言,则在for里面增加一个对应的文件夹。在生成前的事情代码里也加一个文件夹。在bin\Config下面也加一个对应的。

四、快速更新ts文件的方法
- 比如更改某个tr()内容

- 项目模块:右键------属性------。如图所示,应用后,其项目下的所有xxxx_xx.ts文件属性都会变成lupdate。

- 项目模块右键------生成。或者,点击整个项目右键生成解决方案。会发现ts文件全部更新了。

此时程序员就可以去双击打开ts文件填写自己想要写的对应的翻译等。如图给翻译添加上2222。写完翻译关闭ts文件的时候记得保存!!!

五、快速发布qm文件的方法
1.先清理解决方案,目的是清理掉之前文件,避免不生成qm 文件
2.项目模块:右键------属性------。如图所示,应用后,其项目下的所有xxxx_xx.ts文件属性都会变成lrelease。

- 项目模块右键------生成解决方案。会发现,bin\config文件夹下面的qm文件更新了。


六、提交代码注意!!!
1.一定要把项目模块的配置恢复成第一步的前提配置的样子。原因在前提配置中已经叙述。
如图可以看到我的ts文件和qm文件均已更新。

- 让我们打开阿拉伯语界面看看。
