The goal of the localization process is to consistently produce high quality translations release after release through collaboration between the international community, translators, project managers, language leads and the core team.
If you’re interested in contributing translations to Mattermost, please join the Mattermost localization channel to discuss. Below are descriptions of the overall localization process.
To translate a language:
1 - Join the Mattermost Translation Server.
2 - Confirm that the language you want to help translate is listed in the Translation Server.
- If it is, perhaps offer to help translate or review and make suggestions.
- If not, ask to setup your language on the Mattermost localization channel, so you can start helping with the translation.
3 - Review translation rules written by localization leads, when applicable:
1 - New and updated strings are imported to the Mattermost Translation Server each day at 00:00 GMT. Strings with a
mobile prefix are imported from the mattermost-mobile project, others are from mattermost-server and mattermost-webapp.
- A pull request will also be submitted on the day of major feature complete and code complete to ensure latest translations are included in the release.
- A pull request may also be submitted for a release candidate.
IMPORTANT: Please do not submit translations directly with a pull request as they may be lost with the next updates from the Mattermost Translation Server.
So users understand the accuracy and coverage of language translations, quality levels are explicitly defined for each language:
- 100% of translation verified by someone deeply knowledgeable in Mattermost functionality.
- 100% of translation verified by someone deeply knowledgeable in target language.
- No translation may be out-of-date due to changes to English-language text since the last translation and review cycle.
- Language must have at least one official reviewer who maintains the language with updated strings imported to the Translation Server over time.
- Language must have been in use for at least 3 full release cycles where end users in target language can share feedback and corrections.
Language option is listed as an option in Account Settings > Display > Language.
- 90% of translation verified by someone deeply knowledgeable in Mattermost functionality and in the target language.
- Up to 10% of translation may be out-of-date due to changes to English-language text since the last translation and review cycle.
Language option is listed as an option in Account Settings > Display > Language prefixed with (Beta).
- Translation has not yet reached Beta quality.
An official language may be changed back to Beta or Alpha if the specified requirements are not met for a release. Similarly, Beta-quality language may be dropped back to Alpha.
To format localized messages, mattermost-webapp uses the react-intl library from FormatJS using the ICU Message syntax. Follow the links to read about placeholders and arguments, or experiment with one of their live editors.
If you’d like to review and verify translations prior to achieving Beta-quality status, you can follow these steps:
1 - Build Mattermost on your machine following the Developer Machine Setup Guides.
2 - Download a copy of your translations to your local machine.
3 - Use Mattermosti18n to convert Pootle’s output into JSON files.
4 - Copy the generated [locale].json files to the corresponding directories:
- For the server, copy the files to the i18n directory of the
- For the webapp, copy the files to the i18n directory of the
5 - Modify the file
i18n/i18n.jsx in the
mattermost-webapp project to include your translated strings.
6 - Compile and run Mattermost to confirm everything works. You can then review and verify translations from your machine.
If you find a string that has not been translated, search for the string in the respective localization file to confirm it’s included for translations. You can find the English version for server, webapp and mobile projects below
If it’s included in the file, then most likely it hasn’t been translated yet, but is in https://translate.mattermost.com.
If you want to confirm if it’s translated, you can check for the respective .json file in
Translations require updates on a monthly basis as features are added and changed. The formal process for updates has yet to be determined.
Below are current official reviewers and maintainers for languages that have reached at least Beta-quality. Official reviewers submit final translations for languages; maintainers suggest translations and step in when official reviewers aren’t able to help in a certain release.
If you’re interested in contributing to the process, please join the Mattermost localization channel to discuss. Creating localization channels is also encouraged - see examples of current channels including Italian, German and Swedish.
|Deutsch - German||Christian Arnold (meilon)||Tim Estermann (der-test)|
|Español - Spanish||Elias Nahum (enahum)||Jesús Espino|
|Français - French||William Gathoye (wget)|
|Italiano - Italian||Michael Longo (mlongo4290), Ema Panz (thepanz)|
|Nederlands - Dutch||Tom De Moor|
|Polski - Poland||Daniel Burzmiński (hectorskypl), Tomasz Gruca (gruceqq)|
|Português do Brasil - Portuguese||Rodrigo Corsi (rodcorsi)||Carlos Tadeu Panato Junior (cpanato)|
|Română - Romanian||Viorel-Cosmin Miron (uhlhosting)|
|Türkçe - Turkish||Kaya Zeren|
|Pусский - Russian||Alexey Napalkov|
|Yкраїнська - Ukrainian||TBD (Open Role)|
|한국어 - Korean||TBD (Open Role)|
|中文 (简体) - Simplified Chinese||aeomin|
|中文 (繁體) - Traditional Chinese||Tze-Kei Lee (chikei)|
|日本語 - Japanese||Yusuke Nemoto (kaakaa)|