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.
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 via a pull request as they may be lost with the next pull request update from the Mattermost Translation Server.
In order for users to 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 three full release cycles where end users in target language can share feedback and corrections.
Official languages are listed in Account Settings > Display > Language.
At least 90% of string translation verified by someone deeply knowledgeable in Mattermost functionality and in the target language. Languages at risk for ongoing maintenance can require a higher translation threshold closer to 100%.
Up to 10% of translation may be out-of-date due to changes to English-language text since the last translation and review cycle.
Beta languages are listed in Account Settings > Display > Language appended 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 languages may be dropped back to Alpha.
In order to ease the manipulation of strings like these with a special syntax (ICU as a reminder), a developer has created an online tool allowing to test an ICU string. This tool, called Online ICU Message Editor, is displayed as a live editor previewing how a string will appear in context. This tool has been reported by some members of our community as really helpful to translate strings containing an ICU syntax. Don't hesitate to use it.
Some terms used in Mattermost may be technical. If you don't know how to translate a specific term:
If applicable, check how the term has been translated in other locations of the translation you are contributing to.
Use a translation engine to know how others have translated the term.
Download a copy of your translations to your local machine by going to the language of your choice, e.g. German, then Files > Download original translation file (go-i18n JSON file).
Copy the generated [locale].json files to the corresponding directories:
For the server, copy the files to the i18n directory of the mattermost-server project.
For the webapp, copy the files to the i18n directory of the mattermost-webapp project.
Modify the file i18n/i18n.jsx in the mattermost-webapp project to include your translated strings.
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 whether it's translated, you can check for the respective .json file in the /i18n folder.
Translations require updates on a monthly basis as features are added and changed.
While the formal process for updates has yet to be determined, currently the Release Manager notifies one of the official translation reviewers who then forwards the message to the community of translators. This reminder tends to induce a virtuous cycle of motivation into the community of translators.
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.