B Blengi 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.

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.