Självhostad

Smärtfri i18n, utökat till dina egna horisonter utan att spendera tusentals dollar.

Helt gratis. Obegränsade projekt, alla 48 språk, ingen utgångstid, ingen licensnyckel krävs.

Gratis för alltid
€0för alltid

Obegränsade projekt. Alla 48 språk. Ingen utgångstid.

  • Alla 48 språk, obegränsade översättningar
  • Instrumentpanelen, MCP-servern, varje SDK
  • Inget att köpa, inget att ange utom din AI-nyckel
Installera det gratis
Ge mig dricks
Tycker du om det?

i18n är numera smärtfritt, du kan uppleva det. Jag har inget emot att få dricks för det.

  • När du känner det
  • Om du känner för det
  • Från 1 till 1 miljon dollar, inte mer

Säker betalning via Stripe. En licensnyckel hamnar i din inkorg — den tystar donationsprompten i instrumentpanelen.

Vad du får

  • Obegränsade projekt, alla 48 språk, ingen utgångsdatum
  • Obegränsade översättningar, ingen användningsgräns
  • Instrumentpanelen, MCP-servern för dina agenter, varje SDK
  • En behållare, en SQLite-fil för säkerhetskopiering
  • En licens som kontrollerats offline: din server ringer aldrig hem
  • Varje uppdatering, för livet: docker compose pull

Vad du för med dig

  • En maskin med Docker: en VPS för 4 € räcker gott
  • En AI API-nyckel (Mistral, OpenAI, Anthropic, Google eller någon OpenAI-kompatibel leverantör). Översättningarna körs på ditt eget konto, för några öre per app
  • Fem minuter

Support sker via e-post, med bästa möjliga ansträngning. Behöver du någon som kan ta emot samtal? De hostade planerna är för dig.

Hur det fungerar

Installera, skapa administratören, klistra in din AI-nyckel. Varje projekt är gratis, för alltid.

Med ONCE — en ny server, en domän, fem minuter

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 — vilken maskin som helst som kör 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

Peka sedan din SDK mot din server:

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

Den fullständiga guiden: https://docs.i18n-keyless.com/docs/guides/self-hosting

Varför en donation?

För att du själv hanterar VPS:en och AI API-nyckeln. Det finns ingen anledning för mig att ta betalt för en prenumeration. Jag hatar prenumerationer själv. Så istället: du bestämmer vad programvaran är värd för dig, och jag fortsätter att utveckla den.

Bilden installeras gratis och kör obegränsade projekt, med alla språk och utan utgångsdatum.

Frågor innan du köper? Skriv till oss

Konfigurera i18n, hålla din kodbas ren och leverera snabbt

Det finns flera PITA med de nuvarande i18n-lösningarna. Smärtorna är så stora att du skjuter upp i18n så länge som möjligt.

Det konsumerar tiden du borde tillbringa på stranden

Ställ in nyckelsystemet: minst 1 timmes tid för seniorutvecklare

Fram och tillbaka för varje nyckel: 1 minut per nyckel, x500 nycklar, x2 språk = 17 timmar

Med i18n-keyless behöver du inte bry dig om i18n-systemet alls. Du kan gå till stranden och beställa en mojito.

Idag använder de flesta systemen nycklar för att översätta texten

Det gör ont att generera. Det gör ont att underhålla.

När du ser en text i appen och vill uppdatera den, måste du hitta den motsvarande nyckeln.

Med i18n-keyless behöver du inte bry dig om i18n-systemet. Använd ditt hjärna för något mer intressant.

Låt översättningarna till AI

Med nyckelsystemet måste du hantera översättningarna i appen.

Annars kommer dina användare se someheader.welcome.title i sin app.

Med i18n-keyless ser du oöversatta verkliga ord i värsta offline-scenario. I normalt tempo bryr du dig inte alls om i18n-systemet. Skriv bara bra rubriker, fokusera på marknadsföring och få försäljning.

Kodbaskär är vackra... tills i18n-nyckelinfektion

Med nyckelsystemet, när du läser koden och innehållet, måste du läsa nycklarna, inte det naturliga språket.

Ibland måste du göra en korrigering eftersom en mening inte är grammatiskt korrekt. Men du vet inte det därför att du läser nycklarna.

Med i18n-keyless behöver du inte bry dig alls om i18n-systemet. Kodbasen förblir vacker.

Lägg till i18n från dag ett utan någon påverkan på din utvecklingstakt
Byggt för kodningsagenter

MCP-server för att täcka alla dina i18n-behov

Sex andra skäl till varför systemet är så optimerat för agentisk kodning.

Inget namn att hitta på

En nyckel är ett beslut om namngivning utan något rätt svar. Två agenter skriver login.submit och auth.button.send för samma knapp. Utan nycklar finns ingen beslut att fatta.

En fil att redigera, inte tjugo

En nyckelbaserad ändring påverkar komponenten och alla lokaliserings-JSON-filer, och agenter glömmer filer. Här är en kopiaändring en redigering av en enda fil.

Inga mergekonflikter i agentflottor

Fem agenter på fem grenar redigerar alla en.json: en garanterad konflikt. Det finns ingen delad fil, så worktrees och bakgrundsagenter kolliderar aldrig.

Billigt i tokens

För att återanvända en nyckel måste en agent ladda in lokaliseringsfilerna i kontexten vid varje redigering. Laddningar utan nyckel gör ingenting: texten finns precis där i komponenten.

Läsbara skillnader

Pull-begäran visar verkliga meningar. En människa eller en granskande agent kan bedöma kopian utan att gräva för att ta reda på vad en nyckel står för.

En regel i din CLAUDE.md

Varje i18n-regel du skriver är en regel som agenten kan bryta. Denna regel behöver bara en rad — och fallback är den riktiga texten, så ett fel kommer inte att visa a.b.c på skärmen.

Den enda i18n-regeln som din agent behöver

# 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 hantera det, inte bara skriva det

Genom MCP-servern listar agenten saknade översättningar, läser en, ersätter en dålig eller importerar kopian du redan har — med sin egen OAuth-inloggning, utan att behöva klistra in någon nyckel.

Läs MCP-guiden
Perfekt för MVP

Globalt lansering från dag ett

Sluta skjuta upp i18n på grund av komplexitet. Implementera på 5 minuter, inte dagar. Håll din utvecklingstakt som om i18n inte var implementerad.

  • 5-minuters implementering. Inte skojar.

    Ett enkelt konfigurationsobjekt och du är klar.

  • Håll utvecklingstakt

    Koda som om i18n inte var implementerat alls.

  • Leverans till globala marknader

    Ingen omstrukturering behövs när du skalar till nya språk.

  • SSR & SEO redo

    Fungerar med Next.js, Remix, TanStack Start och Astro. Serverrendering på vilket språk som helst för sökmotorer — samma 5-minutersinställning.

Traditionell i18n

Inställning av nyckelsystem (1 timme)
Skapa översättningsfiler (2 timmar)
Refaktorisera komponenter (4 timmar)
Testa alla språk (2 timmar)
Åtgärda layoutproblem (3 timmar)
12+ timmar arbete

i18n-keyless

Lägg till paket (1 min)
Konfigurera med API-nyckel (2 min)
Linda textkomponenter (2 min)
5 minuter arbete
Hur det fungerar

Det är lätt att konfigurera

Endast det enklaste konfigurationsobjekt och du är redo att gå globalt.
Och ännu mer, din agent kommer att ställa in det för dig.

1. Grundinställningar

import * as I18nKeyless from "i18n-keyless-react";

I18nKeyless.init({
  API_KEY: "YOUR_API_KEY",
  storage: window.localStorage,
  languages: {
    primary: "en",
    supported: ["en", "fr"],
  },
});

2. Komponentanvändning (Här React; detsamma i Vue, Angular, Flutter, Swift och 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 användning (här Node.js; samma anrop i Laravel, Rails, Python och 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. För text utanför 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älj ditt SDK: en installationsrad, samma API överallt

  • 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

Snabb installation för var och en av de tolv SDK:erna

Hur översättningar fungerar

i18n-keyless är en bibliotek, kombinerat med en API-tjänst, som låter dig översätta din text utan att behöva använda nycklar.

Om översättningen inte hittas, kommer det att ske en asynkron hämtning till I18nKeyless API för att få översättningen genom ett AI API-anrop.

Den här operationen utförs vanligtvis i utvecklingsläge, medan du kodar. Om du missade en, kommer i produktion endast den första användaren som saknar översättningen att se ett glitch, sedan kommer den att vara tillgänglig omedelbart för användare över hela världen.

App Store & Google Play

Din butikslista på alla språk, vid varje release

Varje uppdatering innebär nya release-anteckningar, en beskrivning och nyckelord — för varje språk på båda butikerna. Det är det som hindrar dig från att lägga till språk. Inte appen.

  • Versionsnoteringar för alla språk, i ett anrop

    Skriv uppdateringen en gång. awaitForTranslation returnerar den på varje språk du säljer på, och din butiks konfiguration matar in det till EAS eller fastlane.

  • 48 språk, kartlagda till App Store-platser

    pt-BR och pt-PT är två listor; en-GB, en-AU och en-CA är tre. toAppStoreLocale placerar varje översättning på rätt plats.

  • Fixa en dålig översättning utan en release

    I appen är en override i instrumentpanelen aktiv en åt gången — ingen hotfix build, ingen butiksrecension. I listan, kör om push.

  • Inte prissatt per ord

    En översättare tar ungefär 0,10 € per ord. 2 000 strängar gånger 10 språk är en budget som en ensam utvecklare inte har råd med. Här räknas inte orden.

Det hela receptet för 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 } };
};

Samma samtal skriver fastlane-metadatafiler för Google Play. Versaler är endast rådgivande: sätt gränsen i sammanhanget och kontrollera längden innan du skickar.

Prova själv

Interaktiv sandlåda

Se hur i18n-keyless fungerar i realtid

Öppna ett live och redigerbart StackBlitz-projekt för att se hur översättningarna löses upp medan du skriver.

Varför byggde jag detta

Jag har alltid skjutit upp internationalisering tills min kund ville det så mycket att jag inte hade något val. Jag hatar att läsa kod med i18n-nycklar inuti, och jag hatar lika mycket att underhålla JSON-filer som att se hur dyra i18n-översättningsleverantörer är. Så jag var tvungen att bygga min egen, och JAG ÄLSKAR DET. Alla mina appar är nu internationaliserade som standard.

AA

Arnaud Ambroselli

Grundare av i18n-keyless

Vill du lägga till ditt eget?

Ett vittnesmål mot en gratis prenumeration. Begär din!

Skicka mitt vittnesbörd
Innan du frågar

Vanliga frågor

Behöver jag hantera översättningsfiler?

Nej. Det finns inga JSON-filer, inget nyckelextraktionssteg och inget bygge-tidsplugin. Du skriver dina meningar på ditt källspråk, SDK skickar dem till API:t vid den första begäran, API:t översätter dem med AI, och varje efterföljande begäran serveras från cachen. Din kod är den enda källan till sanning.

Vad händer när jag ändrar källtexten?

Källtexten är nyckeln. Ändrar du den får du en ny nyckel med en ny AI-översättning. Den gamla nyckeln begärs inte längre och instrumentpanelen rensar den efter 30 dagar utan användning. Att fixa en stavfel fungerar på samma sätt: fixa det i koden, distribuera, och den nya texten kommer att översättas vid första begäran.

Hur mycket kostar det?

Självhostad: helt gratis, obegränsade projekt, ingen prenumeration och ingen användningsbegränsning — installera Docker-avbildningen, använd din egen AI-nyckel. Gillar du det? Ge mig ett tips! Hostad: ett fast pris per projekt per månad, baserat på månadsvis aktiva användare — 4 € upp till 1 000, 9 € upp till 5 000, 29 € upp till 50 000, 99 € upp till 500 000 — faktureras månadsvis, kan avbrytas när som helst. Det finns ingen prissättning per plats, per ord eller per sträng i något av fallen.

Kan jag exportera mina översättningar?

Ja. Instrumentpanelen har en knapp för "Exportera JSON" som laddar ner alla översättningar i ditt projekt som en enda JSON-fil. Exporten inkluderar alla rader, inte bara de som använts de senaste 30 dagarna, så det är en fullständig säkerhetskopia. Det finns ingen inlåsning: dina data är alltid bara ett klick bort.

En underhållare: vad händer om projektet stannar?

SDK:erna är under MIT-licens och förblir tillgängliga på npm, PyPI, RubyGems och andra register. Servern är offentlig under Elastic License 2.0 och protokollet mellan dem är dokumenterat, så vem som helst kan köra den, göra en fork eller skriva en server mot den. Dina översättningar finns alltid i en enda JSON-export. Om den hostade tjänsten slutar fungera: installerade appar fortsätter att servera sina cachade översättningar, en ny klient faller tillbaka till källspråket, och genom att peka SDK:n till din egen instans med API_URL återställs allt. Det du skulle förlora är AI-översättningen av nya strängar på i18n-keyless.com — inte dina data eller din app.

Läs hela svaret, med koden
Prova själv

Titta på demot

Titta på denna korta video för att se i18n-keyless i handling