i1n
i1n
Deine App in jeder Sprache. Ein Befehl.

Lokalisierung als Code. Pushe deine Übersetzungsschlüssel, die KI übersetzt in 182 Sprachen, pulle typsichere TypeScript-Definitionen. Entwickelt für Entwickler, KI-Agenten und Produktteams.
Für immer kostenlos · Keine Kreditkarte · i1n.ai
Warum i1n?
Traditionelle i18n bedeutet Dutzende von JSON-Dateien, keine Typsicherheit, stundenlanges Copy-Paste und Deployments, die um 2 Uhr morgens fehlschlagen. Bestehende Tools kosten über 120 $/Monat und erfordern browserbasierte Workflows.
i1n ist anders:
Ein Befehl —
i1n push --translate es,fr,jaund fertigTypsicher — automatisch generierte
i1n.d.tsmit vollständiger IDE-AutovervollständigungKI-nativ — MCP-Server für Cursor, Claude Code, Windsurf. Dein Agent erledigt i18n für dich
Keine Migration — Der Bridge-Modus umschließt dein bestehendes i18next/next-intl/vue-i18n
6x günstiger — Kostenloser Tarif enthalten. Pro für 19 $/Monat statt Lokalise für 120 $/Monat
📦 Installation
# To use the CLI (global)
npm install -g i1n
# To use the SDK + types (in your app)
npm install i1n
# Local CLI usage (optional)
npm install -D i1nUnterstützt npm, pnpm, yarn und bun.
🏁 Schnellstart
# 1. Initialize (auth + auto-detect setup)
i1n init
# 2. Push your translation keys
i1n push
# 3. Pull translations + auto-generated TypeScript types
i1n pull✨ Hauptfunktionen & Befehle
🛠️ i1n init
Interaktives Setup, das deinen Arbeitsbereich vorbereitet.
Authentifizierung per API-Key.
Neu? Wenn du noch keinen Key hast, bietet das CLI klare Anleitungen für den Einstieg.
Erkennt Frameworks automatisch (Next.js, Vite, Expo, Flutter, Rails, etc.).
Speichert die Konfiguration in
i1n.config.json(wird automatisch über.gitignoreignoriert).KI-Orchestrierung: Richtet optional Regeln für deine KI-Coding-Tools ein.
⬆️ i1n push
Synchronisiert deine lokalen Übersetzungen mit i1n.
Erkennt neue Schlüssel und Quellcode-Änderungen.
Smart Translate: Bietet an, fehlende Schlüssel mit einer Kostenschätzung zu übersetzen, bevor fortgefahren wird.
Effiziente Caching-Ebene — wiederholte Übersetzungen kosten nur einen Bruchteil von neuen.
⬇️ i1n pull
Lädt Übersetzungen herunter und generiert typsichere IDs.
Aktualisiert lokale Locale-Dateien in deinem konfigurierten Format.
Generiert
i1n.d.tsfür vollständige IDE-Autovervollständigung.
📊 i1n limits
Echtzeit-Nutzungsverfolgung.
Sieh dir deinen aktuellen Plan und die Kreditnutzung an.
Überwache aktive Sprach-Slots und verfügbare Kapazität.
🧠 i1n setup-ai
Macht deine IDE zum Lokalisierungsexperten.
Generiert projektspezifische Regeln für Cursor (
.mdc), Claude Code (CLAUDE.md), Windsurf und mehr.Stellt sicher, dass KI-Agenten deinen Namenskonventionen, deiner Dateistruktur und deiner Markenstimme folgen.
🔌 i1n mcp
MCP-Server für KI-Coding-Assistenten.
Startet einen Model Context Protocol-Server, mit dem Cursor, Claude Code, Windsurf und andere KI-Assistenten i1n-Befehle direkt aus deiner IDE ausführen können.
# Add to Claude Code
claude mcp add i1n -- npx i1n mcp
# Or add to .mcp.json / cursor config{
"mcpServers": {
"i1n": {
"command": "npx",
"args": ["i1n", "mcp"]
}
}
}7 Tools verfügbar:
Tool | Beschreibung |
| Projektstatus, Plan, Limits und aktive Sprachen abrufen |
| Lokale Übersetzungsdateien mit automatischer Diff-Erkennung pushen |
| Übersetzungen pullen und typsichere TypeScript-Definitionen generieren |
| Schlüssel mit KI in angegebene Sprachen übersetzen |
| Neue Sprachen mit optionaler automatischer Übersetzung hinzufügen |
| Strings aus dem Code extrahieren, als Schlüssel pushen, in alle Sprachen übersetzen |
| Bestehende Übersetzungsschlüssel nach Name oder Wert durchsuchen |
Der Killer-Workflow — sag deinem KI-Agenten "internationalisiere diese Komponente":
Der Agent liest deine Datei und identifiziert hartcodierte Strings
Er ruft
i1n_extract_and_translatemit den extrahierten Strings aufi1n pusht die Schlüssel, übersetzt in alle aktiven Sprachen, generiert Typen
Der Agent schreibt deine Komponente mit
t('key')-Aufrufen um
Eine 60-Minuten-Aufgabe in 30 Sekunden.
📁 Unterstützte Formate
Format | Frameworks | Dateibeispiel |
Nested JSON | i18next, next-intl, vue-i18n |
|
Flat JSON | React Native, Generic |
|
ARB | Flutter / Dart |
|
YAML | Ruby on Rails |
|
Android XML | Native Android |
|
Apple Strings | iOS / macOS |
|
TypeScript | Type-safe JSON |
|
🧩 SDK-Nutzung
Das i1n-Paket enthält ein Runtime-SDK für Web- und Mobile-JS/TS-Projekte. Du kannst es auf zwei Arten verwenden:
Standalone-Modus — Ersetze deine i18n-Bibliothek
Verwende die native i1n-Engine direkt. Keine externen Abhängigkeiten erforderlich.
import { init, t, setLocale } from "i1n";
// Load your translation resources
init({
locale: "en_us",
resources: {
en_us: {
auth: { login: "Login", title: "Welcome back, {user}" },
items_one: "One item",
items_other: "{count} items",
},
es_es: {
auth: { login: "Entrar", title: "Bienvenido de nuevo, {user}" },
items_one: "Un elemento",
items_other: "{count} elementos",
},
},
});
// Autocomplete and type-safety work out of the box after 'i1n pull'
t("auth.login"); // "Login"
// Support for default values (useful during development)
t("new.key", { defaultValue: "Coming soon..." }); // "Coming soon..."
// Variables & Plurals
t("auth.title", { user: "Fran" }); // "Welcome back, Fran"
t("items", { count: 5 }); // "5 items"
// Switch language at runtime
setLocale("es_es");
t("auth.login"); // "Entrar"Die Schlüsselauflösung funktioniert automatisch sowohl mit verschachtelten als auch mit flachen Strukturen — verwende das Format, das dein Projekt bevorzugt.
Bridge-Modus — Behalte deine Bibliothek, füge Typsicherheit hinzu
Verwendest du bereits i18next, vue-i18n oder react-intl? Verbinde es mit einer Zeile mit i1n und erhalte vollständige Autovervollständigung.
import i18next from "i18next";
import { registerI1n, t } from "i1n";
// Set up i18next as usual
await i18next.init({
lng: "en",
resources: {
/* ... */
},
});
// Connect to i1n — one line
registerI1n((key, params) => i18next.t(key, params));
// Now t() uses i18next under the hood, but with strict type checking
t("common.greeting", { name: "World" }); // Powered by i18next, typed by i1nFunktioniert mit jeder Bibliothek:
vue-i18n:
registerI1n((key, params) => i18n.global.t(key, params))react-intl:
registerI1n((key, params) => intl.formatMessage({ id: key }, params))Custom:
registerI1n((key) => myLookup(key))
Pluralisierung
Definiere Pluralvarianten mit _zero, _one, _other-Suffixen:
// In your translation files:
// "items_zero": "No items"
// "items_one": "One item"
// "items_other": "{count} items"
t("items", { count: 0 }); // "No items"
t("items", { count: 1 }); // "One item"
t("items", { count: 5 }); // "5 items"Interpolation
Drei Syntaxen werden universell unterstützt: {var}, {{var}}, %{var}
JavaScript (ohne TypeScript)
Das SDK funktioniert in reinem JS — du erhältst nur keine Autovervollständigung:
import { init, t } from "i1n";
init({ locale: "en_us", resources: { en_us: { greeting: "Hello {name}" } } });
t("greeting", { name: "World" }); // "Hello World"⚛️ React / Preact-Integration
Für eine "Plug and Play"-Erfahrung verwende dieses minimalistische Provider-Muster.
import { createContext, useContext, useState, useEffect } from "react";
import { init, t, getLocale, setLocale as sdkSetLocale } from "i1n";
// 1. Initialize with wordings
// (In a real app, you'd probably import these from your locales folder)
init({
locale: "en_us",
resources: {
/* ... */
},
});
const STORAGE_KEY = "i1n-locale";
const I1nContext = createContext({
locale: "en_us",
setLocale: (l: string) => {},
});
// 2. Persistent Provider
export function I1nProvider({ children, defaultLocale = "en_us" }) {
const [locale, setLocaleState] = useState(() => {
return localStorage.getItem(STORAGE_KEY) || defaultLocale;
});
// Keep SDK in sync
useEffect(() => {
sdkSetLocale(locale);
}, [locale]);
const setLocale = (newLocale: string) => {
localStorage.setItem(STORAGE_KEY, newLocale);
setLocaleState(newLocale);
};
return (
<I1nContext.Provider value={{ locale, setLocale }}>
{children}
</I1nContext.Provider>
);
}
// 3. Simple Hook
export const useI1n = () => ({ t, ...useContext(I1nContext) });Nutzung:
const { t, setLocale } = useI1n();
return (
<div>
<h1>{t("auth.title", { user: "Fran" })}</h1>
<button onClick={() => setLocale("es_es")}>Español</button>
</div>
);Nicht-JS-Plattformen
Flutter-, Android- und iOS-Projekte verwenden das SDK nicht. Sie nutzen die von i1n pull generierten Übersetzungsdateien (.arb, .xml, .strings) mit ihren nativen Lokalisierungssystemen.
🛡️ Entwicklererfahrung
🔒 Datenschutz & Sicherheit
Auto-Ignore:
i1n initfügt sensible Konfigurationsdateien automatisch zu deiner.gitignorehinzu.Secret Management: API-Keys werden nur lokal gespeichert und niemals in die Versionskontrolle eingecheckt.
Verschlüsselte Übertragung: Alle Synchronisationsvorgänge erfolgen über sichere HTTPS-Kanäle.
🔒 Zero-Config Typsicherheit (TypeScript)
Das CLI generiert eine leichtgewichtige Deklarationsdatei (i1n.d.ts), die das i1n-Paket automatisch um die spezifischen Schlüssel deines Projekts erweitert.
Pull: Führe
i1n pullaus. Das CLI generiertlocales/i1n.d.tsund aktualisiert automatisch deinetsconfig.json, damit deine IDE sie sofort findet.Nutzung: Importiere
tausi1nund erhalte vollständige Autovervollständigung + Compile-Time-Prüfung. Kein manuelles Pfad-Mapping erforderlich.
import { t } from "i1n";
// Full autocomplete & compile-time checking
t("auth.login.title");
// ERROR: Argument of type '"auth.login.titlse"' is not assignable...
t("auth.login.titlse");💳 Preise
Plan | Preis | Schlüssel | Sprachen | KI-Übersetzungen/Monat |
Starter | 0 $ | 600 | 2 | 2.000 |
Pro | 19 $/Monat | 5.000 | 5 | 10.000 |
Business | 49 $/Monat | 15.000 | 12 | 20.000 |
Enterprise | Benutzerdefiniert | Benutzerdefiniert | 182 | Benutzerdefiniert |
CLI, SDK und MCP-Server sind in jedem Plan kostenlos. Für Starter ist keine Kreditkarte erforderlich.
Pro lebenslang ab 99 $ — nur für die ersten 200 Nutzer.
📄 Lizenz
MIT — © 2026 i1n.ai
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Pakvothe/i1n-cli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server