Оптимальный DX для i18n

Самый дешёвый и самый эффективный i18n для агентного кодирования

Бесключевой i18n ваш кодирующий агент получает это правильно с первого раза: один файл для редактирования, нет локального JSON для загрузки, нет конфликта слияния
Бесплатный самохостинг, или от 4 €/месяц.

Настройка за 5 минут

Ваша полная реализация i18n за 5 минут. Не шучу.

Система без ключей

Ваш мозг не должен быть вовлечен в такие бессмысленные задачи.

Глобальный с первого дня

Отправляйте на международные рынки без дополнительных усилий.

Настройка i18n, поддерживайте чистоту кода и отправляйте быстро

Существует несколько PITA с текущими решениями i18n. Боль так велика, что вы откладываете i18n как можно дольше.

Он потребляет время, которое вы должны провести на пляже

Настройте систему ключей: не менее 1 часа времени старшего разработчика

Туда и обратно для каждого нового ключа: 1 минута на ключ, x500 ключей, x2 языка = 17 часов

С i18n-keyless вы не заботитесь о системе i18n. Вы можете пойти на пляж и заказать мохито.

Сегодня большинство систем используют ключи для перевода текста

Это больно генерировать. Это больно поддерживать.

Когда вы видите текст в приложении и хотите его обновить, вам нужно найти соответствующий ключ.

С i18n-keyless вам не нужно беспокоиться о системе i18n. Используйте свой мозг для чего-то более интересного.

Оставьте переводы на ИИ

С системой ключей вам нужно управлять переводами в приложении.

В противном случае ваши пользователи увидят someheader.welcome.title в своем приложении.

С i18n-keyless в худшем офлайн-сценарии вы увидите не переведенные реальные слова. В обычном темпе вам абсолютно не важна система i18n. Просто пишите хорошие заголовки, сосредоточьтесь на маркетинге и получайте продажи.

Кодовые базы прекрасны... до заражения ключами i18n

С системой ключей, когда вы читаете код и содержимое, вам нужно читать ключи, а не естественный язык.

Иногда вам нужно сделать исправление, потому что предложение не грамматически правильное. Но вы этого не знаете, потому что читаете ключи.

С i18n-keyless вы вообще не заботитесь о системе i18n. Кодовая база остается красивой.

Добавьте i18n с первого дня без какого-либо влияния на темп вашего развития

Что, если сервис отключится?

То, что у тебя есть, никогда не уходит.

SDK — это MIT

Каждый SDK остаётся на npm, PyPI, RubyGems, pub.dev и других реестрах. Сделайте форк, оставьте их, они ваши.

Сервер с открытым исходным кодом

Тот же Docker-образ, который запускает i18n-keyless.com. Запустите его на своей машине с SQLite или Postgres, вашим AI-ключом и вашими данными дома.

Бесплатно навсегда

Полностью бесплатно, неограниченное количество проектов. Тебе нравится? Дай мне чаевые! Экспортируй все переводы в JSON в любое время.

Создано для кодирующих агентов

MCP-сервер для покрытия всех ваших потребностей в интернационализации

Ещё шесть причин, почему система так оптимизирована для агентного кодирования.

Нет имени для изобретения

Ключ — это решение о наименовании, у которого нет правильного ответа. Два агента пишут login.submit и auth.button.send для одной и той же кнопки. Без ключей нет решения, которое нужно принять.

Один файл для редактирования, а не двадцать

Изменение на основе ключа затрагивает компонент и каждый файл локализации JSON, а агенты забывают файлы. Здесь изменение копии — это редактирование одного файла.

Нулевое количество конфликтов слияния в флотах агентов

Пять агентов на пяти ветках редактируют en.json: гарантированный конфликт. Нет общего файла, поэтому worktrees и фоновые агенты никогда не сталкиваются.

Дешёвый в токенах

Чтобы повторно использовать ключ, агенту необходимо загружать файлы локализации в контекст при каждом редактировании. Загрузка без ключа ничего не делает: текст уже находится в компоненте.

Читаемые различия

Запрос на слияние отображает реальные предложения. Человек или агент рецензирования может оценить копию, не углубляясь в то, что означает ключ.

Одно правило в вашем CLAUDE.md

Каждое правило i18n, которое вы пишете, — это правило, которое может нарушить агент. Для этого правила достаточно одной строки — а резервный вариант — это реальный текст, поэтому ошибка не покажет a.b.c на экране.

Единственное правило i18n, которое нужно вашему агенту

# CLAUDE.md
Write the UI copy in English and wrap it in <T>…</T> from i18n-keyless-react.
That is the whole i18n setup.

Ваш агент может управлять им, а не только писать

Через сервер MCP агент перечисляет отсутствующие переводы, считывает один, заменяет плохой или импортирует копию, которую вы уже имеете — со своим собственным входом OAuth, без необходимости вставлять ключ.

Прочтите руководство по MCP
Идеально для MVP

Глобальный запуск с первого дня

Перестаньте откладывать i18n из-за сложности. Реализуйте за 5 минут, а не за дни. Поддерживайте скорость разработки, как если бы i18n не была реализована.

  • 5-минутная реализация. Не шучу.

    Один простой конфигурационный объект и готово.

  • Поддерживать скорость разработки

    Пиши код так, как будто i18n вообще не реализован.

  • Доставка на мировые рынки

    Не требуется рефакторинг при масштабировании на новые языки.

  • Готово для SSR и SEO

    Работает с Next.js, Remix, TanStack Start и Astro. Серверный рендеринг на любом языке для поисковых систем — та же настройка за 5 минут.

Традиционный i18n

Настройка системы ключей (1 час)
Создать файлы перевода (2 часа)
Рефакторинг компонентов (4 часа)
Тестировать все языки (2 часа)
Исправить проблемы с компоновкой (3 часа)
12+ часов работы

i18n-keyless

Добавить пакет (1 мин)
Настройка с API-ключом (2 мин)
Обёртывать текстовые компоненты (2 мин)
5 минут работы
Как это работает

Это очень просто настроить

Самый простой объект конфигурации и вы готовы к глобальному.
И даже больше, ваш агент настроит это для вас.

1. Базовая настройка

import * as I18nKeyless from "i18n-keyless-react";

I18nKeyless.init({
  API_KEY: "YOUR_API_KEY",
  storage: window.localStorage,
  languages: {
    primary: "en",
    supported: ["en", "fr"],
  },
});

2. Использование компонента (Здесь React; то же самое в Vue, Angular, Flutter, Swift и Kotlin)

import { I18nKeylessText } from "i18n-keyless-react";
// import { T } from "i18n-keyless-react"; // also works

// Just write in your primary language
<I18nKeylessText>
  Welcome to our website
</I18nKeylessText>

3. Использование на стороне сервера (здесь Node.js; тот же вызов в Laravel, Rails, Python и Go)

import { awaitForTranslationOrFallbackToOriginal, type Lang } from 'i18n-keyless-node';

const title = await awaitForTranslationOrFallbackToOriginal('Come see my app!', user.lang as Lang);
const body = await awaitForTranslationOrFallbackToOriginal('So many new stuff!', user.lang as Lang);

await sendExpoPushNotification({ user, title, body });

4. Для текста вне компонентов

import { getTranslation } from "i18n-keyless-react";

export default function Navigation() {
  return (
    <HomeTabs.Navigator>
      <HomeTabs.Screen
        options={{ tabBarLabel: getTranslation("Welcome") }}
        name="WELCOME"
      />
    </HomeTabs.Navigator>
  );
}

5. Выберите свой SDK: одна строка установки, тот же API везде

  • React, React Native, Expo, Next.js, Remix, TanStack Start, Astronpm install i18n-keyless-react
  • Vue, Nuxtnpm install i18n-keyless-vue
  • Angularnpm install i18n-keyless-angular
  • Plain HTML, Svelte, Alpine, htmx, one script tagnpm install i18n-keyless-browser
  • Node.jsnpm install i18n-keyless-node
  • Laravel, PHPcomposer require i18n-keyless/laravel
  • Rails, Rubybundle add i18n-keyless-rails
  • Flutter, Dartflutter pub add i18n_keyless
  • Swift, iOS, macOS, VaporSwiftPM: arnaudambro/i18n-keyless-swift
  • Kotlin, Android, Ktorio.github.arnaudambro:i18n-keyless-kotlin
  • Python, Django, Flask, FastAPIpip install i18n-keyless
  • Gogo get github.com/arnaudambro/i18n-keyless/ports/go/v3

Быстрая настройка для каждого из двенадцати SDK

Как работают переводы

i18n-keyless — это библиотека, объединённая с сервисом API, которая позволяет переводить текст без необходимости использования ключей.

Если перевод не найден, будет выполнен асинхронный запрос к API I18nKeyless для получения перевода с помощью вызова API ИИ.

Эта операция обычно выполняется в режиме разработки, пока вы пишете код. Если вы пропустили одну, в продакшене только первый пользователь, которому не хватает перевода, увидит сбой, затем она будет доступна мгновенно для пользователей по всему миру.

App Store и Google Play

Ваш список магазина на всех языках, при каждом выпуске

Каждое обновление означает новые примечания к выпуску, описание и ключевые слова — для каждого языка на обоих магазинах. Именно это мешает вам добавлять языки. Не приложение.

  • Заметки о выпуске для каждого языка, одним вызовом

    Напишите обновление один раз. awaitForTranslation возвращает его на каждом языке, на котором вы продаете, а конфигурация вашего магазина передает его в EAS или fastlane.

  • 48 языков, сопоставленных со слотами App Store

    pt-BR и pt-PT — это два списка; en-GB, en-AU и en-CA — три. toAppStoreLocale размещает каждый перевод в нужном месте.

  • Исправьте плохой перевод без релиза

    В приложении один оверрайд на панели управления активен одновременно — без hotfix-сборки, без отзыва магазина. В списке перезапустите push.

  • Не тарифицируется по словам

    Переводчик берет около 0,10 € за слово. 2000 строк умножить на 10 языков — это бюджет, который не потянет один разработчик. Здесь слова не считаются.

Полный рецепт для приложения Expo

// store.config.js — EAS Metadata awaits an async config
const { init, awaitForTranslation, toAppStoreLocale } = require("i18n-keyless-node");

const LANGS = ["en", "fr", "de", "ja", "pt-BR"];
const DESCRIPTION = "Bibi translates your app while you sleep…";

module.exports = async () => {
  init({ API_KEY: process.env.I18N_KEYLESS_KEY, languages: { primary: "en", supported: LANGS } });
  const info = {};
  for (const lang of LANGS) {
    info[toAppStoreLocale(lang)] = {
      title: await awaitForTranslation("Bibi", lang, { context: "App Store app name, 30 characters max" }),
      subtitle: await awaitForTranslation("Keyless i18n", lang, { context: "App Store subtitle, 30 characters max" }),
      description: await awaitForTranslation(DESCRIPTION, lang, { context: "App Store description" }),
    };
  }
  return { configVersion: 0, apple: { info } };
};

Тот же вызов записывает файлы метаданных fastlane для Google Play. Заглавные буквы носят рекомендательный характер: установите лимит в контексте и проверьте длину перед тем, как отправить.

Попробуйте сами

Интерактивный песочница

Посмотрите, как работает i18n-keyless в реальном времени

Откройте живой и редактируемый проект StackBlitz, чтобы увидеть, как переводы разрешаются по мере ввода.

Почему я построил это

Я всегда откладывал интернационализацию, пока клиент не захотел её настолько сильно, что у меня не было выбора. Ненавижу читать код с ключами интернационализации внутри, и ненавижу так же сильно поддерживать JSON-файлы, как и видеть, насколько дороги поставщики переводов для интернационализации. Поэтому мне пришлось создать своё собственное решение, и ОБОЖАЮ ЕГО. Теперь все мои приложения интернационализированы по умолчанию.

AA

Arnaud Ambroselli

Основатель i18n-keyless

Хотите добавить своё?

Свидетельство против бесплатной подписки. Запросите ваше!

Отправь мое свидетельство
Цены

Простые, предсказуемые цены

Одна фиксированная цена для вашей шкалы.
Каждая функция во всех планах.
Без пошлин за слово, без расчета токенов.

Собственный хостинг — бесплатно навсегда

Возьмите это: полностью бесплатные, неограниченные проекты, пожертвуйте, если хотите.

То же API, панель управления и MCP-сервер в одном Docker-контейнере с SQLite на вашем сервере, с вашим собственным AI-ключом. Полностью бесплатно, неограниченное количество проектов, без подписки, без ограничений по использованию, обновления пожизненно. Если это экономит ваше время, поддержите проект пожертвованием.

Начните бесплатно

Не хотите запускать сервер? Мы запустим его за вас.

Закуска
€4/ месяц

До 1 000 активных пользователей в месяц

Для инди-приложений и новых продуктов

Инди
€9/ месяц

До 5 000 активных пользователей в месяц

Для приложений, которые находят свою аудиторию

Рост
€29/ месяц

До 50 000 активных пользователей в месяц

Для приложений с реальной популярностью

Шкала
€99/ месяц

До 500 000 активных пользователей в месяц

Для продуктов в масштабе

Каждый план включает в себя:

Все 48 языков. Весь мир, с первого дня

Безлимитные переводы, включая ИИ. Новые строки переводятся автоматически в продакшене

Прямой перевод пользовательского контента (UGC)

Обновите, понизьте или отмените в любое время

Более 500 000 активных пользователей в месяц? Свяжитесь с нами

Сколько стоит то же самое приложение где-то ещё

Переместите оба ползунка. Счет предназначен для вашего приложения на всех 48 языках.

1,000
2,500
РешениеВаш ежемесячный счётВы платите заПереводЯзыки
i18n-keylessмы€4/ месяцЕжемесячно активные пользователи
Победа победа.
ИИ, безлимитный, включеноВсе 48, с первого дня
Crowdin€88/ месяц1Размещённые слова: ваши слова × 48
Crowdin AI, внутри квотыВы добавляете каждый
Intlayer€27/ месяц2Места и проекты
Генерация ИИ, в пределах квотыВы добавляете каждый
Lingo.dev€91/ месяц3Базовая плата, затем токены AI
Счет за ИИ отправляется вам напрямуюВы добавляете каждый
Locize€77/ месяц4Слова × 48 и загрузки CDN
Вы приносите свой собственный ключ AI10 в крупнейшем опубликованном плане
Lokalise€132/ месяц5Сиденья, затем ключи
Переводчики выставляются отдельноВы добавляете каждый
Phrase€483/ месяц6Места, затем управляемые слова
От $0.06 за слово, отдельный счётВы добавляете каждый
Smartling€552/ месяц7Каждое слово, каждый язык
Перевод с помощью ИИ от $0,06 за словоВы добавляете каждый
Tolgee€49/ месяц8Ключи и сиденья
Кредиты машинного переводаВы заполняете каждый
Weglot€1,678/ месяц9Слова × языки, на веб-странице
Машина, внутри квоты20 в крупнейшем опубликованном плане

Общедоступные цены из списка, прочитанные в августе 2026 года. Поставщики их изменяют, поэтому пожалуйста, проверьте. Каждый счёт — это наше прочтение опубликованной лестницы, и мы всегда выбираем самый дешёвый платный план, который поддерживает ваше приложение. Когда поставщик выставляет первый счёт за перевод один раз, мы распределяем его на двенадцать месяцев.

1 Crowdin публикует €44 в месяц за 60 000 размещённых слов в тарифном плане Pro с ежегодной оплатой. Размещённое слово — это одно слово на одном целевом языке. Мы повторяем эту блочную цену при превышении 60 000.

2 Intlayer — это проект с открытым исходным кодом. 29 долларов в месяц покрывают CMS и квоту генерации ИИ. Если вы превышаете квоту, вы можете использовать собственный ключ AI, поэтому мы добавляем счёт за модель в 10 долларов за каждый миллион токенов, распределённый на двенадцать месяцев.

3 Lingo.dev публикует 99 долларов в месяц плюс 2 доллара за каждый миллион токенов инфраструктуры и переводит вам счет за модель. Мы считаем 1,4 токена за каждое слово и 10 долларов за каждый миллион токенов стоимости модели. Базовая плата составляет большую часть этой суммы.

4 Locize публикует €7, €19 и €49 в месяц за 15 000, 30 000 и 60 000 слов соответственно, с 1, 3 и 5 миллионами загрузок CDN. Свыше этого публикуется $0,50 за каждую дополнительную 1 000 слов и $5 за каждый дополнительный миллион загрузок. Мы учитываем тридцать загрузок для каждого пользователя в месяц. Ни один опубликованный план не поддерживает 48 языков.

5 Lokalise публикует $144, $375 и $999 в месяц, без ограничения на количество ключей. Мы предполагаем, что три плана содержат 5 000, 20 000 и 100 000 ключей, а также двенадцать слов для каждого ключа. Человеческий перевод оплачивается отдельно.

6 Фраза публикует 525 долларов в месяц за 1 миллион управляемых слов в программном плане, и 1 245 долларов за 3 миллиона. Мы считаем одно управляемое слово для каждого слова на каждом языке и повторяем указанный блок в 1 245 долларов для 3 миллионов.

7 Smartling не публикует цену платформы. Мы учитываем только перевод с помощью ИИ по опубликованной цене $0,06 за слово, распределенной на двенадцать месяцев. Ваш реальный счет выше.

8 Tolgee выставляет счета за ключи, а не за слова, поэтому мы считаем двенадцать слов за каждый ключ. Она публикует €49 за 2 000 ключей, €179 за 5 000 и €499 за 20 000, с ежегодным выставлением счетов. Выше этого мы повторяем блок €499. Кредиты машинного перевода учитываются отдельно.

9 Weglot переводит веб-страницу, а не приложение. Самый крупный опубликованный тарифный план стоит 699 евро в месяц для 20 языков, поэтому мы масштабируем эту цену до 48 языков. Ваши слова помещаются в каждый из этих планов.

Каждая вторая строка растет вместе с вашим продуктом. Наша цена фиксированная.

Прежде чем ты спросишь

Часто задаваемые вопросы

Мне нужно управлять файлами переводов?

Нет. Нет файлов JSON, нет этапа извлечения ключей и нет плагина времени сборки. Вы пишете свои предложения на исходном языке, SDK отправляет их в API при первом запросе, API переводит их с помощью ИИ, и каждый последующий запрос обслуживается из кэша. Ваш код — единственный источник истины.

Что происходит, когда я изменяю исходный текст?

Исходный текст — это ключ. Измените его, и вы получите новый ключ с новым переводом от ИИ. Старый ключ просто перестаёт запрашиваться, а панель управления удаляет его после 30 дней без использования. Исправление опечатки работает так же: исправьте её в коде, разверните и новый текст будет переведён при первом запросе.

Сколько это стоит?

Самостоятельно размещённый: полностью бесплатный, неограниченное количество проектов, без подписки и без ограничений по использованию — установите Docker-образ и используйте свой собственный AI-ключ. Вам нравится? Поддержите меня! Размещённый: фиксированная цена за проект в месяц, в зависимости от ежемесячно активных пользователей — 4 € до 1 000, 9 € до 5 000, 29 € до 50 000, 99 € до 500 000 — оплата ежемесячная, можно отменить в любой момент. В обоих случаях нет ценообразования по количеству мест, по словам или по строкам.

Могу ли я экспортировать свои переводы?

Да. На панели управления есть кнопка «Экспорт JSON», которая загружает все переводы в вашем проекте в виде одного файла JSON. Экспорт включает все строки, а не только те, которые использовались за последние 30 дней, поэтому это полная резервная копия. Нет блокировки: ваши данные всегда на расстоянии одного клика.

Один сопровождающий: что произойдет, если проект остановится?

SDK распространяются по лицензии MIT и остаются доступными на npm, PyPI, RubyGems и других реестрах. Сервер является публичным под лицензией Elastic 2.0, а протокол между ними задокументирован, поэтому любой может запустить его, сделать форк или написать сервер против него. Ваши переводы хранятся в одном JSON-экспорте в любой момент. Если размещенная услуга остановится: установленные приложения продолжат предоставлять свои кэшированные переводы, новый клиент вернется к исходному языку, а указание SDK на ваш собственный экземпляр с API_URL восстановит всё. То, что вы потеряете, — это ИИ-перевод новых строк на i18n-keyless.com — не ваши данные и не ваше приложение.

Прочитайте полный ответ с кодом
Попробуйте сами

Посмотрите демо

Посмотрите это короткое видео, чтобы увидеть i18n-keyless в действии

Получите ключ API для одного приложения

Ваша полная реализация i18n за 5 минут. iykyk.

Вы устанавливаете свой пароль после оплаты, по ссылке, которую мы вам отправляем.