64 lines
1.7 KiB
Markdown
64 lines
1.7 KiB
Markdown
|
# Qt 国际化
|
|||
|
|
|||
|
## 获取所需翻译的文本
|
|||
|
|
|||
|
在代码中需要翻译的文本的都需要用下面的方式使用 **tr()** 括起来。
|
|||
|
|
|||
|
```cpp
|
|||
|
//创建菜单子项
|
|||
|
manageAction = new QAction(tr("vehicle management"),this);
|
|||
|
chartAction = new QAction(tr("Sales statistics"),this);
|
|||
|
quitAction = new QAction(tr("quit"),this);
|
|||
|
//设置快捷键
|
|||
|
manageAction->setShortcut(tr("Ctrl+M"));
|
|||
|
chartAction->setShortcut(tr("Ctrl+C"));
|
|||
|
quitAction->setShortcut(tr("Ctrl+Q"));
|
|||
|
//增加菜单项
|
|||
|
manageMenu = menuBar()->addMenu(tr("Sales management"));
|
|||
|
//添加子项
|
|||
|
manageMenu->addAction(manageAction);
|
|||
|
manageMenu->addAction(chartAction);
|
|||
|
//创建一个分隔符
|
|||
|
manageMenu->addSeparator();
|
|||
|
manageMenu->addAction(quitAction);
|
|||
|
//再添加一个菜单项
|
|||
|
passwordMenu = menuBar()->addMenu(tr("Change password"));
|
|||
|
```
|
|||
|
|
|||
|
## 生成 .ts 文件
|
|||
|
|
|||
|
修改.Pro文件,添加下面的内容:
|
|||
|
|
|||
|
```qt
|
|||
|
TRANSLATIONS = language.ts
|
|||
|
```
|
|||
|
|
|||
|
编译程序后,点击 Qt Creator 的“Tools->External->Linguist->Update Translations(lupdate)”更新翻译文件,会在项目目录下生成/更新 .ts 文件。
|
|||
|
|
|||
|
## 翻译内容
|
|||
|
|
|||
|
使用 Qt Linguist 打开 .ts 文件,进行翻译:
|
|||
|
|
|||
|
![Qt Linguist 工具](./img/Qt_国际化/001.png)
|
|||
|
|
|||
|
翻译文件生效后,回到 Qt Creator,点击“Tools->External->Linguist->Release Translations(lrelease)”,在项目目录下生成 .qm 文件。
|
|||
|
|
|||
|
## 载入翻译文件
|
|||
|
|
|||
|
```cpp
|
|||
|
int main(int argc, char *argv[])
|
|||
|
{
|
|||
|
QApplication a(argc, argv);
|
|||
|
//一定要在界面显示之前载入翻译文件
|
|||
|
QTranslator *qtTranslator = new QTranslator;
|
|||
|
if(qtTranslator->load("./language.qm")){
|
|||
|
a.installTranslator(qtTranslator);
|
|||
|
}
|
|||
|
Widget w;
|
|||
|
w.show();
|
|||
|
return a.exec();
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
*注:可以在任何时候更换 Translation 文件。*
|