i1n
i1n
Tu aplicación en todos los idiomas. Un solo comando.

Localización como código. Envía tus claves de traducción, la IA las traduce a 182 idiomas y obtén definiciones de TypeScript con seguridad de tipos. Creado para desarrolladores, agentes de IA y equipos de producto.
Gratis para siempre · Sin tarjeta de crédito · i1n.ai
¿Por qué i1n?
La i1n tradicional implica docenas de archivos JSON, cero seguridad de tipos, horas de copiar y pegar, y despliegues que fallan a las 2 de la mañana. Las herramientas existentes cobran más de $120/mes y requieren flujos de trabajo basados en navegador.
i1n es diferente:
Un comando —
i1n push --translate es,fr,jay listo.Seguridad de tipos —
i1n.d.tsautogenerado con autocompletado completo en el IDE.Nativo de IA — Servidor MCP para Cursor, Claude Code, Windsurf. Tu agente se encarga de la i1n por ti.
Cero migración — El modo Bridge envuelve tu i1next/next-intl/vue-i18n existente.
6 veces más barato — Plan gratuito incluido. Pro a $19/mes frente a los $120/mes de Lokalise.
📦 Instalación
# To use the CLI (global)
npm install -g i1n
# To use the SDK + types (in your app)
npm install i1n
# Local CLI usage (optional)
npm install -D i1nCompatible con npm, pnpm, yarn y bun.
🏁 Inicio rápido
# 1. Initialize (auth + auto-detect setup)
i1n init
# 2. Push your translation keys
i1n push
# 3. Pull translations + auto-generated TypeScript types
i1n pull✨ Características y comandos clave
🛠️ i1n init
Configuración interactiva que prepara tu espacio de trabajo.
Autenticación mediante clave API.
¿Eres nuevo? Si aún no tienes una clave, la CLI te proporciona una guía clara sobre cómo empezar.
Detección automática de frameworks (Next.js, Vite, Expo, Flutter, Rails, etc.).
Guarda la configuración en
i1n.config.json(ignorado automáticamente mediante.gitignore).Orquestación de IA: Opcionalmente configura reglas para tus herramientas de codificación con IA.
⬆️ i1n push
Sincroniza tus traducciones locales con i1n.
Detecta nuevas claves y cambios en la fuente.
Traducción inteligente: Ofrece traducir las claves faltantes con una estimación de costo antes de proceder.
Capa de caché eficiente: las traducciones repetidas cuestan una fracción de las nuevas.
⬇️ i1n pull
Descarga traducciones y genera IDs con seguridad de tipos.
Actualiza los archivos locales de idioma en el formato configurado.
Genera
i1n.d.tspara un autocompletado completo en el IDE.
📊 i1n limits
Seguimiento de uso en tiempo real.
Consulta tu plan actual y el uso de créditos.
Monitorea los espacios de idioma activos y la capacidad disponible.
🧠 i1n setup-ai
Convierte tu IDE en un experto en localización.
Genera reglas específicas del proyecto para Cursor (
.mdc), Claude Code (CLAUDE.md), Windsurf y más.Asegura que los agentes de IA sigan tus convenciones de nomenclatura, estructura de archivos y voz de marca.
🔌 i1n mcp
Servidor MCP para asistentes de codificación con IA.
Inicia un servidor Model Context Protocol que permite a Cursor, Claude Code, Windsurf y otros asistentes de IA ejecutar comandos de i1n directamente desde tu IDE.
# Add to Claude Code
claude mcp add i1n -- npx i1n mcp
# Or add to .mcp.json / cursor config{
"mcpServers": {
"i1n": {
"command": "npx",
"args": ["i1n", "mcp"]
}
}
}7 herramientas disponibles:
Herramienta | Descripción |
| Obtener estado del proyecto, plan, límites e idiomas activos |
| Enviar archivos de traducción locales con detección automática de diferencias |
| Descargar traducciones y generar definiciones de TypeScript con seguridad de tipos |
| Traducir claves a idiomas especificados usando IA |
| Añadir nuevos idiomas con traducción automática opcional |
| Extraer cadenas del código, enviar como claves, traducir a todos los idiomas |
| Buscar claves de traducción existentes por nombre o valor |
El flujo de trabajo definitivo — dile a tu agente de IA "internacionaliza este componente":
El agente lee tu archivo e identifica las cadenas codificadas de forma rígida.
Llama a
i1n_extract_and_translatecon las cadenas extraídas.i1n envía las claves, traduce a todos los idiomas activos y genera los tipos.
El agente reescribe tu componente con llamadas
t('key').
Una tarea de 60 minutos en 30 segundos.
📁 Formatos soportados
Formato | Frameworks | Ejemplo de archivo |
JSON anidado | i18next, next-intl, vue-i18n |
|
JSON plano | React Native, Genérico |
|
ARB | Flutter / Dart |
|
YAML | Ruby on Rails |
|
Android XML | Android nativo |
|
Apple Strings | iOS / macOS |
|
TypeScript | JSON con seguridad de tipos |
|
🧩 Uso del SDK
El paquete i1n incluye un SDK en tiempo de ejecución para proyectos JS/TS web y móviles. Puedes usarlo de dos maneras:
Modo autónomo — Reemplaza tu librería de i1n
Usa el motor nativo de i1n directamente. No se necesitan dependencias externas.
import { init, t, setLocale } from "i1n";
// Load your translation resources
init({
locale: "en_us",
resources: {
en_us: {
auth: { login: "Login", title: "Welcome back, {user}" },
items_one: "One item",
items_other: "{count} items",
},
es_es: {
auth: { login: "Entrar", title: "Bienvenido de nuevo, {user}" },
items_one: "Un elemento",
items_other: "{count} elementos",
},
},
});
// Autocomplete and type-safety work out of the box after 'i1n pull'
t("auth.login"); // "Login"
// Support for default values (useful during development)
t("new.key", { defaultValue: "Coming soon..." }); // "Coming soon..."
// Variables & Plurals
t("auth.title", { user: "Fran" }); // "Welcome back, Fran"
t("items", { count: 5 }); // "5 items"
// Switch language at runtime
setLocale("es_es");
t("auth.login"); // "Entrar"La resolución de claves funciona automáticamente tanto con estructuras anidadas como planas: usa el formato que prefiera tu proyecto.
Modo Bridge — Mantén tu librería, añade seguridad de tipos
¿Ya usas i18next, vue-i18n o react-intl? Conéctalo a i1n con una línea y obtén autocompletado completo.
import i18next from "i18next";
import { registerI1n, t } from "i1n";
// Set up i18next as usual
await i18next.init({
lng: "en",
resources: {
/* ... */
},
});
// Connect to i1n — one line
registerI1n((key, params) => i18next.t(key, params));
// Now t() uses i18next under the hood, but with strict type checking
t("common.greeting", { name: "World" }); // Powered by i18next, typed by i1nFunciona con cualquier librería:
vue-i18n:
registerI1n((key, params) => i18n.global.t(key, params))react-intl:
registerI1n((key, params) => intl.formatMessage({ id: key }, params))Personalizado:
registerI1n((key) => myLookup(key))
Pluralización
Define variantes plurales con los sufijos _zero, _one, _other:
// In your translation files:
// "items_zero": "No items"
// "items_one": "One item"
// "items_other": "{count} items"
t("items", { count: 0 }); // "No items"
t("items", { count: 1 }); // "One item"
t("items", { count: 5 }); // "5 items"Interpolación
Tres sintaxis soportadas universalmente: {var}, {{var}}, %{var}
JavaScript (sin TypeScript)
El SDK funciona en JS plano; simplemente no obtendrás autocompletado:
import { init, t } from "i1n";
init({ locale: "en_us", resources: { en_us: { greeting: "Hello {name}" } } });
t("greeting", { name: "World" }); // "Hello World"⚛️ Integración con React / Preact
Para una experiencia "conectar y usar", utiliza este patrón de proveedor minimalista.
import { createContext, useContext, useState, useEffect } from "react";
import { init, t, getLocale, setLocale as sdkSetLocale } from "i1n";
// 1. Initialize with wordings
// (In a real app, you'd probably import these from your locales folder)
init({
locale: "en_us",
resources: {
/* ... */
},
});
const STORAGE_KEY = "i1n-locale";
const I1nContext = createContext({
locale: "en_us",
setLocale: (l: string) => {},
});
// 2. Persistent Provider
export function I1nProvider({ children, defaultLocale = "en_us" }) {
const [locale, setLocaleState] = useState(() => {
return localStorage.getItem(STORAGE_KEY) || defaultLocale;
});
// Keep SDK in sync
useEffect(() => {
sdkSetLocale(locale);
}, [locale]);
const setLocale = (newLocale: string) => {
localStorage.setItem(STORAGE_KEY, newLocale);
setLocaleState(newLocale);
};
return (
<I1nContext.Provider value={{ locale, setLocale }}>
{children}
</I1nContext.Provider>
);
}
// 3. Simple Hook
export const useI1n = () => ({ t, ...useContext(I1nContext) });Uso:
const { t, setLocale } = useI1n();
return (
<div>
<h1>{t("auth.title", { user: "Fran" })}</h1>
<button onClick={() => setLocale("es_es")}>Español</button>
</div>
);Plataformas no JS
Los proyectos de Flutter, Android e iOS no usan el SDK. Utilizan los archivos de traducción (.arb, .xml, .strings) generados por i1n pull con sus sistemas de localización nativos.
🛡️ Experiencia del desarrollador
🔒 Privacidad y seguridad
Auto-ignorar:
i1n initañade automáticamente archivos de configuración sensibles a tu.gitignore.Gestión de secretos: Las claves API solo se almacenan localmente y nunca se envían al control de versiones.
Transmisión cifrada: Todas las operaciones de sincronización se realizan a través de canales HTTPS seguros.
🔒 Seguridad de tipos sin configuración (TypeScript)
La CLI genera un archivo de declaración ligero (i1n.d.ts) que aumenta automáticamente el paquete i1n con las claves específicas de tu proyecto.
Pull: Ejecuta
i1n pull. La CLI generalocales/i1n.d.tsy actualiza automáticamente tutsconfig.jsonpara que tu IDE los encuentre inmediatamente.Uso: Importa
tdesdei1ny obtén autocompletado completo + comprobación en tiempo de compilación. No se requiere mapeo manual de rutas.
import { t } from "i1n";
// Full autocomplete & compile-time checking
t("auth.login.title");
// ERROR: Argument of type '"auth.login.titlse"' is not assignable...
t("auth.login.titlse");💳 Precios
Plan | Precio | Claves | Idiomas | Traducciones IA/mes |
Starter | $0 | 600 | 2 | 2,000 |
Pro | $19/mes | 5,000 | 5 | 10,000 |
Business | $49/mes | 15,000 | 12 | 20,000 |
Enterprise | Personalizado | Personalizado | 182 | Personalizado |
La CLI, el SDK y el servidor MCP son gratuitos en todos los planes. No se requiere tarjeta de crédito para el plan Starter.
Pro de por vida desde $99 — solo para los primeros 200 usuarios.
📄 Licencia
MIT — © 2026 i1n.ai
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Pakvothe/i1n-cli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server