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:
- 2.Check whether the language you want to help translate is listed in the Translation Server.
Note: Languages are grouped either as "shipped" or "work in progress". A language ships in Mattermost if it meets specified translation quality.
- 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 source strings are automatically added to the translation server each time a GitHub pull request containing string changes is merged.
- 2.A new pull request with latest translations that reach at least Beta quality is submitted to the mattermost-mobile, mattermost-server, and mattermost-webapp repos each Monday at 22:00 GMT.
- 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.
- 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.
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.
If you don't know about the ICU syntax, please familiarize yourself by reading the ICU Message Syntax simplified documentation and Formatting Messages. What's most important here is to read the sections dedicated to how plural terms are managed.
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.
If you'd like to review and verify translations prior to achieving Beta quality status, you can follow these steps:
- 2.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).
- 3.Copy the generated
[locale].jsonfiles 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
- 4.Modify the file
mattermost-webappproject to include your translated strings.
- 5.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 filein the
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.
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
TBD (Open Role)
English - Australian
Español - Spanish
Français - French
Magyar - Hungarian
Italiano - Italian
日本語 - Japanese
한국어 - Korean
TBD (Open Role)
Nederlands - Dutch
Polski - Poland
Português do Brasil - Portuguese
Română - Romanian
Svenska - Swedish
Türkçe - Turkish
Pусский - Russian
Yкраїнська - Ukrainian
TBD (Open Role)
中文 (简体) - Simplified Chinese
中文 (繁體) - Traditional Chinese
To grant trusted translators additional permissions as Weblate admin, add the user to the
[email protected]group in Weblate:
- 1.Select Admin interface (tool icon in Weblate header).
- 2.Go to Users > Django Admin Interface.
- 3.Select the user you want to grant permissions to.
- 4.Go to Groups.
- 6.Select Save.
To add a new language:
- 2.Select any of the components on the resulting page, then select Tools > Start new translation.
- 3.Select the languages you want to add, then Start new translation.