Skip to main content
Glama

i1n

Ваше приложение на любом языке. Одной командой.

npm license MCP Listed on MCP Servers Security: DeepSec

demo

Локализация как код. Отправляйте ключи перевода, ИИ переводит их на 182 языка, получайте типобезопасные определения TypeScript. Создано для разработчиков, ИИ-агентов и продуктовых команд.

Бесплатно навсегда · Без кредитной карты · i1n.ai


Почему i1n?

Традиционная интернационализация (i18n) — это десятки JSON-файлов, отсутствие типобезопасности, часы копирования и вставки, а также деплои, которые ломаются в 2 часа ночи. Существующие инструменты стоят от $120/мес и требуют работы через браузер.

i1n — это другое:

  • Одна командаi1n push --translate es,fr,ja и готово

  • Типобезопасность — автоматически генерируемый i1n.d.ts с полной поддержкой автодополнения в IDE

  • ИИ-ориентированность — MCP-сервер для Cursor, Claude Code, Windsurf. Ваш агент берет интернационализацию на себя

  • Нулевая миграция — режим Bridge Mode интегрируется с вашими существующими i18next/next-intl/vue-i18n

  • В 6 раз дешевле — бесплатный тариф включен. Pro за $19/мес против $120/мес у Lokalise


Related MCP server: i18n Agent

📦 Установка

# 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

Поддерживает npm, pnpm, yarn и bun.


🏁 Быстрый старт

# 1. Initialize (auth + auto-detect setup)
i1n init

# 2. Push your translation keys
i1n push

# 3. Pull translations + auto-generated TypeScript types
i1n pull

✨ Основные функции и команды

🛠️ i1n init

Интерактивная настройка, которая подготавливает ваше рабочее пространство.

  • Аутентификация через API-ключ.

  • Впервые здесь? Если у вас еще нет ключа, CLI предоставит четкие инструкции, как начать.

  • Автоматическое определение фреймворков (Next.js, Vite, Expo, Flutter, Rails и др.).

  • Сохранение конфигурации в i1n.config.json (автоматически игнорируется через .gitignore).

  • ИИ-оркестрация: опциональная настройка правил для ваших инструментов разработки с ИИ.

⬆️ i1n push

Синхронизирует ваши локальные переводы с i1n.

  • Обнаруживает новые ключи и изменения в исходниках.

  • Умный перевод: предлагает перевести отсутствующие ключи с оценкой стоимости перед началом.

  • Эффективный уровень кэширования — повторные переводы стоят значительно дешевле новых.

⬇️ i1n pull

Загружает переводы и генерирует типобезопасные ID.

  • Обновляет локальные файлы локализации в настроенном вами формате.

  • Генерирует i1n.d.ts для полноценного автодополнения в IDE.

📊 i1n limits

Отслеживание использования в реальном времени.

  • Просмотр текущего тарифа и использования кредитов.

  • Мониторинг активных языковых слотов и доступной емкости.

🧠 i1n setup-ai

Превращает вашу IDE в эксперта по локализации.

  • Генерирует специфичные для проекта правила для Cursor (.mdc), Claude Code (CLAUDE.md), Windsurf и других.

  • Гарантирует, что ИИ-агенты следуют вашим соглашениям об именовании, структуре файлов и голосу бренда.

🔌 i1n mcp

MCP-сервер для ИИ-ассистентов программирования.

Запускает сервер Model Context Protocol, который позволяет Cursor, Claude Code, Windsurf и другим ИИ-ассистентам выполнять команды i1n прямо из вашей 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 инструментов:

Инструмент

Описание

i1n_status

Получить статус проекта, тариф, лимиты и активные языки

i1n_push

Отправить локальные файлы переводов с автоматическим обнаружением diff

i1n_pull

Получить переводы и сгенерировать типобезопасные определения TypeScript

i1n_translate

Перевести ключи на указанные языки с помощью ИИ

i1n_add_language

Добавить новые языки с опциональным автопереводом

i1n_extract_and_translate

Извлечь строки из кода, отправить как ключи, перевести на все языки

i1n_search

Поиск существующих ключей перевода по имени или значению

i1n_setup_bridge

Обнаружить вашу библиотеку i18n (i18next, vue-i18n, next-intl и др.) и настроить режим моста i1n

Убийственный рабочий процесс — скажите своему ИИ-агенту «интернационализируй этот компонент»:

  1. Агент читает ваш файл и определяет жестко закодированные строки

  2. Он вызывает i1n_extract_and_translate с извлеченными строками

  3. i1n отправляет ключи, переводит на все активные языки, генерирует типы

  4. Агент переписывает ваш компонент с вызовами t('key')

Задача на 60 минут за 30 секунд.


📁 Поддерживаемые форматы

Формат

Фреймворки

Пример файла

Вложенный JSON

i18next, next-intl, vue-i18n

en/common.json

Плоский JSON

React Native, Generic

locales/en.json

ARB

Flutter / Dart

app_en.arb

YAML

Ruby on Rails

en.yml

Android XML

Native Android

strings.xml

Apple Strings

iOS / macOS

Localizable.strings

TypeScript

Типобезопасный JSON

locales/en.ts


🧩 Использование SDK

Пакет i1n включает SDK времени выполнения для JS/TS проектов в вебе и на мобильных устройствах. Вы можете использовать его двумя способами:

Автономный режим — Замените свою библиотеку i18n

Используйте нативный движок i1n напрямую. Внешние зависимости не требуются.

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"

Разрешение ключей работает как с вложенными, так и с плоскими структурами автоматически — используйте любой формат, который предпочитает ваш проект.

Режим моста — Сохраните свою библиотеку, добавьте типобезопасность

Уже используете i18next, vue-i18n или react-intl? Подключите его к i1n одной строкой и получите полное автодополнение.

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

Работает с любой библиотекой:

  • vue-i18n: registerI1n((key, params) => i18n.global.t(key, params))

  • react-intl: registerI1n((key, params) => intl.formatMessage({ id: key }, params))

  • Custom: registerI1n((key) => myLookup(key))

Плюрализация

Определяйте варианты множественного числа с суффиксами _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"

Интерполяция

Универсально поддерживаются три синтаксиса: {var}, {{var}}, %{var}

JavaScript (без TypeScript)

SDK работает на обычном JS — вы просто не получаете автодополнение:

import { init, t } from "i1n";
init({ locale: "en_us", resources: { en_us: { greeting: "Hello {name}" } } });
t("greeting", { name: "World" }); // "Hello World"

⚛️ Интеграция с React / Preact

Для использования по принципу «подключил и работай» используйте этот минималистичный паттерн провайдера.

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

Использование:

const { t, setLocale } = useI1n();

return (
  <div>
    <h1>{t("auth.title", { user: "Fran" })}</h1>
    <button onClick={() => setLocale("es_es")}>Español</button>
  </div>
);

Платформы без JS

Проекты на Flutter, Android и iOS не используют SDK. Они используют файлы переводов (.arb, .xml, .strings), сгенерированные i1n pull с помощью своих нативных систем локализации.


🛡️ Опыт разработчика

🔒 Конфиденциальность и безопасность

  • Авто-игнорирование: i1n init автоматически добавляет чувствительные файлы конфигурации в ваш .gitignore.

  • Управление секретами: API-ключи хранятся только локально и никогда не попадают в систему контроля версий.

  • Зашифрованная передача: все операции синхронизации происходят через защищенные HTTPS-каналы.

🔒 Типобезопасность без настройки (TypeScript)

CLI генерирует легковесный файл деклараций (i1n.d.ts), который автоматически дополняет пакет i1n специфичными для вашего проекта ключами.

  1. Pull: Запустите i1n pull. CLI сгенерирует locales/i1n.d.ts и автоматически обновит ваш tsconfig.json, чтобы ваша IDE сразу их нашла.

  2. Использование: Импортируйте t из i1n и получите полное автодополнение + проверку во время компиляции. Ручное сопоставление путей не требуется.

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

Строгая проверка литералов появилась в 1.3.0: передача жестко закодированной строки, которой нет в I1nKeys, теперь вызывает ошибку TypeScript (больше никаких молчаливых предупреждений [i1n] Missing translation во время выполнения). Переменные с типом string продолжают работать без приведения типов.


💳 Тарифы

Тариф

Цена

Ключи

Языки

ИИ-переводов/мес

Starter

$0

600

2

2 000

Pro

$19/мес

5 000

5

10 000

Business

$49/мес

15 000

12

20 000

Enterprise

Индивидуально

Индивидуально

182

Индивидуально

CLI, SDK и MCP-сервер бесплатны на любом тарифе. Для Starter кредитная карта не требуется.

Пожизненный доступ Pro от $99 — только для первых 200 пользователей.


📄 Лицензия

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