modellerUpdated 2026-05-24

Model Translations (i18n)

What this covers

Multi-language model metadata lets you provide translated display names for dimensions, measures, hierarchies, and other model entities. When a user selects a locale in the Explorer, all entity labels switch to that language.

How it works

Translations are stored in the entity_translations table, keyed by (model_id, entity_type, entity_id, field_name, locale). Each row maps a specific field on a specific entity to a translated string in a specific locale.

When a user sets their display locale via the Locale selector in the Explorer, the frontend fetches all translations for the active model and locale. Entity labels throughout the UI are resolved using a simple fallback: if a translation exists for the current locale, show it; otherwise, show the original name.

Setting the display locale

  1. Open the Workspace Explorer or the Model Builder.
  2. Click the Locale selector dropdown (near the user avatar or toolbar).
  3. Choose a locale (e.g., fr, de, ja, ar).
  4. All entity labels in the current view update immediately.

The selected locale is stored in the browser session and persists across page navigations within the same session but resets on logout.

Managing translations

Translations are managed via the REST API. There is no GUI editor yet.

Upsert a single translation

PUT /api/v1/projects/{project_id}/models/{model_id}/translations

{
  "entity_type": "dimension",
  "entity_id": "uuid-of-the-dimension",
  "field_name": "display_name",
  "locale": "fr",
  "translated_text": "Catégorie de produit"
}

Bulk upsert

POST /api/v1/projects/{project_id}/models/{model_id}/translations/bulk

Body: an array of translation objects. The response returns only the rows that were successfully upserted. Skipped items are logged server-side with the array index and reason.

List translations

GET /api/v1/projects/{project_id}/models/{model_id}/translations?locale=fr

Delete a translation

DELETE /api/v1/projects/{project_id}/models/{model_id}/translations/{id}

Supported entity types

Entity typeTypical field_nameExample
dimensiondisplay_name“Product Category” → “Catégorie de produit”
measuredisplay_name“Revenue” → “Chiffre d’affaires”
hierarchydisplay_name“Date Hierarchy” → “Hiérarchie de dates”
leveldisplay_name“Quarter” → “Trimestre”

Security

All translation endpoints verify that the specified model belongs to the specified project. Attempting to manage translations for a model in a different project returns 404 Not Found.

Related