Собственный хостинг

Безболезненная интернационализация (i18n), расширенная до ваших собственных горизонтов без необходимости тратить тысячи долларов.

Полностью бесплатно. Неограниченное количество проектов, все 48 языков, нет срока действия, не требуется лицензионный ключ.

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

Неограниченные проекты. Все 48 языка. Нет срока действия.

  • Все 48 языка, неограниченные переводы
  • Панель управления, сервер MCP, каждый SDK
  • Нечего покупать, нечего вводить, кроме вашего ключа AI
Установите бесплатно
Дай мне чаевые
Тебе это нравится?

i18n теперь не вызывает затруднений, вы можете это опробовать. Мне не помешает получить за это чаевые.

  • Когда ты это чувствуешь
  • Если ты этого хочешь
  • От 1 до 1 миллиона долларов, не больше

Безопасная оплата через Stripe. Лицензионный ключ попадает в ваш почтовый ящик — он отключает запрос на пожертвование в панели управления.

То, что ты получаешь

  • Неограниченное количество проектов, все 48 языков, без срока действия
  • Безлимитные переводы, без ограничения по использованию
  • Панель управления, MCP-сервер для ваших агентов, каждый SDK
  • Один контейнер, один файл SQLite для резервного копирования
  • Лицензия, проверенная офлайн: ваш сервер никогда не обращается к дому
  • Каждое обновление, на всю жизнь: docker compose pull

То, что ты приносишь

  • Машина с Docker: VPS за 4 евро – этого достаточно
  • Ключ API для ИИ (Mistral, OpenAI, Anthropic, Google или любой совместимый с OpenAI провайдер). Переводы выполняются на вашем личном аккаунте, за несколько центов за приложение
  • Пять минут

Поддержка осуществляется по электронной почте, с максимальными усилиями. Нужно, чтобы кто-то был на связи? Хостинговые тарифы для вас.

Как это работает

Установите, создайте администратора, вставьте свой AI-ключ. Каждый проект бесплатный, навсегда.

С ONCE — новый сервер, домен, пять минут

curl -fsSL https://get.once.com | sh
once   # add an app: ghcr.io/ambroselli-io/i18n-keyless:latest, pick a host name
# then open it: create the admin, paste your AI key on Settings
# fully free, unlimited projects — donate if you want
# ONCE does the domain, the TLS, the updates and the backups

С помощью Docker Compose — любая машина, на которой запущен Docker

mkdir i18n-keyless && cd i18n-keyless
curl -fsSL https://i18n-keyless.com/self-hosted/docker-compose.yml -o docker-compose.yml
docker compose up -d
# → http://localhost:1800: create the admin, paste your AI key on Settings
# fully free, unlimited projects — donate if you want

Затем укажите ваш SDK на ваш сервер:

I18nKeyless.init({
  API_KEY: "your-project-key",
  API_URL: "https://i18n.example.com",
  // …
});

Полное руководство: https://docs.i18n-keyless.com/docs/guides/self-hosting

Почему пожертвование?

Потому что ты сам управляешь VPS и ключом API для ИИ. Нет причин взимать с тебя плату за подписку. Я и сам ненавижу подписки. Поэтому вместо этого: ты сам решаешь, сколько стоит для тебя это программное обеспечение, а я продолжаю его разрабатывать.

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

Вопросы перед покупкой? Напишите нам

Настройка 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 с первого дня без какого-либо влияния на темп вашего развития
Создано для кодирующих агентов

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

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

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

Отправь мое свидетельство
Прежде чем ты спросишь

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

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

Нет. Нет файлов 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 в действии