Skip to content

Add a language

A new locale is two JSON files plus one config entry. Right-to-left scripts mirror the whole layout automatically.

1. Add the message catalogs

  • Frontend: src/locales/{lang}.json — copy en.json and translate the values.
  • Backend: Resources/{lang}.json — the server-side strings (email subjects, etc.).

Keys mirror the folder structure (feature.subkey.subsubkey), so a missing key is easy to spot.

2. Register it

In src/i18n.config.ts, import the JSON into resources and add a LANGUAGES entry:

ts
import it from './locales/it.json';

export const LANGUAGES = [
  // …
  { code: 'it', name: 'Italiano', dir: 'ltr' },   // autonym in `name`
];

supportedLngs is derived from LANGUAGES, so that's the only list to touch. The language picker (top bar + profile) updates automatically.

Right-to-left

For an RTL script, set dir: 'rtl':

ts
{ code: 'he', name: 'עברית', dir: 'rtl' },

The shell mirrors automatically — the codebase uses logical CSS properties throughout, so there's no separate RTL stylesheet to maintain. See Theming, i18n & RTL.

NetForge Community is MIT-licensed. Pro is a commercial edition.