Autoallotjat

Internacionalització (i18n) sense dolor, expandida als teus propis horitzons sense gastar milers de dòlars.

Totalment gratuït. Projectes il·limitats, tots els 48 idiomes, sense caducitat, no cal cap clau de llicència.

Gratis per sempre
€0per sempre

Projectes il·limitats. Tots els 48 idiomes. Sense caducitat.

  • Totes les 48 llengües, traduccions il·limitades
  • El tauler de control, el servidor MCP, cada SDK
  • Res de comprar, res d'introduir excepte la vostra clau d'IA
Instal·la-ho gratuïtament
Doneu'm un consell
T'agrada?

L'i18n ja no és complicat, pots experimentar-ho. No em fa res rebre una propina per això.

  • Quan ho sents
  • Si t'ho proposes
  • Des 1 fins a 1 milió de dòlars, no més

Pagament segur amb Stripe. Una clau de llicència arriba a la teva safata d'entrada — silencia la sol·licitud de donació al tauler de control.

Allò que obtens

  • Projectes il·limitats, tots els 48 idiomes, sense caducitat
  • Traduccions il·limitades, sense límit d'ús
  • El tauler de control, el servidor MCP per als teus agents, cada SDK
  • Un contenidor, un fitxer SQLite per fer còpia de seguretat
  • Una llicència comprovada sense connexió: el teu servidor mai no es connecta a casa
  • Cada actualització, per a tota la vida: docker compose pull

Allò que portes

  • Una màquina amb Docker: un VPS de 4 € és suficient
  • Una clau d'API d'IA (Mistral, OpenAI, Anthropic, Google o qualsevol proveïdor compatible amb OpenAI). Les traduccions s'executen al teu compte, per uns pocs cèntims per aplicació
  • Cinc minuts

El suport és per correu electrònic, amb el millor esforç possible. Necessites algú disponible? Els plans allotjats són per a tu.

Com funciona

Instal·la, crea l'administrador, enganxa la teva clau d'IA. Cada projecte és gratuït, per sempre.

Amb ONCE — un servidor nou, un domini, cinc minuts

curl -fsSL https://get.once.com | sh
once   # add an app: ghcr.io/ambroselli-io/i18n-keyless:latest, pick a host name
# then open it: create the admin, paste your AI key on Settings
# fully free, unlimited projects — donate if you want
# ONCE does the domain, the TLS, the updates and the backups

Amb Docker Compose — qualsevol màquina que executi Docker

mkdir i18n-keyless && cd i18n-keyless
curl -fsSL https://i18n-keyless.com/self-hosted/docker-compose.yml -o docker-compose.yml
docker compose up -d
# → http://localhost:1800: create the admin, paste your AI key on Settings
# fully free, unlimited projects — donate if you want

Després, apunteu el vostre SDK al vostre servidor:

I18nKeyless.init({
  API_KEY: "your-project-key",
  API_URL: "https://i18n.example.com",
  // …
});

La guia completa: https://docs.i18n-keyless.com/docs/guides/self-hosting

Per què fer una donació?

Perquè tu gestiones el VPS i la clau de l'API d'IA tu mateix. No hi ha cap motiu perquè et cobri per una subscripció. Jo mateix odio les subscripcions. Així que, en comptes d'això: tu decideixes quin valor té el programari per a tu, i jo continuo desenvolupant-lo.

La imatge s'instal·la gratuïtament i executa projectes il·limitats, amb tots els idiomes i sense caducitat.

Preguntes abans de comprar? Escriviu'ns

Configura l'i18n, mantén la teva base de codi neta i envia-ho ràpidament

Hi ha múltiples PITA amb les solucions d'i18n actuals. Els dolors són tan grans que endarrereixes l'i18n tant com puguis.

Consumeix el temps que hauries d'estar a la platja

Configura el sistema de claus: almenys 1 hora de temps de desenvolupador sènior

Endavant i endarrere per cada nova clau: 1 minut per clau, x500 claus, x2 idiomes = 17 hores

Amb i18n-keyless, no et preocupes gens pel sistema d'internacionalització. Pots anar a la platja i demanar un mojito.

Avui la majoria de sistemes utilitzen claus per traduir el text

É dolorós de generar. Això és dolorós de mantenir.

Quan veus un text a l'aplicació i vols actualitzar-lo, has de trobar la clau corresponent.

Amb i18n-keyless, no et preocupes gens pel sistema d'i18n. Fes servir el teu cervell per alguna cosa més interessant.

Deixa les traduccions a la IA

Amb el sistema de claus, heu de gestionar les traduccions a l'aplicació.

Altrament, els seus usuaris veuran un someheader.welcome.title a la seva aplicació.

Amb i18n-keyless, en el pitjor escenari offline veus paraules reals sense traduir. A un ritme normal, no et preocupa gens el sistema d'i18n. Només escriu bons titulars, centra't en el màrqueting i obté vendes.

Les bases de codi són belles... fins que les claus d'i18n s'infecten

Amb el sistema de claus, quan llegeixes el codi i el contingut, has de llegir les claus, no el llenguatge natural.

De vegades hauríeu de fer una correcció perquè una frase no és gramaticalment correcta. Però no ho sabeu perquè llegiu claus.

Amb i18n-keyless, no us preocupa gens del sistema d'internacionalització. La base de codi es manté bonica.

Afegeix i18n des del primer dia sense cap impacte en el teu ritme de desenvolupament
Dissenyat per a agents de codificació

Servidor MCP per cobrir totes les teves necessitats d'internacionalització

Sisena altra raó per la qual el sistema està tan optimitzat per a la programació agentiva.

Cap nom per inventar

Una clau és una decisió de denominació sense resposta correcta. Dos agents escriuen login.submit i auth.button.send per al mateix botó. Sense claus no hi ha cap decisió a prendre.

Un sol fitxer per editar, no vint

Un canvi amb clau afecta el component i tots els fitxers JSON de localització, i els agents obliden els fitxers. Aquí, un canvi de còpia és una edició d'un sol fitxer.

Zero conflictes de fusió en flotes d'agents

Cinc agents en cinc branques editen tots en.json: un conflicte garantit. No hi ha cap fitxer compartit, així que els worktrees i els agents en segon pla mai xoquen.

Barat en tokens

Per reutilitzar una clau, un agent ha de carregar els fitxers de localització en el context a cada edició. Les càrregues sense clau no fan res: el text ja és allà al component.

Diferències llegibles

La sol·licitud de pull mostra frases reals. Un humà o un agent de revisió pot jutjar la còpia sense haver de buscar què representa una clau.

Una regla al teu CLAUDE.md

Cada regla d'i18n que escrius és una regla que l'agent pot trencar. Aquesta necessita només una línia — i la substitució és el text real, així que un error no mostrarà a.b.c a la pantalla.

L'única regla d'i18n que el teu agent necessita

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

El teu agent pot operar-lo, no només escriure'l

A través del servidor MCP, l'agent llista les traduccions que falten, en llegeix una, substitueix una de dolenta o importa la còpia que ja tens — amb el seu propi inici de sessió OAuth, sense necessitat de copiar-hi cap clau.

Llegeix la guia de l'MCP
Perfecte per a MVPs

Llança a escala global des del primer dia

Deixa de retardar la internacionalització per la seva complexitat. Implementa-ho en 5 minuts, no en dies. Mantén la velocitat del desenvolupament com si no s'hagués implementat la internacionalització.

  • Implementació en 5 minuts. No estic fent broma.

    Un simple objecte de configuració i ja està fet.

  • Mantén la velocitat de desenvolupament

    Codi com si l'i18n no s'hagués implementat en absolut.

  • Enviar a mercats globals

    No cal necessari de refactorització en escalar a nous idiomes.

  • SSR i SEO preparats

    Funciona amb Next.js, Remix, TanStack Start i Astro. Renderitza al servidor qualsevol idioma per als motors de cerca — mateixa configuració de 5 minuts.

Tradicional i18n

Sistema de claus (1 hora)
Crea fitxers de traducció (2 hores)
Refactoritzar components (4 hores)
Proveu totes les llengües (2 hores)
Soluciona els problemes de disseny (3 hores)
12+ hores de treball

i18n-sense-clau

Afegeix el paquet (1 min)
Configura amb clau d'API (2 min)
Envoltar components de text (2 min)
5 minuts de treball
Com funciona

No cal gens per configurar-ho

Només el més simple objecte de configuració i ja pots començar a escala global.
I fins i tot, el teu agent ho configurarà per a tu.

1. Configuració bàsica

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

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

2. Ús de components (React aquí; el mateix en Vue, Angular, Flutter, Swift i 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. Ús servidor (Node.js aquí; la mateixa crida en Laravel, Rails, Python i 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. Per al text fora de components

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

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

5. Trieu el vostre SDK: una línia d'instal·lació, la mateixa API a tot arreu

  • 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

Configuració ràpida per a cadascun dels dotze SDK

Com funcionen les traduccions

i18n-keyless és una biblioteca, combinada amb un servei d'API, que us permet traduir el vostre text sense necessitat d'utilitzar claus.

Si no es troba la traducció, es realitzarà una sol·licitud asíncrona a l'API d'I18nKeyless per obtenir la traducció mitjançant una crida a una API d'IA.

Aquesta operació es fa habitualment en mode de desenvolupament, mentre codifiques. Si en trobes una de faltant, en producció només el primer usuari que no tingui la traducció veurà un error, i després estarà disponible immediatament per a tots els usuaris arreu del món.

App Store & Google Play

La teva llista d’articles en tots els idiomes, en cada llançament

Cada actualització significa noves notes de llançament, una descripció i paraules clau — per a cada idioma, en ambdues botigues. Això és el que t'impedeix afegir idiomes. No l'aplicació.

  • Notes de llançament per a cada idioma, en una trucada

    Escriu l'actualització una vegada. awaitForTranslation la retorna en cada idioma en què venes i la configuració de la teva botiga la proporciona a EAS o fastlane.

  • 48 idiomes, assignats als espais de l'App Store

    pt-BR i pt-PT són dues llistes; en-GB, en-AU i en-CA en són tres. toAppStoreLocale posa cada traducció al lloc correcte.

  • Corregeix una mala traducció sense alliberament

    A l'aplicació, un sobreescrit en el tauler de control està actiu alhora — sense compilació de correcció urgent, sense revisió d'emmagatzematge. A la llista, torna a executar l'impuls.

  • No es preu per paraula

    Un traductor cobra aproximadament 0,10 € per paraula. 2.000 cadenes multiplicades per 10 idiomes és un pressupost que un desenvolupador solitari no es pot permetre. Aquí no es compten les paraules.

La recepta completa per a una aplicació 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 } };
};

La mateixa trucada escriu fitxers de metadades de fastlane per a Google Play. Les majúscules són consultives: posa el límit en el context i comprova la longitud abans de fer push.

Prova-ho tu mateix

Sandbox Interactiu

Veugeu com funciona l'i18n-keyless en temps real

Obriu un projecte StackBlitz en directe i editable per veure com es resolen les traduccions mentre escriviu.

Per què vaig construir això

Sempre havia postergat la internacionalització fins que el meu client la va voler tant que no vaig tenir altra opció. Odio llegir el codi amb claus d'internacionalització a dins, i odio mantenir fitxers JSON tant com veure el cost dels proveïdors d'internacionalització. Així que vaig haver de crear-ne una de pròpia, i ME FASCINA. Ara totes les meves aplicacions estan internacionalitzades per defecte.

AA

Arnaud Ambroselli

Fundador de i18n-keyless

Vols afegir el teu?

Un testimoni contra una subscripció gratuïta. Demana la teva!

Envia el meu testimoni
Abans que preguntis

Preguntes freqüents

Necessito gestionar els fitxers de traducció?

No. No hi ha fitxers JSON, cap pas d'extracció de claus ni cap connector en temps de compilació. Escriviu les vostres frases en la vostra llengua d'origen, l'SDK les envia a l'API en la primera sol·licitud, l'API les tradueix amb IA, i cada sol·licitud posterior es serveix des de la memòria cau. El vostre codi és l'única font de veritat.

Què passa quan canvio el text d'origen?

El text d'origen és la clau. Si el canvies, obtindràs una nova clau amb una nova traducció d'IA. L'antiga clau deixa simplement de rebre sol·licituds, i el tauler de control l'elimina després de 30 dies sense ús. Corregir una errada tipogràfica és igual: corregeix-la al codi, desplega-la, i el nou text es tradueix en la primera sol·licitud.

Quant costa?

Autoallotjat: completament gratuït, projectes il·limitats, sense subscripció i sense límit d'ús — instal·la la imatge de Docker, utilitza la teva pròpia clau d'IA. T'agrada? ¡Dona'm un cop de mà! Allotjat: un preu únic per projecte al mes, segons els usuaris actius mensualment — 4 € fins a 1.000, 9 € fins a 5.000, 29 € fins a 50.000, 99 € fins a 500.000 — facturat mensualment, cancel·la quan vulguis. No hi ha preu per seient, per paraula ni per cadena en cap dels dos casos.

Puc exportar les meves traduccions?

Sí. El tauler de control té un botó "Exporta JSON" que descarrega totes les traduccions del teu projecte com un únic fitxer JSON. L'exportació inclou totes les files, no només les utilitzades en els últims 30 dies, així que és una còpia de seguretat completa. No hi ha cap restricció: les teves dades sempre estan a un clic de distància.

Un mantenidor: què passa si el projecte s'atura?

Els SDK estan sota llicència MIT i romanen a npm, PyPI, RubyGems i altres registres. El servidor és públic sota la Llicència Elastic 2.0 i el protocol entre ells està documentat, de manera que qualsevol pot executar-lo, fer-ne un fork o escriure un servidor contra ell. Les teves traduccions es guarden en una exportació JSON en qualsevol moment. Si el servei allotjat s'atura: les aplicacions instal·lades continuen servint les seves traduccions emmagatzemades, un client nou retrocedeix a la llengua original, i apuntar l'SDK a la teva pròpia instància amb API_URL ho restaura tot. El que perdries és la traducció mitjançant IA de noves cadenes a i18n-keyless.com — no les teves dades ni la teva aplicació.

Llegeix la resposta completa, amb codi
Prova-ho tu mateix

Mira la demostració

Mira aquest vídeo curt per veure l'i18n-keyless en acció