增加 Qt 国际化 方法.
Signed-off-by: rick.chan <chenyang@autoai.com>
This commit is contained in:
parent
99cd36041e
commit
221fa58014
|
@ -0,0 +1,63 @@
|
|||
# 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 文件。*
|
Binary file not shown.
After Width: | Height: | Size: 63 KiB |
Loading…
Reference in New Issue