# node: Démarrage rapide Node.js
URL: https://generaltranslation.com/fr/docs/node/tutorials/quickstart.mdx
---
title: Démarrage rapide Node.js
description: Ajoutez plusieurs langues à votre serveur Node.js en moins de 10 minutes
---
À la fin de ce guide, votre serveur Node.js renverra du contenu traduit selon la langue de la requête, à l’aide de chaînes de caractères en ligne ou préenregistrées.
**Prérequis :**
* Un serveur Node.js (Express, Fastify ou similaire)
* Node.js 18+
**Vous souhaitez 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 paquets
`gt-node` est la bibliothèque qui gère les traductions sur votre serveur. `gt` est l’outil en ligne de commande qui prépare les traductions pour la production.
```bash
npm i gt-node
npm i -D gt
```
```bash
yarn add gt-node
yarn add --dev gt
```
```bash
bun add gt-node
bun add --dev gt
```
```bash
pnpm add gt-node
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"]
}
```
* **`defaultLocale`** — la langue dans laquelle sont écrites les chaînes de caractères de votre serveur.
* **`locales`** — les langues dans lesquelles vous souhaitez traduire. Choisissez-en dans la [liste des paramètres régionaux compatibles](/docs/platform/supported-locales).
***
## Étape 3 : Initialisez General Translation
Appelez **`initializeGT`** une seule fois en haut du fichier d’entrée de votre serveur, avant d’utiliser une fonction de traduction :
```js title="server.js"
import { initializeGT } from 'gt-node';
initializeGT({
defaultLocale: 'en',
locales: ['en', 'es', 'fr', 'ja'],
projectId: process.env.GT_PROJECT_ID,
});
```
Cela configure la bibliothèque avec les langues prises en charge et les identifiants de votre projet.
***
## Étape 4 : Définir le contexte de paramètre régional pour chaque requête
Chaque requête doit savoir quelle langue utiliser. Utilisez **`withGT`** pour encapsuler vos gestionnaires de requêtes : il utilise le stockage local asynchrone afin que les fonctions de traduction récupèrent automatiquement le bon paramètre régional :
```js title="server.js"
import { withGT } from 'gt-node';
app.use((req, res, next) => {
const locale = req.headers['accept-language']?.split(',')[0] || 'en';
withGT(locale, () => next());
});
```
***
## Étape 5 : Traduire les chaînes de caractères en ligne
Pour traduire directement des chaînes de caractères dans les gestionnaires de requêtes, utilisez **`getGT`** :
```js title="server.js"
import { getGT } from 'gt-node';
app.get('/api/greeting', async (req, res) => {
const gt = await getGT();
res.json({
message: gt('Hello, world!'),
welcome: gt('Welcome, {name}!', { name: 'Alice' }),
});
});
```
`getGT` renvoie une fonction de traduction liée au paramètre régional de la requête en cours.
***
## Étape 6 : Préenregistrer les chaînes de caractères constantes (facultatif)
Pour les chaînes de caractères définies en dehors des gestionnaires de requêtes — comme les messages d’erreur, les libellés d’énumération ou les constantes — utilisez **`msg`** pour les enregistrer au niveau du module, puis **`getMessages`** pour récupérer les traductions à l’exécution :
```js title="messages.js"
import { msg } from 'gt-node';
export const GREETING = msg('Hello, world!');
export const WELCOME = msg('Welcome, {name}!');
export const NOT_FOUND = msg('Resource not found.');
```
```js title="handler.js"
import { getMessages } from 'gt-node';
import { GREETING, WELCOME, NOT_FOUND } from './messages.js';
app.get('/api/status', async (req, res) => {
const m = await getMessages();
res.json({
greeting: m(GREETING),
welcome: m(WELCOME, { name: 'Alice' }),
});
});
app.use(async (req, res) => {
const m = await getMessages();
res.status(404).json({ error: m(NOT_FOUND) });
});
```
Ce schéma est utile lorsque les mêmes chaînes de caractères sont utilisées dans plusieurs gestionnaires.
***
## Étape 7 : Configurer 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 serveur traduit le contenu en temps réel pendant que vous développez.
Créez un fichier **`.env`** :
```bash title=".env"
GT_API_KEY="your-api-key"
GT_PROJECT_ID="your-project-id"
```
Obtenez vos clés gratuites sur [dash.generaltranslation.com](https://dash.generaltranslation.com/signup) ou en lançant :
```bash
npx gt auth
```
N’exposez jamais `GT_API_KEY` publiquement et ne le versionnez jamais.
Oui. Sans clé API, `gt-node` 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 toutes les fonctions de traduction (`getGT`, `msg`, `getMessages`, 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 cela fonctionne
Démarrez votre serveur et testez avec différents en-têtes `Accept-Language` :
```bash
# Par défaut (anglais)
curl http://localhost:3000/api/greeting
# Espagnol
curl -H "Accept-Language: es" http://localhost:3000/api/greeting
# Français
curl -H "Accept-Language: fr" http://localhost:3000/api/greeting
```
Vous devriez voir des réponses traduites pour chaque langue.
En développement, les traductions se font on-demand — vous pourriez remarquer un léger délai la première fois qu’une nouvelle langue est demandée. En production, les traductions sont pré-générées et se chargent instantanément.
***
## Étape 9 : Exemple complet
Voici un exemple complet de serveur Express avec tous les éléments réunis :
```js title="server.js"
import express from 'express';
import { initializeGT, withGT, getGT, msg, getMessages } from 'gt-node';
// Initialiser GT avant tout le reste
initializeGT({
defaultLocale: 'en',
locales: ['en', 'es', 'fr', 'ja'],
projectId: process.env.GT_PROJECT_ID,
});
// Pré-enregistrer les chaînes de caractères constantes
const NOT_FOUND = msg('Resource not found.');
const app = express();
// Définir le contexte de paramètre régional pour chaque requête
app.use((req, res, next) => {
const locale = req.headers['accept-language']?.split(',')[0] || 'en';
withGT(locale, () => next());
});
// Traduction en ligne
app.get('/api/greeting', async (req, res) => {
const gt = await getGT();
res.json({ message: gt('Hello, world!') });
});
// Traduction de message pré-enregistré
app.use(async (req, res) => {
const m = await getMessages();
res.status(404).json({ error: m(NOT_FOUND) });
});
app.listen(3000, () => console.log('Server running on port 3000'));
```
***
## Étape 10 : Déployer en production
En production, les traductions sont générées à l’avance 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** dans votre hébergeur :
```bash
GT_PROJECT_ID=your-project-id
GT_API_KEY=gtx-api-your-production-key
```
N’exposez jamais votre `GT_API_KEY` publiquement.
C'est tout — votre serveur est maintenant multilingue. 🎉
***
## Dépannage
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 l’option `$context` pour préciser le contexte :
```js
gt('Apple', { $context: 'the technology company' });
```
`getGT()` et `msg()` prennent tous deux en charge l’option `$context`.
***
## Étapes suivantes
* [**`initializeGT`**](/docs/node/api/initialize-gt) — Options de configuration complètes
* [**`withGT`**](/docs/node/api/with-gt) — Contexte de paramètre régional des requêtes
* [**`getGT`**](/docs/node/api/get-gt) — Traduction en ligne de chaînes de caractères
* [**`msg` & `getMessages`**](/docs/node/api/get-messages) — Traduction de messages préenregistrés
* [**CLI**](/docs/cli/translate) — Référence du workflow de traduction