API

Translate API

Package

@foo-i18n/t

The translate function is responsible of returning the correct string from a specified messages dictionary, supporting gender and plurality.

Declarations

type Messages = {
  [key: string]: PluralMessage | GenderedMessage | string;
};

type NamespaceMessages = {
  [key: string]: Messages;
};

function translate(
  msg: NamespaceMessages
): (ns: string) => (text: string, values?: unknown) => string;

The function args ns, text, and values are inferred from msg. The signatures above have been simplified.

Usage

import { translate, type NamespaceMessages } from '@foo-i18n/t';

// NamespaceMessages-compliant dictionary
const messages = {
  hello: {
    'Hello {name}': 'Hello {name}',
  },
} satisfies NamespaceMessages;

// retrieve the translator for messages
const translator = translate(messages);

// retrieve the translate function for
// namespace 'hello' (auto-completed)
const t = translator('hello');

// translate 'Hello {name}' (auto-completed, and
// placeholder 'name' is mandatory)
console.log(t('Hello {name}', { name: 'John' }));
// "Hello John"