QT中常用的国际化方式,在代码中使用tr包裹所需要翻译的字符串,使用lupdate更新翻译文件,在Linguist中编辑所需要翻译的文字即可。
1.代码中加载翻译文件
cpp
QTranslator *trans = new QTranslator();
bool b = trans->load("mytrans_cn.qm");
QApplication::installTranslator(trans);
setText(tr("abc"));
2.更新翻译文件
cpp
lupdate ./ -ts mytrans_cn.ts
3.Linguist编辑发布qm文件

动态翻译:如果所需要翻译的文本是动态加载的,就需要进行动态翻译
cpp
namespace RibbonWidgetTranslate {
const QString translate_strings[] = {
QT_TRANSLATE_NOOP("RibbonWidgetTranslate", "Straight line"),//直线
QT_TRANSLATE_NOOP("RibbonWidgetTranslate", "Curve"),//曲线
QT_TRANSLATE_NOOP("RibbonWidgetTranslate", "Rectangle"),//矩形
};
}
使用QT_TRANSLATE_NOOP标记的字符串可以被lupdate识别。
cpp
QString translatedText = QCoreApplication::translate("RibbonWidgetTranslate", text.toUtf8().constData());
可以将text转换为翻译的文本