Difference between revisions of "Localization Guidelines"

From War Thunder Wiki
Jump to: navigation, search
(Created page with "== Localization Guidelines == Localization texts sometimes contain special characters, tags, and other technical elements. Most of them are well known to professional transla...")
 
m (Minor markup fix)
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Localization Guidelines ==
 
 
 
Localization texts sometimes contain special characters, tags, and other technical elements. Most of them are well known to professional translators and coders, or intuitive, but there is something you need to know – we use the original plurals syntax, see below.
 
Localization texts sometimes contain special characters, tags, and other technical elements. Most of them are well known to professional translators and coders, or intuitive, but there is something you need to know – we use the original plurals syntax, see below.
  
 +
== Plurals ==
 +
<span style="font-family:monospace;font-weight:bold;color:#7A869A">
 +
{n} <span style="color:#36F">{n=<span style="color:#396">month</span>/<span style="color:#396">months</span>}</span>
 +
<br />
 +
{n} <span style="color:#36F">{n=<span style="color:#396">capture zone</span>/<span style="color:#396">capture zones</span>}</span>
 +
</span>
  
Plurals
+
The plurals syntax is an extension of the named variable placeholder syntax (read about it below), but differs from them by the presence of the '''<code><span style="color:#36F">=</span></code>''' character inside '''<code><span style="color:#36F">{</span></code>''' and '''<code><span style="color:#36F">}</span></code>'''. To the left of the '''<code><span style="color:#36F">=</span></code>''' character there is the variable name (DON’T translate it), and to the right of the '''<code><span style="color:#36F">=</span></code>''' character there are plurals separated by '''<code><span style="color:#36F">/</span></code>''' character. Those plurals MUST be translated.
  
{n} {n=month/months}
+
Each plural form is a string that can contain any character except the character '''<code><span style="color:#36F">/</span></code>'''. Even spaces are allowed, i.e. it CAN consist of several words.
{n} {n=capture zone/capture zones}
 
 
 
The plurals syntax is an extension of the named variable placeholder syntax (read about it below), but differs from them by the presence of the = character inside { and }. To the left of the = character there is the variable name (DON’T translate it), and to the right of the = character there are plurals separated by / character. Those plurals MUST be translated.
 
 
 
Each plural form is a string that can contain any character except the character /. Even spaces are allowed, i.e. it CAN consist of several words.
 
  
 
The number of plural forms must be specified according to your language. In different languages, there are from 1 to 3 of plural forms (for example, in Latin languages – 2 forms, in Slavic languages – 3 forms, and in Asian languages – 1 form).
 
The number of plural forms must be specified according to your language. In different languages, there are from 1 to 3 of plural forms (for example, in Latin languages – 2 forms, in Slavic languages – 3 forms, and in Asian languages – 1 form).
  
There is a special exception for languages that have only 1 plural form (Asian languages). For them, it is allowed to either write a single plural form, in the usual way: "{n}{n=个月}", or completely remove the block with plurals, and write it like this: "{n}个月"
+
There is a special exception for languages that have only 1 plural form (Asian languages). For them, it is allowed to either write a single plural form, in the usual way: '''<code><span style="color:#7A869A">{n}<span style="color:#36F">{n=<span style="color:#396">个月</span>}</span></span></code>''', or completely remove the block with plurals, and write it like this: '''<code><span style="color:#7A869A">{n}<span style="color:#396">个月</span></span></code>'''.
  
If you are creating a translation into a new language, please report it to Zoki28 on Crowdin so that we can add plurals support for this new language to War Thunder. Please do so even if your translation is unofficial. This is important because with the help of the translation community, an unofficial translation can later become official.
+
{{Notice
 +
|If you are creating a translation into a '''new language''', please report it to '''[https://crowdin.com/profile/Zoki28 Zoki28]''' on Crowdin so that we can '''add plurals support''' for this new language to War Thunder. Please do it even if your translation is unofficial. This is important because with the help of the translation community, an unofficial translation can later become official.}}
  
How it works?
+
=== How it works? ===
 +
<span style="white-space:pre;font-family:monospace;font-style:italic">English:    <span style="font-style:normal;font-weight:bold;color:#7A869A">{n} <span style="color:#36F">{n=<span style="color:#396">month</span>/<span style="color:#396">months</span>}</span></span>
 +
German:    <span style="font-style:normal;font-weight:bold;color:#7A869A">{n} <span style="color:#36F">{n=<span style="color:#396">Monat</span>/<span style="color:#396">Monate</span>}</span></span>
 +
Polish:    <span style="font-style:normal;font-weight:bold;color:#7A869A">{n} <span style="color:#36F">{n=<span style="color:#396">miesiąc</span>/<span style="color:#396">miesiące</span>/<span style="color:#396">miesięcy</span>}</span></span>
 +
Serbian:    <span style="font-style:normal;font-weight:bold;color:#7A869A">{n} <span style="color:#36F">{n=<span style="color:#396">mesec</span>/<span style="color:#396">meseca</span>/<span style="color:#396">meseci</span>}</span></span>
 +
Czech:      <span style="font-style:normal;font-weight:bold;color:#7A869A">{n} <span style="color:#36F">{n=<span style="color:#396">měsíc</span>/<span style="color:#396">měsíce</span>/<span style="color:#396">měsíců</span>}</span></span>
 +
Chinese:    <span style="font-style:normal;font-weight:bold;color:#7A869A">{n}<span style="color:#36F">{n=<span style="color:#396">个月</span>}</span></span> or <span style="font-style:normal;font-weight:bold;color:#7A869A">{n}<span style="color:#396">个月</span></span></span>
  
English:   {n} {n=month/months}
+
In this example, '''<code><span style="color:#7A869A">{n}</span></code>''' is the placeholder for the variable '''n''', and '''<code><span style="color:#36F">{n=...}</span></code>''' is the list of plurals associated with that number '''n'''. When dealing with plurals, you can be sure that variable '''n''' will be an integer number. When generating a text, the scripts additionally pass some set of parameters. For example, if the script pass the parameter '''n=1''' or '''n=2''' or '''n=5''' to generate a text from this example above, then the text will be generated as follows:
German:     {n} {n=Monat/Monate}
 
Polish:    {n} {n=miesiąc/miesiące/miesięcy}
 
Serbian:    {n} {n=mesec/meseca/meseci}
 
Czech:      {n} {n=měsíc/měsíce/měsíců}
 
Chinese:    {n}{n=个月} or {n}个月
 
  
In this example, {n} is the placeholder for the variable n, and {n=...} is the list of plurals associated with that number n. When dealing with plurals, you can be sure that variable n will be an integer number. When generating a text, the scripts additionally pass some set of parameters. For example, if the script pass the parameter n=1 or n=2 or n=5 to generate a text from this example above, then the text will be generated as follows:
+
<span style="white-space:pre;font-family:monospace;font-style:italic">English:    <span style="font-style:normal;font-style:normal;font-weight:bold;color:#B93434">1 month</span> or <span style="font-style:normal;font-weight:bold;color:#B93434">2 months</span> or <span style="font-style:normal;font-weight:bold;color:#B93434">5 months</span>
 +
German:    <span style="font-style:normal;font-weight:bold;color:#B93434">1 Monat</span> or <span style="font-style:normal;font-weight:bold;color:#B93434">2 Monate</span> or <span style="font-style:normal;font-weight:bold;color:#B93434">5 Monate</span>
 +
Polish:    <span style="font-style:normal;font-weight:bold;color:#B93434">1 miesiąc</span> or <span style="font-style:normal;font-weight:bold;color:#B93434">2 miesiące</span> or <span style="font-style:normal;font-weight:bold;color:#B93434">5 miesięcy</span>
 +
Serbian:    <span style="font-style:normal;font-weight:bold;color:#B93434">1 mesec</span> or <span style="font-style:normal;font-weight:bold;color:#B93434">2 meseca</span> or <span style="font-style:normal;font-weight:bold;color:#B93434">5 meseci</span>
 +
Czech:      <span style="font-style:normal;font-weight:bold;color:#B93434">1 měsíc</span> or <span style="font-style:normal;font-weight:bold;color:#B93434">2 měsíce</span> or <span style="font-style:normal;font-weight:bold;color:#B93434">5 měsíců</span>
 +
Chinese:    <span style="font-style:normal;font-weight:bold;color:#B93434">1个月</span> or <span style="font-style:normal;font-weight:bold;color:#B93434">2个月</span> or <span style="font-style:normal;font-weight:bold;color:#B93434">5个月</span></span>
  
English:    1 month or 2 months or 5 months
+
=== More complex example ===
German:    1 Monat or 2 Monate or 5 Monate
 
Polish:    1 miesiąc or 2 miesiące or 5 miesięcy
 
Serbian:    1 mesec or 2 meseca or 5 meseci
 
Czech:      1 měsíc or 2 měsíce or 5 měsíců
 
Chinese:    1个月 or 2个月 or 5个月
 
  
More complex example
+
<span style="font-family:monospace;font-weight:bold;color:#7A869A">
 
+
Unable to join the team {chosenTeam} ({chosenTeamCount} <span style="color:#36F">{chosenTeamCount=<span style="color:#396">player</span>/<span style="color:#396">players</span>}</span>) due to the lack of players in the team {otherTeam} ({otherTeamCount} <span style="color:#36F">{otherTeamCount=<span style="color:#396">player</span>/<span style="color:#396">players</span>}</span>).
Unable to join the team {chosenTeam} ({chosenTeamCount} {chosenTeamCount=player/players}) due to the lack of players in the team {otherTeam} ({otherTeamCount} {otherTeamCount=player/players}).
+
</span>
  
 
To generate a text, the script passes a set of parameters. For example:
 
To generate a text, the script passes a set of parameters. For example:
chosenTeam="A", chosenTeamCount=5, otherTeam="B", otherTeamCount=1
+
<br />'''chosenTeam="A", chosenTeamCount=5, otherTeam="B", otherTeamCount=1'''
As a result, the following text is generated:
+
<br />As a result, the following text is generated:
  
 +
<span style="font-family:monospace;font-weight:bold;color:#B93434">
 
Unable to join the team A (5 players) due to the lack of players in the team B (1 player).
 
Unable to join the team A (5 players) due to the lack of players in the team B (1 player).
 +
</span>
  
 
Therefore, for example, in Czech, this line should be translated like this:
 
Therefore, for example, in Czech, this line should be translated like this:
  
Nepodařilo se přidat ke straně {chosenTeam} ({chosenTeamCount} {chosenTeamCount=hráč/hráči/hráčů}) kvůli nedostatku hráčů na straně {otherTeam} ({otherTeamCount} {otherTeamCount=hráč/hráči/hráčů}).
+
<span style="font-family:monospace;font-weight:bold;color:#7A869A">
 +
Nepodařilo se přidat ke straně {chosenTeam} ({chosenTeamCount} <span style="color:#36F">{chosenTeamCount=<span style="color:#396">hráč</span>/<span style="color:#396">hráči</span>/<span style="color:#396">hráčů</span>}</span>) kvůli nedostatku hráčů na straně {otherTeam} ({otherTeamCount} <span style="color:#36F">{otherTeamCount=<span style="color:#396">hráč</span>/<span style="color:#396">hráči</span>/<span style="color:#396">hráčů</span>}</span>).
 +
</span>
  
 
Then the text in Czech will be generated like this:
 
Then the text in Czech will be generated like this:
  
 +
<span style="font-family:monospace;font-weight:bold;color:#B93434">
 
Nepodařilo se přidat ke straně A (5 hráčů) kvůli nedostatku hráčů na straně B (1 hráč).
 
Nepodařilo se přidat ke straně A (5 hráčů) kvůli nedostatku hráčů na straně B (1 hráč).
 +
</span>
  
What else can you do with plurals?
+
=== What else can you do with plurals? ===
  
 
The syntax of the plurals allows some freedom of choice. It happens that the plurals in the original source text in English are not very convenient for translation to your language. In this case you CAN alter the texts of the plurals in the translated text. For example, we have the following source text:
 
The syntax of the plurals allows some freedom of choice. It happens that the plurals in the original source text in English are not very convenient for translation to your language. In this case you CAN alter the texts of the plurals in the translated text. For example, we have the following source text:
  
{amount} Golden {amount=Eagle/Eagles}
+
<span style="font-family:monospace;font-weight:bold;color:#7A869A">
 +
{amount} Golden <span style="color:#36F">{amount=<span style="color:#396">Eagle</span>/<span style="color:#396">Eagles</span>}</span>
 +
</span>
  
In Polish, the word "Golden" should also be spelled differently here, depending on the amount of eagles. Therefore, it is allowed to remake texts in plurals block (and even add new plural blocks) when required by the rules of your language. In this case, the text can be translated into Polish by any of the following ways:
+
In Polish, the word “Golden” should also be spelled differently here, depending on the amount of eagles. Therefore, it is allowed to remake texts in plurals block (and even add new plural blocks) when required by the rules of your language. In this case, the text can be translated into Polish by any of the following ways:
  
{amount} {amount=Złoty Orzeł/Złote Orły/Złotych Orłów}
+
<span style="font-family:monospace;font-weight:bold;color:#7A869A">
{amount} {amount=Złoty/Złote/Złotych} {amount=Orzeł/Orły/Orłów}
+
{amount} <span style="color:#36F">{amount=<span style="color:#396">Złoty Orzeł</span>/<span style="color:#396">Złote Orły</span>/<span style="color:#396">Złotych Orłów</span>}</span>
{amount} Złot{amount=y/e/ych} Or{amount=zeł/ły/łów}
+
<br />
 +
{amount} <span style="color:#36F">{amount=<span style="color:#396">Złoty</span>/<span style="color:#396">Złote</span>/<span style="color:#396">Złotych</span>} {amount=<span style="color:#396">Orzeł</span>/<span style="color:#396">Orły</span>/<span style="color:#396">Orłów</span>}</span>
 +
<br />
 +
{amount} Złot<span style="color:#36F">{amount=<span style="color:#396">y</span>/<span style="color:#396">e</span>/<span style="color:#396">ych</span>}</span> Or<span style="color:#36F">{amount=<span style="color:#396">zeł</span>/<span style="color:#396">ły</span>/<span style="color:#396">łów</span>}</span>
 +
</span>
  
 
All these 3 options will generate the same result. The scripts will generate texts in Polish correctly:
 
All these 3 options will generate the same result. The scripts will generate texts in Polish correctly:
  
1 Złoty Orzeł, 2 Złote Orły, 5 Złotych Orłów
+
<span style="font-family:monospace;font-weight:bold;color:#B93434">1 Złoty Orzeł</span>, <span style="font-family:monospace;font-weight:bold;color:#B93434">2 Złote Orły</span>, <span style="font-family:monospace;font-weight:bold;color:#B93434">5 Złotych Orłów</span>
  
 +
== Named variable placeholders ==
  
Named variable placeholders
+
<span style="font-family:monospace;font-weight:bold;color:#7A869A">
 +
Each player who registers using your link will receive <span style="color:#36F">{gift}</span> as a gift.
 +
<br />
 +
每个使用该推广链接注册的玩家都将获得 <span style="color:#36F">{gift}</span>。
 +
<br />
 +
Online: <span style="color:#36F">{playersOnline}</span>, Battles: <span style="color:#36F">{battles}</span>
 +
<br />
 +
En línea: <span style="color:#36F">{playersOnline}</span>, Batallas: <span style="color:#36F">{battles}</span>
 +
</span>
  
Each player who registers using your link will receive {gift} as a gift.
+
Named variable placeholder look like the variable name in curly braces. When generating text, these placeholders will be replaced with some strings or numbers. When there are multiple named variable placeholders in the text, you CAN interchange them as you need, if required by the rules of your language. But DON’T translate the content between '''<code><span style="color:#36F">{</span></code>''' and '''<code><span style="color:#36F">}</span></code>''' (except when it contains the character '''<code><span style="color:#36F">=</span></code>''', followed by the plurals, about which it is written above – plurals MUST be translated).
每个使用该推广链接注册的玩家都将获得 {gift}。
 
Online: {playersOnline}, Battles: {battles}
 
En línea: {playersOnline}, Batallas: {battles}
 
  
Named variable placeholder look like the variable name in curly braces. When generating text, these placeholders will be replaced with some strings or numbers. When there are multiple named variable placeholders in the text, you CAN interchange them as you need, if required by the rules of your language. But DON’T translate the content between { and } (except when it contains the character =, followed by the plurals, about which it is written above – plurals MUST be translated).
+
== Keyboard/gamepad shortcut image placeholders ==
  
 +
<span style="font-family:monospace;font-weight:bold;color:#7A869A">
 +
Press <span style="color:#36F"><nowiki>{{ID_CONTINUE}}</nowiki></span> to continue
 +
<br />
 +
Devam etmek için <span style="color:#36F"><nowiki>{{ID_CONTINUE}}</nowiki></span> tuşuna basın
 +
<br />
 +
<span style="color:#36F"><nowiki>{{ID_TOGGLE_VIEW_SHIP}}</nowiki></span> Switch to third-person view
 +
<br />
 +
<span style="color:#36F"><nowiki>{{ID_TOGGLE_VIEW_SHIP}}</nowiki></span> 을(를) 눌러 3인칭 시점으로 전환하라
 +
</span>
  
Keyboard/gamepad shortcut image placeholders
+
Keyboard shortcut image placeholders look almost like named variable placeholders, but differ from them in that they are enclosed in double curly braces '''<code><span style="color:#36F"><nowiki>{{</nowiki></span></code>''' and '''<code><span style="color:#36F"><nowiki>}}</nowiki></span></code>'''. DON’T translate the content between '''<code><span style="color:#36F"><nowiki>{{</nowiki></span></code>''' and '''<code><span style="color:#36F"><nowiki>}}</nowiki></span></code>'''. You can place this block anywhere in the text – in the beginning, middle, or end of text.
  
Press {{ID_CONTINUE}} to continue
+
== Printf format specifiers ==
Devam etmek için {{ID_CONTINUE}} tuşuna basın
 
{{ID_TOGGLE_VIEW_SHIP}} Switch to third-person view
 
{{ID_TOGGLE_VIEW_SHIP}} 을(를) 눌러 3인칭 시점으로 전환하라
 
  
Keyboard shortcut image placeholders look almost like named variable placeholders, but differ from them in that they are enclosed in double curly braces {{ and }}. DON’T translate the content between {{ and }}. You can place this block anywhere in the text – in the beginning, middle, or end of text.
+
<span style="font-family:monospace;font-weight:bold;color:#7A869A">
 +
You cannot add more than <span style="color:#36F">%d</span> contacts.
 +
<br />
 +
Vous ne pouvez pas ajouter plus de <span style="color:#36F">%d</span> contacts.
 +
<br />
 +
<span style="color:#36F">%d</span> mm
 +
<br />
 +
<span style="color:#36F">%d</span>-мм
 +
<br />
 +
Discount on vehicle <span style="color:#36F">%s%%</span>.
 +
<br />
 +
Sconto sull' unità <span style="color:#36F">%s%%</span>.
 +
</span>
  
 +
The printf format specifier is a special sequence of characters, beginning with the '''<code><span style="color:#36F">%</span></code>''' character, which the application replaces with some number or string. Most often in our localization texts they look like '''<code><span style="color:#36F">%s</span></code>''' or '''<code><span style="color:#36F">%d</span></code>''', but sometimes they can be more complicated, for example '''<code><span style="color:#36F">%.3f</span></code>''', etc. All types of printf format specifiers are described in the [https://en.wikipedia.org/wiki/Printf_format_string printf function manual] for C/C++ programming language.
  
Printf format specifiers
+
Specifiers can be surrounded by spaces, or merge with adjacent text – it doesn't matter. In place of these specifiers, the application will substitute some string (if it is '''<code><span style="color:#36F">%s</span></code>''') or number (if it is '''<code><span style="color:#36F">%d</span></code>''', and others), or the usual percent sign % (if it is '''<code><span style="color:#36F">%%</span></code>'''). By the way, '''<code><span style="color:#36F">%s</span></code>''' can be used to substitute the string that look like number.
 
 
You cannot add more than %d contacts.
 
Vous ne pouvez pas ajouter plus de %d contacts.
 
%d mm
 
%d-мм
 
Discount on vehicle %s%%.
 
Sconto sull' unità %s%%.
 
 
 
The printf format specifier is a special sequence of characters, beginning with the % character, which the application replaces with some number or string. Most often in our localization texts they look like %s or %d, but sometimes they can be more complicated, for example %.3f, etc. All types of printf format specifiers are described in the printf function manual for C/C++ programming language.
 
 
 
Specifiers can be surrounded by spaces, or merge with adjacent text – it doesn't matter. In place of these specifiers, the application will substitute some string (if it is %s) or number (if it is %d, and others), or the usual percent sign % (if it is %%). By the way, %s can be used to substitute the string that look like number.
 
  
 
In the translated text, all printf format specifiers must be present, and they MUST go in the same order as in the original text. It is important! If there are several such specifiers in a text, then DON’T interchange them. Because the application will substitute some specified strings/numbers into this text in a specified order. And for your translated text this order will be EXACTLY the same as in the original English text.
 
In the translated text, all printf format specifiers must be present, and they MUST go in the same order as in the original text. It is important! If there are several such specifiers in a text, then DON’T interchange them. Because the application will substitute some specified strings/numbers into this text in a specified order. And for your translated text this order will be EXACTLY the same as in the original English text.
  
 +
== Tags ==
  
Tags
+
<span style="font-family:monospace;font-weight:bold;color:#7A869A">
 
+
Main rotor RPM <span style="color:#36F">&lt;color=@badTextColor&gt;</span>(red - can't take off)<span style="color:#36F">&lt;/color&gt;</span>
Main rotor RPM <color=@badTextColor>(red - can't take off)</color>
+
<br />
主回転翼RPM<color=@badTextColor>(赤‐離陸できません)</color>
+
主回転翼RPM<span style="color:#36F">&lt;color=@badTextColor&gt;</span>(赤‐離陸できません)<span style="color:#36F">&lt;/color&gt;</span>
 
+
</span>
The tags in our localization texts are similar to HTML tags. They are responsible for the decoration of the text, for example, the <color></color> tag colors that part of the text that in a specified color. Tags are always paired – there should always be an opening tag (like <b>) and a closing tag (like </b>). In the translated text, you need to keep all the tags as they are.
 
  
 +
The tags in our localization texts are similar to HTML tags. They are responsible for the decoration of the text, for example, the '''<code><span style="color:#36F">&lt;color&gt;&lt;/color&gt;</span></code>''' tag colors that part of the text that in a specified color. Tags are always paired – there should always be an opening tag (like '''<code><span style="color:#36F">&lt;b&gt;</span></code>''') and a closing tag (like '''<code><span style="color:#36F">&lt;/b&gt;</span></code>'''). In the translated text, you need to keep all the tags as they are.
  
Special characters
+
== Special characters ==
  
☢B-29
+
<span style="font-family:monospace;font-weight:bold;color:#7A869A">
▃Ki-61-Ib Hien
+
<span style="color:#36F">☢</span>B-29
+
<br />
<color=@goodTextColor>✔</color>
+
<span style="color:#36F">▃</span>Ki-61-Ib Hien
 +
<br />
 +
<span style="color:#36F"></span>
 +
<br />
 +
&lt;color=@goodTextColor&gt;<span style="color:#36F">✔</span>&lt;/color&gt;
 +
</span>
  
Sometimes the text may contain special characters that may look unusual. In War Thunder, these character are replaced with various icons from a special iconic font (like "Windings" or "Font Awesome"), but one that consists of custom icons made specifically for War Thunder. DON'T translate and DON'T remove such character because it has meaning and is important. And don't worry if such character looks too strange, because in War Thunder it will most likely be shown as a completely different specific symbol.
+
Sometimes the text may contain special characters that may look unusual. In War Thunder, these character are replaced with various icons from a special iconic font (like “Windings” or “Font Awesome”), but one that consists of custom icons made specifically for War Thunder. DON'T translate and DON'T remove such character because it has meaning and is important. And don't worry if such character looks too strange, because in War Thunder it will most likely be shown as a completely different specific symbol.

Latest revision as of 13:39, 30 September 2022

Localization texts sometimes contain special characters, tags, and other technical elements. Most of them are well known to professional translators and coders, or intuitive, but there is something you need to know – we use the original plurals syntax, see below.

Plurals

{n} {n=month/months}
{n} {n=capture zone/capture zones}

The plurals syntax is an extension of the named variable placeholder syntax (read about it below), but differs from them by the presence of the = character inside { and }. To the left of the = character there is the variable name (DON’T translate it), and to the right of the = character there are plurals separated by / character. Those plurals MUST be translated.

Each plural form is a string that can contain any character except the character /. Even spaces are allowed, i.e. it CAN consist of several words.

The number of plural forms must be specified according to your language. In different languages, there are from 1 to 3 of plural forms (for example, in Latin languages – 2 forms, in Slavic languages – 3 forms, and in Asian languages – 1 form).

There is a special exception for languages that have only 1 plural form (Asian languages). For them, it is allowed to either write a single plural form, in the usual way: {n}{n=个月}, or completely remove the block with plurals, and write it like this: {n}个月.

Msg-info.png If you are creating a translation into a new language, please report it to Zoki28 on Crowdin so that we can add plurals support for this new language to War Thunder. Please do it even if your translation is unofficial. This is important because with the help of the translation community, an unofficial translation can later become official.

How it works?

English: {n} {n=month/months} German: {n} {n=Monat/Monate} Polish: {n} {n=miesiąc/miesiące/miesięcy} Serbian: {n} {n=mesec/meseca/meseci} Czech: {n} {n=měsíc/měsíce/měsíců} Chinese: {n}{n=个月} or {n}个月

In this example, {n} is the placeholder for the variable n, and {n=...} is the list of plurals associated with that number n. When dealing with plurals, you can be sure that variable n will be an integer number. When generating a text, the scripts additionally pass some set of parameters. For example, if the script pass the parameter n=1 or n=2 or n=5 to generate a text from this example above, then the text will be generated as follows:

English: 1 month or 2 months or 5 months German: 1 Monat or 2 Monate or 5 Monate Polish: 1 miesiąc or 2 miesiące or 5 miesięcy Serbian: 1 mesec or 2 meseca or 5 meseci Czech: 1 měsíc or 2 měsíce or 5 měsíců Chinese: 1个月 or 2个月 or 5个月

More complex example

Unable to join the team {chosenTeam} ({chosenTeamCount} {chosenTeamCount=player/players}) due to the lack of players in the team {otherTeam} ({otherTeamCount} {otherTeamCount=player/players}).

To generate a text, the script passes a set of parameters. For example:
chosenTeam="A", chosenTeamCount=5, otherTeam="B", otherTeamCount=1
As a result, the following text is generated:

Unable to join the team A (5 players) due to the lack of players in the team B (1 player).

Therefore, for example, in Czech, this line should be translated like this:

Nepodařilo se přidat ke straně {chosenTeam} ({chosenTeamCount} {chosenTeamCount=hráč/hráči/hráčů}) kvůli nedostatku hráčů na straně {otherTeam} ({otherTeamCount} {otherTeamCount=hráč/hráči/hráčů}).

Then the text in Czech will be generated like this:

Nepodařilo se přidat ke straně A (5 hráčů) kvůli nedostatku hráčů na straně B (1 hráč).

What else can you do with plurals?

The syntax of the plurals allows some freedom of choice. It happens that the plurals in the original source text in English are not very convenient for translation to your language. In this case you CAN alter the texts of the plurals in the translated text. For example, we have the following source text:

{amount} Golden {amount=Eagle/Eagles}

In Polish, the word “Golden” should also be spelled differently here, depending on the amount of eagles. Therefore, it is allowed to remake texts in plurals block (and even add new plural blocks) when required by the rules of your language. In this case, the text can be translated into Polish by any of the following ways:

{amount} {amount=Złoty Orzeł/Złote Orły/Złotych Orłów}
{amount} {amount=Złoty/Złote/Złotych} {amount=Orzeł/Orły/Orłów}
{amount} Złot{amount=y/e/ych} Or{amount=zeł/ły/łów}

All these 3 options will generate the same result. The scripts will generate texts in Polish correctly:

1 Złoty Orzeł, 2 Złote Orły, 5 Złotych Orłów

Named variable placeholders

Each player who registers using your link will receive {gift} as a gift.
每个使用该推广链接注册的玩家都将获得 {gift}
Online: {playersOnline}, Battles: {battles}
En línea: {playersOnline}, Batallas: {battles}

Named variable placeholder look like the variable name in curly braces. When generating text, these placeholders will be replaced with some strings or numbers. When there are multiple named variable placeholders in the text, you CAN interchange them as you need, if required by the rules of your language. But DON’T translate the content between { and } (except when it contains the character =, followed by the plurals, about which it is written above – plurals MUST be translated).

Keyboard/gamepad shortcut image placeholders

Press {{ID_CONTINUE}} to continue
Devam etmek için {{ID_CONTINUE}} tuşuna basın
{{ID_TOGGLE_VIEW_SHIP}} Switch to third-person view
{{ID_TOGGLE_VIEW_SHIP}} 을(를) 눌러 3인칭 시점으로 전환하라

Keyboard shortcut image placeholders look almost like named variable placeholders, but differ from them in that they are enclosed in double curly braces {{ and }}. DON’T translate the content between {{ and }}. You can place this block anywhere in the text – in the beginning, middle, or end of text.

Printf format specifiers

You cannot add more than %d contacts.
Vous ne pouvez pas ajouter plus de %d contacts.
%d mm
%d-мм
Discount on vehicle %s%%.
Sconto sull' unità %s%%.

The printf format specifier is a special sequence of characters, beginning with the % character, which the application replaces with some number or string. Most often in our localization texts they look like %s or %d, but sometimes they can be more complicated, for example %.3f, etc. All types of printf format specifiers are described in the printf function manual for C/C++ programming language.

Specifiers can be surrounded by spaces, or merge with adjacent text – it doesn't matter. In place of these specifiers, the application will substitute some string (if it is %s) or number (if it is %d, and others), or the usual percent sign % (if it is %%). By the way, %s can be used to substitute the string that look like number.

In the translated text, all printf format specifiers must be present, and they MUST go in the same order as in the original text. It is important! If there are several such specifiers in a text, then DON’T interchange them. Because the application will substitute some specified strings/numbers into this text in a specified order. And for your translated text this order will be EXACTLY the same as in the original English text.

Tags

Main rotor RPM <color=@badTextColor>(red - can't take off)</color>
主回転翼RPM<color=@badTextColor>(赤‐離陸できません)</color>

The tags in our localization texts are similar to HTML tags. They are responsible for the decoration of the text, for example, the <color></color> tag colors that part of the text that in a specified color. Tags are always paired – there should always be an opening tag (like <b>) and a closing tag (like </b>). In the translated text, you need to keep all the tags as they are.

Special characters

B-29
Ki-61-Ib Hien

<color=@goodTextColor></color>

Sometimes the text may contain special characters that may look unusual. In War Thunder, these character are replaced with various icons from a special iconic font (like “Windings” or “Font Awesome”), but one that consists of custom icons made specifically for War Thunder. DON'T translate and DON'T remove such character because it has meaning and is important. And don't worry if such character looks too strange, because in War Thunder it will most likely be shown as a completely different specific symbol.