Smertfri i18n, udvidet til dine egne horisonter uden at bruge tusindvis af dollars.
Fuldstændig gratis. Ubegrænsede projekter, alle 48 sprog, ingen udløb, ingen licensnøgle nødvendig.
Ubegrænsede projekter. Alle 48 sprog. Ingen udløb.
- Alle 48 sprog, ubegrænset oversættelse
- Instrumentbrættet, MCP-serveren, hvert SDK
- Intet at købe, intet at indtaste undtagen din AI-nøgle
i18n er nu nemt, du kan opleve det. Jeg har intet imod at få drikkepenge for det.
- Når du føler det
- Hvis du har lyst
- Fra 1 til 1 million dollars, ikke mere
Sikker betaling via Stripe. En licensnøgle lander i din indbakke — den slår anmodningen om donation fra i instrumentbrættet.
Hvad du får
- Ubegrænsede projekter, alle 48 sprog, ingen udløb
- Ubegrænsede oversættelser, ingen brugsgrænse
- Instrumentbrættet, MCP-serveren til dine agenter, hver SDK
- Én beholder, én SQLite-fil til backup
- En licens kontrolleret offline: din server ringer aldrig hjem
- Hver opdatering, for livet: docker compose pull
Hvad du bringer
- En maskine med Docker: en VPS til 4 € er rigeligt
- En AI API-nøgle (Mistral, OpenAI, Anthropic, Google eller enhver OpenAI-kompatibel udbyder). Oversættelser kører på din egen konto, for få cent pr. app
- Fem minutter
Support er via e-mail, med bedste indsats. Har du brug for nogen til at tage opkaldet? De hostede planer er til dig.
Hvordan det kører
Installer, opret administratoren, indsæt din AI-nøgle. Hvert projekt er gratis, for evigt.
Med ONCE — en ny server, et domæne, fem minutter
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
Med Docker Compose — enhver maskine, der kører 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
Peg derefter din SDK til din server:
I18nKeyless.init({
API_KEY: "your-project-key",
API_URL: "https://i18n.example.com",
// …
});Den fulde guide: https://docs.i18n-keyless.com/docs/guides/self-hosting
Hvorfor en donation?
Fordi du selv håndterer VPS og AI API-nøglen. Der er ingen grund til, at jeg skulle opkræve dig for et abonnement. Jeg hader abonnementer selv. Så i stedet: du bestemmer, hvad softwaren er værd for dig, og jeg fortsætter med at udvikle det.
Billedet installeres gratis og kører ubegrænsede projekter, med alle sprog og ingen udløb.
Spørgsmål inden du køber? Skriv til os
Opsæt i18n, hold din kodebase ren og lever hurtigt
Der er flere PITA med de nuværende i18n-løsninger. Smerterne er så store, at du udsætter i18n så meget som muligt.
Det forbruger tid, du burde bruge på stranden
Opsæt nøglesystemet: mindst 1 time seniorudviklertid
Frem og tilbage for hver ny nøgle: 1 minut pr. nøgle, x500 nøgler, x2 sprog = 17 timer
Med i18n-keyless behøver du slet ikke bekymre dig om i18n-systemet. Du kan tage på stranden og bestille en mojito.
I dag bruger de fleste systemer nøgler til at oversætte teksten
Det er smertefuldt at generere. Det er smertefuldt at vedligeholde.
Når du ser en tekst i appen, og du vil opdatere den, skal du finde den tilsvarende nøgle.
Med i18n-keyless behøver du slet ikke at bekymre dig om i18n-systemet. Brug din hjerne til noget mere interessant.
Lad AI om at oversætte
Med nøglesystemet skal du administrere oversættelserne i appen.
Ellers vil dine brugere se someheader.welcome.title i deres app.
Med i18n-keyless vil du i værste offline-scenarie se uoversatte rigtige ord. I normalt tempo bekymrer du dig slet ikke om i18n-systemet. Skriv bare gode overskrifter, fokuser på markedsføring og få salg.
Kodebaser er smukke... indtil i18n-nøglerne bliver inficerede
Med nøglesystemet, når du læser koden og indholdet, skal du læse nøgler, ikke naturligt sprog.
Nogle gange bør du lave en rettelse, fordi en sætning ikke er grammatisk korrekt. Men du ved det ikke, fordi du læser nøgler.
Med i18n-keyless behøver du slet ikke bekymre dig om i18n-systemet. Kodebasen forbliver smuk.
MCP-server til at dække alle dine i18n-behov
Plus seks andre grunde til, hvorfor systemet er så optimeret til agentisk kodning.
Intet navn at opfinde
En nøgle er en navngivningsbeslutning uden noget rigtigt svar. To agenter skriver login.submit og auth.button.send for den samme knap. Uden nøgler er der ingen beslutning at træffe.
Én fil at redigere, ikke tyve
En nøglebaseret ændring påvirker komponenten og alle lokaliserings-JSON-filer, og agenter glemmer filer. Her er en kopiændring en redigering af en enkelt fil.
Ingen mergekonflikter i agentflåder
Fem agenter på fem grene redigerer alle en.json: en garanteret konflikt. Der er ingen delt fil, så worktrees og baggrundsagenter kolliderer aldrig.
Billig i tokens
For at genbruge en nøgle skal en agent indlæse lokaliseringsfilerne i konteksten ved hver redigering. Nøglesløs indlæsning gør ingenting: teksten er lige der i komponenten.
Læselige forskelle
Pull requestet viser rigtige sætninger. Et menneske eller en gennemgangsagent kan bedømme kopien uden at grave for at finde ud af, hvad en nøgle står for.
En regel i din CLAUDE.md
Enhver i18n-regel, du skriver, er en regel, som agenten kan bryde. Denne regel behøver kun én linje — og fallback er den rigtige tekst, så en fejl kan ikke vise a.b.c på skærmen.
Den eneste i18n-regel, din agent har brug for
# CLAUDE.md Write the UI copy in English and wrap it in <T>…</T> from i18n-keyless-react. That is the whole i18n setup.
Din agent kan betjene det, ikke kun skrive det
Gennem MCP-serveren lister agenten manglende oversættelser, læser én, overskriver en dårlig, eller importerer kopien, du allerede har — med sin egen OAuth-login, ingen nøgle at indsætte.
Læs MCP-guidenLancér globalt fra dag ét
Stop med at udsætte i18n på grund af kompleksitet. Implementer på 5 minutter, ikke dage. Bevar din udviklingshastighed, som om i18n ikke var blevet implementeret.
- 5-minutters implementering. Ikke noget sludder.
Et simpelt konfigurationsobjekt, og du er færdig.
- Oprethold udviklingshastigheden
Kod som om i18n slet ikke var implementeret.
- Send til globale markeder
Ingen refaktorering nødvendig, når du skalerer til nye sprog.
- SSR & SEO klar
Fungerer med Next.js, Remix, TanStack Start og Astro. Server-render hvilket som helst sprog til søgemaskiner — samme 5-minutters opsætning.
Traditionel i18n
i18n-nøgleløs
Det er ingen sag at opsætte
Kun det simpleste konfigurationsobjekt og du er klar til at gå global.
Og endnu mere, din agent vil opsætte det for dig.
1. Grundlæggende opsætning
import * as I18nKeyless from "i18n-keyless-react";
I18nKeyless.init({
API_KEY: "YOUR_API_KEY",
storage: window.localStorage,
languages: {
primary: "en",
supported: ["en", "fr"],
},
});2. Komponentbrug (React her; det samme i Vue, Angular, Flutter, Swift og 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. Server-side brug (her Node.js; det samme kald i Laravel, Rails, Python og 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. Til tekst uden for komponenter
import { getTranslation } from "i18n-keyless-react";
export default function Navigation() {
return (
<HomeTabs.Navigator>
<HomeTabs.Screen
options={{ tabBarLabel: getTranslation("Welcome") }}
name="WELCOME"
/>
</HomeTabs.Navigator>
);
}5. Vælg dit SDK: én installationslinje, det samme API overalt
- 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
Hvordan oversættelser fungerer
i18n-keyless er et bibliotek, kombineret med en API-tjeneste, der giver dig mulighed for at oversætte din tekst uden at skulle bruge nøgler.
Hvis oversættelsen ikke findes, vil der blive foretaget en asynkron hentning til I18nKeyless' API for at få oversættelsen via en AI API-kald.
Denne operation foretages normalt i udviklermodus, mens du skriver kode. Hvis du har misset én, vil kun den første bruger, der mangler oversættelsen i produktionen, se en fejl, hvorefter den straks vil være tilgængelig for brugere over hele kloden.
Din butiksliste på alle sprog, ved hver udgivelse
Hver opdatering betyder nye release-noter, en beskrivelse og nøgleord — for hvert sprog på begge butikker. Det er det, der forhindrer dig i at tilføje sprog. Ikke appen.
- Release noter for hvert sprog, i et opkald
Skriv opdateringen én gang. awaitForTranslation returnerer den på hvert sprog, du sælger på, og din butiks konfiguration sender det til EAS eller fastlane.
- 48 sprog, kortlagt til App Store-pladser
pt-BR og pt-PT er to lister; en-GB, en-AU og en-CA er tre. toAppStoreLocale placerer hver oversættelse det rigtige sted.
- Ret en dårlig oversættelse uden en udgivelse
I appen er en override i instrumentbrættet live på én gang — ingen hotfix build, ingen butiksgennemgang. I listen skal du genkøre push'en.
- Ikke prissat pr. ord
En oversætter tager omkring 0,10 € per ord. 2.000 strenge gange 10 sprog er et budget, som en soloudvikler ikke har. Her tælles ordene ikke.
Hele opskriften til en Expo-app
// 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 } };
};Den samme opkald skriver fastlane-metadatak-filer til Google Play. Store bogstaver er vejledende: sæt grænsen i kontekst og kontroller længden, inden du skubber.
Interaktiv Sandkasse
Se hvordan i18n-keyless fungerer i realtid
Åbn et live, redigerbart StackBlitz-projekt for at se oversættelser blive løst, mens du skriver.
Hvorfor byggede jeg dette
Jeg har altid udskudt internationalisering, indtil min klient ønskede det så meget, at jeg ikke havde noget valg. Jeg hader at læse kode med i18n-nøgler inde i, og jeg hader at vedligeholde JSON-filer lige så meget som at se, hvor dyre i18n-oversættelsesudbydere er. Så jeg var nødt til at bygge min egen, og JEG FREAKER LIGE DEN. Alle mine apps er nu i18n som standard.
Arnaud Ambroselli
Grundlægger af i18n-keyless
Ofte stillede spørgsmål
Skal jeg administrere oversættelsesfiler?
Nej. Der er ingen JSON-filer, ingen nøgleudtrækningsproces og ingen byggetids-plugin. Du skriver dine sætninger på dit kildeprog, SDK sender dem til API'et ved den første anmodning, API'et oversætter dem med AI, og alle efterfølgende anmodninger betjenes fra cachen. Din kode er den eneste kilde til sandhed.
Hvad sker der, når jeg ændrer kilde teksten?
Kildeteksten er nøglen. Ændrer du den, får du en ny nøgle med en frisk AI-oversættelse. Den gamle nøgle bliver simpelthen ikke længere anmodet om, og dashboardet renser den væk efter 30 dages ikke-brug. En stavefejlrettelse er det samme: rett den i koden, deploy, og den nye tekst bliver oversat ved første anmodning.
Hvor meget koster det?
Selv-hostet: fuldstændig gratis, ubegrænset antal projekter, ingen abonnement og ingen brugsbegrænsning — installer Docker-billedet, brug din egen AI-nøgle. Kan du lide det? Giv mig et tip! Hostet: en fast pris pr. projekt pr. måned, baseret på aktive brugere pr. måned — 4 € op til 1.000, 9 € op til 5.000, 29 € op til 50.000, 99 € op til 500.000 — faktureres månedligt, kan annulleres når som helst. Der er ingen prisfastsættelse pr. sæde, pr. ord eller pr. streng i nogen af tilfældene.
Kan jeg eksportere mine oversættelser?
Ja. Instrumentbrættet har en knap med teksten "Eksportér JSON", der downloader alle oversættelser i dit projekt som en enkelt JSON-fil. Eksporten inkluderer alle rækker, ikke kun dem, der er blevet brugt inden for de seneste 30 dage, så det er en fuld sikkerhedskopiering. Der er ingen binding: dine data er altid blot ét klik væk.
En vedligeholder: hvad sker der, hvis projektet stopper?
SDK'erne er under MIT-licens og forbliver tilgængelige på npm, PyPI, RubyGems og andre registre. Serveren er offentlig under Elastic License 2.0, og protokollen mellem dem er dokumenteret, så hvem som helst kan køre den, forke den eller skrive en server imod den. Dine oversættelser ligger i én JSON-eksport på ethvert tidspunkt. Hvis den hostede tjeneste stopper: fungerer installerede apps videre med deres gemte oversættelser, en ny klient falder tilbage til kilde sproget, og ved at pege SDK'et på din egen instans med API_URL gendannes alt. Det, du ville miste, er AI-oversættelsen af nye strenge på i18n-keyless.com — ikke dine data eller din app.
Læs det fulde svar med kodeSe demoen
Se denne korte video for at se i18n-keyless i aktion