Pijnloze i18n, uitgebreid naar je eigen horizon zonder duizenden dollars uit te geven.
Volledig gratis. Onbeperkte projecten, alle 48 talen, geen vervaldatum, geen licentiesleutel nodig.
Onbeperkte projecten. Alle 48 talen. Geen vervaldatum.
- Alle 48 talen, onbeperkte vertalingen
- Het dashboard, de MCP-server, elke SDK
- Niets om te kopen, niets om in te voeren behalve je AI-sleutel
i18n is nu moeiteloos, je kunt het ervaren. Ik vind het niet erg om er een fooi voor te krijgen.
- Als je het voelt
- Als je er zin in hebt
- Van 1 tot 1 miljoen dollar, niet meer
Veilige betaling via Stripe. Een licentiesleutel komt in je inbox terecht — het dempt de donatieprompt in het dashboard.
Wat je krijgt
- Onbeperkte projecten, alle 48 talen, geen vervaldatum
- Onbeperkte vertalingen, geen gebruikerslimiet
- Het dashboard, de MCP-server voor je agents, elke SDK
- Één container, één SQLite-bestand om te backuppen
- Een licentie gecontroleerd offline: je server belt nooit naar huis
- Elke update, voor het leven: docker compose pull
Wat je meeneemt
- Een machine met Docker: een VPS van €4 is genoeg
- Een AI API-sleutel (Mistral, OpenAI, Anthropic, Google of een andere OpenAI-compatibele provider). Vertalingen worden op je eigen account uitgevoerd, voor een paar cent per app
- Vijf minuten
Ondersteuning is via e-mail, met maximale inzet. Heb je iemand nodig die beschikbaar is? De gehoste abonnementen zijn voor jou.
Hoe het werkt
Installeer, maak de admin aan, plak je AI-sleutel. Elk project is gratis, voor altijd.
Met ONCE — een verse server, een domein, vijf minuten
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
Met Docker Compose — elke machine waarop Docker draait
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
Wijs vervolgens uw SDK naar uw server:
I18nKeyless.init({
API_KEY: "your-project-key",
API_URL: "https://i18n.example.com",
// …
});De volledige gids: https://docs.i18n-keyless.com/docs/guides/self-hosting
Waarom een donatie?
Omdat je zelf de VPS en de AI API-sleutel beheert. Er is geen reden waarom ik je voor een abonnement zou laten betalen. Ik haat abonnementen zelf ook. Dus in plaats daarvan: jij bepaalt wat de software voor jou waard is, en ik blijf het bouwen.
De afbeelding installeert gratis en voert onbeperkte projecten uit, met elke taal en zonder vervaldatum.
Vragen voordat je koopt? Schrijf naar ons
i18n instellen, houd je codebase schoon en levert snel
Er bestaan meerdere PITA's met de huidige i18n-oplossingen. De pijnen zijn zo groot dat je het i18n zo lang mogelijk uitstelt.
Het verbruikt de tijd die je op het strand zou moeten doorbrengen
Stel het sleutelsysteem in: minimaal 1 uur senior ontwikkelaarstijd
Heen en weer voor elke nieuwe sleutel: 1 minuut per sleutel, x500 sleutels, x2 talen = 17 uur
Met i18n-keyless hoef je je geen zorgen te maken over het i18n-systeem. Je kunt naar het strand gaan en een mojito bestellen.
Vandaag gebruiken de meeste systemen sleutels om de tekst te vertalen
Het doet pijn om te genereren. Het doet pijn om te onderhouden.
Wanneer je een tekst in de app ziet en je wilt deze bijwerken, moet je de overeenkomstige sleutel vinden.
Met i18n-keyless hoef je je geen zorgen te maken over het i18n-systeem. Gebruik je brein voor iets interessanters.
Laat de vertalingen aan de AI
Met het sleutelsysteem moet je de vertalingen in de app beheren.
Anders zien uw gebruikers someheader.welcome.title in hun app.
Met i18n-keyless zie je in het ergste offline-scenario onvertaalde echte woorden. In een normaal tempo maakt het i18n-systeem je niets uit. Schrijf gewoon goede koppen, focus op marketing en genereer verkopen.
Codebases zijn mooi... tot de infectie van i18n-sleutels
Met het sleutelsysteem, wanneer je de code en de inhoud leest, moet je de sleutels lezen, geen natuurlijke taal.
Soms moet je een correctie aanbrengen omdat een zin niet grammaticaal correct is. Maar je weet dat niet omdat je de sleutels leest.
Met i18n-keyless hoef je je niet te bekommeren over het i18n-systeem. De codebasis blijft mooi.
MCP-server om aan al je i18n-behoeften te voldoen
Zes andere redenen waarom het systeem zo geoptimaliseerd is voor agentisch coderen.
Geen naam om te verzinnen
Een sleutel is een naamgevingsbeslissing zonder goed antwoord. Twee agenten schrijven login.submit en auth.button.send voor dezelfde knop. Zonder sleutels is er geen beslissing om te nemen.
Één bestand om te bewerken, niet twintig
Een sleutelgebaseerde wijziging beïnvloedt de component en alle locale JSON-bestanden, en agents vergeten bestanden. Hier is een kopie-wijziging een bewerking van één bestand.
Geen mergeconflicten in agentenvloten
Vijf agenten op vijf branches bewerken allemaal en.json: een gegarandeerd conflict. Er is geen gedeeld bestand, dus worktrees en achtergrondagenten botsen nooit.
Goedkoop in tokens
Om een sleutel opnieuw te gebruiken, moet een agent de lokale bestanden in de context laden bij elke bewerking. Sleutelloze lading doet niets: de tekst staat direct in het component.
Leesbare verschillen
De pull request toont echte zinnen. Een mens of een reviewagent kan de kopie beoordelen zonder te hoeven graven naar wat een sleutel betekent.
Één regel in je CLAUDE.md
Elke i18n-regel die je schrijft, is een regel die de agent kan overtreden. Deze regel heeft slechts één regel nodig — en de fallback is de echte tekst, dus een fout kan geen a.b.c op het scherm tonen.
De enige i18n-regel die je agent nodig heeft
# CLAUDE.md Write the UI copy in English and wrap it in <T>…</T> from i18n-keyless-react. That is the whole i18n setup.
Jouw agent kan het bedienen, niet alleen schrijven
Via de MCP-server geeft de agent ontbrekende vertalingen weer, leest er één, overschrijft een slechte of importeert de kopie die je al hebt — met zijn eigen OAuth-inloggen, zonder dat je een sleutel hoeft te plakken.
Lees de MCP-gidsWereldwijd lanceren vanaf dag één
Stop met het uitstellen van i18n vanwege complexiteit. Implementeer in 5 minuten, niet in dagen. Handhaaf je ontwikkelingssnelheid alsof i18n niet is geïmplementeerd.
- 5-minutenimplementatie. Geen grap.
Een eenvoudig configuratieobject en je bent klaar.
- De ontwikkelingssnelheid handhaven
Codeer alsof i18n helemaal niet geïmplementeerd is.
- Verzending naar wereldwijde markten
Geen refactoring nodig bij het schalen naar nieuwe talen.
- SSR & SEO klaar
Werkt met Next.js, Remix, TanStack Start en Astro. Server-side rendering in elke taal voor zoekmachines — dezelfde 5-minutenopstelling.
Traditioneel i18n
i18n-keyless
Het is eenvoudig in te stellen
Alleen het eenvoudigste configuratieobject en je bent klaar om wereldwijd te gaan.
En nog meer, je agent zal het voor je instellen.
1. Basisinstellingen
import * as I18nKeyless from "i18n-keyless-react";
I18nKeyless.init({
API_KEY: "YOUR_API_KEY",
storage: window.localStorage,
languages: {
primary: "en",
supported: ["en", "fr"],
},
});2. Componentgebruik (Hier React; hetzelfde in Vue, Angular, Flutter, Swift en 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 gebruik (hier Node.js; dezelfde aanroep in Laravel, Rails, Python en 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. Voor tekst buiten componenten
import { getTranslation } from "i18n-keyless-react";
export default function Navigation() {
return (
<HomeTabs.Navigator>
<HomeTabs.Screen
options={{ tabBarLabel: getTranslation("Welcome") }}
name="WELCOME"
/>
</HomeTabs.Navigator>
);
}5. Kies je SDK: één installatielijn, dezelfde API overal
- 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
Hoe vertalingen werken
i18n-keyless is een bibliotheek, gecombineerd met een API-service, waarmee u uw tekst kunt vertalen zonder sleutels te hoeven gebruiken.
Als de vertaling niet wordt gevonden, zal er een asynchrone ophaling naar de I18nKeyless API plaatsvinden om de vertaling te verkrijgen via een AI API-oproep.
Deze operatie wordt meestal uitgevoerd in de ontwikkelmodus, terwijl je aan het coderen bent. Als je er een hebt gemist, zal in de productie alleen de eerste gebruiker die de vertaling mist een glitch zien, daarna is het direct beschikbaar voor gebruikers over de hele wereld.
Je winkeloverzicht in elke taal, bij elke release
Elke update betekent nieuwe release-opmerkingen, een beschrijving en trefwoorden — voor elke taal op beide winkels. Dat is wat je tegenhoudt om talen toe te voegen. Niet de app.
- Release-opmerkingen voor elke taal, in één aanroep
Schrijf de update één keer. awaitForTranslation geeft deze terug in elke taal waarin je verkoopt, en je winkelconfiguratie voedt het naar EAS of fastlane.
- 48 talen, in kaart gebracht naar de App Store-slots
pt-BR en pt-PT zijn twee lijsten; en-GB, en-AU en en-CA zijn drie. toAppStoreLocale plaatst elke vertaling op de juiste plek.
- Repareer een slechte vertaling zonder release
In de app is één override in het dashboard tegelijk actief — geen hotfix-build, geen storebeoordeling. In de lijst, voer de push opnieuw uit.
- Niet geprijsd per woord
Een vertaler rekent ongeveer €0,10 per woord. 2.000 strings vermenigvuldigd met 10 talen is een budget dat een solodeveloper niet heeft. Hier worden woorden niet geteld.
Het volledige recept voor een 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 } };
};Dezelfde oproep schrijft fastlane-metadata-bestanden voor Google Play. Hoofdletters zijn adviserend: zet de limiet in de context en controleer de lengte voordat je pusht.
Interactieve sandbox
Bekijk hoe i18n-keyless werkt in realtime
Open een live en bewerkbaar StackBlitz-project om te zien hoe vertalingen zich oplossen terwijl je typt.
Waarom heb ik dit gebouwd
Ik stelde internationalisering altijd uit tot mijn klant het zo graag wilde dat ik geen andere keuze had. Ik haat het om code te lezen met i18n-sleutels erin, en ik haat het om JSON-bestanden te onderhouden net zo erg als het zien van hoe duur i18n-vertalingsproviders zijn. Dus moest ik mijn eigen bouwen, en IK BEN ER HELEMAAL VERLIEFD OP. Al mijn apps zijn nu standaard i18n.
Arnaud Ambroselli
Oprichter van i18n-keyless
Wil je de jouwe toevoegen?
Een getuigenis tegen een gratis abonnement. Vraag de jouwe aan!
Stuur mijn getuigenisVeelgestelde vragen
Moet ik vertaalbestanden beheren?
Nee. Er zijn geen JSON-bestanden, geen sleutel-extractiestap en geen build-time plug-in. Je schrijft je zinnen in je brontaal, de SDK stuurt ze naar de API bij de eerste aanvraag, de API vertaalt ze met AI en elke daaropvolgende aanvraag wordt uit de cache bediend. Jouw code is de enige bron van waarheid.
Wat gebeurt er als ik de brontekst wijzig?
De brontekst is de sleutel. Verander je deze, dan krijg je een nieuwe sleutel met een verse AI-vertaling. De oude sleutel wordt niet meer opgevraagd en het dashboard ruimt deze na 30 dagen zonder gebruik op. Een typefout corrigeren werkt hetzelfde: corrigeer deze in de code, deploy en de nieuwe tekst wordt vertaald bij de eerste aanvraag.
Hoeveel kost het?
Zelf gehost: volledig gratis, onbeperkte projecten, geen abonnement en geen gebruikslimiet — installeer de Docker-image, gebruik je eigen AI-sleutel. Vind je het leuk? Geef me een fooi! Gehost: één vaste prijs per project per maand, gebaseerd op actieve gebruikers per maand — €4 tot 1.000, €9 tot 5.000, €29 tot 50.000, €99 tot 500.000 — maandelijks gefactureerd, opzegbaar wanneer je maar wilt. Er is geen prijs per stoel, per woord of per string in beide gevallen.
Kan ik mijn vertalingen exporteren?
Ja. Het dashboard heeft een knop "Exporteer JSON" die alle vertalingen in je project downloadt als één JSON-bestand. De export bevat alle rijen, niet alleen degenen die in de afgelopen 30 dagen zijn gebruikt, dus het is een volledige back-up. Er is geen lock-in: je gegevens staan altijd één klik verwijderd.
Één onderhouder: wat gebeurt er als het project stopt?
De SDK's zijn onder de MIT-licentie en blijven beschikbaar op npm, PyPI, RubyGems en andere registers. De server is publiek onder de Elastic License 2.0 en het protocol tussen hen is gedocumenteerd, dus iedereen kan het uitvoeren, forken of een server ertegen schrijven. Jouw vertalingen blijven in één JSON-export op elk moment. Als de gehoste service stopt: geïnstalleerde apps blijven hun gecachte vertalingen serveren, een nieuwe client valt terug op de brontaal, en door de SDK naar je eigen instantie met API_URL te wijzen wordt alles hersteld. Wat je zou verliezen is de AI-vertaling van nieuwe strings op i18n-keyless.com — niet je data of je app.
Lees het volledige antwoord, inclusief de codeBekijk de demo
Bekijk deze korte video om i18n-keyless in actie te zien