Types/LocalisedString: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
(Created page with "Localised strings are a way to support translation of in-game text. It is an array where the first element is the key and the remaining elements are parameters that will be su...")
 
(→‎See also: link to tutorial)
Line 25: Line 25:
== See also ==
== See also ==
* http://lua-api.factorio.com/latest/Concepts.html#LocalisedString
* http://lua-api.factorio.com/latest/Concepts.html#LocalisedString
* [[Tutorial:Localisation]]

Revision as of 10:40, 30 July 2018

Localised strings are a way to support translation of in-game text. It is an array where the first element is the key and the remaining elements are parameters that will be substituted for placeholders in the template designated by the key.

The key identifies the string template. For example, "gui-alert-tooltip.attack" (for the template "__1__ objects are being damaged"; see the file data/core/locale/en.cfg).

The template can contain placeholders such as __1__ or __2__. These will be replaced by the respective parameter in the LocalisedString. The parameters themselves can be other localised strings, which will be processed recursively in the same fashion.

As a special case, when the key is just the empty string, the first parameter will be used as is.

Furthermore, when an API function expects a localised string, it will also accept a regular string (i.e. not a table) which will not be translated, or a number which will be converted to its textual representation.

Examples

In the English translation, this will print "No ammo"; in the Czech translation, it will print "Bez munice":

game.player.print{"description.no-ammo"}

The description.no-ammo template contains no placeholders, so no further parameters are necessary.

In the English translation, this will print "Durability: 5/9"; in the Japanese one, it will print "耐久度: 5/9":

game.player.print{"description.durability", 5, 9}

This will print "hello" in all translations:

game.player.print{"", "hello"}

This will print "hello you" in all translations:

game.player.print{"", "hello", " you"}

See also