PySide6.QtCore.QTranslator¶
- 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的代码片段,可能包含错误。
此类的对象包含一组从源语言到目标语言的翻译。
QTranslator
提供了在翻译文件中查找翻译的功能。翻译文件是使用 Qt Linguist 创建的。QTranslator
最常见的用途是:加载翻译文件,并使用installTranslator()
安装它。这是一个使用
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())
请注意,翻译器必须在应用程序的小部件之前创建。
大多数应用程序将永远不需要对这个类做任何其他事情。这个类提供的其他函数对于处理翻译文件的应用程序很有用。
查找翻译¶
可以使用
translate()
(如tr()
和translate()
所做的那样)查找翻译。translate()
函数最多接受三个参数:上下文 - 通常是
tr()
调用者的类名。源文本 - 通常是
tr()
的参数。消歧 - 一个可选的字符串,用于帮助在同一上下文中区分相同文本的不同用途。
例如,当程序在波兰语环境下运行时,对话框中的“Cancel”可能会显示为“Anuluj”(在这种情况下,源文本将是“Cancel”)。上下文通常是对话框的类名;通常不会有注释,翻译后的文本将是“Anuluj”。
但这并不总是那么简单。西班牙版本的打印机对话框,带有双面打印和装订设置,可能需要“Activado”和“Activada”作为“Enabled”的翻译。在这种情况下,源文本在两种情况下都是“Enabled”,上下文是对话框的类名,但这两个项目会有消歧,例如一个是“双面打印”,另一个是“装订”。消歧使翻译者能够为西班牙版本选择适当的性别,并使Qt能够区分翻译。
使用多种翻译¶
可以在应用程序中安装多个翻译文件。翻译的搜索顺序与安装顺序相反,因此首先搜索最近安装的翻译文件,最后搜索最早安装的翻译文件。一旦找到包含匹配字符串的翻译,搜索就会停止。
这种机制使得特定的翻译可以被“选择”或优先于其他翻译;只需通过将其传递给
removeTranslator()
函数从应用程序中卸载翻译器,并使用installTranslator()
重新安装它。然后它将成为搜索匹配字符串时的第一个翻译。另请参阅
installTranslator()
removeTranslator()
tr()
translate()
I18N ExampleHello tr() ExampleArrow Pad ExampleTroll Print Example
构造一个空的文件消息对象,其父对象为
parent
,且未连接到任何文件。- filePath()¶
- Return type:
字符串
返回已加载的翻译文件的路径。
如果尚未加载翻译、加载失败或翻译不是从文件加载的,则文件路径为空。
- isEmpty()¶
- Return type:
布尔
如果此翻译器为空,则返回
true
,否则返回false
。此函数适用于已剥离和未剥离的翻译文件。- language()¶
- Return type:
字符串
返回存储在翻译文件中的目标语言。
- load(data[, directory=""])¶
- Parameters:
data – 字符串
directory – str
- Return type:
布尔
此函数重载了
load()
。将长度为
len
的 QM 文件数据data
加载到翻译器中。数据不会被复制。调用者必须能够保证
data
不会被删除或修改。directory
仅用于在加载 QM 文件的依赖项时指定基础目录。如果文件没有依赖项,则忽略此参数。- load(filename[, directory=""[, search_delimiters=""[, suffix=""]]])
- Parameters:
filename – str
directory – str
search_delimiters – str
suffix – str
- Return type:
布尔
加载
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()
而不仅仅是区域设置名称,区域设置名称指的是日期和数字的格式,而不一定是用户界面语言。- load(locale, filename[, prefix=""[, directory=""[, suffix=""]]])
- Parameters:
locale –
QLocale
filename – str
prefix – str
directory – str
suffix – str
- Return type:
布尔
加载
filename
+prefix
+ui language name
+suffix
(如果未指定suffix
,则默认为“.qm”),这可能是绝对文件名或相对于directory
的文件名。如果成功加载翻译,则返回true
;否则返回false
。此翻译器对象的先前内容已被丢弃。
如果文件名不存在,将按以下顺序尝试其他文件名:
文件名没有附加
suffix
。文件名中去掉“_”字符后的ui语言部分和
suffix
。文件名已去除UI语言部分,未附加
suffix
。去除UI语言部分后的文件名,等等。
例如,一个在
locale
中运行的应用程序,具有以下ui languages
- “es”, “fr-CA”, “de” 可能会调用 load(QLocale(), “foo”, “.”, “/opt/foolib”, “.qm”)。load()
会在用户界面语言中将‘-’(短横线)替换为‘_’(下划线),然后尝试从以下列表中打开第一个存在的可读文件:/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
也会尝试加载区域设置名称的小写版本。- translate(context, sourceText[, disambiguation=None[, n=-1]])¶
- Parameters:
context – str
sourceText – str
disambiguation – str
n – 整数
- Return type:
字符串
返回键的翻译(
context
,sourceText
,disambiguation
)。如果未找到,则尝试(context
,sourceText
, “”)。如果仍然失败,则返回空字符串。注意
不完整的翻译可能会导致意外行为:如果没有提供(
context
,sourceText
,“”)的翻译,该方法在这种情况下实际上可能会返回一个不同的disambiguation
的翻译。如果
n
不是 -1,它用于选择翻译的适当形式(例如,“找到 %n 个文件” 与 “找到 %n 个文件”)。如果你需要以编程方式将翻译插入到
QTranslator
中,可以重新实现此函数。另请参阅