back to docs
[reference] localization i18n languages translations

Localization

Every user-facing string in dForge is metadata — labels, menus, options, validation and error messages all translate. Add a locale and ship it instantly; tenants and users pick their own language.

published

Localization

In dForge, language is metadata — not strings baked into application code. Every label a user reads is a translatable value the runtime resolves per request, so adding a language is a content change, not a code change or a redeploy.

What’s translatable

Practically everything a user sees:

  • Entity and field labels — the names on forms, grids, and detail pages
  • Menu titles and folder names — the whole navigation tree
  • View and column names — grids, kanbans, calendars, and their columns
  • Dropdown / radio / flags option labels — the choices in pick-lists
  • Action labels — buttons and their parameters
  • Validation and error messages — what users see when input is rejected
  • Settings — configurable labels a module ships

How it resolves

Each request carries a locale (from the signed-in user’s language, falling back to the browser’s Accept-Language). The API returns labels and messages already in that locale, so the same module serves every language from one definition — no per-language build.

Numbers, currency, and dates follow the locale too: $1,234.56 for en-US, 1.234,56 € for de-DE. The same value renders correctly for each user without the module doing anything special.

Tenants and users choose independently

  • A tenant enables the languages it wants to offer.
  • Each user picks their own — two people in the same workspace can use the app in different languages against the same data.

Adding a language

Provide the translated strings for a locale and it’s available immediately — no redeploy, no rebuild. Modules ship with their own translations, so installing a module brings its labels in every language it supports; add another locale later and every screen the module defines picks it up.

Module authors declare translations alongside the rest of a module’s metadata — see Module Studio and Core Concepts for where they live.

/ was this helpful?

Stuck on something?
Tell us.

We read every message and update the docs based on what readers ask. The fastest way to improve the docs is to write to us.