HOT Tasking Manager currently supports 26 languages, making it accessible to humanitarian mappers and project managers in communities around the world. Translations are managed through Transifex, a collaborative localisation platform that requires no programming knowledge to use. Whether you are a fluent speaker wanting to improve a translation or a developer maintaining locale files, this guide covers everything you need.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/hotosm/tasking-manager/llms.txt
Use this file to discover all available pages before exploring further.
Supported Languages
The following languages ship with Tasking Manager by default. The codes correspond to locale files stored underfrontend/src/locales/.
Contributing a Translation
Create a Transifex account
Visit transifex.com and sign up for a free account. No coding experience is required.
Join the hotosm-translator team
Navigate to the Tasking Manager Transifex project and apply to join the
hotosm-translator team. Everybody is welcome — approval is typically fast.Select your language and start translating
Once accepted, choose your language from the project dashboard. You will see a list of resource files. The primary resource is the English source (
en.json). Translate strings directly in the Transifex editor — you can work on as many or as few strings as you like, and your changes are saved automatically.Translators receive an automatic notification every time the HOT development team pushes new source strings to Transifex. Keep an eye on your Transifex notifications to stay up to date with strings that need translating.
Developer Workflow
For developers working on the frontend codebase, the translation pipeline involves exporting new strings from the source code, pushing them to Transifex, and pulling completed translations back before releases.Export New Translatable Strings
Whenever you add or modify user-facing strings in the frontend, regenerate the source locale file so translators can see the new content:messages.js files in the frontend source and writes updated key/value pairs to frontend/src/locales/en.json. Include this file in your commit and Pull Request.
Setting Up the Transifex CLI
Pushing and pulling translations programmatically requires the Transifex CLI and a Transifex API key. Initialise the CLI from the project root:.tx/config, which maps local locale files to Transifex resources.
Running the Transifex CLI
Option 1: Docker-based CLI (Recommended)
Option 1: Docker-based CLI (Recommended)
Use the provided helper scripts to run the CLI inside a Docker container — no local installation required:macOS / Linux:Windows (PowerShell):The scripts mount your project directory into the container and handle system certificates for secure API communication. If you encounter certificate-related errors, update the certificate paths in the script or switch to the native CLI method.
Option 2: Native CLI install
Option 2: Native CLI install
macOS / Linux:Windows: Download the binary from the Transifex CLI Releases page.Once installed, use the CLI directly:Key arguments:
| Argument | Effect |
|---|---|
-s | Push/pull source files only (English) |
-t | Push/pull all translation files |
-af --mode translator | Pull all languages in translator mode (used before releases) |
Push New Source Strings
After a PR with new translatable strings is merged todevelop, push the updated English source to Transifex so translators are notified:
Pull Latest Translations (Before a Release)
Before cutting a major release, pull all available translations from Transifex into the locale directory:frontend/src/locales/. Check the Transifex dashboard to review translation completion rates per language before deciding which locales to bundle.
Restricting Available Languages
If you are running your own Tasking Manager instance and want to offer only a subset of languages, set the following environment variables in your deployment configuration:TM_SUPPORTED_LANGUAGES_CODES and TM_SUPPORTED_LANGUAGES must always contain exactly the same number of entries. A mismatch will cause the language selector to display incorrectly.Adding a New Language
Add the language on Transifex
Open the Tasking Manager Transifex dashboard and add the new language to the project.
Update the Transifex config file
Edit Replace
.tx/config and add a mapping for the new locale file:ml with the appropriate BCP-47 language code for your language.Add the language to the backend configuration
Open
backend/config.py and add the language code and display name to the SUPPORTED_LANGUAGES dictionary:Update the frontend internationalisation files
Add the new locale to
frontend/src/utils/internationalization.js by appending it to the supportedLocales array, and add any required polyfills in frontend/src/utils/polyfill.js.Handle iso-countries-languages (if needed)
If the new language is not yet supported by the iso-countries-languages package used by Tasking Manager, update that library and publish a new version before completing the integration.