Démarrer avec Intlayer vitejs + react
Configurer Intlayer dans une application Create React App est simple :
Étape 1 : Installer les dépendances
Installez les packages nécessaires en utilisant npm :
npm install intlayer react-intlayer
yarn add intlayer react-intlayer
pnpm add intlayer react-intlayer
Étape 2 : Configuration de votre projet
Créez un fichier de configuration pour configurer les langues de votre application :
// intlayer.config.ts
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [
Locales.ENGLISH,
Locales.FRENCH,
Locales.SPANISH,
// Vos autres langues
],
defaultLocale: Locales.ENGLISH,
},
};
export default config;
Pour voir tous les paramètres disponibles, consultez la documentation de configuration ici.
Étape 3 : Intégrer Intlayer dans votre configuration Vite
Ajoutez le plugin intlayer dans votre configuration.
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react-swc";
import { intLayerPlugin } from "react-intlayer/vite-plugin";
// https://vitejs.dev/config/
export default defineConfig({
plugins: [react(), intLayerPlugin()],
});
Étape 4 : Déclarez votre contenu
Créez et gérez vos dictionnaires de contenu :
// src/app.content.tsx
import { t, type DeclarationContent } from "intlayer";
import { type ReactNode } from "react";
const appContent = {
key: "app",
content: {
viteLogo: t({
en: "Vite logo",
fr: "Logo Vite",
es: "Logo Vite",
}),
reactLogo: t({
en: "React logo",
fr: "Logo React",
es: "Logo React",
}),
title: "Vite + React",
count: t({
en: "count is ",
fr: "le compte est ",
es: "el recuento es ",
}),
edit: t<ReactNode>({
// No olvides importar React si usas un React node en tu contenido
en: (
<>
Edit <code>src/App.tsx</code> and save to test HMR
</>
),
fr: (
<>
Éditez <code>src/App.tsx</code> et enregistrez pour tester HMR
</>
),
es: (
<>
Edita <code>src/App.tsx</code> y guarda para probar HMR
</>
),
}),
readTheDocs: t({
en: "Click on the Vite and React logos to learn more",
fr: "Cliquez sur les logos Vite et React pour en savoir plus",
es: "Haga clic en los logotipos de Vite y React para obtener más información",
}),
},
} satisfies DeclarationContent;
export default appContent;
Voir comment déclarer vos fichiers de déclaration Intlayer.
Étape 5 : Utilisez Intlayer dans votre code
Accédez à vos dictionnaires de contenu dans toute votre application :
import { useState } from "react";
import reactLogo from "./assets/react.svg";
import viteLogo from "/vite.svg";
import "./App.css";
import { LocaleSwitcher } from "./components/LangSwitcherDropDown";
import { IntlayerProvider, useIntlayer } from "react-intlayer";
function AppContent() {
const [count, setCount] = useState(0);
const content = useIntlayer("app");
return (
<>
<div>
<a href="https://vitejs.dev" target="_blank">
<img src={viteLogo} className="logo" alt={content.viteLogo.value} />
</a>
<a href="https://react.dev" target="_blank">
<img
src={reactLogo}
className="logo react"
alt={content.reactLogo.value}
/>
</a>
</div>
<h1>{content.title}</h1>
<div className="card">
<button onClick={() => setCount((count) => count + 1)}>
{content.count}
{count}
</button>
<p>{content.edit}</p>
</div>
<p className="read-the-docs">{content.readTheDocs}</p>
<div className="absolute bottom-5 right-5 z-50">
<LocaleSwitcher />
</div>
</>
);
}
function App() {
return (
<IntlayerProvider>
<AppContent />
</IntlayerProvider>
);
}
export default App;
Note : Si vous souhaitez utiliser un votre contenu dans un attribut de type string, tel que alt, title, href, aria-label, etc., vous devez appeler la valeur de la fonction, tel que :
<img src={content.image.src.value} alt={content.image.value} />
(Optionnel) Étape 6: Changer la langue de votre contenu
Pour changer la langue de votre contenu, vous pouvez utiliser la fonction setLocale fournie par le useLocale hook. Cette fonction vous permet de définir la langue de l'application et de mettre à jour le contenu en conséquence.
import { Locales } from "intlayer";
import { useLocale } from "react-intlayer";
const MyComponent = () => {
const { setLocale } = useLocale();
return (
<button onClick={() => setLocale(Locales.English)}>
Change Language to English
</button>
);
};
Configurer TypeScript
Intlayer utilise l'augmentation de module pour tirer parti de TypeScript et renforcer votre code.
Assurez-vous que votre configuration TypeScript inclut les types générés automatiquement.
// tsconfig.json
{
// votre configuration personnalisée
include: [
"src",
"types", // <- Inclure les types générés automatiquement
],
}
Configuration Git
Il est recommandé d'ignorer les fichiers générés automatiquement par Intlayer. Cela permet de ne pas les commiter dans le dépôt Git.
Pour cela, vous pouvez d'ajouter les instructions suivantes dans votre fichier .gitignore :
# Ignorer les fichiers générés par Intlayer
.intlayer