> For the complete documentation index, see [llms.txt](https://handbook.mattermost.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://handbook.mattermost.com/contributors/ways-to-contribute/localization.md).

# Localization

Mattermost translations are generated and maintained through an AI-driven pipeline that keeps supported languages fully up to date with every monthly release.

This page explains how the pipeline works and how language experts can contribute.

## How translations work now

Starting with Mattermost v12.0 (October 2026), translations are generated by an automated pipeline rather than manual contribution on Weblate. Here's how the end-to-end flow works:

1. **Source strings are updated in the codebase.** When Mattermost Engineering merges a pull request that adds or modifies US English strings, those changes are the input to the translation pipeline.
2. **The AI pipeline generates translations.** After code complete for the upcoming release, the pipeline produces translations for supported languages for all changed or new strings. The pipeline is informed by [glossary files](https://github.com/mattermost/mattermost/tree/master/i18n/glossary) that define how Mattermost-specific terminology should be rendered in each language.
3. **A pull request is opened automatically.** The pipeline opens a PR to the relevant GitHub repositories ([mattermost](https://github.com/mattermost/mattermost), [mattermost-mobile](https://github.com/mattermost/mattermost-mobile), [desktop](https://github.com/mattermost/desktop)) containing the updated translation files for all languages.
4. **PRs are reviewed and merged on the release cadence.** Mattermost Engineering reviews the PRs for consistency and merges them into the main branch ahead of each release.

## Supported languages

Users may change their language preference in **Settings > Display > Language**. The following 23 languages are officially supported:

Bulgarian, Chinese (Simplified), Chinese (Traditional), Danish, Dutch, English (Australia), English (US), French, German, Hungarian, Italian, Japanese, Korean, Persian, Polish, Portuguese (Brazil), Romanian, Russian, Spanish, Swedish, Turkish, Ukrainian, Vietnamese.

## Experimental languages

Users can also select from a range of experimental languages, including:

Belarusian, Croatian, Czech, Finnish, Lithuanian, Norwegian Bokmål, and Portuguese (Portugal).

Experimental languages require validation from a language expert before being promoted. If you are a native speaker of an experimental language and would like to help promote it to officially supported status, please reach out in the [\~i18n channel](https://community.mattermost.com/core/channels/localization) on our Community server or contact your Mattermost account manager.

**Note:** Starting with Mattermost Server v12.0 (October 2026), the `LocalizationSettings.EnableExperimentalLocales` configuration setting has been removed, along with several experimental language catalogs that contained low usable translation coverage.

## How to contribute

Human language expertise remains valuable and necessary to verify the output of the pipeline. While Weblate is no longer used for submitting translations, there are two meaningful ways to stay involved:

### 1. Monthly diff review

Each month, review the diff for your language's JSON file in GitHub. If you spot inaccuracies, submit a pull request directly to the repository.

* [mattermost/mattermost](https://github.com/mattermost/mattermost/tree/master/server/i18n) — `server/i18n/<lang>.json`
* [mattermost/mattermost-mobile](https://github.com/mattermost/mattermost-mobile/tree/main/assets/base/i18n) — `assets/base/i18n/<lang>.json`
* [mattermost/desktop](https://github.com/mattermost/desktop/tree/master/i18n) — `i18n/<lang>.json`

When submitting a PR, target the `master`/`main` branch and describe the inaccuracy you're correcting and the preferred phrasing, with brief reasoning where helpful.

### 2. Glossary maintenance

[Glossary files](https://github.com/mattermost/mattermost/tree/master/i18n/glossary) define how Mattermost-specific terms are translated. Getting these right has an outsized effect on AI translation quality across the board. If you are knowledgeable in a supported language, helping maintain its glossary file is one of the highest-impact contributions you can make.

## Questions and feedback

Join the conversation in the [\~i18n channel](https://community.mattermost.com/core/channels/localization) on the Mattermost Community server.

Language-specific channels are also active — examples include [\~i18n-german](https://community.mattermost.com/core/channels/i18n-german), [\~i18n-french](https://community.mattermost.com/core/channels/i18n-french), and [\~i18n-swedish](https://community.mattermost.com/core/channels/i18n-swedish).

## Thank you to the localization community

Before the automated translation pipeline, every translated string in Mattermost was put there by a person. Community contributors manually translated more than 370,000 strings and 2 million words through Weblate. That body of work is the foundation the current pipeline is built on, and we're grateful for the time, effort and expertise that created it.

Every translation contributor is named below as a permanent record:

@ctlaltdieliet (Tom De Moor), @kayazeren (Kaya Zeren), @nikolaiz (Nikolai Zahariev), @majo (MArtin Johnson), @Sharuru (Sharuru), @vadim.asadchi (Vadim Asadchi), @matthew-w (Matthew Williams), @master7 (master7), @tsabi (Csaba Tóth), @kaakaa (kaakaa), @jprusch (jprusch), @linkvn (linkvn), @Reinkard (Serhii Khomiuk), @svelle (Sven Hüster), @frankps (Frank Paul Silye), @ThrRip (ThrRip), @flynbit (Alexey Napalkov), @Morgan\_svk (Martin Mičuda), @andrius.balsevicius (Andrius Balsevičius), @potatogim (Jihyeon Gim), @moda-l10n (Moda / L10n Project), @komoon8934 (Kwangoh Moon), @aeomin (aeomin), @milotype (Milo Ivir), @vi (vietnamese), @Eleferen (Konstantin), @saeid.hmdr (Saeid), @enahum (Elias Nahum), @mansil (Manuela Silva), @alzee (alzee), @mlongo (mlongo), @pineoak-audio (Pineoak), @rodrigocorsi (rodrigocorsi), @JtheBAB (JtheBAB), @sjazz (Sajjad Jazini), @bshumylo (Bohdan), @hereje (Angel Mendez Cano), @jones (Martin Joneš), @vpecinka (Vlastimil Pecinka), @Ricky-Tigg (Ricky Tigg), @cedricstocke (Cédric Stocké), @yanyiyi (Yanyiyi), @krotesk (Dmitriy Q), @nathanaelhoun (Nathanaël), @Edward.Smirnov (Edward Smirnov), @maksimatveev (Maksim Matveev), @akbarkz (Akbar Abdrakhmanov), @Chikei (Chikei), @deivisonrpg (Deivison Lincoln), @Bangik (Achmad Dinofaldi Firmansyah), @roadt (Frank Tang), @akaMrDC (Valentyn Smagin), @wget (wget), @guenjun (GJ Guenjun Yoo), @bndn (Benjamin Danon), @morgancz (Ladislav Urbánek), @intdev32 (intdev32), @pjenicot (Pierre JENICOT), @henrique (Henrique Latorre), @ja49619 (ja49619), @homerCOD (homerCOD), @Kuruyia (Kuruyia), @maruTA-bis5 (Takayuki Maruyama), @avasconcelos114 (avasconcelos114), @ritchierope (ritchierope), @Silva7134 (Gilberto de souza), @Chlbek (Petr Chlíbek), @seoyeongeun (yeongeun.seo), @poppfredslund (Martin Popp Fredslund), @robregonm (Ricardo Obregón), @andreabia (Andrea), @timmycheng (timmycheng), @onovy (Ondřej Nový), @Umeaboy (Kristoffer Grundström), @CI-YU (CI-YU), @tilto0822 (Tilto\_), @tianyazi (tianyazi), @panklobouk (Pan Klobouk), @NathanBnm (Nathan Bonnemains), @josevcsouza (José Vítor Cruz de Souza), @massimo (Massimo Marassi), @tomerpacific (Tomer Ben-Rachel), @kerray (Jaromír Matýšek), @danielcw (danielcw), @olavinto (Oskari Lavinto), @fnogcps (Felipe Nogueira), @Coelho (Coelho), @Willyfrog (Guillermo Vayá), @OGreSiv (Sergey Seroed), @muratbayan (Murat), @moussetc (moussetc), @azistellar (Abdulaziz), @Zuk3r (Yao Xie), @iamleson98 (Son Le), @RyanisyydsTT (Ryanisyyds), @xiao (晓晓), @mojahani (Mo Jahani), @liul8258 (liul8258), @varghese.jose (Varghese Jose), @wispoz (Павел Афонин), @gruceqq (gruceqq), @leonambeez (leonambeez), @arlan (Arlan Adambek), @bastien-naturavelo (NATURAVELO), @penghao\_chn (PENGHAO), @gflower (Gianluigi Fiorillo), @belope (Petr Bělousov), @tnir (Takuya N), @Andriuspre (Andrius Prekevičius), @serhack (SerHack), @arch130 (Arsenii Potapov), @calebroseland (Caleb Roseland), @mike85 (Michele Amato), @alauregaillard (Anne-Laure Gaillard), @Roy-Orbison (Roy Orbitson), @alferto82 (Alberto Lozano), @creeper-0910 (お餅のCreeeper), @YoheiZuho (YorimiMochida), @tsakmas (tsakmas), @Crere89 (Renaud), @zenocode-org (Zenocode), @RyoKub (RyoKub), @Yordaniss (Dmytro Werner), @admin\_softex (Sarvarbek Hasanov), @Udval.O (Udval Otgonjargal), @SeoJoonsoo (Seo Joonsoo), @gabsfrancis (Gabriel Casaro), @karistuck (카리스턱), @simonas (Simonas Audickas), @jacodaybson (jacodaybson), @mlcuchlu (Lukáš Mlčůch), @teamzamong (teamzamong), @MixeroTN (MixeroTN), @ondraknezour (ondraknezour), @isaacbegit (Isaac Be.), @imamimam113 (imamimam113), @algeorgiadis (Alexander Georgiadis), @andrius (Andrius Petrauskis), @vimobe (Vimobe), @Nico7as (Nicolas), @YJSoft (YJSoft), @EragonRD (EragonRD), @fandour (Frantisek Grezo), @wcdfilll (nhatCreA), @bedo2991 (Francesco Bedini), @polyacedev (Subhi Salman), @MattoDeg (MattoDeg), @exbu (exbu), @yaz (Yazeed A.), @SkyLuke91 (SkyLuke91), @Ekaterine (Ekaterine Papava), @Gobbit69 (Luc DISCHERT), @Carloswaldo (Carloswaldo), @letehaha (Dmytro Svyrydenko), @evituzas (evituzas), @tomdereub (tomdereub), @KuSh (Nicolas Le Cam), @douglasstasiak (douglasstasiak), @Arusekk (Arusekk), @respinffs (respinffs), @thePanz (thePanz), @rubinaga (rubinaga), @kjh0523 (김종하), @oleksandr-kucheriavyi (oleksandr-kucheriavyi), @LaurensRamandt (Laurens Ramandt), @arthurh (Arthur), @claudio.costa (Claudio Costa), @cheba (cheba), @NuriInfos\_JSK (정성근), @joho1968 (Joaquim Homrighausen), @y4aniv (Yaniv), @tormi (Tormi), @yangyangdaji (yangyangdaji), @returnedinformation (returnedinformation), @minhtrungitvn (Nguyen Minh Trung), @ovrheat (Nik), @minhthanhonly (Caily.Thanh), @amin\_913 (Amin), @salarysalo (s0k0l), @vhaska (vhaska), @PhilippeWeidmann (Philippe Weidmann), @toomore (Toomore Chiang), @vetash (Vitaly barakov), @ericgaspar (Éric Gaspar), @Elpunical (Elpunical), @Peyo6565 (Peyo6565), @paolorossi (Paolo Rossi), @orimaimon (Ori maimon), @TalelingFantasy (阿新), @l-ra (l-ra), @TenGentoppa (Li Ping Chien), @Vincenzo\_M96 (Vincenzo Muolo), @efemonge (Fabián Monge), @Inutit (Intutit), @RinSkywarp (Rin Skywarp), @shiken (Dennis Cheng), @Alphanum404 (Alphanum404), @Sonichigo (Animesh Pathak), @imanmagomedov.said (Said Imanmagomedov), @hojin-kim (Hojin Kim), @pipozzz (Peter Gonda), @roman.belda (Roman belda), @Saturate (Allan Kimmer Jensen), @Tasy218 (Tasy218), @wooki-00 (wooki-00), @andersonjeccel (andersonjeccel), @Navystack (Navystack), @dsa-t (dsa-t), @sayzard (Keonsoon Hwang), @maxtrem271991 (Maxime tremblay), @oestrogen (Mattias Kesti), @daniloff200 (Dmitriy Danilov), @chicchu4157 (추선호), @marko-matusovic (Marko Matušovič), @Alesia (Viktorchyk), @Maty556677 (Matyáš V), @electronicmilk (electronicmilk), @ViKriuVK (ViKriuVK), @luc-ass (Lucas Gasenzer), @mikhail10 (Mikhail Rimashevski), @julroy67 (ジュリアン), @frstier (Євгеній Янчевський), @ZarenOFF (ZarenOFF), @jabi27 (Jan Birk), @lieut-data (Jesse Hallam), @plut0s (Алексей), @Reydan46 (Reydan), @ibrahimelaradi (Ibrahim Elaradi), @nurwahibzy (Nurwahib Zakki Yahya), @sarz4fun (sarz4fun), @witjem (Roman Ilnytskyi), @quirkoglass-debug (quirkoglass-debug), @m-ripper (Max Ripper), @Artiesy (Artem Revin), @kapdev (Kap Dev), @moeenio (moeenio), @pvwanrooij (Paul van Wanrooij), @kurotch321 (Katsunori Kuroda), @and-ri (Andrew), @vip2441 (vip2441), @KazminM (IOMA), @metehankaraca (m3tt), @pedro (Pedro Henrique Martins Valadão Felipe), @luca.palomba (luca palomba), @joakim.rivera (Joakim Rivera), @AnmiTaliDev (AnmiTaliDev), @trokar (Karel Trojan), @ricardogalvao (Ricardo Galvão), @Mohamed-sobhi95 (Mohamed-sobhi95), @raremax (Maxim Sysoev), @irdi-cloud68 (Irdi), @Blaieet (Blai), @franklinferre (Franklin Ferreira), @Yananeer (Yananeer), @cyberjam (JaeMin Kim), @mentz (Lucas L. Mentz), @caotanduc99 (caotanduc99), @minchae.lee (Minchae Lee), @chumanoe6a422f4dc064391 (chumanoe6a422f4dc064391), @amigo7kr (amigo7kr), @thejoeejoee (Josef Kolář), @mental-space1532 (Kiuchi), @TimTin (Tim), @nbruneau71250 (nbruneau71250), @qfrigolac (qfrigolac), @oberleg (Oberle Gábor), @Sn-Kinos (Yoo Dongryul), @vawaver (Tony Krajcik), @gvlx (Gerardo Lisboa), @NCPSNetworks (NCPSNetworks), @WeBjAnJaN (WeBjAnJaN), @lmedoshvili (Levan Medoshvili), @gabrielctn (Gabriel Cretin), @petersauvignon (Peter S), @oonid (oon arfiandwi), @jsedy7 (Jiří Šedý), @michael\_kim (Michael Kim), @Quijuletim470 (Quijuletim470), @jasmezz (Jasmin F), @Rutboy (Vadim Kazantsev), @Kenjile (Kenjile), @Boruus (boristrbrt), @David (David), @capricorni (chieko m), @alexis (Alexis), @acc0mplish-note (acc0mplish-note), @vasilybels (Vasily Belousov), @SharpGoldHawk (SharpGoldHawk), @florian-busch (Florian Busch), @Ele7o (Ele7o), @cyberm8 (cyberm8), @lani009217f4195555e46f1 (Euicheol Jung), @jesperordrup (Jesper Ordrup), @mariuskarotkis (Marius Karotkis), @AurelienS (AurelienS), @helloinah (inah), @JenyaFTW (Jenya), @cota-eng (cota), @michelengelen (Michel Engelen), @devinbinnie (Devin Binnie), @orta-contrib (orta-contrib), @guuw (Gustavo Dias), @newdominic (DMC), @emmapeel (emmapeel), @zclk (zclk), @mini-bomba (mini-bomba), @zubair.ahmed (M-ZubairAhmed), @anneschuth (Anne Schuth), @nmnj (Nemanja Slavković), @RenaudK (Renaud Keradec), @7+7 (49), @Destrosvet (Filip Uhlir), @polinapianina (polinapianina), @polnetwork (Pol Maresma), @quarac (quarac), @enricodeanna (enricodeanna), @pgteekens (Pieter Teekens), @carlos.guimaraes (Carlos Eduardo Guimaraes Lemos), @z44440000z (SHOAYU LI), @mh4ckt3mh4ckt1c4s (Quentin Michaud), @lani009 (lani009), @Haliax (Kennet Winter), @jure (Martin Juřen), @SorenHolm (SorenHolm), @Michal (Michal), @flyply (JGBAK), @jesperfj (Jesper F), @meriknazunu (meriknazunu), @j0taD (j0taD), @salvatorearianna (Salvatore Arianna), @LeoVie (Leo Viezens), @kevrl (Kevin Vikström), @cwarnermm (Carrie Warner), @amyblais (Amy Blais), @daniel.sischy (Daniel Sischy), @yoohanko98 (yoohanko98), @arigo (Alexandre Rigo), @MohamedElashri (Mohamed Elashri), @seariver (Mário), @narutoxboy (Uzumaki Naruto), @darkcircle (Seong-ho Cho), @2xB (2xB), @kava (kava), @AlexKalopsia (Alex Camilleri), @anhyeuviolet (Kenny Nguyen), @JahleelT (Jahleel Townsend), @mmunozv (Marcelo Munoz Vasquez), @s0rd3s (Alex Mihalenok), @Fugach (Fugach), @TheRybinS (TheRybinS), @jggen0121 (전종욱), @MaxiStyle (Maxim Smirnov), @obergabe (obergabe), @CIOSAI (jy), @nuno.simoes (Nuno Simoes), @iannuzzelli (Francesco Iannuzzelli), @ez-aura (ez-aura), @devdoggen (Kiryl), @ReinierU (Reinier Junquera Sánchez), @egilli (Étienne Gilli), @jlrubiol (José Luis Rubio Leira), @jrvidotti (Junior Vidotti), @Arnofo (Arnaud Faucon), @NRJHits (Maloboyg), @aLitschgy (Antonin Litschgy), @Tin (Tinny Cho), @Soldierplayz6867 (Soldierplayz6867), @Rivega42 (Роман Гудков), @jgss-gabriel-sousa (Gabriel Sousa), @lokses (Бабич Виктор), @kovalenkong (Nikolay Kovalenko), @pmineev (pmineev)
