Posez votre question et obtenez un résumé du document en referencant cette page et le Provider AI de votre choix
Historique des versions
- "Aligne le guide sur le template Elysia (typage du contexte, setup Bun, scripts)"v9.4.024/08/2026
- "init Elysia plugin"v9.4.023/08/2026
Le contenu de cette page a été traduit à l'aide d'une IA.
Voir la dernière version du contenu original en anglaisSi vous avez une idée d’amélioration pour améliorer cette documentation, n’hésitez pas à contribuer en submitant une pull request sur GitHub.
Lien GitHub de la documentationCopier le Markdown du doc dans le presse-papiers
Traduisez votre site backend Elysia à l'aide d'Intlayer | Internationalization (i18n)
elysia-intlayer est un puissant plugin d'internationalization (i18n) pour les applications Elysia, conçu pour rendre vos services backend mondialement accessibles en fournissant des réponses localisées en fonction des préférences du client.
Voir l'implémentation du package sur GitHub : https://github.com/aymericzip/intlayer/tree/main/packages/elysia-intlayer
Cas d'usage pratiques
- Affichage des erreurs backend dans la langue de l'utilisateur : Quand une erreur se produit, afficher les messages dans la langue maternelle de l'utilisateur améliore la compréhension et réduit la frustration. Cela est particulièrement utile pour les messages d'erreur dynamiques qui pourraient être affichés dans des composants front-end comme des toasts ou des modales.
- Récupération de contenu multilingue : Pour les applications qui extraient du contenu d'une base de données, l'internationalisation garantit que vous pouvez servir ce contenu dans plusieurs langues. Cela est crucial pour les plateformes comme les sites e-commerce ou les systèmes de gestion de contenu qui ont besoin d'afficher des descriptions de produits, des articles et d'autres contenus dans la langue préférée par l'utilisateur.
- Envoi d'e-mails multilingues : Qu'il s'agisse d'e-mails transactionnels, de campagnes marketing ou de notifications, envoyer des e-mails dans la langue du destinataire peut augmenter significativement l'engagement et l'efficacité.
- Notifications push multilingues : Pour les applications mobiles, envoyer des notifications push dans la langue préférée d'un utilisateur peut améliorer l'interaction et la rétention. Cette touche personnelle peut rendre les notifications plus pertinentes et exploitables.
- Autres communications : Toute forme de communication du backend, comme les messages SMS, les alertes système ou les mises à jour de l'interface utilisateur, bénéficie d'être dans la langue de l'utilisateur, assurant la clarté et améliorant l'expérience utilisateur globale.
En internationalisant le backend, votre application non seulement respecte les différences culturelles mais s'aligne également mieux avec les besoins du marché mondial, ce qui en fait une étape clé dans la mise à l'échelle de vos services dans le monde entier.
Commencer
Voir Modèle d'application sur GitHub.
Installation
Pour commencer à utiliser elysia-intlayer, installez le package en utilisant npm :
Copier le code dans le presse-papiers
le flag--interactiveest optionnel. Utilisezintlayer-cli initsi vous êtes un agent IA.
Cette commande détectera votre environnement et installera les packages requis. Par exemple :
Copier le code dans le presse-papiers
Elysia cible le runtime Bun.elysia-intlayers'appuie surAsyncLocalStorage(au lieu de la librairiecls-hookedutilisée par les plugins Intlayer basés sur Node) précisément parce que Bun n'implémente pasasync_hooks.createHook.
Configuration
Configurez les paramètres d'internationalisation en créant un fichier intlayer.config.ts à la racine de votre projet :
Copier le code dans le presse-papiers
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
/**
* Locale par défaut utilisée en fallback si la locale demandée n'est pas trouvée.
*/
defaultLocale: Locales.ENGLISH,
},
};
export default config;
Déclarez Votre Contenu
Créez et gérez vos déclarations de contenu pour stocker les traductions :
Copier le code dans le presse-papiers
import { t, type Dictionary } from "intlayer";
const indexContent = {
key: "index",
content: {
exampleOfContent: t({
fr: "Exemple de contenu renvoyé en français",
en: "Example of returned content in English",
es: "Ejemplo de contenido devuelto en español",
}),
},
} satisfies Dictionary;
export default indexContent;
Vos déclarations de contenu peuvent être définies n'importe où dans votre application tant qu'elles sont incluses dans le répertoirecontentDir(par défaut,./src). Et correspondent à l'extension de fichier de déclaration de contenu (par défaut,.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}).
Pour plus de détails, consultez la documentation de déclaration de contenu.
Configuration de l'application Elysia
Configurez votre application Elysia pour utiliser elysia-intlayer:
Copier le code dans le presse-papiers
import { Elysia } from "elysia";
import { intlayer } from "elysia-intlayer";
const app = new Elysia()
// Charger le plugin d'internationalisation
.use(intlayer())
// Routes
.get("/", ({ intlayer }) => ({
// Locale utilisée pour cette requête, négociée via `Accept-Language` ou lue depuis le stockage
locale: intlayer!.locale,
greeting: intlayer!.t({
en: "Hello",
fr: "Bonjour",
es: "Hola",
}),
content: intlayer!.getIntlayer("index").exampleOfContent,
}))
.listen(3000);
console.log(
`🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}`
);
Le plugin enregistre son contexte via underiveglobal, que Elysia type commePartial<{ intlayer: IntlayerContext }>. La valeur est toujours présente à l'exécution pour les routes enregistrées après.use(intlayer()), utilisez donc l'assertion non-nulle (intlayer!.locale) — ou l'optional chaining — pour satisfaire TypeScript en modestrict.
Le contexte de la route expose :
Ouvrir le tableau dans une fenêtre modale pour voir tout le contenu clairement
| Propriété | Description |
|---|---|
locale | La locale à utiliser pour cette requête, locale_storage étant prioritaire sur locale_detected. |
locale_storage | La locale explicitement demandée par le client via un cookie ou un header. |
locale_detected | La locale négociée à partir des headers de la requête. |
defaultLocale | La locale configurée comme fallback dans intlayer.config.ts. |
t | Une fonction de traduction. |
getIntlayer | Une fonction pour récupérer les dictionnaires par clé. |
getDictionary | Une fonction pour traiter les objets dictionnaire. |
Les mêmes helpers sont aussi exportés en standalone. Ils résolvent la requête courante via AsyncLocalStorage, vous pouvez donc les appeler sans déstructurer le contexte :
Copier le code dans le presse-papiers
import { Elysia } from "elysia";
import { intlayer, t, getDictionary, getIntlayer } from "elysia-intlayer";
import dictionaryExample from "./index.content";
const app = new Elysia()
.use(intlayer())
.get("/t_example", () =>
t({
en: "Example of returned content in English",
fr: "Exemple de contenu renvoyé en français",
es: "Ejemplo de contenido devuelto en español",
})
)
.get("/getIntlayer_example", () => getIntlayer("index").exampleOfContent)
.get(
"/getDictionary_example",
() => getDictionary(dictionaryExample).exampleOfContent
)
.listen(3000);
Le contexte de requête est libéré une fois la réponse mappée, afin que les helpers autonomes ne se résolvent jamais sur une requête déjà terminée. Lorsqu'ils sont appelés en dehors d'une requête gérée par le plugin, ils se rabattent sur la locale par défaut configurée.
Lancer votre application
Ajoutez les scripts Intlayer à votre package.json. intlayer build compile vos déclarations de contenu dans le répertoire .intlayer et génère les types TypeScript :
Copier le code dans le presse-papiers
Démarrez ensuite le serveur :
Copier le code dans le presse-papiers
Testez la négociation de locale avec Accept-Language :
Copier le code dans le presse-papiers
intlayer buildn'est pas strictement nécessaire avantbun run src/index.ts: le plugin prépare aussi les dictionnaires au démarrage de l'application Elysia. Le lancer en amont garde les types générés à jour pour votre éditeur et évite le coût du build à la première requête.
Compatibilité
elysia-intlayer est entièrement compatible avec :
react-intlayerpour les applications Reactnext-intlayerpour les applications Next.jsvite-intlayerpour les applications Vite
Elle fonctionne également de manière transparente avec n'importe quelle solution d'internationalisation dans divers environnements, y compris les navigateurs et les requêtes API.
Par défaut, le plugin résout la locale dans cet ordre :
- Le cookie
INTLAYER_LOCALE. - Le header
x-intlayer-locale. - La négociation du header
Accept-Language.
Vous pouvez personnaliser le cookie et le header utilisés pour la détection de la locale :
Copier le code dans le presse-papiers
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
// ... Autres options de configuration
routing: {
storage: [
{ type: "header", name: "my-locale-header" },
{ type: "cookie", name: "my-locale-cookie" },
],
},
};
export default config;
Pour plus d'informations sur la configuration et les sujets avancés, consultez notre documentation.
Configurer TypeScript
elysia-intlayer exploite les capacités robustes de TypeScript pour améliorer le processus d'internationalisation. Le typage statique de TypeScript garantit que chaque clé de traduction est prise en compte, réduisant le risque de traductions manquantes et améliorant la maintenabilité.
Assurez-vous que les types générés automatiquement (par défaut à ./types/intlayer.d.ts) sont inclus dans votre fichier tsconfig.json.
Copier le code dans le presse-papiers
Extension VS Code
Pour améliorer votre expérience de développement avec Intlayer, vous pouvez installer l'extension Intlayer VS Code officielle.
Installer depuis le VS Code Marketplace
Cette extension fournit :
- Autocomplétion pour les clés de traduction.
- Détection d'erreurs en temps réel pour les traductions manquantes.
- Aperçus intégrés du contenu traduit.
- Actions rapides pour créer et mettre à jour facilement les traductions.
Pour plus de détails sur la façon d'utiliser l'extension, reportez-vous à la documentation de l'extension Intlayer VS Code.
Configuration Git
Il est recommandé d'ignorer les fichiers générés par Intlayer. Cela vous permet d'éviter de les valider dans votre référentiel Git.
Pour ce faire, vous pouvez ajouter les instructions suivantes à votre fichier .gitignore :
Copier le code dans le presse-papiers
