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

Локализация как код. Отправляйте ключи перевода, ИИ переводит их на 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
📦 Установка
# 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"]
}
}
}Доступно 7 инструментов:
Инструмент | Описание |
| Получить статус проекта, тариф, лимиты и активные языки |
| Отправить локальные файлы перевода с автоматическим обнаружением diff |
| Получить переводы и сгенерировать типобезопасные определения TypeScript |
| Перевести ключи на указанные языки с помощью ИИ |
| Добавить новые языки с опциональным автопереводом |
| Извлечь строки из кода, отправить как ключи, перевести на все языки |
| Поиск существующих ключей перевода по имени или значению |
Убийственный рабочий процесс — скажите своему ИИ-агенту «интернационализируй этот компонент»:
Агент читает ваш файл и определяет жестко закодированные строки
Он вызывает
i1n_extract_and_translateс извлеченными строкамиi1n отправляет ключи, переводит на все активные языки, генерирует типы
Агент переписывает ваш компонент с вызовами
t('key')
60-минутная задача за 30 секунд.
📁 Поддерживаемые форматы
Формат | Фреймворки | Пример файла |
Вложенный JSON | i1next, next-intl, vue-i18n |
|
Плоский JSON | React Native, Generic |
|
ARB | Flutter / Dart |
|
YAML | Ruby on Rails |
|
Android XML | Native Android |
|
Apple Strings | iOS / macOS |
|
TypeScript | Типобезопасный JSON |
|
🧩 Использование 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"Разрешение ключей работает автоматически как с вложенными, так и с плоскими структурами — используйте любой формат, который предпочитает ваш проект.
Режим Bridge — Сохраните свою библиотеку, добавьте типобезопасность
Уже используете i1next, 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 специфичными для вашего проекта ключами.
Pull: Запустите
i1n pull. CLI сгенерируетlocales/i1n.d.tsи автоматически обновит вашtsconfig.json, чтобы ваша IDE сразу их нашла.Использование: Импортируйте
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");💳 Тарифы
Тариф | Цена | Ключи | Языки | ИИ-переводов/мес |
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
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