我正在尝试将我的申请从芬兰语翻译成英语。 我查看了Riverbank的简短文档,并使其大部分正常工作。 在运行应用程序之前,我打电话给:

translator = QTranslator()
translator.load("gui/translations/mainwindow.qm")
app = QApplication(sys.argv)
app.installTranslator(translator)

如果我在代码上输入以下内容,该应用程序将正确翻译大多数文本: QCoreApplication.translate("setapikeyheading", "Aseta tunnisteavain")

现在,我的应用程序很少出现在不同上下文中可能会出现相同错误消息的情况。 我喜欢DRY,所以我设置了一些“常量”作为静态变量:

_UNKNOWN_ERROR = QCoreApplication.translate("unknown_error", "Tuntematon virhe: ")

然后,我运行pylupdate5并用Linguist翻译了字符串。 但是,在运行时,这些消息不会被翻译,而是仍然显示芬兰语原始文本。

为什么以及如何解决? 我有一个预感,它与上下文有关,但是由于我无法找到有关PyQt翻译的任何深入文档(Riverbank的语言非常模糊),因此我还没有弄清楚。

另外,考虑到Riverbank建议使用translation()而不是tr(),我应该如何使用PyQt翻译Designer生成的UI?

#1楼 票数:0

看来我发现了上下文问题的骇客。 Qt语言学家用来定义翻译的.ts文件和上下文中的<location filename="messages.py" line="9"/>行使我推断出源文件中字符串的实际位置很重要。

尽管我的问题中的变量不起作用,但根据Ling​​uist / QTranslate,函数似乎可以保持上下文不变,因此可以起作用:

def unknown_error(self):
    return QCoreApplication.translate("unknown_error", "Tuntematon virhe: ")

要显示文本,我只需要调用print(messages.unknown_error()) 对我来说,这感觉很像黑客,但确实有效。

  ask by Tumetsu translate from so

未解决问题?本站智能推荐:

1回复

pyqt5应用程序中对话框和主窗口的国际化(翻译)

我正在尝试将我用 pyside2/pyqt5 编写的小应用程序翻译成多种语言,例如中文。 谷歌搜索后,我从菜单->语言->中文中选择后设法将主窗口更改为中文。 但是,从菜单-> 选项弹出的对话框仍然是英文版本。 翻译信息似乎没有传输到对话框中。 我该如何解决这个问题? 基本上,我在
2回复

具有不同定位字符串的Qt国际化系统

我知道有些语言写的某些字符的顺序与普通拉丁语不同。 例如:英语中的百分比数字应为“ 100%”,而在波斯语中则为“ / 100”(符号位于数字之前)。 问:如何在Qt国际化系统中以一种智能的方式考虑这一点? 我首先想到了这段代码: 因此,将发生的事情是,在Qt语言学家中,翻译人员将
1回复

如果在Qt中使用国际化,请翻译“动态”内容

我目前正在评估C ++框架Qt v5.4.1。 目前,我正在尝试理解和应用Qt进行国际化 。 通过本文的帮助,我成功地实现了在运行时切换人类语言的方法: 如何创建可以在运行时切换语言的多语言应用程序? 而且我知道如何使用Qt语言学家翻译源(.ts)文件以及如何生成Qt语言学家消息(.qm
1回复

国际化django模板中的多个多元变量

我正在国际化(i18n)我们的django项目, {% blocktrans %}添加到我们的模板中。 我知道使用count和{% plural %}来为变量使用不同的字符串。 但是我有一个字符串,它有两个变量,每个变量需要复数,即4个可能的选项。 例如,我的字符串是"You have
2回复

通过Babel国际化Python2.6应用程序

我们正在 Windows 下评估 Babel 0.9.5 [1] 以与 Python 2.6 一起使用,并且有以下我们无法通过阅读文档或谷歌搜索来回答的问题。 1) 我想对 ungettext 使用类似 _ 的缩写。 对于是否应该为此使用 n_ 或 N_ 是否存在一致意见? n_ 似乎不起作用。
1回复

具有国际字符的QSqlQuery不返回结果

我有一个包含ClipArt标签的Sqlite数据库,我们正在将该数据库转换为瑞典语,但是如果字符不是英语,则我的数据库查询现在不返回结果。 例如,fisk == fish并能很好地工作,但是öst== east但失败了。 我正在从QLineEdit的QString中构造查询: 然后将
1回复

django国际化:翻译字符串未完全翻译

我正在使用django创建中文博客。 我用中文写出我可以控制的所有内容,例如帖子文本,博客标题,博客导航以及评论和联系我表格的标签。 我唯一无法控制的是表单提交错误,例如“此字段是必填字段。”,“输入有效的电子邮件地址”。 因为我使用django注释框架和表单库制作注释表单和联系我表单,所
7回复

Django国际化和翻译问题

我对Django翻译有疑问。 问题1-我更新了django.po文件中的字符串,但是更改未显示在网页上。 问题2-我使用django-admin.py makemessages -l等创建了自己的语言环境文件,将转换字符串添加到文件中,但是它们也未显示在页面上。 我认为这不是设置问题