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