因为程序要发给国外客户,所以需要个英文界面。在网上查了整天,只有下面文章帮助了我:
http://www.tinylab.org/qt-multi-languages-support/
简单地说,有以下步骤。这里说明是基于Qt Creator的ui界面的。
- 在项目的.pro文件里手动增加文件.ts。
- 运行Qt\外部\Qt语言家\更新翻译(lupdate),获得上面的文件*.ts。
- 打开*.ts文件编辑,增加翻译文本。
- 运行Qt\外部\Qt语言家\发布翻译(lrelease),获得*.qm文件。
- 在main.cpp文件中增加加载*.qm文件的翻译程序。
- 重新编译程序。
再详细说明上面步骤。
项目文件.pro中的代码以下,表示项目包括这个.ts文件,与其他文件不同,这里先在*.pro中说明文件名,再由Qt工具生成文件。
TRANSLATIONS = afc_en.ts
Qt中处理*.ts的工具。
编辑*.ts,我是用UE来编辑的。在translation字段中写入要翻译的文本。
运行Qt的翻译工具后,项目目录下会有2个文件。一个是可编辑的.ts文件,一个是编译后不可编辑的.qm文件,而程序中要用的是.qm文件,可随时修改.ts文件编译成*.qm来使用。
需要添加的翻译程序如下,应在main.cpp中增加。
//多语言程序,以下用于中文翻译成英语,翻译对象:菜单所有文字,其他tr()中的字符
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QFont font1("Arial", 12, 50, FALSE);
a.setFont(font1);
QTranslator *t = new QTranslator(0);
t->load(QString("afc_en.qm"), ".");
a.installTranslator(t);
这是用于发布另一语言程序的,若需要动态改变语言则需要另外的程序了。