# gt-react: General Translation React SDK: Démarrage rapide React URL: https://generaltranslation.com/fr/docs/react.mdx --- title: Démarrage rapide React description: Ajoutez plusieurs langues à votre application React en moins de 10 minutes --- À la fin de ce guide, votre application React affichera du contenu en plusieurs langues et proposera un sélecteur de langue que vos utilisateurs pourront utiliser. **Prérequis :** * Une application React (Vite, Create React App ou équivalent) * Node.js 18+ **Vous voulez une configuration automatique ?** Exécutez `npx gt@latest` pour tout configurer avec l’[assistant de configuration](/docs/cli/init). Ce guide explique la configuration manuelle. *** ## Étape 1 : Installez les packages `gt-react` est la bibliothèque qui gère les traductions dans votre application. `gt` est l’outil CLI qui prépare les traductions pour la production. ```bash npm i gt-react npm i -D gt ``` ```bash yarn add gt-react yarn add --dev gt ``` ```bash bun add gt-react bun add --dev gt ``` ```bash pnpm add gt-react pnpm add --save-dev gt ``` *** ## Étape 2 : Créez un fichier de configuration de traduction Créez un fichier **`gt.config.json`** à la racine de votre projet. Cela indique à la bibliothèque les langues que vous prenez en charge : ```json title="gt.config.json" { "defaultLocale": "en", "locales": ["es", "fr", "ja"], "files": { "gt": { "output": "public/_gt/[locale].json" } } } ``` * **`defaultLocale`** — la langue dans laquelle votre application est écrite (votre langue source). * **`locales`** — les langues vers lesquelles vous souhaitez traduire. Choisissez-les dans la [liste des configurations régionales compatibles](/docs/platform/supported-locales). * **`files`** — indique au CLI où enregistrer les fichiers de traduction. Le chemin `output` doit correspondre au chemin d’import dans votre fonction `loadTranslations` (étape 3). **Vous utilisez Vite ?** Définissez le chemin de sortie sur `"src/_gt/[locale].json"` au lieu de `"public/_gt/[locale].json"`. Vite importe les fichiers de traduction sous forme de modules, ils doivent donc se trouver dans `src/` plutôt que dans `public/`. *** ## Étape 3 : Créez un chargeur de traductions `gt-react` s’exécute entièrement côté client. Il a donc besoin d’une fonction pour charger les fichiers de traduction à l’exécution. Créez un fichier `loadTranslations` : ```ts title="src/loadTranslations.ts" export default async function loadTranslations(locale: string) { try { const translations = await import(`../public/_gt/${locale}.json`); return translations.default; } catch (error) { console.warn(`No translations found for ${locale}`); return {}; } } ``` Cette fonction charge les fichiers de traduction JSON depuis le répertoire `public/_gt/` de votre application. Le CLI génère ces fichiers lorsque vous exécutez `npx gt translate`. Comme les fichiers de traduction de Vite se trouvent dans `src/_gt/` (voir l’étape 2), mettez à jour le chemin d’importation : ```ts title="src/loadTranslations.ts" export default async function loadTranslations(locale: string) { try { const translations = await import(`./_gt/${locale}.json`); return translations.default; } catch (error) { console.warn(`No translations found for ${locale}`); return {}; } } ``` La configuration webpack de CRA bloque les `import()` dynamiques en dehors de `src/`. Utilisez donc `fetch()` à la place : ```ts title="src/loadTranslations.ts" export default async function loadTranslations(locale: string) { try { const response = await fetch(`${process.env.PUBLIC_URL}/_gt/${locale}.json`); if (!response.ok) throw new Error('Not found'); return await response.json(); } catch (error) { console.warn(`No translations found for ${locale}`); return {}; } } ``` *** ## Étape 4 : Ajoutez GTProvider à votre application Le composant **`GTProvider`** donne à toute votre application accès aux traductions. Enveloppez votre application à la racine : ```tsx title="src/App.tsx" import { GTProvider } from 'gt-react'; import gtConfig from '../gt.config.json'; import loadTranslations from './loadTranslations'; export default function App() { return ( {/* Le contenu de votre application */} ); } ``` `GTProvider` prend votre configuration et votre chargeur de traductions comme props. Il gère l’état du paramètre régional et met les traductions à la disposition de tous les composants enfants. CRA limite les imports aux fichiers situés dans `src/`, donc `import gtConfig from '../gt.config.json'` échouera. Copiez soit `gt.config.json` dans `src/`, soit intégrez directement la configuration : ```tsx title="src/App.tsx" import { GTProvider } from 'gt-react'; import loadTranslations from './loadTranslations'; export default function App() { return ( {/* Le contenu de votre application */} ); } ``` *** ## Étape 5 : Marquez le contenu à traduire Maintenant, entourez tout texte que vous voulez traduire avec le composant **``**. `` signifie "traduire" : ```tsx title="src/components/Welcome.tsx" import { T } from 'gt-react'; export default function Welcome() { return (

Welcome to my app

This content will be translated automatically.

); } ``` Vous pouvez inclure autant ou aussi peu de JSX que vous le souhaitez dans ``. Tout ce qu'il contient — texte, éléments imbriqués, même la mise en forme — est traduit comme un tout. *** ## Étape 6 : Ajouter un sélecteur de langue Ajoutez un **``** pour permettre aux utilisateurs de changer de langue : ```tsx title="src/components/Welcome.tsx" import { T, LocaleSelector } from 'gt-react'; export default function Welcome() { return (

Bienvenue dans mon application

Ce contenu sera traduit automatiquement.

); } ``` `LocaleSelector` affiche une liste déroulante contenant les langues définies dans votre `gt.config.json`. *** ## Étape 7 : Configurez les variables d’environnement (facultatif) Pour voir les traductions en développement, vous avez besoin de clés API de General Translation. Elles activent la **traduction on-demand** : votre application traduit le contenu en temps réel pendant le développement. Créez un fichier **`.env.local`** avec le préfixe approprié pour votre bundler : ```bash title=".env.local" VITE_GT_API_KEY="your-dev-api-key" VITE_GT_PROJECT_ID="your-project-id" ``` ```bash title=".env.local" REACT_APP_GT_API_KEY="your-dev-api-key" REACT_APP_GT_PROJECT_ID="your-project-id" ``` Obtenez vos clés gratuites sur [dash.generaltranslation.com](https://dash.generaltranslation.com/signup) ou en exécutant : ```bash npx gt auth ``` Pour le développement, utilisez une clé commençant par `gtx-dev-`. Les clés de production (`gtx-api-`) sont réservées à la CI/CD. Les bundlers côté client comme Vite et CRA exigent que les variables d’environnement utilisent des préfixes spécifiques (`VITE_` ou `REACT_APP_`) pour être exposées au navigateur. `GT_API_KEY` sans préfixe ne sera pas disponible au Runtime. Oui. Sans clés API, `gt-react` fonctionne comme une bibliothèque i18n standard. Vous n’aurez pas de traduction on-demand en développement, mais vous pourrez quand même : * Fournir manuellement vos propres fichiers de traduction * Utiliser tous les composants (``, ``, `LocaleSelector`, etc.) * Exécuter `npx gt generate` pour créer des templates de fichiers de traduction, puis les traduire vous-même *** ## Étape 8 : Vérifiez que tout fonctionne Démarrez votre serveur de développement : ```bash npm run dev ``` ```bash yarn dev ``` ```bash bun dev ``` ```bash pnpm dev ``` Ouvrez votre application et utilisez la liste déroulante de langue pour changer de langue. Vous devriez voir votre contenu traduit. En développement, les traductions se font on-demand — il se peut qu’un bref chargement s’affiche la première fois que vous passez à une nouvelle langue. En production, les traductions sont pré-générées et se chargent instantanément. *** ## Étape 9 : Traduire les chaînes de caractères (et pas seulement le JSX) Pour les chaînes de caractères simples — comme les attributs `placeholder`, les valeurs `aria-label` ou le texte `alt` — utilisez le **`useGT`** Hook : ```tsx title="src/components/ContactForm.tsx" import { useGT } from 'gt-react'; export default function ContactForm() { const gt = useGT(); return (
); } ``` *** ## Étape 10 : Déploiement en production En production, les traductions sont pré-générées au moment du build (sans appels d’API en temps réel). Ajoutez la commande translate à votre script de build : ```json title="package.json" { "scripts": { "build": "npx gt translate && " } } ``` Définissez vos variables d’environnement de **production** auprès de votre hébergeur (Vercel, Netlify, etc.) : ```bash GT_PROJECT_ID=your-project-id GT_API_KEY=gtx-api-your-production-key ``` Les clés de production commencent par `gtx-api-` (et non par `gtx-dev-`). Obtenez-en une sur [dash.generaltranslation.com](https://dash.generaltranslation.com). N’exposez jamais votre `GT_API_KEY` publiquement. C’est tout — votre application est maintenant multilingue. 🎉 *** ## Dépannage `gt-react` stocke la préférence linguistique de l’utilisateur dans un cookie appelé `generaltranslation.locale`. Si vous avez déjà testé avec une autre langue, ce cookie peut prendre le pas sur votre sélection. Supprimez les cookies, puis réessayez. * [Chrome](https://support.google.com/chrome/answer/95647) * [Firefox](https://support.mozilla.org/en-US/kb/delete-cookies-remove-info-websites-stored) * [Safari](https://support.apple.com/en-mn/guide/safari/sfri11471/16.0/mac/11.0) C’est normal. En développement, les traductions se font on-demand (votre contenu est traduit en temps réel via l’API). Ce délai **n’existe pas en production** — toutes les traductions sont pré-générées par `npx gt translate`. Un texte ambigu peut entraîner des traductions inexactes. Par exemple, « apple » peut désigner le fruit ou l’entreprise. Ajoutez une prop `context` pour lever l’ambiguïté : ```jsx Apple ``` `` et `useGT()` prennent en charge l’option `context`. *** ## Étapes suivantes * [**Guide du composant ``**](/docs/react/guides/t) — Découvrez les variables, les pluriels et les schémas de traduction avancés * [**Guide de traduction des chaînes de caractères**](/docs/react/guides/strings) — Explorez `useGT` en profondeur * [**Composants variables**](/docs/react/guides/variables) — Gérez le contenu dynamique avec ``, ``, `` et `` * [**Pluralisation**](/docs/react/api/components/plural) — Gérez les formes du pluriel avec le composant `` * [**Déploiement en production**](/docs/react/tutorials/quickdeploy) — Configuration CI/CD, mise en cache et optimisation des performances * [**Chaînes de caractères partagées**](/docs/react/guides/shared-strings) — Traduisez le texte dans des tableaux, des objets de configuration et des données partagées avec `msg()`