ENbext.dev
DocumentationOutils pour applications

Traduction automatique depuis l’anglais. Consulter l’original.

Sur cette page

Localisation (i18n)

@bext-stack/framework/i18n permet la traduction des applications PRISM selon la méthode Laravel : catalogues de messages par langue, t(key, params) avec interpolation {placeholder}, pluralisation, paramètres régionaux de secours et détection des paramètres régionaux à partir de la requête. Il s'agit du remplacement partagé des copies i18n.ts que chaque site a créées manuellement, et de l'équivalent pour les développeurs d'applications de la fonctionnalité Rust I18n.

Installation#

ts
import { createI18n } from "@bext-stack/framework/i18n";

const i18n = createI18n({
  default: "en",
  fallback: "en",                     // consulted when a key is missing in the active locale
  locales: {
    en: {
      greeting: "Hello, {name}!",
      cart: "Your cart is empty | 1 item | {count} items",   // zero | one | other
    },
    fr: {
      greeting: "Bonjour, {name} !",
      cart: "Panier vide | 1 article | {count} articles",
    },
  },
});

Traduire#

ts
export async function loader({ request }) {
  const t = i18n.for(i18n.detect(request));   // a Translator for the request's locale

  return {
    hi:   t.t("greeting", { name: "Ada" }),   // → "Hello, Ada!"    (interpolation)
    cart: t.n("cart", count),                 // → "3 items"        (pluralization)
  };
}
Membre Fait
i18n.for(locale) un Translator lié à une locale (inconnu → par défaut)
i18n.detect(request) résoudre les paramètres régionaux de la demande (voir ci-dessous)
t.t(key, params?) traduire + interpoler {placeholder}
t.n(key, count, params?) pluraliser ( one|other ou zero|one|other ), {count} interpolé
t.has(key) la clé est-elle présente (y compris la solution de secours) ?

Les clés manquantes reviennent aux paramètres régionaux de secours, puis à la clé elle-même — de sorte qu'une traduction partielle se dégrade gracieusement au lieu d'être lancée.

Détection des paramètres régionaux#

detect(request) se résout dans cet ordre, le premier coup l'emporte :

  1. Préfixe de chemin — /fr/dashboard → fr.
  2. Cookie — un cookie locale (nom configurable).
  3. Accept-Language — respecte les poids q et correspond à la langue de base (fr-CA → fr).
  4. Valeur par défaut.
Conseil

Pour le routage préfixé à l'échelle du site ( /en/…, /fr/… ), vous pouvez également configurer [i18n] dans bext.config.toml (la capacité Rust). Ce module est le chemin dans le code pour la traduction des chaînes et pour la détection personnalisée/à l'échelle de la page.

Essayez-le#

Le démo i18n en direct bascule entre en/fr/es/ja avec interpolation et pluralisation en direct. Source dans sites/demo/src/app/examples/i18n/page.tsx.

Voir aussi#

  • I18n — la capacité Rust + le routage bext.config.toml.
  • Validation — localisez les messages de validation via les options { required, invalid }.
  • Boîte à outils de candidature — le reste de la couche d'application TypeScript.
Modifier cette page ↗Besoin d’aide ? ↗
Rechercher dans la documentation

Saisissez un sujet, une commande ou une question.