Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Translation

继承: Resource < RefCounted < Object

派生: OptimizedTranslation

语言翻译,能够将一组字符串映射到对应的翻译。

描述

Translation 将一组字符串映射到其各自的翻译,并提供一些方便的复数形式处理方法。

Translation 包含多条消息。消息通过其上下文和未翻译的字符串来识别。与 gettext 不同,在 Godot 中使用空上下文字符串意味着不使用任何上下文。

教程

属性

String

locale

"en"

String

plural_rules_override

""

方法

StringName

_get_message(src_message: StringName, context: StringName) virtual const

StringName

_get_plural_message(src_message: StringName, src_plural_message: StringName, n: int, context: StringName) virtual const

void

add_message(src_message: StringName, xlated_message: StringName, context: StringName = &"")

void

add_plural_message(src_message: StringName, xlated_messages: PackedStringArray, context: StringName = &"")

void

erase_message(src_message: StringName, context: StringName = &"")

StringName

get_message(src_message: StringName, context: StringName = &"") const

int

get_message_count() const

PackedStringArray

get_message_list() const

StringName

get_plural_message(src_message: StringName, src_plural_message: StringName, n: int, context: StringName = &"") const

PackedStringArray

get_translated_message_list() const


属性说明

String locale = "en" 🔗

翻译的区域设置。


String plural_rules_override = "" 🔗

  • void set_plural_rules_override(value: String)

  • String get_plural_rules_override()

要强制执行的复数规则字符串。有关示例和更多信息,请参阅 GNU gettext

如果为空或无效,则使用 TranslationServer.get_plural_rules() 中的默认复数规则。英文复数规则被用作回退方案。


方法说明

StringName _get_message(src_message: StringName, context: StringName) virtual const 🔗

覆盖 get_message() 的虚方法。


StringName _get_plural_message(src_message: StringName, src_plural_message: StringName, n: int, context: StringName) virtual const 🔗

覆盖 get_plural_message() 的虚方法。


void add_message(src_message: StringName, xlated_message: StringName, context: StringName = &"") 🔗

如果不存在,则添加一条消息,后跟其翻译。

可以使用一个额外的上下文,来指定翻译上下文或区分多义词。


void add_plural_message(src_message: StringName, xlated_messages: PackedStringArray, context: StringName = &"") 🔗

如果不存在相应的复数形式翻译,则添加一条,后跟其翻译。

可以使用额外的上下文来指定翻译上下文或区分多义词。


void erase_message(src_message: StringName, context: StringName = &"") 🔗

删除信息。


StringName get_message(src_message: StringName, context: StringName = &"") const 🔗

返回信息的翻译。


int get_message_count() const 🔗

返回现有信息的数量。


PackedStringArray get_message_list() const 🔗

返回所有消息的键,即每条消息的上下文和未翻译的字符串。

注意:如果消息不使用上下文,则对应的元素为未翻译的字符串。否则,相应的元素是上下文和未翻译的字符串,以 EOT 字符(U+0004)分隔。这样做是为了保持兼容性。

for key in translation.get_message_list():
    var p = key.find("\u0004")
    if p == -1:
        var untranslated = key
        print("消息 %s" % untranslated)
    else:
        var context = key.substr(0, p)
        var untranslated = key.substr(p + 1)
        print("消息 %s 其上下文 %s" % [untranslated, context])

StringName get_plural_message(src_message: StringName, src_plural_message: StringName, n: int, context: StringName = &"") const 🔗

返回一条消息涉及复数的翻译。

数字 n 是复数对象的数目或数量。它将被用于指导翻译系统为所选语言获取正确的复数形式。

注意:基于 gettext 的翻译(PO)支持复数,CSV 不支持。


PackedStringArray get_translated_message_list() const 🔗

返回所有已翻译的字符串。