Selvvert

Smertefri i18n, utvidet til dine egne horisonter uten å bruke tusenvis av dollar.

Fullstendig gratis. Ubegrensede prosjekter, alle 48 språk, ingen utløpsdato, ingen lisensnøkkel nødvendig.

Gratis for alltid
€0for alltid

Ubegrensede prosjekter. Alle 48 språk. Ingen utløpsdato.

  • Alle 48 språk, ubegrenset oversettelse
  • Dashbordet, MCP-serveren, hver SDK
  • Ingenting å kjøpe, ingenting å skrive inn bortsett fra AI-nøkkelen din
Installer det gratis
Gi meg drikkepenger
Liker du det?

i18n er nå smertfritt, du kan oppleve det. Jeg har ingenting imot å få tips for det.

  • Når du føler det
  • Hvis du har lyst
  • Fra 1 til 1 million dollar, ikke mer

Sikker betaling via Stripe. En lisensnøkkel havner i innboksen din — den demper donasjonsmeldingen i instrumentpanelet.

Hva du får

  • Ubegrensede prosjekter, alle 48 språk, ingen utløpsdato
  • Ubegrensede oversettelser, ingen bruksgrense
  • Dashbordet, MCP-serveren for agentene dine, hver SDK
  • En beholder, en SQLite-fil for sikkerhetskopiering
  • En lisens sjekket offline: serveren din ringer aldri hjem
  • Hvert oppdatering, for livet: docker compose pull

Det du bringer

  • En maskin med Docker: en VPS for 4 € er nok
  • En AI API-nøkkel (Mistral, OpenAI, Anthropic, Google eller en hvilken som helst OpenAI-kompatibel leverandør). Oversettelser kjøres på din egen konto, for noen få øre per app
  • Fem minutter

Support gis via e-post, med beste innsats. Trenger du noen til å ta imot anrop? De hostede planene er for deg.

Hvordan det kjører

Installer, opprett administratoren, lim inn AI-nøkkelen din. Hvert prosjekt er gratis, for alltid.

Med ONCE — en ny server, et domene, 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 maskin som kjø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

Pek deretter SDK-en din mot serveren din:

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

Den fullstendige veiledningen: https://docs.i18n-keyless.com/docs/guides/self-hosting

Hvorfor en donasjon?

Fordi du selv håndterer VPS og AI API-nøkkelen. Det er ingen grunn til at jeg skulle ta betalt for et abonnement. Jeg hater abonnementer selv. Så istedenfor: du bestemmer hva programvaren er verdt for deg, og jeg fortsetter å bygge den.

Bildet installeres gratis og kjører ubegrensede prosjekter, med alle språk og ingen utløp.

Spørsmål før du kjøper? Skriv til oss

Sett opp i18n, hold koden din ren og lever raskt

Det finnes flere PITA med de nåværende i18n-løsningene. Problemene er så store at du utsetter i18n så mye som mulig.

Det bruker tid du burde brukt på stranden

Sett opp nøkkelsystemet: minst 1 time seniorutviklertid

Frem og tilbake for hver ny nøkkel: 1 minutt per nøkkel, x500 nøkler, x2 språk = 17 timer

Med i18n-keyless trenger du ikke å bekymre deg for i18n-systemet i det hele tatt. Du kan dra på stranden og bestille en mojito.

I dag bruker de fleste systemer nøkler for å oversette teksten

Dette er smertefullt å generere. Dette er smertefullt å vedlikeholde.

Når du ser en tekst i appen, og du ønsker å oppdatere den, må du finne den tilsvarende nøkkelen.

Med i18n-keyless trenger du ikke å bekymre deg for i18n-systemet i det hele tatt. Bruk hjernen din på noe mer interessant.

La AI stå for oversettelsene

Med nøkkelssystemet må du administrere oversettelsene i appen.

Ellers vil brukerne dine se someheader.welcome.title i appen sin.

Med i18n-keyless ser du uoversatte virkelige ord i verste offline-scenario. I vanlig fart bryr du deg ikke om i18n-systemet i det hele tatt. Skriv bare gode overskrifter, fokuser på markedsføring og skaff salg.

Kodebaser er vakre... til i18n-nøklene blir infisert

Med nøkkelssystemet, når du leser koden og innholdet, må du lese nøkler, ikke naturlig språk.

Av og til bør du gjøre en rettelse fordi en setning ikke er grammatisk korrekt. Men du vet ikke det fordi du leser nøkler.

Med i18n-keyless trenger du ikke å bekymre deg for i18n-systemet i det hele tatt. Kodebasen forblir vakker.

Legg til i18n fra dag én uten noen innvirkning på utviklingstempoet ditt
Bygget for kodingagenter

MCP-server for å dekke alle dine i18n-behov

Seks andre grunner til at systemet er så optimalisert for agentisk koding.

Ingen navn å oppfinne

En nøkkel er en navngivningsavgjørelse uten noe riktig svar. To agenter skriver login.submit og auth.button.send for den samme knappen. Uten nøkler er det ingen avgjørelse å ta.

Én fil å redigere, ikke tjue

En nøkkelbasert endring påvirker komponenten og alle lokale JSON-filer, og agenter glemmer filer. Her er en kopiendring en redigering av én fil.

Ingen mergekonflikter i agentflåter

Fem agenter på fem grener redigerer alle en.json: en garantert konflikt. Det er ingen delt fil, så worktrees og bakgrunnsagenter kolliderer aldri.

Billig i tokens

For å gjenbruke en nøkkel, må en agent laste inn lokaliseringsfilene i konteksten ved hver redigering. Nøkkelløse lasting gjør ingenting: teksten er rett der i komponenten.

Lesbare forskjeller

Pull requesten viser ekte setninger. Et menneske eller en gjennomgangsagent kan bedømme kopien uten å grave for å finne ut hva en nøkkel står for.

En regel i din CLAUDE.md

Enhver i18n-regel du skriver, er en regel agenten kan bryte. Denne regelen trenger bare én linje — og fallback er den faktiske teksten, så en feil vil ikke vise a.b.c på skjermen.

Den eneste i18n-regelen agenten din trenger

# CLAUDE.md
Write the UI copy in English and wrap it in <T>…</T> from i18n-keyless-react.
That is the whole i18n setup.

Agenten din kan operere det, ikke bare skrive det

Gjennom MCP-serveren lister agenten manglende oversettelser, leser én, overskriver en dårlig eller importerer kopien du allerede har — med sin egen OAuth-innlogging, uten behov for å lime inn en nøkkel.

Les MCP-guiden
Perfekt for MVP-er

Lanser globalt fra dag én

Stopp med å utsette i18n på grunn av kompleksitet. Implementer det på 5 minutter, ikke dager. Oppretthold utviklingshastigheten din som om i18n ikke var implementert.

  • 5-minutters implementering. Ikke noe tull.

    Et enkelt konfigurasjonsobjekt og du er ferdig.

  • Behold utviklingshastigheten

    Kod som om i18n ikke var implementert i det hele tatt.

  • Send til globale markeder

    Ingen refaktorering nødvendig når du skalerer til nye språk.

  • SSR & SEO klar

    Fungerer med Next.js, Remix, TanStack Start og Astro. Server-render hvilket som helst språk for søkemotorer — samme 5-minutters oppsett.

Tradisjonell i18n

Oppsett av nøkkelsystem (1 time)
Opprett oversettelsesfiler (2 timer)
Refaktorér komponenter (4 timer)
Test alle språkene (2 timer)
Løs layoutproblemer (3 timer)
12+ timer arbeid

i18n-nøkkeløs

Legg til pakke (1 min)
Konfigurer med API-nøkkel (2 min)
Wrap tekstkomponenter (2 min)
5 minutter arbeid
Hvordan det fungerer

Det er ingen hjernebry å sette opp

Bare det enkleste konfigurasjonsobjektet og du er klar til å gå global.
Og enda mer, agenten din vil sette det opp for deg.

1. Grunnleggende oppsett

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

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

2. Komponentbruk (Her React; 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 bruk (her Node.js; det samme oppkaldet 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. For tekst utenfor 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. Velg SDK-en din: én installasjonslinje, 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

Rask oppsett for hver av de tolv SDK-ene

Hvordan oversettelser fungerer

i18n-keyless er et bibliotek, kombinert med en API-tjeneste, som lar deg oversette teksten din uten behov for å bruke nøkler.

Hvis oversettelsen ikke blir funnet, vil det bli utført en asynkron henting til I18nKeyless' API for å hente oversettelsen via et AI API-kall.

Denne operasjonen utføres vanligvis i utvikler-modus, mens du koder. Hvis du går glipp av én, vil bare den første brukeren som mangler oversettelsen i produksjon se en feil, og deretter vil den være umiddelbart tilgjengelig for brukere over hele verden.

App Store & Google Play

Din butikkliste på alle språk, ved hver utgivelse

Hver oppdatering betyr nye release-merk, en beskrivelse og nøkkelord — for hvert språk på begge butikkene. Det er det som hindrer deg i å legge til språk. Ikke appen.

  • Utgivelsesnotater for hvert språk, i ett anrop

    Skriv oppdateringen én gang. awaitForTranslation returnerer den på hvert språk du selger på, og butikkens konfigurasjon sender det til EAS eller fastlane.

  • 48 språk, kartlagt til App Store-plasser

    pt-BR og pt-PT er to lister; en-GB, en-AU og en-CA er tre. toAppStoreLocale plasserer hver oversettelse på riktig sted.

  • Fiks en dårlig oversettelse uten en utgivelse

    I appen er en override i dashbordet aktiv én gang — ingen hotfix build, ingen butikkvurdering. I listen, kjør push igjen.

  • Ikke priset per ord

    En oversetter tar omtrent €0,10 per ord. 2 000 strenger ganger 10 språk er et budsjett en solo-utvikler ikke har råd til. Her telles ikke ordene.

Hele oppskriften for 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 samtalen skriver fastlane-metadatafiler for Google Play. Store bokstaver er rådgivende: sett grensen i konteksten og sjekk lengden før du skyver.

Prøv det selv

Interaktiv Sandkasse

Se hvordan i18n-keyless fungerer i sanntid

Åpne et live, redigerbart StackBlitz-prosjekt for å se oversettelser løses opp mens du skriver.

Hvorfor bygde jeg dette

Jeg har alltid utsatt internasjonalisering til kunden ville det så mye at jeg ikke hadde noe valg. Jeg hater å lese kode med i18n-nøkler inni, og jeg hater like mye å vedlikeholde JSON-filer som å se hvor dyre i18n-oversettelsestjenester er. Så jeg måtte bygge min egen, og JEG ELSKER DET. Nå er alle appene mine i18n som standard.

AA

Arnaud Ambroselli

Grunnlegger av i18n-keyless

Vil du legge til ditt eget?

En vitneforklaring mot en gratis abonnement. Be om din!

Send mitt vitnesbyrd
Før du spør

Ofte stilte spørsmål

Må jeg administrere oversettelsesfiler?

Nei. Det finnes ingen JSON-filer, ingen nøkkeluttrekkingsprosess og ingen byggetid-plugin. Du skriver setningene dine på kilde språket ditt, SDK sender dem til API-et ved den første forespørselen, API-et oversetter dem med AI, og hver påfølgende forespørsel blir betjent fra hurtiglageret. Koden din er den eneste kilde til sannhet.

Hva skjer når jeg endrer kilde teksten?

Kildeteksten er nøkkelen. Endrer du den, får du en ny nøkkel med en frisk AI-oversettelse. Den gamle nøkkelen blir ikke lenger etterspurt, og dashbordet fjerner den etter 30 dager uten bruk. En stavefeilretting fungerer på samme måte: rett den i koden, deploy, og den nye teksten blir oversatt ved første forespørsel.

Hvor mye koster det?

Selvhostet: fullstendig gratis, ubegrensede prosjekter, ingen abonnement og ingen bruksbegrensning — installer Docker-avbildningen, bruk din egen AI-nøkkel. Liker du det? Gi meg et tips! Vert: en fast pris per prosjekt per måned, basert på månedlige aktive brukere — 4 € opp til 1 000, 9 € opp til 5 000, 29 € opp til 50 000, 99 € opp til 500 000 — faktureres månedlig, kan kanselleres når som helst. Det er ingen prising per sete, per ord eller per streng i noen av tilfellene.

Kan jeg eksportere oversettelsene mine?

Ja. Dashbordet har en knapp for "Eksporter JSON" som laster ned alle oversettelsene i prosjektet ditt som én JSON-fil. Eksporten inkluderer alle radene, ikke bare de som er brukt de siste 30 dagene, så det er en fullstendig sikkerhetskopi. Det er ingen binding: dataene dine er alltid bare ett klikk unna.

En vedlikeholder: hva skjer hvis prosjektet stopper?

SDK-ene er under MIT-lisens og forblir tilgjengelige på npm, PyPI, RubyGems og andre registre. Serveren er offentlig under Elastic License 2.0, og protokollen mellom dem er dokumentert, slik at hvem som helst kan kjøre den, forke den eller skrive en server mot den. Oversettelsene dine forblir i én JSON-eksport når som helst. Hvis den hostede tjenesten stopper: installerte apper fortsetter å levere sine mellomlagrede oversettelser, en ny klient faller tilbake til kilde språket, og ved å peke SDK-en til din egen instans med API_URL gjenopprettes alt. Det du ville miste er AI-oversettelsen av nye strenger på i18n-keyless.com — ikke dataene dine eller appen din.

Les hele svaret, med kode
Prøv det selv

Se demoen

Se denne korte videoen for å se i18n-keyless i aksjon