Skip to main content
Glama

i1n

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

npm license MCP Listed on MCP Servers Security: DeepSec

demo

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 internacionalización (i18n) 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 solo comandoi1n push --translate es,fr,ja y listo.

  • Seguridad de tiposi1n.d.ts autogenerado con autocompletado completo en el IDE.

  • Nativo de IA — Servidor MCP para Cursor, Claude Code, Windsurf. Tu agente se encarga de la i18n por ti.

  • Cero migración — El modo Bridge envuelve tu i18next/next-intl/vue-i18n existente.

  • 6 veces más barato — Plan gratuito incluido. Pro a 19 $/mes frente a los 120 $/mes de Lokalise.


Related MCP server: i18n Agent

📦 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 i1n

Compatible 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 ofrece 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 el origen.

  • Traducción inteligente: Ofrece traducir las claves faltantes con una estimación de coste 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.ts para un autocompletado completo en el IDE.

📊 i1n limits

Seguimiento de uso en tiempo real.

  • Consulta tu plan actual y el uso de créditos.

  • Monitoriza 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 del Protocolo de Contexto de Modelo (MCP) 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"]
    }
  }
}

8 herramientas disponibles:

Herramienta

Descripción

i1n_status

Obtener estado del proyecto, plan, límites e idiomas activos

i1n_push

Enviar archivos de traducción locales con detección automática de diferencias

i1n_pull

Obtener traducciones y generar definiciones de TypeScript con seguridad de tipos

i1n_translate

Traducir claves a idiomas especificados usando IA

i1n_add_language

Añadir nuevos idiomas con traducción automática opcional

i1n_extract_and_translate

Extraer cadenas del código, enviarlas como claves y traducirlas a todos los idiomas

i1n_search

Buscar claves de traducción existentes por nombre o valor

i1n_setup_bridge

Detectar tu librería de i18n (i18next, vue-i18n, next-intl, etc.) y conectar el modo bridge de i1n de extremo a extremo

El flujo de trabajo definitivo: dile a tu agente de IA "internacionaliza este componente":

  1. El agente lee tu archivo e identifica las cadenas codificadas de forma rígida.

  2. Llama a i1n_extract_and_translate con las cadenas extraídas.

  3. i1n envía las claves, traduce a todos los idiomas activos y genera los tipos.

  4. El agente reescribe tu componente con llamadas t('key').

Una tarea de 60 minutos en 30 segundos.


📁 Formatos compatibles

Formato

Frameworks

Ejemplo de archivo

JSON anidado

i18next, next-intl, vue-i18n

en/common.json

JSON plano

React Native, Genérico

locales/en.json

ARB

Flutter / Dart

app_en.arb

YAML

Ruby on Rails

en.yml

Android XML

Android nativo

strings.xml

Apple Strings

iOS / macOS

Localizable.strings

TypeScript

JSON con seguridad de tipos

locales/en.ts


🧩 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 i18n

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 i1n

Funciona 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 utilizan 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 init añade automáticamente los 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.

  1. Pull: Ejecuta i1n pull. La CLI genera locales/i1n.d.ts y actualiza automáticamente tu tsconfig.json para que tu IDE los encuentre inmediatamente.

  2. Uso: Importa t desde i1n y 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");

// Dynamic strings still pass through — useful for `t(item.name)`,
// runtime-built keys, etc.
declare const dynamicKey: string;
t(dynamicKey);

La comprobación estricta de literales llegó en la versión 1.3.0: pasar una cadena codificada que no está en I1nKeys ahora es un error de TypeScript (se acabaron las advertencias silenciosas de [i1n] Missing translation en tiempo de ejecución). Las variables tipadas como string siguen funcionando sin necesidad de conversiones.


💳 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

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    AI-powered translation management built for AI agents. Automate localization with regional sensitivity and zero TMS overhead. Works with Claude Code, Cursor, VS Code via MCP protocol. Supports JSON, YAML, Markdown, PO and more.
    13
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for managing i18n translation files — gives your AI agent full control over your app's translations without dumping entire locale files into context.
    18
    251
    11
    MIT

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