- class QTranslator#
QTranslator
类为文本输出提供国际化支持。更多…概述#
方法#
def
__init__()
def
filePath()
def
language()
def
load()
虚拟方法#
def
isEmpty()
def
translate()
注意
本文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译存在问题时,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建问题报告来告诉我们。
详细说明#
警告
本节包含自动从C++转换为Python的代码片段,可能包含错误。
此类对象包含从源语言到目标语言的翻译集合。《PySide6.QtCore.QTranslator》提供了一个函数来查找翻译文件。使用Qt Linguist创建翻译文件。
《PySide6.QtCore.QTranslator》最常见的用途是:加载翻译文件,并使用《PySide6.QtCore.QCoreApplication.installTranslator》(安装翻译器)进行安装。
下面是一个使用《PySide6.QtCore.QTranslator》的示例《main()`》函数。
if __name__ == "__main__": app = QApplication([]) translator = QTranslator() # look up e.g. :/i18n/myapp_de.qm if translator.load(QLocale(), "myapp", "_", ":/i18n"): QCoreApplication.installTranslator(translator) hello = QPushButton(QCoreApplication.translate("main", "Hello world!")) hello.resize(100, 30) hello.show() sys.exit(app.exec())
请注意,翻译器必须在创建应用程序的小部件之前创建。
大多数应用程序都不需要对这个类进行其他操作。此类提供的其他函数有助于处理翻译文件的应用程序。
查找翻译#
可以使用《PySide6.QtCore.QTranslator.translate》(类似《tr()`》和《PySide6.QtCore.QCoreApplication.translate》)查找翻译。该《translate()`》函数最多可接受三个参数
上下文 - 通常为《tr()`》调用者的类名。
源文本 - 通常为《tr()`》的参数。
消除歧义 - 有助于消除同一上下文中相同文本的不同用法的一个可选字符串。
例如,在对话框中的“取消”选项可能当程序在波兰语(在这种情况下源文本为“取消”)运行时会显示“Anuluj”。上下文通常是对话框的类名;通常没有注释,翻译文本将是“Anuluj”。
但情况并不总是如此简单。打印对话框的西班牙语版本,它设置了双面打印和装订设置,可能需要两个不同的翻译,“Activado”和“Activada”来翻译“Enabled”。在这种情况下,两种情况下的源文本都将为“Enabled”,上下文将是对话框的类名,但是两个条目将具有消除歧义的字符串,比如一个的消除歧义是“双面打印”,另一个是“装订”。消除歧义允许翻译器为西班牙语版本选择适当的性别,并允许Qt区分翻译。
使用多个翻译#
可以在应用中安装多个翻译文件。搜索翻译的顺序与安装的顺序相反,因此最最近安装的翻译文件首先搜索翻译,最早的翻译文件最后搜索。一旦找到包含匹配字符串的翻译,搜索就会停止。
该机制使得特定的翻译可以被“选择”或比其他翻译拥有更高的优先级;只需通过调用 removeTranslator() 函数从应用中卸载翻译器,然后使用 installTranslator() 重新安装它。此时它将成为搜索匹配字符串的首选翻译。
另见
installTranslator() removeTranslator() tr() translate()
I18N ExampleHello tr() ExampleArrow Pad ExampleTroll Print Example
构建一个空的带父对象
parent
的信息文件对象,不连接到任何文件。- filePath()#
- 返回类型:
str
返回加载的翻译文件的路径。
如果在没有加载翻译的情况下、加载失败或翻译未从文件加载时,文件路径将为空。
- isEmpty()#
- 返回类型:
bool
如果此翻译器为空,则返回
true
,否则返回false
。此功能与パックされたおよび非パックされた翻译文件一起工作。- language()#
- 返回类型:
str
返回在翻译文件中存储的目标语言。
- load(locale, filename[, prefix=""[, directory=""[, suffix=""]]])#
- 参数:
locale –
QLocale
filename – str
prefix – str
directory – str
suffix – str
- 返回类型:
bool
加载文件
filename
加prefix
加ui language name
加suffix
(如果未指定suffix
则为 “.qm”),这可能是一个绝对路径文件或相对于directory
的文件。如果成功加载翻译,则返回true
;否则返回false
。丢弃此翻译对象之前的所有内容。
如果文件名不存在,将会按照以下顺序尝试其他文件名
添加
suffix
的文件名。去除 UI 语言部分的文件名和
suffix
。去除 UI 语言部分,不添加
suffix
。进一步去除 UI 语言部分,等等。
例如,一个运行在具有以下
ui languages
- “es”, “fr-CA”, “de” 的区域设置中的应用程序可能会调用 load(QLocale(), “foo”, “.”, “/opt/foolib”, “.qm”)。load()
会将 ui 语言的 '-' 替换为 '_',然后尝试从这个列表中打开第一个可读的文件/opt/foolib/foo.es.qm
/opt/foolib/foo.es
/opt/foolib/foo.fr_CA.qm
/opt/foolib/foo.fr_CA
/opt/foolib/foo.fr.qm
/opt/foolib/foo.fr
/opt/foolib/foo.de.qm
/opt/foolib/foo.de
/opt/foolib/foo.qm
/opt/foolib/foo
./opt/foolib/foo
在文件系统是区分大小写的操作系统上,
QTranslator
还会尝试加载区域名的小写版本。- load(filename[, directory=""[, search_delimiters=""[, suffix=""]]])
- 参数:
filename – str
directory – str
search_delimiters – str
suffix – str
- 返回类型:
bool
加载
filename
加suffix
(如果未指定suffix
则为 “.qm”),这可能是一个绝对路径文件或相对于directory
的文件。如果成功加载翻译,则返回true
;否则返回false
。如果没有指定
directory
,则使用当前目录(即,currentPath()
)。丢弃此翻译对象之前的所有内容。
如果文件名不存在,将会按照以下顺序尝试其他文件名
添加
suffix
的文件名。如果文件名在
search_delimiters
中的字符之后包含文本,则去除文件名(如果search_delimiters
为空字符串,则默认使用 "_" 和 ".")以及suffix
。去除
suffix
后的文件名。进一步去除文件名等。
例如,一个在 fr_CA 区域设置(法语加拿大)下运行的应用程序可能会调用 load("foo.fr_ca", "/opt/foolib")。load() 将会尝试从这个列表中打开第一个存在的可读文件
/opt/foolib/foo.fr_ca.qm
/opt/foolib/foo.fr_ca
/opt/foolib/foo.fr.qm
/opt/foolib/foo.fr
/opt/foolib/foo.qm
/opt/foolib/foo
通常,最好使用 QTranslator::load(const
QLocale
&, constQString
&, constQString
&, constQString
&, constQString
&) 函数,因为它使用uiLanguages()
而不仅仅是区域名称,这指的是日期和数字的格式化,而不一定是 UI 语言。- load(data[, directory=""])
- 参数:
data – 字符串
directory – str
- 返回类型:
bool
此函数重载了
load()
。将长度为
len
的 QM 文件数据data
加载到翻译器中。数据不会被复制。调用者必须能够保证
data
不会被删除或修改。directory
仅用于在加载 QM 文件的依赖项时指定基本目录。如果文件没有依赖项,则忽略此参数。- translate(context, sourceText[, disambiguation=None[, n=-1]])#
- 参数:
context – 字符串
sourceText – 字符串
disambiguation – 字符串
n – 整数
- 返回类型:
str
返回键 (
context
,sourceText
,disambiguation
) 的翻译。如果未找到,则尝试 (context
,sourceText
, "")。如果仍失败,则返回空字符串。注意
不完整的翻译可能会导致意外行为:如果没有提供对(
context
,sourceText
,“”)的翻译,在这种情况下,该方法可能实际上会返回对不同的disambiguation
的翻译。如果
n
不是-1,它会被用来选择适当的翻译形式(例如,“%n个文件找到”与“%n个文件找到”之间)。如果您需要将翻译程序化地插入到
QTranslator
中,这个函数可以被重写。另见