Skip to main content
Glama

i1n

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

npm license MCP

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 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 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 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 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 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.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.

  • 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

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

Descargar 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, enviar como claves, traducir a todos los idiomas

i1n_search

Buscar claves de traducción existentes por nombre o valor

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 soportados

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 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 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 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 init añ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.

  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");

💳 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

-
security - not tested
A
license - permissive license
-
quality - not tested

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