Skip to content

Kamod i18n

Getting Started#

Define the schema locale with as const, then validate every eager translation against it.

import { createI18n, type Messages } from "@kamod-ch/i18n";

const en = {
  common: { save: "Save" },
  welcome: "Welcome {name}",
  users: { one: "{count} user", other: "{count} users" },
} as const;

const de = {
  common: { save: "Speichern" },
  welcome: "Willkommen {name}",
  users: { one: "{count} Benutzer", other: "{count} Benutzer" },
} satisfies Messages<typeof en>;

const i18n = createI18n({
  locale: "en",
  fallbackLocale: "en",
  messages: { en, de },
});

console.log(i18n.t("welcome", { name: "Ada" }));
await i18n.setLocale("de");

The fallback locale is the message schema used to infer valid keys. Both locale and fallbackLocale must initially reference eager message objects.