* Restore eight dropped locales as (Experimental) languages
Brings back the webapp and server catalogs for Danish, Czech, Croatian,
Lithuanian, Norwegian Bokmål, Portuguese (Portugal), Finnish and Belarusian
exactly as they stood before e9379690d5 removed them, and wires them in as
ordinary supported locales: the webapp languages map, the generated
imports.ts, and the server's supportedLocales list.
These were the catalogs with a real human-translated foundation (60-93% of
the user-facing strings for the first five, 20-31% for hr/fi/pt). Danish is
offered without a tag; the rest are labelled (Experimental) in the picker.
The EnableExperimentalLocales setting is not reinstated.
The catalogs are restored verbatim here; syncing them to today's en.json and
filling the remaining strings follow in separate commits.
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Sync the restored catalogs to en.json and clear strings that fail the checkers
Runs the translate-i18n sync (apply_translations.mjs with no payload) over the
eight restored catalogs: every id en.json no longer has is pruned, and every
id they lack is seeded as "" so the gap is a value the worklists can read.
The strings that fail check_icu.mjs or mmgotool i18n verify -- 209 webapp
strings that drop or invent a variable, demote a plural, or do not parse, and
11 server strings with a stale template token or an empty or unused plural
category -- are reset to "" so the translation pass rewrites them rather than
shipping a string that throws at runtime.
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Describe the 17 webapp strings that had no translator description
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Fill the Danish catalogs and add the Danish glossary
Translates the 1,155 webapp and 358 server strings the restored da catalogs
lacked, following the translate-i18n skill: a Danish glossary derived from
the majority renderings already in the catalog, per-chunk validation with
the skill's validator (ICU parse, variable and tag parity, plural
categories, the apostrophe trap), then apply_translations.mjs.
Both catalogs are now complete and pass check_icu.mjs and
mmgotool i18n verify.
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Add glossaries for the seven experimental locales and translate their first 700 strings each
Each locale's glossary carries the 122 shared terms with targets derived from
the majority rendering already in that catalog, and notes recording the
inconsistent alternates and known mistranslations that a translation pass
must not propagate.
The webapp translations are the first two validated chunks per locale
(admin console strings, which sort first in en.json); the rest follow.
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 1,050 more Croatian webapp strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 2,100 more Finnish webapp strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Finish the Czech webapp catalog (1,716 strings)
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 350 Czech server strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 1,050 more Norwegian Bokmål webapp strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 2,185 more Lithuanian webapp strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Finish the Belarusian webapp catalog and translate 700 server strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 4,200 more European Portuguese webapp strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Finish the Czech server catalog (650 strings)
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Finish the Belarusian server catalog (175 strings)
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 2,100 more Finnish webapp strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 2,100 more Croatian webapp strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 700 more Lithuanian webapp strings and 1,050 server strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Finish the Lithuanian webapp catalog and translate 350 more server strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Finish the Norwegian Bokmål webapp catalog and translate 700 server strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Finish the European Portuguese webapp catalog and translate 700 server strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 1,400 more Finnish webapp strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 350 more Lithuanian server strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 700 more European Portuguese server strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 350 more Finnish webapp strings and 287 server strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Finish the Finnish webapp catalog and translate 700 more server strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 2,095 more Norwegian Bokmål server strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 1,320 more Lithuanian server strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 1,373 more Croatian webapp strings and 1,400 server strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Finish the Norwegian Bokmål server catalog (700 strings)
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Finish the European Portuguese server catalog (2,007 strings)
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Finish the Lithuanian server catalog (350 strings)
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Finish the Croatian webapp catalog (350 strings)
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 1,050 more Finnish server strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Finish the Finnish server catalog (350 strings)
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Translate 1,750 more Croatian server strings
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Finish the Croatian server catalog (225 strings)
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Retranslate 24 restored Finnish server strings that had dropped their template tokens
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Retranslate 8 restored Belarusian server strings that lacked required plural branches or tokens
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Retranslate 10 restored Czech server strings that lacked required plural branches or tokens
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Use a genuinely unsupported locale in the display settings fallback test
The test used 'cs' as its example of an unsupported locale; Czech is
supported again now that the experimental locales are restored, so the
fallback assertions failed. Use a junk locale code instead, matching
the server-side TestFixInvalidLocales.
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
* Prune stale i18n key from restored locales and document new languages
* Treat extra locale keys as warnings in i18n verification
* Label alpha and beta languages in display options docs
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Jesse Hallam <lieut-data@users.noreply.github.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
Tools
This directory aims to provide a set of tools that simplify and enhance various development tasks. This README file serves as a guide to help you understand the directory, features of these tools, and how to get started using it. This is a collection of utilities and scripts designed to streamline common development tasks for Mattermost. These tools aim to help automate repetitive tasks and improve productivity.
Included tools
- mattermost-govet: custom Go vet analyzers enforcing Mattermost-specific code conventions (structured logging, error handling, SQL safety, etc.). Used by
make vetin the server. - mmgotool: is a CLI to help with i18n related checks for the mattermost/server development.
- sharedchannel-test: integration test tool that validates shared channel synchronization (posts, reactions, membership) between two real Mattermost server instances.
Installation & Usage
mmgotool
To install mmgotool, simply run the following command: go install github.com/mattermost/mattermost/tools/mmgotool
Make sure you have the necessary prerequisites such as Go compiler.
mmgotool i18n has following subcommands described below:
check: Check translationscheck-empty-src: Check for empty translation source stringsclean-empty: Clean empty translationsextract: Extract translations
sharedchannel-test
Stands up two Mattermost Enterprise instances, creates a remote cluster connection, and runs integration tests for shared channel synchronization (membership, posts, reactions).
Prerequisites:
make start-docker(Postgres and friends running)- Enterprise repo present at
../../enterprise - An enterprise license file
Usage:
# Managed mode (builds server, starts/stops both instances automatically)
cd tools/sharedchannel-test
go run . --license /path/to/license.mattermost-license --server-dir ../../server
# External mode (connect to already-running instances)
go run . --license /path/to/license.mattermost-license --manage=false \
--server-a http://localhost:9065 --server-b http://localhost:9066