QT国际化支持多语言
最近做一个项目,把QT开发的软件汉化,遇到些问题是部分字串汉化成功,部分汉化失败,经过一番查找发现QDialog类继承的类能汉化而QMainWindow不能汉化,因为只在Mian.cpp中添加翻译加载,并没有在MainWindow.cpp添加翻译加载,所以导致部分汉化失败,按照以下步骤:
开发环境VS加QT插件
1.生成*.ts文件,点击菜单QT=》Create new translation file,弹出Add Translation 对话框选择 中文,确定即可生成一个app_zh.ts文件。
2.用QT linguist打开app_zh.ts文件,翻译字串,保存。
3.工程列表选择app_zh.ts。右键选择lresease,在工程目录下回生成app_zh.pm文件。
4.文件main.cpp添加如下代码
int main(int argc, char *argv[])
{
B9NativeApp a(argc, argv);
MainWindow w;
QTranslator translator;
translator.load("app_" + QLocale::system().name(), qApp->applicationDirPath());
a.installTranslator(&translator);
QTextCodec *codec = QTextCodec::codecForName("GBK");
QTextCodec::setCodecForLocale(codec);
a.processEvents();
w.setSplash(&splash);
w.show();
w.showSplash();
return a.exec();
}
按上述步骤翻译后,部分代码能正常翻译,如QDialog类的可以正常翻译,而QMainWindow不能翻译,解决办法是在MainWindow()函数中也添加资源加载代码。
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
// Set up Identity
ui->setupUi(this);
QTranslator translator;
translator.load("app_" + QLocale::system().name(), qApp->applicationDirPath());
qApp->installTranslator(&translator);
ui->retranslateUi(this);
}
如果支持多语言可以在MainWindow中增加切眼语言操作。
开发参考:
http://blog.51cto.com/zt/20.
http://www.cnblogs.com/hujian/archive/2012/08/10/2631488.html.