Самый дешёвый и самый эффективный 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. Кодовая база остается красивой.
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Глобальный запуск с первого дня
Перестаньте откладывать i18n из-за сложности. Реализуйте за 5 минут, а не за дни. Поддерживайте скорость разработки, как если бы i18n не была реализована.
- 5-минутная реализация. Не шучу.
Один простой конфигурационный объект и готово.
- Поддерживать скорость разработки
Пиши код так, как будто i18n вообще не реализован.
- Доставка на мировые рынки
Не требуется рефакторинг при масштабировании на новые языки.
- Готово для SSR и SEO
Работает с Next.js, Remix, TanStack Start и Astro. Серверный рендеринг на любом языке для поисковых систем — та же настройка за 5 минут.
Традиционный i18n
i18n-keyless
Это очень просто настроить
Самый простой объект конфигурации и вы готовы к глобальному.
И даже больше, ваш агент настроит это для вас.
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
Как работают переводы
i18n-keyless — это библиотека, объединённая с сервисом API, которая позволяет переводить текст без необходимости использования ключей.
Если перевод не найден, будет выполнен асинхронный запрос к API I18nKeyless для получения перевода с помощью вызова API ИИ.
Эта операция обычно выполняется в режиме разработки, пока вы пишете код. Если вы пропустили одну, в продакшене только первый пользователь, которому не хватает перевода, увидит сбой, затем она будет доступна мгновенно для пользователей по всему миру.
Ваш список магазина на всех языках, при каждом выпуске
Каждое обновление означает новые примечания к выпуску, описание и ключевые слова — для каждого языка на обоих магазинах. Именно это мешает вам добавлять языки. Не приложение.
- Заметки о выпуске для каждого языка, одним вызовом
Напишите обновление один раз. 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-файлы, как и видеть, насколько дороги поставщики переводов для интернационализации. Поэтому мне пришлось создать своё собственное решение, и ОБОЖАЮ ЕГО. Теперь все мои приложения интернационализированы по умолчанию.
Arnaud Ambroselli
Основатель i18n-keyless
Хотите добавить своё?
Свидетельство против бесплатной подписки. Запросите ваше!
Отправь мое свидетельствоПростые, предсказуемые цены
Одна фиксированная цена для вашей шкалы.
Каждая функция во всех планах.
Без пошлин за слово, без расчета токенов.
До 1 000 активных пользователей в месяц
Для инди-приложений и новых продуктов
До 5 000 активных пользователей в месяц
Для приложений, которые находят свою аудиторию
До 50 000 активных пользователей в месяц
Для приложений с реальной популярностью
До 500 000 активных пользователей в месяц
Для продуктов в масштабе
Или владейте им: бесплатно для установки, 30 € один раз для неограниченных проектов.
То же API, панель управления и MCP-сервер в одном Docker-контейнере с SQLite на вашем сервере с вашим собственным ключом Mistral. Один проект бесплатен навсегда; пожизненная лицензия за €30 открывает неограниченное количество проектов. Без подписки, без ограничений по использованию, обновления пожизненно.
Каждый план включает в себя:
Все 48 языков. Весь мир, с первого дня
Безлимитные переводы, включая ИИ. Новые строки переводятся автоматически в продакшене
Прямой перевод пользовательского контента (UGC)
Обновите, понизьте или отмените в любое время
Более 500 000 активных пользователей в месяц? Свяжитесь с нами
Сколько стоит то же самое приложение где-то ещё
Переместите оба ползунка. Счет предназначен для вашего приложения на всех 48 языках.
| Решение | Ваш ежемесячный счёт | Вы платите за | Перевод | Языки |
|---|---|---|---|---|
| i18n-keylessмы | €4/ месяц | Ежемесячно активные пользователи Победа победа. | ИИ, безлимитный, включено | Все 48, с первого дня |
| Crowdin | €88/ месяц1 | Размещённые слова: ваши слова × 48 | Crowdin AI, внутри квоты | Вы добавляете каждый |
| Intlayer | €27/ месяц2 | Места и проекты | Генерация ИИ, в пределах квоты | Вы добавляете каждый |
| Lingo.dev | €91/ месяц3 | Базовая плата, затем токены AI | Счет за ИИ отправляется вам напрямую | Вы добавляете каждый |
| Locize | €77/ месяц4 | Слова × 48 и загрузки CDN | Вы приносите свой собственный ключ AI | 10 в крупнейшем опубликованном плане |
| 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 дней без использования. Исправление опечатки работает так же: исправьте её в коде, разверните и новый текст будет переведён при первом запросе.
Сколько это стоит?
Хостинг: фиксированная цена за проект в месяц в зависимости от активных пользователей в месяц — 4 € до 1 000, 9 € до 5 000, 29 € до 50 000, 99 € до 500 000 — оплата ежемесячная, отменить можно в любой момент. Самостоятельный хостинг: бесплатная установка, один проект бесплатно навсегда, 30 € единоразово за неограниченное количество проектов, без подписки и без ограничений по использованию. В обоих вариантах нет цены за место, за слово или за строку.
Могу ли я экспортировать свои переводы?
Да. На панели управления есть кнопка «Экспорт JSON», которая загружает все переводы в вашем проекте в виде одного файла JSON. Экспорт включает все строки, а не только те, которые использовались за последние 30 дней, поэтому это полная резервная копия. Нет блокировки: ваши данные всегда на расстоянии одного клика.
Посмотрите демо
Посмотрите это короткое видео, чтобы увидеть i18n-keyless в действии
Получите ключ API для одного приложения
Ваша полная реализация i18n за 5 минут. iykyk.