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 –
QLocalefilename – 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中,可以重新实现此函数。另请参阅