Autoalojado

Internacionalización (i18n) sin dolor, expandida a tus propios horizontes sin gastar miles de dólares.

Totalmente gratis. Proyectos ilimitados, los 48 idiomas, sin caducidad, no se necesita clave de licencia.

Gratis para siempre
€0para siempre

Proyectos ilimitados. Todos los 48 idiomas. Sin vencimiento.

  • Todos los 48 idiomas, traducciones ilimitadas
  • El tablero de control, el servidor MCP, cada SDK
  • Nada que comprar, nada que ingresar excepto tu clave de IA
Instálalo gratis
Dame una propina
¿Te gusta?

i18n ya no es complicado, puedes experimentarlo. No me importa recibir una propina por eso.

  • Cuando lo sientes
  • Si te da la gana
  • De 1 a 1 millón de dólares, no más

Pago seguro con Stripe. Una clave de licencia llega a tu bandeja de entrada — silencia el aviso de donación en el panel de control.

Lo que obtienes

  • Proyectos ilimitados, los 48 idiomas, sin caducidad
  • Traducciones ilimitadas, sin límite de uso
  • El tablero de control, el servidor MCP para tus agentes, cada SDK
  • Un contenedor, un archivo SQLite para respaldo
  • Una licencia verificada sin conexión: tu servidor nunca se conecta a casa
  • Cada actualización, para toda la vida: docker compose pull

Lo que traes

  • Una máquina con Docker: un VPS de $4 es suficiente
  • Una clave de API de IA (Mistral, OpenAI, Anthropic, Google o cualquier proveedor compatible con OpenAI). Las traducciones se ejecutan en tu propia cuenta, por unos cuantos centavos por aplicación
  • Cinco minutos

El soporte se brinda por correo electrónico, con el mejor esfuerzo posible. ¿Necesitas a alguien disponible? Los planes alojados son para ti.

Cómo funciona

Instale, cree el administrador, pegue su clave de IA. Cada proyecto es gratuito, para siempre.

Con ONCE — un servidor nuevo, un dominio, cinco minutos

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

Con Docker Compose — cualquier máquina que ejecute 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

Luego, apunta tu SDK a tu servidor:

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

La guía completa: https://docs.i18n-keyless.com/docs/guides/self-hosting

¿Por qué una donación?

Porque tú mismo gestionas el VPS y la clave de API de IA. No hay motivo para cobrarte por una suscripción. A mí mismo no me gustan las suscripciones. Así que en su lugar: tú decides qué valor tiene el software para ti, y yo sigo desarrollándolo.

La imagen se instala gratis y ejecuta proyectos ilimitados, con todos los idiomas y sin caducidad.

¿Preguntas antes de comprar? Escríbenos

Configura el i18n, mantén tu base de código limpia y envía rápido

Hay múltiples PITA con las soluciones actuales de i18n. Los dolores son tan grandes que retrasas la i18n tanto como sea posible.

Consume el tiempo que deberías pasar en la playa

Configura el sistema de claves: al menos 1 hora de tiempo de desarrollador senior

De un lado a otro para cada nueva clave: 1 minuto por clave, x500 claves, x2 idiomas = 17 horas

Con i18n-keyless, no te preocupas por el sistema de internacionalización en absoluto. Puedes ir a la playa y pedir un mojito.

Hoy la mayoría de los sistemas usan claves para traducir el texto

Es doloroso generarlo. Es doloroso mantenerlo.

Cuando ves un texto en la aplicación y quieres actualizarlo, necesitas encontrar la clave correspondiente.

Con i18n-keyless, no te preocupes por el sistema de i18n en absoluto. Usa tu cerebro para algo más interesante.

Deja las traducciones a la IA

Con el sistema de claves, necesitas gestionar las traducciones en la aplicación.

De lo contrario, sus usuarios verán someheader.welcome.title en su aplicación.

Con i18n-keyless, en el peor escenario offline verás palabras reales sin traducir. A un ritmo normal, no te importa en absoluto el sistema i18n. Solo escribe buenos titulares, enfócate en el marketing y obtén ventas.

Las bases de código son hermosas... hasta que las claves i18n se infectan

Con el sistema de claves, cuando lees el código y el contenido, debes leer las claves, no el lenguaje natural.

A veces deberías hacer una corrección porque una oración no es gramaticalmente correcta. Pero no lo sabes porque lees claves.

Con i18n-keyless, no te preocupas por el sistema de i18n en absoluto. La base de código sigue siendo hermosa.

Agrega i18n desde el primer día sin impacto en tu ritmo de desarrollo
Diseñado para agentes de codificación

Servidor MCP para cubrir todas tus necesidades de internacionalización

Seis razones más por las que el sistema está tan optimizado para la codificación agentiva.

Ningún nombre que inventar

Una clave es una decisión de denominación sin respuesta correcta. Dos agentes escriben login.submit y auth.button.send para el mismo botón. Sin claves no hay decisión que tomar.

Un archivo para editar, no veinte

Un cambio basado en clave afecta al componente y a cada archivo JSON de localización, y los agentes olvidan los archivos. Aquí, un cambio de copia es una edición de un solo archivo.

Cero conflictos de fusión en flotas de agentes

Cinco agentes en cinco ramas editan todos en.json: un conflicto garantizado. No hay ningún archivo compartido, por lo que los worktrees y los agentes en segundo plano nunca chocan.

Barato en tokens

Para reutilizar una clave, un agente debe cargar los archivos de localización en el contexto en cada edición. Las cargas sin clave no hacen nada: el texto está justo ahí en el componente.

Diferencias legibles

La solicitud de pull request muestra oraciones reales. Una persona o un agente de revisión puede juzgar la copia sin necesidad de indagar qué representa una clave.

Una regla en tu CLAUDE.md

Cada regla de i18n que escribas es una regla que el agente puede romper. Esta solo necesita una línea — y la alternativa es el texto real, por lo que un error no mostrará a.b.c en pantalla.

La única regla de i18n que necesita tu agente

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

Tu agente puede operarlo, no solo escribirlo

A través del servidor MCP, el agente lista las traducciones faltantes, lee una, reemplaza una mala o importa la copia que ya tienes — con su propio inicio de sesión OAuth, sin necesidad de pegar ninguna clave.

Lee la guía de MCP
Perfecto para MVPs

Lanza globalmente desde el primer día

Deja de retrasar la internacionalización (i18n) por su complejidad. Implementa en 5 minutos, no en días. Mantén tu velocidad de desarrollo como si no se hubiera implementado el i18n.

  • Implementación en 5 minutos. No estoy bromeando.

    Un simple objeto de configuración y listo.

  • Mantén la velocidad de desarrollo

    Códifica como si el i18n no se hubiera implementado en absoluto.

  • Enviar a mercados globales

    No se necesita refactorizar al escalar a nuevos idiomas.

  • SSR y SEO listos

    Funciona con Next.js, Remix, TanStack Start y Astro. Renderiza en el servidor cualquier idioma para motores de búsqueda — misma configuración de 5 minutos.

Tradicional i18n

Configurar sistema de claves (1 hora)
Cree archivos de traducción (2 horas)
Refactorizar componentes (4 horas)
Prueba todos los idiomas (2 horas)
Solucionar problemas de diseño (3 horas)
12+ horas de trabajo

i18n-sin-clave

Agregar paquete (1 min)
Configurar con clave de API (2 min)
Envolver componentes de texto (2 min)
5 minutos de trabajo
Cómo funciona

No es complicado configurarlo

Solo el objeto de configuración más simple y estás listo para ir global.
Y aún más, tu agente lo configurará para ti.

1. Configuración 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. Uso del componente (Aquí React; lo mismo en Vue, Angular, Flutter, Swift y 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. Uso del lado del servidor (aquí Node.js; la misma llamada en Laravel, Rails, Python y 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. Para texto fuera de los componentes

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

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

5. Elige tu SDK: una línea de instalación, la misma API en todas partes

  • 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ón rápida para cada uno de los doce SDK

Cómo funcionan las traducciones

i18n-keyless es una biblioteca, combinada con un servicio de API, que te permite traducir tu texto sin necesidad de usar claves.

Si no se encuentra la traducción, se realizará una búsqueda asíncrona en la API de I18nKeyless para obtener la traducción mediante una llamada a la API de IA.

Esta operación generalmente se realiza en modo de desarrollo, mientras codificas. Si te faltó una, en producción solo el primer usuario que no tenga la traducción verá un error, y luego estará disponible al instante para usuarios de todo el mundo.

App Store y Google Play

La lista de tu tienda en todos los idiomas, en cada lanzamiento

Cada actualización significa nuevas notas de lanzamiento, una descripción y palabras clave — para cada idioma en ambas tiendas. Eso es lo que te impide agregar idiomas. No la aplicación.

  • Notas de lanzamiento para cada idioma, en una llamada

    Escribe la actualización una vez. awaitForTranslation la devuelve en cada idioma en el que vendes, y la configuración de tu tienda la alimenta a EAS o fastlane.

  • 48 idiomas, mapeados a los espacios de la App Store

    pt-BR y pt-PT son dos listas; en-GB, en-AU y en-CA son tres. toAppStoreLocale coloca cada traducción en el lugar correcto.

  • Corrige una mala traducción sin un lanzamiento

    En la app, un override en el tablero de control está activo uno a la vez — sin build de hotfix, sin revisión de la tienda. En la lista, vuelve a ejecutar el push.

  • No está tarifado por palabra

    Un traductor cobra alrededor de $2.00 por palabra. 2,000 cadenas multiplicadas por 10 idiomas es un presupuesto que un desarrollador solitario no puede permitirse. Aquí no se cuentan las palabras.

La receta completa para una aplicación 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 misma llamada escribe archivos de metadatos de fastlane para Google Play. Las mayúsculas son solo indicativas: pon el límite en el contexto y verifica la longitud antes de hacer push.

Inténtalo tú mismo

Caja de Arena Interactiva

Ve cómo funciona i18n-keyless en tiempo real

Abre un proyecto StackBlitz en vivo y editable para ver cómo se resuelven las traducciones mientras escribes.

Por qué construí esto

Siempre pospuse la internacionalización hasta que mi cliente la quiso tanto que no tuve otra opción. Odio leer código con claves de internacionalización dentro, y odio mantener archivos JSON tanto como ver lo caros que son los proveedores de traducciones de internacionalización. Así que tuve que crear el mío, y LO AMO. Ahora todas mis aplicaciones están internacionalizadas por defecto.

AA

Arnaud Ambroselli

Fundador de i18n-keyless

¿Quieres agregar el tuyo?

Un testimonio en contra de una suscripción gratuita. ¡Solicita la tuya!

Envía mi testimonio
Antes de que preguntes

Preguntas frecuentes

¿Necesito administrar los archivos de traducción?

No. No hay archivos JSON, ni paso de extracción de claves, ni plugin de compilación. Escribes tus frases en tu idioma de origen, el SDK las envía a la API en la primera solicitud, la API las traduce con IA, y cada solicitud posterior se sirve desde la caché. Tu código es la única fuente de verdad.

¿Qué pasa cuando cambio el texto de origen?

El texto de origen es la clave. Si lo cambias, obtendrás una nueva clave con una traducción de IA fresca. La clave antigua simplemente deja de ser solicitada y el panel de control la limpia después de 30 días sin uso. Corregir una errata funciona igual: corrígela en el código, despliégala y el nuevo texto se traducirá en la primera solicitud.

¿Cuánto cuesta?

Autoalojado: completamente gratuito, proyectos ilimitados, sin suscripción y sin límite de uso — instala la imagen de Docker, usa tu propia clave de IA. ¿Te gusta? ¡Dame una propina! Hospedado: un precio fijo por proyecto al mes, según usuarios activos mensuales — $4 hasta 1,000, $9 hasta 5,000, $29 hasta 50,000, $99 hasta 500,000 — facturado mensualmente, cancelable en cualquier momento. No hay precios por asiento, por palabra ni por cadena en ninguno de los casos.

¿Puedo exportar mis traducciones?

Sí. El tablero tiene un botón "Exportar JSON" que descarga todas las traducciones de tu proyecto como un solo archivo JSON. La exportación incluye todas las filas, no solo las usadas en los últimos 30 días, por lo que es una copia de seguridad completa. No hay bloqueo: tus datos siempre están a un clic de distancia.

Un mantenedor: ¿qué pasa si el proyecto se detiene?

Los SDK están bajo licencia MIT y permanecen disponibles en npm, PyPI, RubyGems y otros registros. El servidor es público bajo la Elastic License 2.0 y el protocolo entre ellos está documentado, por lo que cualquiera puede ejecutarlo, hacerle un fork o escribir un servidor contra él. Tus traducciones permanecen en un solo archivo JSON en cualquier momento. Si el servicio alojado se detiene: las aplicaciones instaladas siguen sirviendo sus traducciones en caché, un cliente nuevo vuelve al idioma de origen, y al apuntar el SDK a tu propia instancia con API_URL se restaura todo. Lo que perderías es la traducción por IA de nuevas cadenas en i18n-keyless.com — no tus datos ni tu aplicación.

Lee la respuesta completa, con el código
Inténtalo tú mismo

Mira la demostración

Mira este video corto para ver i18n-keyless en acción