要在当前目录下生成 .qm
文件,并在 Visual Studio 中管理和使用这些文件,可以按照以下步骤进行操作:
1. 确保你的目录结构如下
MyQtProject/
├── translations/
│ ├── myproject_en.ts
│ ├── myproject_zh.ts
├── src/
│ ├── main.cpp
│ ├── mainwindow.cpp
│ ├── mainwindow.h
│ ├── mainwindow.ui
├── MyQtProject.vcxproj
├── MyQtProject.sln
2. 使用 lupdate
生成 .ts
文件
打开 Visual Studio 的开发者命令提示符(Developer Command Prompt for Visual Studio),导航到你的项目目录,并运行 lupdate
生成 .ts
文件:
cd path\to\MyQtProject
lupdate src -ts translations/myproject_en.ts
lupdate src -ts translations/myproject_zh.ts
3. 使用 Qt Linguist 翻译 .ts
文件
- 使用 Qt Linguist 工具打开
translations/myproject_en.ts
和translations/myproject_zh.ts
文件进行翻译,然后保存。
4. 使用 lrelease
生成 .qm
文件
在同一个命令提示符中,运行以下命令将 .ts
文件编译为 .qm
文件并生成在当前目录的 translations
文件夹下:
lrelease translations/myproject_en.ts
lrelease translations/myproject_zh.ts
或者
5. 部署和加载 .qm
文件
将生成的 .qm
文件放在应用程序可以访问的位置。通常将 .qm
文件放置在 translations
目录下。确保你的 main.cpp
文件加载这些翻译文件:
#include <QApplication>
#include <QTranslator>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTranslator translator;
if (translator.load("translations/myproject_en.qm")) {
app.installTranslator(&translator);
}
MainWindow w;
w.show();
return app.exec();
}
6. 在 Visual Studio 中添加自定义构建步骤(可选)
为了自动化生成 .ts
和 .qm
文件的过程,可以在 Visual Studio 中添加自定义构建步骤:
-
右键点击项目,选择“属性”(Properties)。
-
在“构建事件”(Build Events)下,添加预构建或后构建事件。例如:
lupdate src -ts translations/myproject_en.ts lupdate src -ts translations/myproject_zh.ts lrelease translations/myproject_en.ts lrelease translations/myproject_zh.ts
这会确保每次构建时都会自动更新和编译翻译文件。
具体例子
假设你有以下翻译文件和源代码:
translations/myproject_en.ts
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
<name>MainWindow</name>
<message>
<location filename="../src/mainwindow.ui" line="14"/>
<source>权限管理</source>
<translation>Permission Management</translation>
</message>
</context>
</TS>
src/main.cpp
#include <QApplication>
#include <QTranslator>
#include <QLocale>
#include <QDebug>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTranslator translator;
QString locale = QLocale::system().name();
qDebug() << "Locale:" << locale;
if (translator.load(QString("translations/myproject_") + locale + ".qm")) {
app.installTranslator(&translator);
}
MainWindow w;
w.show();
return app.exec();
}
在这个例子中,程序会根据系统的语言设置自动加载相应的翻译文件。
总结
通过这些步骤,你可以在 Visual Studio 中有效地生成和管理 Qt 项目的翻译文件,实现应用程序的多语言支持和本地化。