QT界面多语言的实现

QT界面多语言的实现

 

系统:Win7 64位企业版

工具:Qt Creator 3.0.1

目的:界面做成中英文切换

 

步骤和过程:

1.      在PRO文件中加入语句:TRANSLATIONS+=cn.ts

TRANSLATIONS是表明用于翻译的文件,翻译文件是*.ts。ts文件会把UI文件里面的字符串全部搜集起来。


2.      使用IDE工具生成ts文件。

 QT界面多语言的实现_第1张图片

点击 工具-》外部-》QT语言家-》更新翻译,就可以在.PRO文件的同一个目录下得到.st文件。

或者用命令行工具生成也可以。默认安装的话,可以在“C:\Qt\Qt5.2.1\5.2.1\mingw48_32\bin”这个目录下,找到“lupdate.exe”,在运行中,输入CMD,就可以进入命令行(最好用管理员身份运行),然后输入命令:lupdateXXX\YYY.pro(注意写正确的路径和文件名),就可以在PRO文件的同目录下看到.ts文件了。

 

如果已经生成ts文件,可以用UE打开看看,就很清晰这个“lupdate.exe”究竟做了什么事情了。也对后面的步骤很理解。

 

 

3.       .ts文件只是把原有的文字集合起来,我们多语言,需要自己去翻译。当然,我们打开TS文件,然后根据格式,自己去翻译也是可以的。不过QT提供了一个很强大的工具:Linguist。打开这个工具,打开.ST,就很轻松地进行翻译了。使用很简单,打开工具基本就知道该怎么进行翻译(右边的窗口有短语和表单,可以方便地看到翻译的效果)。注意,这个Linguist工具是安装QT的时候一并安装的,如果你没有,可能需要重新安装。

QT界面多语言的实现_第2张图片

 

4.       翻译完毕,可以再次用UE打开TS文件,感受一下Linguist究竟做了什么事情。接下来,翻译已经搞定,我们下一步需要生成一个应用程序可以识别的文件*.QM。我们生成这个qm工具,可以用工具-》外部-》QT语言家-》发布翻译,就可以看到.PRO文件同目录下有qm文件了。

也同样可以使用CDM进入 命令行,lreleaseXXX\YYY.ts(注意写正确的路径和文件名)。

 

 

5.       到这一步,资源就准备好了,下一步需要在代码里面根据用户选择,动态加载不同的语言资源。菜单里面加上切换语言的选择,然后点击不同的语言,产生切换的效果。在应用程序里面加上下面的代码,达到加载不同的语言的效果。

voidMainWindow::changeLanguage()

{

        QTranslatortranslator;

 

        if(LanguageFlag == CHINESE)

               translator.load("cn.qm");

        else(LanguageFlag == ENGLISH)

               translator.load("en.qm");

 

        qApp->installTranslator(&translator);

        ui->retranslateUi(this);

}

 

 

6.       其他事项:

(1)开始的时候,我用QT语言家这个菜单,期望生成.ts文件,不过怎么点击都无法生成,后来发现用CMD命令行才可以生成ts文件,至今原因不明。

(2).Qm文件的生成,QT语言家菜单和命令行都可以完美生成。

(3)如果使用命令行生成ts文件,可以在命令行里面指定ts文件的名称,否则以pro文件里面的设置为准;

(4)使用Linguist软件翻译后,记得保存,保存后的st文件,只要保留在pro同一目录下, 下次再次生成ts文件,新的ts文件不会直接覆盖原有的ts文件,会保留之前所做的翻译。

(5)我在完成翻译,切换语言后,发现有几处地方总是翻译不完整,没翻译过来。打开ts文件,明明翻译好了啊,我擦,怎么没加载我翻译的字符,是个bug吗?这几处有什么特别的地方吗?bug得这么个离奇,无法修改,无法下手啊!!不禁觉得这样太一体化的东西,偶尔发现个小问题根本束手无策。多番查找原因,发现是我在代码里面,直接设置这个地方的文字,汗!

 

你可能感兴趣的:(C++基础,系统级)