DX ultime pour l'i18n

Le moins cher et le plus efficace i18n pour le codage agentique

i18n sans clé votre agent de codage l'obtient juste du premier coup : un seul fichier à modifier, aucun JSON local à charger, aucun conflit de fusion, à partir de 4 $ par mois.

Configuration en 5 minutes

Ton implémentation complète d'i18n en 5 minutes. Je ne blague pas.

Système sans clés

Votre cerveau ne devrait pas être impliqué dans de telles tâches sans importance.

Global dès le premier jour

Expédiez vers les marchés internationaux sans effort supplémentaire.

Configurez l'i18n, gardez votre base de code propre et livrez rapidement

Il existe plusieurs PITA avec les solutions d'i18n actuelles. Les douleurs sont si grandes que vous retardez l'i18n autant que possible.

Cela consomme le temps que vous devriez passer à la plage

Configurez le système de clés : au moins 1 heure de temps de développeur senior

D'avant en arrière pour chaque nouvelle clé : 1 minute par clé, x500 clés, x2 langues = 17 heures

Avec i18n-keyless, vous n’avez pas à vous soucier du tout du système d’internationalisation. Vous pouvez aller à la plage et commander un mojito.

Aujourd’hui, la plupart des systèmes utilisent des clés pour traduire le texte

C'est douloureux à générer. C'est douloureux à maintenir.

Lorsque vous voyez un texte dans l'application et que vous souhaitez le mettre à jour, vous devez trouver la clé correspondante.

Avec i18n-keyless, vous ne vous souciez même pas du système d'i18n. Utilisez votre cerveau pour quelque chose de plus intéressant.

Laissez les traductions à l'IA

Avec le système de clés, vous devez gérer les traductions dans l'application.

Sinon, vos utilisateurs verront someheader.welcome.title dans leur application.

Avec i18n-keyless, vous ne vous souciez même pas du tout du système d’internationalisation. Écrivez simplement de bons titres, concentrez-vous sur le marketing et obtenez des ventes.

Les bases de code sont belles... jusqu'à ce que les clés i18n s'infectent

Avec le système de clés, lorsque vous lisez le code et le contenu, vous devez lire les clés, pas le langage naturel.

Parfois, vous devriez faire une correction parce qu'une phrase n'est pas grammaticalement correcte. Mais vous ne le savez pas parce que vous lisez des clés.

Avec i18n-keyless, vous ne vous souciez même pas du système d’internationalisation. La base de code reste belle.

Ajoutez l'i18n dès le premier jour sans aucun impact sur votre rythme de développement
Conçu pour les agents de codage

Serveur MCP pour couvrir tous vos besoins en internationalisation

Six autres raisons pour lesquelles le système est si optimisé pour le codage agentique.

Aucun nom à inventer

Une clé est une décision de nommage sans bonne réponse. Deux agents écrivent login.submit et auth.button.send pour le même bouton. Sans clés, il n'y a pas de décision à prendre.

Un seul fichier à éditer, pas vingt

Une modification avec clé affecte le composant et chaque fichier JSON de localisation, et les agents oublient les fichiers. Ici, une modification de copie est une édition d'un seul fichier.

Zéro conflit de fusion dans les flottes d'agents

Cinq agents sur cinq branches modifient tous en.json : un conflit garanti. Il n'y a pas de fichier partagé, donc les worktrees et les agents en arrière-plan ne se heurtent jamais.

Bon marché en jetons

Pour réutiliser une clé, un agent doit charger les fichiers de locale dans le contexte à chaque édition. Les chargements sans clé ne font rien : le texte est directement dans le composant.

Différences lisibles

La demande de pull request affiche des phrases réelles. Un humain ou un agent de révision peut évaluer la copie sans avoir à creuser pour savoir ce qu'une clé représente.

Une règle dans votre CLAUDE.md

Chaque règle d’internationalisation que vous écrivez est une règle que l’agent peut enfreindre. Celle-ci n’a besoin que d’une seule ligne — et la solution de repli est le texte réel, donc une erreur ne peut pas afficher a.b.c à l’écran.

La seule règle d'i18n dont votre agent a besoin

# CLAUDE.md
Write the UI copy in English and wrap it in <T>…</T> from i18n-keyless-react.
That is the whole i18n setup.

Votre agent peut l'utiliser, pas seulement l'écrire

Via le serveur MCP, l'agent liste les traductions manquantes, en lit une, remplace une mauvaise ou importe la copie que vous avez déjà — avec sa propre connexion OAuth, sans clé à coller.

Lisez le guide MCP
Parfait pour les MVP

Lancez à l'échelle mondiale dès le premier jour

Arrêtez de retarder l'internationalisation (i18n) à cause de sa complexité. Implémentez-la en 5 minutes, pas en jours. Maintenez votre vitesse de développement comme si l'internationalisation n'avait pas été implémentée.

  • Implémentation en 5 minutes. Je ne blague pas.

    Un simple objet de configuration et vous avez terminé.

  • Maintenez la vitesse de développement

    Codez comme si l'i18n n'était pas du tout implémenté.

  • Expédier vers les marchés mondiaux

    Aucune refactorisation nécessaire lors du passage à de nouvelles langues.

  • SSR et SEO prêts

    Fonctionne avec Next.js, Remix, TanStack Start et Astro. Rendu côté serveur dans n'importe quelle langue pour les moteurs de recherche — même configuration en 5 minutes.

Traditionnel i18n

Configurer le système de clés (1 heure)
Créez des fichiers de traduction (2 heures)
Refactoriser les composants (4 heures)
Tester toutes les langues (2 heures)
Corrigez les problèmes de mise en page (3 heures)
12+ heures de travail

i18n-sans-clé

Ajouter un paquet (1 min)
Configurer avec une clé API (2 min)
Envelopper les composants de texte (2 min)
5 minutes de travail
Comment ça fonctionne

C'est évident à configurer

Il suffit de l'objet de configuration le plus simple et vous êtes prêt à conquérir le monde.
Et même plus, votre agent le configurera pour vous.

1. Configuration de base

import * as I18nKeyless from "i18n-keyless-react";

I18nKeyless.init({
  API_KEY: "YOUR_API_KEY",
  storage: window.localStorage,
  languages: {
    primary: "en",
    supported: ["en", "fr"],
  },
});

2. Utilisation du composant (React ici ; la même chose dans Vue, Angular, Flutter, Swift et Kotlin)

import { I18nKeylessText } from "i18n-keyless-react";
// import { T } from "i18n-keyless-react"; // also works

// Just write in your primary language
<I18nKeylessText>
  Welcome to our website
</I18nKeylessText>

3. Utilisation côté serveur (ici Node.js ; le même appel dans Laravel, Rails, Python et Go)

import { awaitForTranslationOrFallbackToOriginal, type Lang } from 'i18n-keyless-node';

const title = await awaitForTranslationOrFallbackToOriginal('Come see my app!', user.lang as Lang);
const body = await awaitForTranslationOrFallbackToOriginal('So many new stuff!', user.lang as Lang);

await sendExpoPushNotification({ user, title, body });

4. Pour le texte à l'extérieur des composants

import { getTranslation } from "i18n-keyless-react";

export default function Navigation() {
  return (
    <HomeTabs.Navigator>
      <HomeTabs.Screen
        options={{ tabBarLabel: getTranslation("Welcome") }}
        name="WELCOME"
      />
    </HomeTabs.Navigator>
  );
}

5. Choisissez votre SDK : une seule ligne d'installation, la même API partout

  • React, React Native, Expo, Next.js, Remix, TanStack Start, Astronpm install i18n-keyless-react
  • Vue, Nuxtnpm install i18n-keyless-vue
  • Angularnpm install i18n-keyless-angular
  • Plain HTML, Svelte, Alpine, htmx, one script tagnpm install i18n-keyless-browser
  • Node.jsnpm install i18n-keyless-node
  • Laravel, PHPcomposer require i18n-keyless/laravel
  • Rails, Rubybundle add i18n-keyless-rails
  • Flutter, Dartflutter pub add i18n_keyless
  • Swift, iOS, macOS, VaporSwiftPM: arnaudambro/i18n-keyless-swift
  • Kotlin, Android, Ktorio.github.arnaudambro:i18n-keyless-kotlin
  • Python, Django, Flask, FastAPIpip install i18n-keyless
  • Gogo get github.com/arnaudambro/i18n-keyless/ports/go/v3

Configuration rapide pour chacun des douze SDK

Comment fonctionnent les traductions

i18n-keyless est une bibliothèque, combinée à un service API, qui vous permet de traduire votre texte sans avoir besoin d'utiliser des clés.

Si la traduction n'est pas trouvée, une récupération asynchrone sera effectuée auprès de l'API d'I18nKeyless pour obtenir la traduction via un appel API d'IA.

Cette opération est généralement effectuée en mode développement, pendant que vous codez. Si vous en ratez une, en production, seul le premier utilisateur qui manque de traduction verra un bogue, puis il sera immédiatement disponible pour les utilisateurs du monde entier.

App Store & Google Play

Votre fiche de magasin dans toutes les langues, à chaque sortie

Chaque mise à jour signifie de nouvelles notes de version, une description et des mots-clés — pour chaque langue, sur les deux boutiques. C'est ce qui t'empêche d'ajouter des langues. Pas l'application.

  • Notes de version pour chaque langue, en un seul appel

    Écrivez la mise à jour une fois. awaitForTranslation la renvoie dans chaque langue dans laquelle vous vendez, et la configuration de votre boutique l'alimente vers EAS ou fastlane.

  • 48 langues, mappées aux emplacements de l'App Store

    pt-BR et pt-PT sont deux listes ; en-GB, en-AU et en-CA en sont trois. toAppStoreLocale place chaque traduction au bon endroit.

  • Corrigez une mauvaise traduction sans version

    Dans l'application, un override dans le tableau de bord est actif à la fois — pas de build de correctif à chaud, pas d'évaluation du magasin. Dans la liste, relancez le push.

  • Non tarifé par mot

    Un traducteur charge environ 0,10 $ par mot. 2 000 chaînes multipliées par 10 langues représentent un budget qu'un développeur solo ne peut pas se permettre. Ici, les mots ne sont pas comptés.

La recette complète pour une application Expo

// store.config.js — EAS Metadata awaits an async config
const { init, awaitForTranslation, toAppStoreLocale } = require("i18n-keyless-node");

const LANGS = ["en", "fr", "de", "ja", "pt-BR"];
const DESCRIPTION = "Bibi translates your app while you sleep…";

module.exports = async () => {
  init({ API_KEY: process.env.I18N_KEYLESS_KEY, languages: { primary: "en", supported: LANGS } });
  const info = {};
  for (const lang of LANGS) {
    info[toAppStoreLocale(lang)] = {
      title: await awaitForTranslation("Bibi", lang, { context: "App Store app name, 30 characters max" }),
      subtitle: await awaitForTranslation("Keyless i18n", lang, { context: "App Store subtitle, 30 characters max" }),
      description: await awaitForTranslation(DESCRIPTION, lang, { context: "App Store description" }),
    };
  }
  return { configVersion: 0, apple: { info } };
};

Le même appel écrit les fichiers de métadonnées fastlane pour Google Play. Les majuscules sont indicatives : fixez la limite dans le contexte et vérifiez la longueur avant de pousser.

Essayez par vous-même

Bac à sable interactif

Voyez comment i18n-keyless fonctionne en temps réel

Ouvrez un projet StackBlitz en direct et modifiable pour voir les traductions se résoudre au fur et à mesure que vous tapez.

Pourquoi j'ai construit ça

J’ai toujours repoussé l’internationalisation jusqu’à ce que mon client en ait tellement besoin que j’avais pas le choix. J’aime pas lire du code avec des clés d’internationalisation dedans, et j’aime pas plus maintenir des fichiers JSON que de voir à quel point les fournisseurs de traduction i18n sont chers. Alors j’ai dû créer mon propre système, et J’ADORE ÇA. Toutes mes applications sont maintenant internationalisées par défaut.

AA

Arnaud Ambroselli

Fondateur de i18n-keyless

Vous voulez ajouter le vôtre ?

Un témoignage contre un abonnement gratuit. Demandez le vôtre !

Envoyez mon témoignage
Tarification

Tarification simple et prévisible

Un prix unique pour votre échelle.
Chaque fonctionnalité dans chaque plan.
Aucuns frais par mot, aucun calcul de jetons.

Entrée
4/ mois

Jusqu'à 1 000 utilisateurs actifs par mois

Pour les applications indépendantes et les nouveaux produits

Indie
9/ mois

Jusqu'à 5 000 utilisateurs actifs par mois

Pour les applications qui trouvent leur public

Croissance
29/ mois

Jusqu’à 50 000 utilisateurs actifs par mois

Pour les applications avec une traction réelle

Échelle
99/ mois

Jusqu'à 500 000 utilisateurs actifs par mois

Pour des produits à grande échelle

Auto-hébergé

Ou possédez-le : gratuit à installer, 30 $ une seule fois pour des projets illimités.

La même API, le tableau de bord et le serveur MCP, dans un seul conteneur Docker avec SQLite, sur votre serveur, avec votre propre clé Mistral. Un projet est gratuit à vie ; une licence à vie à 30 € déverrouille des projets illimités. Pas d'abonnement, pas de limite d'utilisation, des mises à jour à vie.

Achetez la licence à vie

Chaque plan comprend :

Toutes les 48 langues. Le monde entier, dès le premier jour

Traductions illimitées, y compris l'IA. Les nouvelles chaînes se traduisent automatiquement en production

Traduction en direct de contenu généré par les utilisateurs (UGC)

Mettez à niveau, rétrogradez ou annulez à tout moment

Plus de 500 000 utilisateurs actifs par mois ? Contactez-nous

Ce que coûte la même application ailleurs

Déplacez les deux curseurs. La facture est pour votre application dans les 48 langues.

1,000
2,500
SolutionVotre facture mensuelleVous payez parTraductionLangues
i18n-keylessnous€4/ moisUtilisateurs actifs mensuels
Gagner gagner.
IA, illimité, inclusTous les 48, dès le premier jour
Crowdin€88/ mois1Mots hébergés : vos mots × 48
Crowdin AI, dans une quote-partVous ajoutez chacun
Intlayer€27/ mois2Sièges et projets
Génération d'IA, dans une quote-partVous ajoutez chacun
Lingo.dev€91/ mois3Des frais de base, puis des jetons d'IA
La facture d'IA va directement vers vousVous ajoutez chacun
Locize€77/ mois4Mots × 48, et téléchargements CDN
Vous apportez votre propre clé d'IA10 dans le plus grand plan publié
Lokalise€132/ mois5Sièges, puis clés
Les traducteurs facturés à partVous ajoutez chacun
Phrase€483/ mois6Sièges, puis mots gérés
À partir de 0,06 $ par mot, facturé séparémentVous ajoutez chacun
Smartling€552/ mois7Chaque mot, chaque langue
Traduction par IA à partir de 0,06 $ le motVous ajoutez chacun
Tolgee€49/ mois8Clés et sièges
Crédits de traduction automatiqueVous remplissez chacun
Weglot€1,678/ mois9Mots × langues, sur une page web
Machine, à l'intérieur d'un quota20 sur le plus grand plan publié

Prix publics de la liste, lus en août 2026. Les fournisseurs les modifient, alors vérifiez s'il vous plaît. Chaque facture est notre lecture de l'échelle publiée, et nous choisissons toujours le forfait payant le moins cher qui maintient votre application. Lorsqu'un fournisseur facture la première traduction une fois, nous l'étalons sur douze mois.

1 Crowdin publie 44 $ par mois pour 60 000 mots hébergés dans le plan Pro, facturé annuellement. Un mot hébergé est un mot dans une langue cible. Nous répétons ce prix de bloc au-delà de 60 000.

2 Intlayer est open source. Les 29 $ par mois couvrent le CMS et le quota de génération d'IA. Au-delà du quota, vous pouvez utiliser votre propre clé d'IA, donc nous ajoutons la facture du modèle à 10 $ pour chaque million de tokens, répartis sur douze mois.

3 Lingo.dev publie 99 $ par mois plus 2 $ pour chaque million de jetons d'infrastructure, et il vous transfère la facture du modèle. Nous comptons 1,4 jetons par mot et 10 $ pour chaque million de jetons de coût du modèle. Les frais de base représentent la majorité de ce montant.

4 Locize publie 7 $, 19 $ et 49 $ par mois pour 15 000, 30 000 et 60 000 mots, avec 1, 3 et 5 millions de téléchargements CDN. Au-delà, elle publie 0,50 $ pour chaque 1 000 mots supplémentaires et 5 $ pour chaque million de téléchargements supplémentaires. Nous comptons trente téléchargements par utilisateur chaque mois. Aucun plan publié ne couvre 48 langues.

5 Lokalise publie $144, $375 et $999 par mois, sans limite de clés. Nous supposons que les trois forfaits contiennent 5 000, 20 000 et 100 000 clés, et douze mots par clé. La traduction humaine est facturée séparément.

6 La phrase publie 525 $ par mois pour 1 million de mots gérés dans le plan logiciel, et 1 245 $ pour 3 millions. Nous comptons un mot géré pour chaque mot dans chaque langue, et nous répétons le bloc de 1 245 $ ci-dessus pour 3 millions.

7 Smartling ne publie pas de prix de plateforme. Nous ne comptons que la traduction par IA, au tarif publié de 0,06 $ par mot, réparti sur douze mois. Votre facture réelle est plus élevée.

8 Tolgee facture les clés, pas les mots, donc nous comptons douze mots pour chaque clé. Elle publie 49 $ pour 2 000 clés, 179 $ pour 5 000 et 499 $ pour 20 000, facturés annuellement. Au-delà, nous répétons le bloc de 499 $. Les crédits de traduction automatique sont comptabilisés séparément.

9 Weglot traduit une page web, et non une application. Son forfait le plus cher publié est à 699 $ par mois pour 20 langues, donc nous adaptons ce prix à 48 langues. Vos mots s’intègrent dans chacun de ces forfaits.

Chaque autre ligne grandit avec votre produit. Le nôtre est un prix fixe.

Avant que tu demandes

Questions fréquentes

Dois-je gérer les fichiers de traduction ?

Non. Il n'y a pas de fichiers JSON, pas d'étape d'extraction de clés, ni de plugin de compilation. Vous écrivez vos phrases dans votre langue source, le SDK les envoie à l'API lors de la première requête, l'API les traduit avec l'IA, et chaque requête ultérieure est servie depuis le cache. Votre code est la seule source de vérité.

Que se passe-t-il lorsque je modifie le texte source ?

Le texte source est la clé. Si vous le modifiez, vous obtiendrez une nouvelle clé avec une nouvelle traduction par IA. L'ancienne clé n'est tout simplement plus demandée, et le tableau de bord la nettoie après 30 jours de non-utilisation. Corriger une faute de frappe fonctionne de la même manière : corrigez-la dans le code, déployez, et le nouveau texte sera traduit dès la première requête.

Combien ça coûte?

Hébergé : un tarif forfaitaire par projet par mois, basé sur les utilisateurs actifs mensuels — 4 $ jusqu'à 1 000, 9 $ jusqu'à 5 000, 29 $ jusqu'à 50 000, 99 $ jusqu'à 500 000 — facturé mensuellement, annulable en tout temps. Auto-hébergé : gratuit à installer, un projet gratuit à vie, 30 $ en une fois pour des projets illimités, sans abonnement ni limite d'utilisation. Aucun tarif par siège, par mot ou par chaîne dans aucune des options.

Puis-je exporter mes traductions ?

Oui. Le tableau de bord a un bouton « Exporter JSON » qui télécharge toutes les traductions de votre projet en un seul fichier JSON. L'exportation inclut toutes les lignes, pas seulement celles utilisées au cours des 30 derniers jours, donc c'est une sauvegarde complète. Il n'y a pas de verrouillage : vos données sont toujours à un clic.

Essayez par vous-même

Regardez la démonstration

Regardez cette courte vidéo pour voir i18n-keyless en action

Obtenez la clé API pour une application

Toute votre implémentation i18n en 5 minutes. iykyk.

Vous définissez votre mot de passe après le paiement, à partir du lien que nous vous envoyons.