一个注意:
实现QT工程的语言切换功能的一个关键点是所有的字符串都需要tr修饰符。例如:
m_action_redo->setText(tr("重做"));
m_action_undo->setText(tr("撤销"));
m_action_cut->setText(tr("剪切"));
m_action_palse->setText(tr("粘贴"));
五个步骤:
1、声明并定义函数:voidretranslateUi()。在该函数中对所有需要翻译的控件进行setText属性设置,例如:
voidleadTextEdit::retranslateUi()
{
m_action_redo->setText(tr("重做"));
m_action_undo->setText(tr("撤销"));
m_action_cut->setText(tr("剪切"));
m_action_palse->setText(tr("粘贴"));
}
注意:这里无所谓tr后面是中文还是英文,重点是需要在这里调用控件的setText方法,以便在使用QT语言翻译工具时可以识别出所有需要翻译的控件。
2、使用QT语言翻译工具创建语言文件(.ts文件),如下图:
3、编辑创建的.ts翻译文件为希望进行语言转换的目标文件。
4、编译.ts文件为qm文件,如下图所示
5、选择语言切换时动态加载语言文件
// 当选择中文时加载中文翻译文件
if (strLan =="CN")
{
m_str_lang ="CN"; m_trns_appTranslator.load(QString("leadpareditcard_zh.qm"),QString("../source/litsoft/tools/leadpareditcard"));
qApp->installTranslator(&m_trns_appTranslator);
}
// 当选择英文时加载英文翻译文件
elseif (strLan =="EN")
{
m_str_lang ="EN";
m_trns_appTranslator.load(QString("leadpareditcard_en.qm"),QString("../source/litsoft/tools/leadpareditcard"));
qApp->installTranslator(&m_trns_appTranslator);
}
this->retranlateUi();
以上就是QT GUI实现语言动态转换的方法。
转自:http://hi.baidu.com/qinpanke/blog/item/bc781c3123ec7c8fa8018e45.html