Questions fréquentes
Trouvez les réponses aux questions fréquentes
Premiers pas
Dois-je reconstruire mon application après avoir publié des traductions ?
Non. Better i18n délivre les traductions via un CDN mondial au moment de l'exécution. Lorsque vous publiez, les traductions sont disponibles dans votre application en ~60 secondes sans aucune reconstruction ni redéploiement. Votre SDK récupère automatiquement les nouvelles traductions.
Que se passe-t-il si le CDN est hors ligne ?
Le CDN est conçu pour toujours retourner HTTP 200 — même lors d'erreurs, votre application reçoit {} ou { "fallback": true } au lieu d'un échec.
Le SDK dispose d'une chaîne de repli à 5 couches :
- Cache en mémoire (TtlCache, TTL 60s)
- Récupération CDN (avec délai d'expiration + réessai)
- Stockage persistant (si configuré — ex. AsyncStorage sur mobile)
- Données de repli statiques (traductions groupées que vous fournissez)
- Erreur (uniquement si toutes les couches échouent)
En pratique, les utilisateurs ne voient presque jamais d'échec car les données en cache ou statiques sont toujours disponibles.
Y a-t-il un plan gratuit ?
Oui ! Better i18n propose un niveau gratuit qui inclut :
- 1 projet
- Clés de traduction illimitées
- Crédits de traduction IA
- Livraison CDN
- Accès CLI
Les plans payants ajoutent plus de projets, de membres d'équipe, des fonctionnalités avancées et des limites d'utilisation plus élevées. Consultez la page de tarification pour les détails actuels.
Better i18n prend-il en charge les langues RTL ?
Better i18n est une plateforme de livraison de chaînes — elle stocke et livre les chaînes de traduction quelle que soit la direction du texte. Les langues RTL comme l'arabe, l'hébreu et le persan sont entièrement prises en charge comme cibles de traduction.
Cependant, la mise en page et le CSS RTL (ex. direction: rtl, interface miroir) relèvent de la responsabilité de votre application. Le SDK livre les chaînes traduites correctes ; votre framework CSS gère la direction visuelle.
Gérer les traductions
Combien de temps prend la traduction par IA ?
La vitesse de traduction IA dépend du volume :
| Clés | Temps approximatif |
|---|---|
| 1–50 | Quelques secondes |
| 50–500 | Moins d'1 minute |
| 500–1000 | 1–3 minutes |
| 1000+ | 3–5 minutes |
La traduction s'exécute en lots parallèles, ce qui lui permet de bien évoluer. Vous pouvez continuer à travailler dans le tableau de bord pendant que la traduction est en cours.
Puis-je utiliser des traducteurs humains plutôt que l'IA ?
Absolument. Vous pouvez :
- Inviter des traducteurs avec le rôle Translator — ils accèdent à une interface de traduction dédiée
- Utiliser la file de révision — les traducteurs peuvent réviser, modifier et approuver les traductions
- Combiner IA + humain — utiliser l'IA pour la première passe, puis des traducteurs humains pour réviser et affiner
Le rôle Translator n'a accès qu'à la modification des traductions, pas aux paramètres du projet ni à la gestion des clés.
Qu'est-ce qu'un namespace ?
Un namespace est un regroupement logique de clés de traduction. Par exemple :
common— chaînes partagées comme "Enregistrer", "Annuler", "Chargement"auth— chaînes liées à la connexion/inscriptiondashboard— chaînes spécifiques au tableau de bord
Les namespaces permettent le chargement différé — votre application ne récupère que les traductions dont elle a besoin pour la page actuelle. Ils aident aussi à organiser les clés et à réduire les conflits dans les grands projets.
Dans le code, vous référencez les namespaces ainsi : t('common:save_button') ou useTranslations('common').
Les traductions peuvent-elles être annulées ?
Oui. Chaque publication crée un instantané de vos traductions. Si quelque chose ne va pas :
- Allez dans l'Historique de publication de votre projet
- Trouvez la bonne publication précédente
- Cliquez sur Annuler
Cela restaure le CDN à l'instantané sélectionné. Votre application servira les traductions restaurées en ~60 secondes.
Intégration développeur
Dois-je utiliser un singleton ou plusieurs instances du SDK ?
Utilisez toujours un singleton — créez une instance SDK au niveau du module et réutilisez-la partout.
Le TtlCache du SDK est un global au niveau du module partagé entre toutes les instances createI18nCore() dans le même processus. Créer plusieurs instances est inutile mais pas nuisible — elles partageront le même cache.
// ✅ Bien — singleton au niveau du module
export const i18n = createI18n({ project: 'acme/dashboard', ... });
// ❌ À éviter — créer dans un composant/handler
function handler() {
const i18n = createI18n({ ... }); // Nouvelle instance par requête
}
Quel est le format org/project ?
L'identifiant de projet utilise le format org/project, comme acme/dashboard. Cela correspond directement à l'URL CDN :
https://cdn.better-i18n.com/acme/dashboard/manifest.json
https://cdn.better-i18n.com/acme/dashboard/en/translations.json
- org — votre slug d'organisation (défini lors de l'inscription)
- project — le slug du projet (défini lors de la création d'un projet)
Ce format est utilisé partout : configuration du SDK, configuration CLI, appels API et URLs CDN. Il est sensible à la casse.
Le SDK fonctionne-t-il sur les runtimes edge ?
Oui. Le SDK n'utilise que l'API Fetch standard — aucun module Node.js intégré (fs, path, crypto, etc.) n'est requis. Cela signifie qu'il fonctionne sur :
- Cloudflare Workers
- Vercel Edge Functions
- Deno Deploy
- Bun
- Tout runtime compatible avec les standards Web
La seule exigence est une fonction fetch globale. Vous pouvez aussi passer un fetch personnalisé via l'option de configuration fetch si nécessaire.
Quelle est la différence entre la CLI et le SDK ?
Ils servent des objectifs différents :
CLI (@better-i18n/cli) |
SDK (@better-i18n/next, etc.) |
|
|---|---|---|
| Quand | Temps de développement | Runtime |
| Objectif | Scanner le code, synchroniser les clés, vérifier l'état | Récupérer et afficher les traductions |
| Exécute sur | Votre machine / CI | Votre application (navigateur, serveur, mobile) |
| Auth | Clé secrète (sk_...) |
Clé publique ou aucune |
| Installation | Global ou devDependency | Dependency |
La CLI gère vos clés de traduction. Le SDK les livre aux utilisateurs.
Dépannage et problèmes courants
Comment vérifier si le CDN est en bonne santé ?
Récupérez directement vos traductions pour vérifier la santé du CDN :
# Vérifier le manifeste
curl -w '\nHTTP %{http_code} | Time: %{time_total}s\n' \
https://cdn.better-i18n.com/your-org/your-project/manifest.json
# Vérifier les traductions
curl -w '\nHTTP %{http_code} | Time: %{time_total}s\n' \
https://cdn.better-i18n.com/your-org/your-project/en/translations.json
Le CDN renvoie toujours HTTP 200. Vérifiez le corps de la réponse :
- JSON valide avec vos traductions → CDN en bonne santé
{}ou{ "fallback": true }→ traductions pas encore publiées- Temps de réponse > 1s → problème réseau possible (typiquement <100ms)
Pourquoi mon application affiche la langue de repli au lieu de la langue de l'utilisateur ?
Quatre causes courantes :
- Locale non publiée — vérifiez si des traductions existent pour cette langue dans le tableau de bord et sont publiées
- Désaccord de normalisation de locale — le CDN utilise le BCP 47 en minuscules (
pt-br), mais votre application pourrait envoyerpt-BR. UtiliseznormalizeLocale()depuis@better-i18n/core - Middleware ne détecte pas la locale — vérifiez la configuration de votre middleware et assurez-vous que la correspondance de l'en-tête
Accept-Languageest configurée - Locale manquante dans le manifeste — le manifeste CDN liste les locales disponibles. Si votre locale n'y est pas, le SDK revient à la locale par défaut
Vérifiez en consultant le manifeste :
curl https://cdn.better-i18n.com/your-org/your-project/manifest.json
La réponse doit lister toutes les locales publiées.
IA et automatisation
La traduction IA est-elle suffisamment précise pour la production ?
Pour la plupart des contenus, oui. La qualité de traduction IA dépend de plusieurs facteurs :
- Contexte — les clés avec des annotations de contexte se traduisent significativement mieux
- Glossaire — appliquer une terminologie cohérente élimine les erreurs les plus courantes
- Type de contenu — les chaînes UI, étiquettes et courtes descriptions se traduisent très bien. Le contenu marketing et créatif peut nécessiter une révision humaine
L'approche recommandée : utiliser l'IA pour la première passe, puis faire réviser le contenu critique orienté utilisateur par des locuteurs natifs. La file de révision facilite ce flux de travail.
Quels modèles d'IA sont utilisés pour la traduction ?
Better i18n utilise une combinaison de grands modèles de langage optimisés pour la qualité de traduction. La plateforme sélectionne automatiquement le meilleur modèle en fonction du type de contenu et de la paire de langues.
Vous n'avez pas besoin de choisir ou de configurer les modèles — la plateforme s'en charge. La sélection des modèles est continuellement améliorée en fonction des métriques de qualité de traduction.
Quels agents de codage IA fonctionnent avec le serveur MCP ?
Tout agent compatible MCP fonctionne avec le serveur MCP Better i18n, notamment :
- Claude Code (CLI) — support complet
- Claude Desktop — support complet
- Cursor — via les paramètres MCP
- Windsurf — via les paramètres MCP
- Continue — via la configuration MCP
- Agents personnalisés — tout ce qui est construit avec le MCP SDK
Le serveur MCP expose des outils pour gérer les clés de traduction, les traductions, la publication et la gestion de contenu. L'agent appelle ces outils via des commandes en langage naturel.
Gestion de contenu
Quelle est la différence entre les clés de traduction et le Content SDK ?
Ils servent des cas d'usage différents :
| Clés de traduction | Content SDK | |
|---|---|---|
| Pour | Courtes chaînes UI | Contenu riche structuré |
| Exemples | Étiquettes de boutons, messages d'erreur, titres de page | Articles de blog, journaux de modifications, articles d'aide |
| Format | Paires clé-valeur | Modèles de contenu avec champs typés |
| Édition | Éditeur de traduction du tableau de bord | Éditeur de contenu du tableau de bord (Markdown) |
| Livraison | CDN via SDK | API de contenu via @better-i18n/sdk |
Utilisez les clés de traduction pour le texte UI. Utilisez le Content SDK pour le contenu structuré avec titre, corps, métadonnées et relations.
Y a-t-il des limites de débit sur le Content SDK ?
Oui, les limites de débit dépendent de votre niveau de plan. L'API renvoie des en-têtes de limite de débit standard :
X-RateLimit-Limit— requêtes autorisées par fenêtreX-RateLimit-Remaining— requêtes restantesX-RateLimit-Reset— quand la fenêtre se réinitialise (horodatage Unix)
Si vous dépassez la limite, l'API renvoie HTTP 429. Le SDK ne réessaie pas automatiquement en cas de limite de débit — gérez cela dans votre application si vous faites de nombreuses requêtes.
Pour la plupart des applications, les limites de débit sont suffisamment généreuses. La mise en cache côté serveur (comme utilisé dans l'application du centre d'aide) réduit encore les appels API.
Équipe et compte
Combien de projets puis-je avoir ?
Le nombre de projets dépend de votre niveau de plan :
- Gratuit — 1 projet
- Pro — plusieurs projets (voir la page de tarification pour la limite actuelle)
- Entreprise — projets illimités
Chaque projet est totalement indépendant avec ses propres clés, langues, membres d'équipe et historique de publication. Consultez la page de tarification pour les détails actuels.
Les traducteurs peuvent-ils voir tous les projets de mon organisation ?
Non. Les membres de l'équipe sont assignés par projet. Un traducteur invité au "Projet A" ne peut pas voir le "Projet B" sauf s'il y est explicitement ajouté.
Cela vous permet de :
- Inviter des traducteurs externes à des projets spécifiques sans exposer les autres
- Assigner différents traducteurs à différents projets
- Contrôler l'accès de manière granulaire au sein de votre organisation