1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00
Files
godot/doc/classes/Translation.xml
Haoyu Qiu e882e42e1b Add default plural rules
This makes the PO loader correctly handle the situation where the optional
`Plural-Forms` header field does not exist.

The `Translation` class and its subclasses always have access to valid plural
rules via `_get_plural_rules()`. Plural rules are prioritized:

1. `Translation.plural_rules_override`
2. `TranslationServer.get_plural_rules(locale)`
3. The English plural rules: `nplurals=2; plurals=(n != 1)`

Co-Authored-By: Pāvels Nadtočajevs <7645683+bruvzg@users.noreply.github.com>
2025-09-26 10:51:57 +08:00

111 lines
5.2 KiB
XML

<?xml version="1.0" encoding="UTF-8" ?>
<class name="Translation" inherits="Resource" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A language translation that maps a collection of strings to their individual translations.
</brief_description>
<description>
[Translation]s are resources that can be loaded and unloaded on demand. They map a collection of strings to their individual translations, and they also provide convenience methods for pluralization.
</description>
<tutorials>
<link title="Internationalizing games">$DOCS_URL/tutorials/i18n/internationalizing_games.html</link>
<link title="Localization using gettext">$DOCS_URL/tutorials/i18n/localization_using_gettext.html</link>
<link title="Locales">$DOCS_URL/tutorials/i18n/locales.html</link>
</tutorials>
<methods>
<method name="_get_message" qualifiers="virtual const">
<return type="StringName" />
<param index="0" name="src_message" type="StringName" />
<param index="1" name="context" type="StringName" />
<description>
Virtual method to override [method get_message].
</description>
</method>
<method name="_get_plural_message" qualifiers="virtual const">
<return type="StringName" />
<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" />
<description>
Virtual method to override [method get_plural_message].
</description>
</method>
<method name="add_message">
<return type="void" />
<param index="0" name="src_message" type="StringName" />
<param index="1" name="xlated_message" type="StringName" />
<param index="2" name="context" type="StringName" default="&amp;&quot;&quot;" />
<description>
Adds a message if nonexistent, followed by its translation.
An additional context could be used to specify the translation context or differentiate polysemic words.
</description>
</method>
<method name="add_plural_message">
<return type="void" />
<param index="0" name="src_message" type="StringName" />
<param index="1" name="xlated_messages" type="PackedStringArray" />
<param index="2" name="context" type="StringName" default="&amp;&quot;&quot;" />
<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.
[b]Note:[/b] Plurals are only supported in [url=$DOCS_URL/tutorials/i18n/localization_using_gettext.html]gettext-based translations (PO)[/url], not CSV.
</description>
</method>
<method name="erase_message">
<return type="void" />
<param index="0" name="src_message" type="StringName" />
<param index="1" name="context" type="StringName" default="&amp;&quot;&quot;" />
<description>
Erases a message.
</description>
</method>
<method name="get_message" qualifiers="const">
<return type="StringName" />
<param index="0" name="src_message" type="StringName" />
<param index="1" name="context" type="StringName" default="&amp;&quot;&quot;" />
<description>
Returns a message's translation.
</description>
</method>
<method name="get_message_count" qualifiers="const">
<return type="int" />
<description>
Returns the number of existing messages.
</description>
</method>
<method name="get_message_list" qualifiers="const">
<return type="PackedStringArray" />
<description>
Returns all the messages (keys).
</description>
</method>
<method name="get_plural_message" qualifiers="const">
<return type="StringName" />
<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" default="&amp;&quot;&quot;" />
<description>
Returns a message's translation involving plurals.
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.
[b]Note:[/b] Plurals are only supported in [url=$DOCS_URL/tutorials/i18n/localization_using_gettext.html]gettext-based translations (PO)[/url], not CSV.
</description>
</method>
<method name="get_translated_message_list" qualifiers="const">
<return type="PackedStringArray" />
<description>
Returns all the messages (translated text).
</description>
</method>
</methods>
<members>
<member name="locale" type="String" setter="set_locale" getter="get_locale" default="&quot;en&quot;">
The locale of the translation.
</member>
<member name="plural_rules_override" type="String" setter="set_plural_rules_override" getter="get_plural_rules_override" default="&quot;&quot;">
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>
</members>
</class>