1# Translations for OpenTTD
2
3Eints is [OpenTTD's WebTranslator](https://translator.openttd.org/).
4
5- Registered translators translate from English to their language.
6- Eints validates the translations syntactically and that parameter usage matches the English base language.
7- Eints synchronises translations to OpenTTD's repository every day, shortly before the nightly build.
8
9When adding or altering strings in english.txt, you should stick to some rules, so translations are handled smoothly by Eints and translators.
10This document gives some guidelines.
11
12
13## I want to change a translation.
14
15### I want to become a regular translator.
16
17Just [sign up](https://github.com/OpenTTD/team/issues/new/choose) as a translator.
18
19### I only want to point out some issues / typos in the current translation, or suggest a change.
20
21[Open an issue](https://github.com/OpenTTD/OpenTTD/issues/new/choose), so it can be assigned to the translation team of the language.
22The translators will decide whether, where and how to apply your suggestion.
23
24### I want to submit translations via PR.
25
26Sorry, we don't offer this option.
27
28### I want to change the language definition (plural form, genders, cases) of a translation.
29
30Please [create an issue](https://github.com/OpenTTD/OpenTTD/issues/new/choose) for this.
31
32### I want to add an entirely new translation language.
33
34OpenTTD has more than 4000 strings, translating all of them is a lot of work.
35Despite the initial enthusiasm, only few people have the endurance to get to even 20% translation progress.
36
37As such, starting a new translation requires the prospect that there is also translation interest in the future.
38And, frankly, OpenTTD probably already covers all languages to which this applies, and a few more.
39
40If you still want to make the case, that your language is spoken by several 100 million people, please [create an issue](https://github.com/OpenTTD/OpenTTD/issues/new/choose) for adding a new language.
41
42
43## I want to change the English base language (english.txt).
44
45### I want to change the wording / fix a typo in an English string, without changing the meaning (drastically).
46
47Just change it in your PR.
48
49Translators will be notified that their translation became "outdated", so they can double-check whether the translation needs updating.
50
51### I want to add/change/remove parameters from an English string.
52
53Just change the parameters in english.txt in your PR.
54Don't touch the translations, please ignore compile warnings about them.
55
56Translators will be notified that their translation became "invalid", so they can adjust the translation.
57Eints will remember the old translations for translators to view, but remove them from the git repository, while they are "invalid"; so there won't be any compile warnings after the nightly sync.
58
59### I want to change the meaning of an English string, so that no existing translation makes any sense anymore.
60
61In this case, please change the STR_xxx string identifier of the string; basically: remove the old string, add a new one.
62Don't touch the translations, please ignore compile warnings about them.
63
64Eints will discard all memory of the old strings in the nightly sync, and translators can start fresh with a new string.
65
66### I want to add a new string.
67
68Add the new string somewhere in english.txt, where it fits with the neighbouring strings.
69Don't touch the translations, even if you can speak some of the languages.
70
71### I want to remove an unused string.
72
73Remove the string from english.txt.
74Don't touch the translations, please ignore compile warnings about them.
75
76Eints will remove the translations from the git repository in the nightly sync.
77
78### I want to reorder strings in english.txt without changing them.
79
80Reorder english.txt as you like. Don't touch the translations.
81
82Eints will reorder all translations to match english.txt in the nightly sync.
83
84### I want to add/change '#' comments.
85
86Change comments in english.txt as you like. Don't touch the translations.
87
88Eints will replicate comments into all translations in the nightly sync. Comments are not translated.
89
90### I want to change the STR_xxx string identifier for code style reasons, without changing the English text.
91
92This is the only case, where your PR should also edit translations.
93The STR_xxx string identifier is used by Eints as key value to track strings and translations. If you change it, that's the same as deleting a string and adding an unrelated new one.
94So, to keep translations, you have to replace the STR_xxx for all translations in the PR as well.
95
96However, you will only be able to keep the translations which are part of the git repository.
97Translation history and information about translations being "outdated" will be lost.
98So, keep your code style OCD to a minimum :)
99
100
101## I want to fight a bot and lose.
102
103Here are some things, people sometimes want to do, but which won't work.
104
105### I want to enforce re-translation by clearing current translations.
106
107You have to change the STR_xxx string identifier, that's the only option.
108
109You cannot "clear" translations by removing them via PR; eints will reinstall the previous "syntactically perfect valid" translation.
110
111### I want to revert a broken change, some translator just did via eints.
112
113You have to revert the translations via the WebTranslator interface.
114If there are many changes, ask someone with Admin access to eints, so they can manually upload a fixed translation file to eints.
115
116You cannot revert translations changes via PR. Eints merges translations from git and from web by keeping a translation history, and committing the newest translation to git.
117If you revert to an old translation in git, eints will simply think git did not yet get the newer translation, and commit it again.
118