首页| 论坛| 消息
主题:Qt 5.3.1 & Qt 5.5.1中带QMessageBox及QDialogButtonBox按钮翻译的qt_zh_CN.qm
XChinux发表于 2016-05-12 20:12
自从Qt升级到5.x,程序中的对话框中的标准按钮文字就又变成英文了,尽管已经加载了qt_zh_CN.qm,忍了好久了,今天解决了一下,附上我自己用的Qt 5.3.1&Qt 5.5.1的qt_zh_CN.qm文件。下面是增加翻译方法:
1. 假设$QTDIR为Qt安装目录,对应源码目录为$QTDIR/src,那么找到qt_zh_CN.ts文件,我们要在里面增加翻译内容,该文件位于$QTDIR/src/qttranslations/translations目录下.
2. 找到QDialogButtonBox中标准按钮翻译的原始出处,在$QTDIR/src/qtbase/src/gui/kernel/qplatformtheme.cpp文件中,在该文件中,找到defaultStandardButtonText()函数的实现处,就能看到翻译调用:
QString QPlatformTheme::defaultStandardButtonText(int button)
{
switch (button) {
case QPlatformDialogHelper::Ok:
return QCoreApplication::translate("QPlatformTheme", "OK");
case QPlatformDialogHelper::Save:
return QCoreApplication::translate("QPlatformTheme", "Save");
case QPlatformDialogHelper::SaveAll:
return QCoreApplication::translate("QPlatformTheme", "Save All");
case QPlatformDialogHelper::Open:
return QCoreApplication::translate("QPlatformTheme", "Open");
case QPlatformDialogHelper::Yes:
return QCoreApplication::translate("QPlatformTheme", "&Yes");
case QPlatformDialogHelper::YesToAll:
return QCoreApplication::translate("QPlatformTheme", "Yes to &All");
case QPlatformDialogHelper::No:
return QCoreApplication::translate("QPlatformTheme", "&No");
case QPlatformDialogHelper::NoToAll:
return QCoreApplication::translate("QPlatformTheme", "N&o to All");
case QPlatformDialogHelper::Abort:
return QCoreApplication::translate("QPlatformTheme", "Abort");
case QPlatformDialogHelper::Retry:
return QCoreApplication::translate("QPlatformTheme", "Retry");
case QPlatformDialogHelper::Ignore:
return QCoreApplication::translate("QPlatformTheme", "Ignore");
case QPlatformDialogHelper::Close:
return QCoreApplication::translate("QPlatformTheme", "Close");
case QPlatformDialogHelper::Cancel:
return QCoreApplication::translate("QPlatformTheme", "Cancel");
case QPlatformDialogHelper::Discard:
return QCoreApplication::translate("QPlatformTheme", "Discard");
case QPlatformDialogHelper::Help:
return QCoreApplication::translate("QPlatformTheme", "Help");
case QPlatformDialogHelper::Apply:
return QCoreApplication::translate("QPlatformTheme", "Apply");
case QPlatformDialogHelper::Reset:
return QCoreApplication::translate("QPlatformTheme", "Reset");
case QPlatformDialogHelper::RestoreDefaults:
return QCoreApplication::translate("QPlatformTheme", "Restore Defaults");
default:
break;
}
return QString();
}
3. 打开Qt Command Prompt,切换到$QTDIR/src/qtbase/bin目录下,执行下面的命令:
lupdate ../src/gui/kernel/qplatformtheme.cpp -tsqplatformtheme.ts
4. 将qplatformtheme.ts文件中context节点(包括context)内容全部插入到前面的qt_zh_CN.ts中的末尾根节点之前
5. 修改qt_zh_CN.ts中新加入到这些内容并做翻译,最后翻译完类似下面的内容(但行号随着Qt版本的不同而不同):
QPlatformTheme

OK
确定

Save
保存

Save All
全部保存

Open
打开

&Yes
是(&Y)

Yes to &All
全是(&A)

&No
否(&N)

N&o to All
全否(&O)

Abort
中止

Retry
重试

Ignore
忽略

Close
关闭

Cancel
取消

Discard
丢弃

Help
帮助

Apply
应用

Reset
重置

Restore Defaults
还原默认值
6. 最后一步了,生成qt_zh_CN.qm文件,在Qt Command Prompt中,切换到QTDIR目录,执行下面命令,
附件: qt_zh_CN_5.3.1.zip (39 K) 下载次数:28
附件: qt_zh_CN_5.5.1.zip (39 K) 下载次数:64
下一页 (1/2)
回帖(2):
2楼:赞一个
正在学习多语言翻译,各种对话框,都搞不清楚修改哪里统一切换语言了
1楼:赞一个!

全部回帖(2)»
最新回帖
收藏本帖
发新帖