Bezbólowa internacjonalizacja (i18n), rozszerzona na twoje własne horyzonty bez wydawania tysięcy dolarów.
Całkowicie darmowe. Nieograniczone projekty, wszystkie 48 języki, brak wygaśnięcia, nie jest wymagany klucz licencji.
Nieograniczone projekty. Wszystkie 48 języki. Bez wygaśnięcia.
- Wszystkie 48 języków, nieograniczone tłumaczenia
- Pulpit nawigacyjny, serwer MCP, każdy SDK
- Nic do kupienia, nic do wprowadzenia poza twoim kluczem AI
i18n jest teraz bezbolesne, możesz to wypróbować. Nie mam nic przeciwko otrzymaniu napiwku za to.
- Kiedy to czujesz
- Jeśli masz na to ochotę
- Od 1 do 1 miliona dolarów, nie więcej
Bezpieczna płatność przez Stripe. Klucz licencji trafia do twojego skrzynki odbiorczej — wycisza monit o darowiznę w panelu sterowania.
To, co otrzymujesz
- Nieograniczone projekty, wszystkie 48 języki, brak wygaśnięcia
- Nieograniczone tłumaczenia, brak limitu użycia
- Pulpit nawigacyjny, serwer MCP dla Twoich agentów, każdy SDK
- Jeden kontener, jeden plik SQLite do wykonania kopii zapasowej
- Licencja sprawdzona offline: twój serwer nigdy nie dzwoni do domu
- Każda aktualizacja, na całe życie: docker compose pull
To, co przynosisz
- Maszyna z Dockerem: VPS za 4 € to w zupełności wystarczy
- Klucz API AI (Mistral, OpenAI, Anthropic, Google lub dowolny dostawca kompatybilny z OpenAI). Tłumaczenia są wykonywane na Twoim koncie, za kilka centów za aplikację
- Pięć minut
Obsługa odbywa się poprzez e-mail, z najlepszym wysiłkiem. Potrzebujesz kogoś do odbierania połączeń? Hostowane plany są dla Ciebie.
Jak to działa
Zainstaluj, utwórz administratora, wklej swój klucz AI. Każdy projekt jest darmowy, na zawsze.
Z ONCE — świeży serwer, domena, pięć minut
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
Z Docker Compose — każda maszyna, na której działa 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
Następnie skieruj swój SDK na swój serwer:
I18nKeyless.init({
API_KEY: "your-project-key",
API_URL: "https://i18n.example.com",
// …
});Pełny przewodnik: https://docs.i18n-keyless.com/docs/guides/self-hosting
Dlaczego darowizna?
Ponieważ sam zarządzasz VPS-em i kluczem API AI. Nie ma powodu, bym pobierał od Ciebie opłatę za subskrypcję. Ja też nienawidzę subskrypcji. Więc zamiast tego: Ty decydujesz, jaką wartość ma dla Ciebie to oprogramowanie, a ja dalej je rozwijam.
Obraz jest instalowany bezpłatnie i uruchamia nieograniczone projekty, we wszystkich językach i bez wygaśnięcia.
Pytania przed zakupem? Napisz do nas
Ustaw i18n, utrzymuj czysty kod i wysyłaj szybko
Istnieje kilka PITA z obecnymi rozwiązaniami i18n. Bóle są tak duże, że opóźniasz i18n tak długo, jak to możliwe.
Poznacza czas, który powinieneś spędzić na plaży
Ustaw system kluczy: co najmniej 1 godzina czasu seniora
Tam i z powrotem dla każdego nowego klucza: 1 minuta na klucz, x500 kluczy, x2 języki = 17 godzin
Dzięki i18n-keyless nie musisz martwić się systemem i18n. Możesz pójść na plażę i zamówić mojito.
Dziś większość systemów używa kluczy do tłumaczenia tekstu
To bolące generować. To bolące utrzymywać.
Kiedy widzisz tekst w aplikacji i chcesz go zaktualizować, musisz znaleźć odpowiedni klucz.
Z i18n-keyless nie musisz martwić się systemem i18n. Użyj swojego mózgu do czegoś bardziej interesującego.
Zostaw tłumaczenia na AI
Z systemem klucza musisz zarządzać tłumaczeniami w aplikacji.
W przeciwnym razie użytkownicy zobaczą someheader.welcome.title w swojej aplikacji.
Z i18n-keyless w najgorszym scenariuszu offline zobaczysz nieprzetłumaczone rzeczywiste słowa. W normalnym tempie w ogóle nie obchodzi Cię system i18n. Po prostu pisz dobre nagłówki, skup się na marketingu i zdobądź sprzedaż.
Bazy kodu są piękne... aż do zakażenia kluczami i18n
Z systemem kluczy, gdy czytasz kod i treść, musisz czytać klucze, a nie język naturalny.
Czasami musisz wprowadzić poprawkę, ponieważ zdanie nie jest gramatycznie poprawne. Ale nie wiesz tego, ponieważ czytasz klucze.
Dzięki i18n-keyless nie musisz się martwić o system i18n. Kod pozostaje piękny.
Serwer MCP, aby pokryć wszystkie Twoje potrzeby dotyczące internacjonalizacji
Sześć innych powodów, dla których system jest tak zoptymalizowany pod kątem kodowania agentowego.
Brak nazwy do wymyślenia
Klucz to decyzja o nazwie bez jednoznacznej odpowiedzi. Dwa agenty zapisują login.submit i auth.button.send dla tego samego przycisku. Bez kluczy nie ma decyzji do podjęcia.
Jeden plik do edycji, nie dwadzieścia
Zmiana oparta na kluczu dotyka komponentu i każdego pliku JSON lokalizacji, a agenci zapominają pliki. Tutaj zmiana kopii to edycja pojedynczego pliku.
Brak konfliktów scalania w flotach agentów
Pięciu agentów na pięciu gałęziach edytuje wszystkie en.json: gwarantowany konflikt. Nie ma wspólnego pliku, więc worktreesy i agenci w tle nigdy się nie zderzają.
Tani w tokenach
Aby ponownie użyć klucza, agent musi ładować pliki lokalizacji do kontekstu przy każdej edycji. Ładowanie bez klucza nic nie robi: tekst znajduje się bezpośrednio w komponencie.
Czytelne różnice
Żądanie scalenia pokazuje prawdziwe zdania. Człowiek lub agent recenzji może ocenić kopię bez zagłębiania się w to, co oznacza klucz.
Jedna reguła w twoim CLAUDE.md
Każda reguła i18n, którą napiszesz, to reguła, którą agent może złamać. Ta reguła wymaga tylko jednej linii — a tekst zapasowy to rzeczywisty tekst, więc błąd nie wyświetli a.b.c na ekranie.
Jedyna zasada i18n, której potrzebuje Twój agent
# CLAUDE.md Write the UI copy in English and wrap it in <T>…</T> from i18n-keyless-react. That is the whole i18n setup.
Twój agent może nim sterować, nie tylko pisać
Za pośrednictwem serwera MCP agent wyświetla brakujące tłumaczenia, czyta jedno, zastępuje złe lub importuje kopię, którą już posiadasz — z własnym logowaniem OAuth, bez potrzeby wklejania klucza.
Przeczytaj przewodnik MCPGlobalne wprowadzenie od dnia pierwszego
Przestań opóźniać i18n z powodu złożoności. Zaimplementuj w 5 minut, a nie w dniach. Utrzymaj swoją prędkość rozwoju, jakby i18n nie było zaimplementowane.
- 5-minutowa implementacja. Nie żartuję.
Jeden prosty obiekt konfiguracyjny i gotowe.
- Utrzymać tempo rozwoju
Koduj tak, jakby i18n w ogóle nie było zaimplementowane.
- Wysyłka na globalne rynki
Nie wymagana jest refaktoryzacja przy skalowaniu do nowych języków.
- Gotowy na SSR & SEO
Działa z Next.js, Remix, TanStack Start i Astro. Renderowanie po stronie serwera w dowolnym języku dla wyszukiwarek — ta sama konfiguracja w 5 minut.
Tradycyjny i18n
i18n-keyless
To bardzo proste w konfiguracji
Najprostszy obiekt konfiguracyjny i jesteś gotowy, aby pójść globalnie.
A nawet więcej, twój agent to dla ciebie skonfiguruje.
1. Podstawowa konfiguracja
import * as I18nKeyless from "i18n-keyless-react";
I18nKeyless.init({
API_KEY: "YOUR_API_KEY",
storage: window.localStorage,
languages: {
primary: "en",
supported: ["en", "fr"],
},
});2. Użycie komponentu (Tutaj React; to samo w Vue, Angular, Flutter, Swift i 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. Użycie po stronie serwera (tutaj Node.js; ten sam wywołanie w Laravel, Rails, Python i 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. Dla tekstu poza komponentami
import { getTranslation } from "i18n-keyless-react";
export default function Navigation() {
return (
<HomeTabs.Navigator>
<HomeTabs.Screen
options={{ tabBarLabel: getTranslation("Welcome") }}
name="WELCOME"
/>
</HomeTabs.Navigator>
);
}5. Wybierz swój SDK: jedna linia instalacji, ten sam interfejs API wszędzie
- 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
Jak działają tłumaczenia
i18n-keyless to biblioteka, połączona z usługą API, która pozwala przetłumaczyć tekst bez konieczności używania kluczy.
Jeśli tłumaczenie nie zostanie znalezione, zostanie wykonane asynchroniczne pobranie do API I18nKeyless, aby uzyskać tłumaczenie za pomocą wywołania API IA.
Ta operacja jest zwykle wykonywana w trybie developerskim, podczas gdy kodujesz. Jeśli pominięłaś jedną, w produkcji tylko pierwszy użytkownik, któremu brakuje tłumaczenia, zobaczy błąd, potem będzie dostępna natychmiast dla użytkowników na całym świecie.
Twój wykaz sklepu we wszystkich językach, przy każdym wydaniu
Każda aktualizacja oznacza nowe notatki wydania, opis i słowa kluczowe — dla każdego języka w obu sklepach. To właśnie to powstrzymuje Cię przed dodawaniem języków. Nie aplikacja.
- Notatki o wydaniach dla każdego języka, w jednym wywołaniu
Napisz aktualizację raz. awaitForTranslation zwraca ją w każdym języku, w którym sprzedajesz, a konfiguracja Twojego sklepu przekazuje ją do EAS lub fastlane.
- 48 języków, przypisanych do slotów App Store
pt-BR i pt-PT to dwie listy; en-GB, en-AU i en-CA to trzy. toAppStoreLocale umieszcza każde tłumaczenie we właściwym miejscu.
- Napraw złe tłumaczenie bez wydania
W aplikacji jedna nadpisywana wartość w panelu sterowania jest aktywna na raz — bez buildu poprawki na gorąco, bez recenzji sklepu. W wykazie ponownie uruchom push.
- Nie jest cenione za słowo
Tłumacz pobiera około 0,10 € za słowo. 2 000 ciągów znaków razy 10 języków to budżet, którego nie może pozwolić sobie samodzielny programista. Tutaj słowa nie są liczone.
Pełny przepis na aplikację 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 } };
};To samo połączenie zapisuje pliki metadanych fastlane dla Google Play. Wielkie litery są doradcze: ustaw limit w kontekście i sprawdź długość przed wysłaniem.
Interaktywna piaskownica
Zobacz, jak działa i18n-keyless w czasie rzeczywistym
Otwórz projekt StackBlitz na żywo i edytowalny, aby zobaczyć, jak tłumaczenia są rozwiązywane podczas pisania.
Dlaczego to zbudowałem
Zawsze odkładałem internacjonalizację, dopóki mój klient nie zapragnął jej tak bardzo, że nie miałem wyboru. Nienawidzę czytać kodu z kluczami internacjonalizacji w środku, i równie mocno nie cierpię utrzymywać plików JSON, jak i patrzeć na to, jak drodzy są dostawcy tłumaczeń i18n. Więc musiałem zbudować własne rozwiązanie i PO PROSTU JE UWIELBIAM. Teraz wszystkie moje aplikacje są internacjonalizowane domyślnie.
Arnaud Ambroselli
Założyciel i18n-keyless
Najczęściej zadawane pytania
Czy muszę zarządzać plikami tłumaczeń?
Nie. Nie ma plików JSON, kroku ekstrakcji kluczy ani wtyczki czasu kompilacji. Piszesz swoje zdania w swoim języku źródłowym, SDK wysyła je do API przy pierwszym żądaniu, API tłumaczy je za pomocą AI, a każde kolejne żądanie jest obsługiwane z pamięci podręcznej. Twój kod jest jedynym źródłem prawdy.
Co się stanie, gdy zmienię tekst źródłowy?
Tekst źródłowy to klucz. Zmiana go spowoduje powstanie nowego klucza z nowym tłumaczeniem AI. Stary klucz przestanie być żądany, a panel sterowania usunie go po 30 dniach nieużywania. Poprawienie literówki działa tak samo: popraw ją w kodzie, wdróż, a nowy tekst zostanie przetłumaczony przy pierwszym żądaniu.
Ile to kosztuje?
Samodzielnie hostowane: całkowicie darmowe, nieograniczone projekty, bez subskrypcji i bez limitu użycia — zainstaluj obraz Docker, użyj swojego klucza AI. Podoba Ci się? Daj mi napiwek! Hostowane: jedna stała cena za projekt miesięcznie, w zależności od aktywnych użytkowników miesięcznie — 4 € do 1 000, 9 € do 5 000, 29 € do 50 000, 99 € do 500 000 — rozliczane miesięcznie, możesz anulować w dowolnym momencie. W obu przypadkach nie ma cen za miejsce, słowo ani ciąg znaków.
Czy mogę wyeksportować swoje tłumaczenia?
Tak. Panel sterowania ma przycisk „Eksportuj JSON”, który pobiera wszystkie tłumaczenia w Twoim projekcie jako pojedynczy plik JSON. Eksport obejmuje wszystkie wiersze, nie tylko te użyte w ostatnich 30 dniach, więc jest to pełna kopia zapasowa. Nie ma blokady: Twoje dane są zawsze tylko jeden klik dalej.
Jeden opiekun: co się stanie, jeśli projekt zostanie zatrzymany?
SDK są objęte licencją MIT i pozostają dostępne w npm, PyPI, RubyGems i innych rejestrach. Serwer jest publiczny na licencji Elastic 2.0, a protokół między nimi jest udokumentowany, więc każdy może go uruchomić, zforkować lub napisać przeciwko niemu serwer. Twoje tłumaczenia pozostają w jednej eksportowanej strukturze JSON w dowolnym momencie. Jeśli hostowana usługa przestanie działać: zainstalowane aplikacje nadal będą dostarczać zapisane w pamięci podręcznej tłumaczenia, nowy klient powróci do języka źródłowego, a skierowanie SDK do własnej instancji z API_URL przywróci wszystko. To, co stracisz, to tłumaczenia AI nowych ciągów na i18n-keyless.com — nie Twoje dane ani aplikacja.
Przeczytaj pełną odpowiedź, z kodemObejrzyj demo
Obejrzyj ten krótki film, aby zobaczyć i18n-keyless w akcji