NotePublic/Software/Development/Environment/Qt/Modules/Qt_国际化.md

64 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 文件。*