T Tamgal docs

Platform admin

Translation manager (edit any language)

The Translation manager at /admin/translations (super-admin only) lets you edit the value of any string in any shipped language and fill in missing strings โ€” entirely from the UI, with changes live on the next request. No redeploy, no editing JSON files.

Requires the multilingual layer
The Translation manager is part of the language system, which is off by default. Set MULTILINGUAL_ENABLED=true in your environment to turn on languages (the locale picker + runtime switching) and reveal this manager. With it off the site is English-only and /admin/translations returns 404.

How it works โ€” files stay the baseline, the DB wins

The app ships ~2,500 strings across 130+ languages as lang/{locale}.json files. Those files remain the canonical set of keys (the English source string is the key) and the shipped defaults. Your edits are stored as overrides in the translation_overrides table and layered on top at runtime โ€” an override wins for its (locale, key). The original files are never modified, so a deploy can ship new baseline translations without clobbering your customisations, and resetting a string simply removes the override.

Overrides apply everywhere the app reads a string: the admin + customer SPA, the visitor widget, and the marketing pages all resolve through the same override-aware loader. The bare __() helper (validation messages, emails) is override-aware too.

Editing a language

  1. Open /admin/translations โ€” each language shows a progress bar (translated / total), a missing count, and an edited (override) count. Click a language to open its editor.
  2. Use the search box to find a string by its English source or current value, and the All / Missing / Edited tabs to narrow the list. Missing = a key with no translation in this language yet; Edited = a key you've overridden.
  3. Type the translation into the field and click Save. The change is live immediately.
  4. Reset (the โ†บ button, shown on edited rows) removes your override and restores the shipped file value.

Notes

  • You edit the values for the existing key set; you can't invent brand-new keys here, because only keys the app actually renders (the English source strings) are ever looked up. New keys appear when developers add new English strings to the source.
  • English (en) is the source language. You can still override English wording if you want to reword the product copy.
  • Octane note: the SPA, widget, and marketing surfaces reflect an edit on the very next request (a shared-cache version bump invalidates every worker). Server-side __() in long-lived workers (validation/emails) picks the change up on the next worker that loads the locale.