Безболісна інтернаціоналізація (i18n), розширена до ваших власних горизонтів без необхідності витрачати тисячі доларів.
Повністю безкоштовно. Необмежена кількість проєктів, усі 48 мов, термін дії відсутній, ліцензійний ключ не потрібен.
Необмежена кількість проєктів. Усі 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-keyless вам зовсім не потрібно турбуватися про систему i18n. Використовуйте свій мозок для чогось цікавішого.
Залиште переклади на AI
З ключовою системою вам потрібно керувати перекладами в додатку.
В іншому випадку ваші користувачі побачать 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-безключовий
Налаштувати це простіше простого
Лише найпростіший об'єкт конфігурації, і ви готові вийти на глобальний рівень.
І ще більше, ваш агент налаштує це для вас.
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
Часті запитання
Чи потрібно мені керувати файлами перекладів?
Ні. Немає файлів 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 у дії