PyQt:翻译标准按钮

发布于 2024-08-10 12:05:53 字数 88 浏览 4 评论 0原文

如何轻松地从 QMessageBox 翻译标准按钮(是、否)?我无法在这些参数上使用 self.tr,所以我想以其他简单的方式来实现它。我必须使用整个翻译系统吗?

How can I easily translate standard buttons (Yes, No) from QMessageBox? I can't use self.tr on those arguments, so I would like to achieve it in some other simple way. Do I have to use whole translation system?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

梦冥 2024-08-17 12:05:53

我是这样做的:

首先,您需要将 qt_LOCALE.qm 文件复制到您的应用程序目录。我的是:

cp /usr/share/qt4/translations/qt_fr.qm .

其次,您需要为您的应用程序加载翻译器。

application = QApplication(argv)

locale = QLocale.system().name()
qtTranslator = QTranslator()
if qtTranslator.load("qt_"+locale):
    application.installTranslator(qtTranslator)

main_window = QMainWindow()
main_window.show()

exit(application.exec_())

Here is how I did :

First you need to copy the qt_LOCALE.qm file to your application directory. Mine was :

cp /usr/share/qt4/translations/qt_fr.qm .

Secondly, you need to load a translator for your application.

application = QApplication(argv)

locale = QLocale.system().name()
qtTranslator = QTranslator()
if qtTranslator.load("qt_"+locale):
    application.installTranslator(qtTranslator)

main_window = QMainWindow()
main_window.show()

exit(application.exec_())
百变从容 2024-08-17 12:05:53

最快的方法是这样的:

mymessagebox.button(mymessagebox.Yes).setText("Yes, please!")
mymessagebox.button(mymessagebox.No).setText("No, thanks.")

请参阅 QMessageBox 文档以了解所有可能的标准按钮。

The quickest way is something like this:

mymessagebox.button(mymessagebox.Yes).setText("Yes, please!")
mymessagebox.button(mymessagebox.No).setText("No, thanks.")

See the QMessageBox documentation for all possible standard buttons.

仅一夜美梦 2024-08-17 12:05:53

您确定必须自己翻译吗?在其他工具包中,标准按钮会自动翻译为用户正在使用的语言。

Are you sure you have to translate them yourself? In other toolkits, standard buttons are automatically translated to the language that the user is using.

愛放△進行李 2024-08-17 12:05:53

如果您想将“是/否”翻译成当前语言,通常设置系统语言就足够了。否则请尝试 Natim 的建议。

如果您想要自定义文本:像 Question() 等静态方法不允许自定义按钮文本。不幸的是,因为“是”/“否”对话框被认为是不好的风格(它们不是描述性的,人们必须阅读整条消息,并且很容易误解什么意味着“是”和什么意味着“否”并意外地否定它们)。对于自定义文本,您必须直接使用 QMessageBox。我建议编写您自己的静态方法来接受可选的按钮文本。

If you want to have Yes/No translated into the current language, usually setting the system language should be enough. Otherwise try with Natim's suggestion.

If you want custom texts: The static methods like question() etc. don't allow custom button texts. That's unfortunate, as "Yes"/"No" dialogs are considered bad style (they are not descriptive, one has to read the whole message, and its easy to misunderstand what means Yes and what means No and accidentally negating them). For custom texts, you have to use QMessageBox directly. I'd suggest to write your own static methods accepting optional button texts.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文