2017-09-12 17:42:36 -03:00
<?xml version="1.0" encoding="UTF-8" ?>
2023-07-06 10:08:05 +02:00
<class name= "Translation" inherits= "Resource" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation= "../class.xsd" >
2017-09-12 17:42:36 -03:00
<brief_description >
2023-04-30 16:26:09 +02:00
A language translation that maps a collection of strings to their individual translations.
2017-09-12 17:42:36 -03:00
</brief_description>
<description >
2025-07-22 15:40:46 +08:00
[Translation] maps a collection of strings to their individual translations, and also provides convenience methods for pluralization.
A [Translation] consists of messages. A message is identified by its context and untranslated string. Unlike [url=https://www.gnu.org/software/gettext/]gettext[/url], using an empty context string in Godot means not using any context.
2017-09-12 17:42:36 -03:00
</description>
<tutorials >
2021-11-15 10:43:07 +01:00
<link title= "Internationalizing games" > $DOCS_URL/tutorials/i18n/internationalizing_games.html</link>
2025-07-14 22:53:50 +02:00
<link title= "Localization using gettext" > $DOCS_URL/tutorials/i18n/localization_using_gettext.html</link>
2021-11-15 10:43:07 +01:00
<link title= "Locales" > $DOCS_URL/tutorials/i18n/locales.html</link>
2017-09-12 17:42:36 -03:00
</tutorials>
<methods >
2021-09-29 14:18:45 +03:00
<method name= "_get_message" qualifiers= "virtual const" >
<return type= "StringName" />
2022-08-06 21:11:48 +03:00
<param index= "0" name= "src_message" type= "StringName" />
<param index= "1" name= "context" type= "StringName" />
2021-09-29 14:18:45 +03:00
<description >
Virtual method to override [method get_message].
</description>
</method>
<method name= "_get_plural_message" qualifiers= "virtual const" >
<return type= "StringName" />
2022-08-06 21:11:48 +03:00
<param index= "0" name= "src_message" type= "StringName" />
<param index= "1" name= "src_plural_message" type= "StringName" />
<param index= "2" name= "n" type= "int" />
<param index= "3" name= "context" type= "StringName" />
2021-09-29 14:18:45 +03:00
<description >
Virtual method to override [method get_plural_message].
</description>
</method>
2017-09-12 17:42:36 -03:00
<method name= "add_message" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2022-08-06 21:11:48 +03:00
<param index= "0" name= "src_message" type= "StringName" />
<param index= "1" name= "xlated_message" type= "StringName" />
2024-01-30 21:03:28 +01:00
<param index= "2" name= "context" type= "StringName" default= "&""" />
2017-09-12 17:42:36 -03:00
<description >
2018-11-19 02:20:05 -02:00
Adds a message if nonexistent, followed by its translation.
2020-08-07 13:17:12 +02:00
An additional context could be used to specify the translation context or differentiate polysemic words.
</description>
</method>
<method name= "add_plural_message" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2022-08-06 21:11:48 +03:00
<param index= "0" name= "src_message" type= "StringName" />
<param index= "1" name= "xlated_messages" type= "PackedStringArray" />
2024-01-30 21:03:28 +01:00
<param index= "2" name= "context" type= "StringName" default= "&""" />
2020-08-07 13:17:12 +02:00
<description >
Adds a message involving plural translation if nonexistent, followed by its translation.
An additional context could be used to specify the translation context or differentiate polysemic words.
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "erase_message" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2022-08-06 21:11:48 +03:00
<param index= "0" name= "src_message" type= "StringName" />
2024-01-30 21:03:28 +01:00
<param index= "1" name= "context" type= "StringName" default= "&""" />
2017-09-12 17:42:36 -03:00
<description >
2018-11-19 02:20:05 -02:00
Erases a message.
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "get_message" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "StringName" />
2022-08-06 21:11:48 +03:00
<param index= "0" name= "src_message" type= "StringName" />
2024-01-30 21:03:28 +01:00
<param index= "1" name= "context" type= "StringName" default= "&""" />
2017-09-12 17:42:36 -03:00
<description >
2018-11-19 02:20:05 -02:00
Returns a message's translation.
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "get_message_count" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "int" />
2017-09-12 17:42:36 -03:00
<description >
2018-11-19 02:20:05 -02:00
Returns the number of existing messages.
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "get_message_list" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "PackedStringArray" />
2017-09-12 17:42:36 -03:00
<description >
2025-07-22 15:40:46 +08:00
Returns the keys of all messages, that is, the context and untranslated strings of each message.
[b]Note:[/b] If a message does not use a context, the corresponding element is the untranslated string. Otherwise, the corresponding element is the context and untranslated string separated by the EOT character ([code]U+0004[/code]). This is done for compatibility purposes.
[codeblock]
for key in translation.get_message_list():
var p = key.find("\u0004")
if p == -1:
var untranslated = key
print("Message %s" % untranslated)
else:
var context = key.substr(0, p)
var untranslated = key.substr(p + 1)
print("Message %s with context %s" % [untranslated, context])
[/codeblock]
2017-09-12 17:42:36 -03:00
</description>
</method>
2020-08-07 13:17:12 +02:00
<method name= "get_plural_message" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "StringName" />
2022-08-06 21:11:48 +03:00
<param index= "0" name= "src_message" type= "StringName" />
<param index= "1" name= "src_plural_message" type= "StringName" />
<param index= "2" name= "n" type= "int" />
2024-01-30 21:03:28 +01:00
<param index= "3" name= "context" type= "StringName" default= "&""" />
2020-08-07 13:17:12 +02:00
<description >
Returns a message's translation involving plurals.
2022-08-09 11:19:47 -04:00
The number [param n] is the number or quantity of the plural object. It will be used to guide the translation system to fetch the correct plural form for the selected language.
2025-07-14 22:53:50 +02:00
[b]Note:[/b] Plurals are only supported in [url=$DOCS_URL/tutorials/i18n/localization_using_gettext.html]gettext-based translations (PO)[/url], not CSV.
2020-08-07 13:17:12 +02:00
</description>
</method>
2022-11-09 14:45:21 +02:00
<method name= "get_translated_message_list" qualifiers= "const" >
<return type= "PackedStringArray" />
<description >
2025-07-22 15:40:46 +08:00
Returns all the translated strings.
2022-11-09 14:45:21 +02:00
</description>
</method>
2017-09-12 17:42:36 -03:00
</methods>
<members >
2019-06-29 12:38:01 +02:00
<member name= "locale" type= "String" setter= "set_locale" getter= "get_locale" default= ""en"" >
2018-11-19 02:20:05 -02:00
The locale of the translation.
2017-09-12 17:42:36 -03:00
</member>
2025-07-21 17:59:14 +08:00
<member name= "plural_rules_override" type= "String" setter= "set_plural_rules_override" getter= "get_plural_rules_override" default= """" >
The plural rules string to enforce. See [url=https://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html]GNU gettext[/url] for examples and more info.
If empty or invalid, default plural rules from [method TranslationServer.get_plural_rules] are used. The English plural rules are used as a fallback.
</member>
2017-09-12 17:42:36 -03:00
</members>
</class>