Liefern Sie Ihre App in jeder Sprache.
Jeder hartcodierte String in Ihrer Web-, Mobile- oder Desktop-App, gefunden und mit dem Kontext Ihrer App übersetzt. Ein Pull-Request zum Überprüfen und Zusammenführen, von einem einzigen CLI-Befehl oder bei jedem Push.
import { useTranslation } from 'react-i18next';
export function Inbox({ user, unread }) {
const { t } = useTranslation();
return (
<section>
<h1>{t('inbox.welcome_heading', { name: user.name })}</h1>
<p>{t('inbox.unread_summary', { unread })}</p>
<input placeholder={t('inbox.search_placeholder')} />
<button>{unread ? t('inbox.mark_all_read') : t('inbox.refresh')}</button>
</section>
);
}19 Frameworks, von React und Flutter bis Rails, Android und iOS, und die dazugehörigen Tools
Warum localize.dev?
Fünf manuelle Schritte, in einem Durchlauf erledigt
Die Arbeit, die Sie bei jeder Veröffentlichung wiederholen, wird in einem einzigen Durchgang erledigt und wie jede andere Codeänderung überprüft.
- Finden
Normalerweise:Durchsuche den Code nach Strings, Datei für Datei
Jetzt:Jede im AST gefundene Zeichenkette, einschließlich Attribute, Ternaries und Template-Literale
- Name
Normalerweise:Erfinde einen Schlüssel für jeden und hoffe, dass er konsistent bleibt
Jetzt:Semantische Schlüssel aus Komponenten-Kontext; identische Kopien verwenden denselben Schlüssel
- Übersetzen
Normalerweise:Exportiere eine Tabelle, warte auf Übersetzer, füge alles wieder ein
Jetzt:Jede Zielsprache in einem Durchgang übersetzt
- Verifizieren
Normalerweise:Entdecke den defekten {placeholder} in der Produktion
Jetzt:Platzhalter vor dem Schreiben überprüft
- Veröffentlichen
Normalerweise:Alles beim nächsten Release wiederholen
Jetzt:Pull-Request bei jedem Push, damit neue Kopien nie unübersetzt verschickt werden
5 Übergaben der übliche Weg
1 Pull Request mit localize.dev
So funktioniert's
Von fest codiertem Text zu einem lokalisierten Pull Request
Vier deterministische Schritte, wobei das Modell nur dort zum Einsatz kommt, wo Urteilsvermögen hilft: Schlüssel benennen und übersetzen. Scrolle, um eine Komponente durch alle vier zu verfolgen.
01 / 04
Analysiere den AST
Jede Komponente und Seite wird analysiert: JSX, Vue und Svelte-Vorlagen oder HTML. Text, benutzersichtbare Attribute und die Zeichenfolgen, die Ihr Code rendert, werden extrahiert. URLs, Klassennamen und Codebeispiele werden übersprungen.
5
Gefundene Strings
2
von Regel ignoriert
1
Komponente
Kontextbezogene Übersetzung
Übersetzt für den Ort, an dem sich jede Zeichenkette befindet
Wort-für-Wort-Übersetzung scheitert in dem Moment, in dem ein Wort zwei Bedeutungen hat. localize.dev übersetzt jeden String mit dem, was Ihr Projekt darüber aussagt und was die Zielsprache davon erwartet.
Es liest Ihr Projekt
Ein String wird zusammen mit seinem Speicherort übersetzt: die Datei, die Komponente und das Element, in dem er sich befindet, sodass eine Schaltflächenbeschriftung, ein Titel und ein Platzhalter jeweils die richtige Bedeutung erhalten. Ihre Glossardefinitionen und Stilnotizen halten Produktbegriffe und den Ton in jeder Datei gleich.
- Dateipfad
- Komponente
- Element und Attribut
- Glossarbegriffe
- Nicht übersetzbare Namen
- Ton und Anrede
"Post" → de
Es schreibt für jede Sprache
Pluralformen erhalten jede Form, die die Locale benötigt, auch mit zwei Zählungen in einem Satz, 1. und 2. folgen den eigenen Ordnungszahlen jeder Sprache, Links und Fettdruck verschieben sich dorthin, wo die Grammatik sie platziert, und die Anrede passt zum gewählten Ton für jeden Markt.
- CLDR-Pluralregeln
- Ordnungszahlen
- Wortstellung
- Formelles oder informelles Sie
- Kurze UI-Formulierungen
"{count} Dateien" → de
Legen Sie Glossarbegriffe, zu behaltende Namen und Stilnotizen pro Projekt im Dashboard fest. Jeder Lauf auf diesem Repository verwendet sie.
Kontinuierliche Lokalisierung
Jeder Push bleibt lokalisiert
Fügen Sie die GitHub Action hinzu und neue Texte werden nie unübersetzt ausgeliefert. Jeder Lauf aktualisiert denselben Branch und dieselbe Pull Request, sodass Sie nie mit einem Stapel von PRs oder Konflikten zwischen den Läufen enden.
- Führe einen Commit mit den Komponenten und allen Sprachdateien durch.
- Richten Sie die i18n-Bibliothek Ihres Frameworks ein, falls noch keine vorhanden ist.
- Der R-Body listet jede Ersetzung und jede übersprungene Zeichenkette auf.
- Übersetzungen überprüft von Crowdin, Phrase, Lokalise oder Transifex
- sehr oft landet auf dem Überprüfungs-Tab des Projekts
- Prüfung, die Pull Requests mit unübersetztem Inhalt ablehnt
Lokalisiere: 12 neue Strings in 4 Sprachen
localize-dev/mainmain
name: Localize
on:
push:
branches: [main]
pull_request:
types: [opened, synchronize]
workflow_dispatch: # "Run workflow" button in the Actions tab
permissions:
contents: write # push the localize-dev/<branch> branch
pull-requests: write # open or update the localization PR
# One run per branch at a time; a newer push supersedes the running one.
concurrency:
group: localize-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
jobs:
localize:
runs-on: ubuntu-latest
timeout-minutes: 60
# Skip localize.dev's own branches, and fork PRs (their token is read-only).
if: >-
!startsWith(github.head_ref || github.ref_name, 'localize-dev/') &&
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository)
steps:
- name: Checkout
uses: actions/checkout@v5
with:
# On PRs, scan the branch itself rather than the merge commit.
ref: ${{ github.head_ref || github.ref_name }}
- name: Localize
uses: ufortstephen/autolocalize-action@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
api_key: ${{ secrets.LOCALIZEDEV_API_KEY }}
target_locales: 'es,fr,de,ja'
# src_dir: 'src' # default: your framework's (src, app/views, resources/views, lib…)
# locales_path: 'public/locales/{locale}/common.json' # default: your framework's
# working_directory: 'apps/web' # monorepo: localize just this appMenschliche Überprüfung
Muttersprachler genehmigen, und ihre Korrekturen bleiben bestehen
Maschinelle Übersetzungen sind ein erster Entwurf. Jede Sprache erhält ihren eigenen Prüfer, und jede Korrektur, die er vornimmt, wird für den nächsten Durchlauf gespeichert.
- Das Modell markiert unsichere Übersetzungen mit einem Grund, sodass Übersetzer dort anfangen können.
- Ein Übersetzer pro Sprache, per E-Mail einmal pro Ausführung.
- Genehmigen oder bearbeiten, inklusive Pluralformen, mit einem Link zur Quelldatei.
- Änderungen werden in den offenen Pull Request übernommen.
- Notizen für den nächsten Übersetzer und im Glossar vorgeschlagene Begriffe aus wiederholten Korrekturen.
12 neue spanische Übersetzungen zum Überprüfen
Gesendet an den spanischen Übersetzer des Projekts, wenn der Lauf abgeschlossen war
Bestellung aufgeben
checkout.place_order
Bestellung aufgeben
Genehmigt{{count}} Artikel in deinem Warenkorb
checkout.items
{{count}} Artikel in deinem Warenkorb
GenehmigenZur Kasse
checkout.heading
Bezahlung
Bearbeitet
Die Übersetzer wechseln ständig checkout zu pago.
Vor dem Release
Erkennen Sie die Probleme, bevor Ihre Benutzer es tun.
Testen Sie es mit Ihrem eigenen Code, finden Sie Layouts, die bei längerem Text oder von rechts nach links brechen, stoppen Sie nicht übersetzte und veraltete Texte beim Pull Request, weisen Sie Prüfer auf die Übersetzungen hin, die sie benötigen, und bringen Sie Ihre Dokumente mit.
Sehen Sie es zuerst in Ihrem Code
Verbinden Sie ein Repository und erhalten Sie einen Vorschau-Pull-Request: bis zu 200 Strings aus Ihrem Standard-Branch, auf unserer Seite lokalisiert. Kein Workflow, Schlüssel oder Checkout nötig.
localize.dev-Vorschau: 184 Strings auf Deutsch
localize-dev/previewmain
Eine Prüfung, die es so lässt
Die localize-dev-Prüfung scheitert an einem Pull-Request, der Hardcoded-Text hinzufügt, eine Sprache vernachlässigt oder den englischen Text ändert, dessen Übersetzungen nicht mithalten, und zeigt die Zeile an. Läuft in CI ohne API-Schlüssel.
i18n-Prüfung fehlgeschlagen
src/Cart.tsx:7 "Free shipping today" ist nicht übersetzt
locales/de.json 3 Nachrichten haben keine deutsche Übersetzung
locales/en.json cart.pay wurde seit der Übersetzung geändert
Finden Sie Layouts, die brechen, bevor Sie übersetzen
localize-dev run --pseudo erzeugt eine gedehnte, betonte Pseudosprache. Beschnittene Buttons werden sichtbar, und auch Text, der noch hartcodiert ist. Kostenlos, ohne Modell.
Überprüfen Sie zuerst die zweifelhaften
Das Modell markiert Übersetzungen, bei denen es unsicher ist, zusammen mit dem Grund. Der Überprüfungs-Reiter öffnet sich für diese; genehmigen Sie den Rest mit einem Klick.
Buchen → Buchenes
Benötigt einen Blick: eine Reservierung oder ein Roman? Annahme: Reservierung aufgrund des Buttons.
Rechts-nach-links-Layouts, vor dem Release geprüft
Mit Arabisch oder Hebräisch in Ihren Sprachen richten die Kontrolllisten die Ränder und Ausrichtungen an eine Seite aus, und localize-dev rtl --fix tauscht die sicheren durch logische Ausrichtungen, die sich automatisch umdrehen.
- ml-4 text-align-left gerundet-links
+ ms-4 text-align-start gerundet-rechts
Ihre Dokumente, in jeder Sprache auch
localize-dev übersetzt Markdown- und MDX-Inhalte, Dokumente, Blogbeiträge und rechtliche Seiten in eine Kopie pro Sprache. Code, Links und Komponenten bleiben exakt wie geschrieben; nur bearbeitete Dokumente werden neu erstellt.
docs/intro.mdintro.es.mdintro.fr.mdintro.de.mdFunktioniert, wo Sie entwickeln
Eine Engine für Web, Mobile und Desktop
Websites und serverseitig gerenderte Apps, iOS- und Android-Apps, Desktop-Apps und die gemeinsam genutzten Komponentenbibliotheken. Jede erhält die i18n-Bibliothek, die ihr Framework erwartet.
01 / 04
Web-Apps
React · Next.js · Angular · Vue · SvelteKit · Astro
Free shipping on orders over $50





Integrationen
Dein Framework, deine Tools
Jedes Framework erhält eine eigene i18n-Bibliothek, die für dich eingerichtet ist. Übersetzungen gelangen in den Pull-Request, deine Übersetzungsplattform oder die bereits vorhandenen Lokalisierungsdateien.
Frameworks
Übersetzungsplattformen und CI
Bereits lokalisiert? localize-dev translate füllt die Lokalisierungsdateien jedes Stacks aus. Vorhandene Lokalisierungsdateien
Von deinem Terminal aus
Sieh dir jede Änderung an, bevor sie passiert
Führe es zuerst lokal aus. --dry-run zeigt jeden Ersatz und jede übersprungene Zeichenkette mit Grund, damit dich in der Überprüfung nichts überrascht.
localize-dev scanlocalize-dev run --dry-runlocalize-dev run --pseudolocalize-dev checklocalize-dev prlocalize-dev translate$ npx localize-dev run -l es,fr,de
🔍 Scannen von src/ (Zielsprachen: es, fr, de)
src/checkout/Summary.tsx
L6 Bestellübersicht → {t('checkout.order_summary_heading')}
L12 "Rabattcode" → {t('checkout.discount_code_placeholder')}
L15 Bestellung aufgeben → {t('checkout.place_order_button')}
src/legacy/PromoBanner.tsx:9 übersprungen "Kostenloser Versand bei Bestellungen über 50 $": Klassenkomponente
✅ 3 Zeichen in 1 Datei lokalisiert (3 neue Schlüssel, 0 wiederverwendet). 5 Dateien geschrieben.
$
Wie die Engine funktioniert
Regeln übernehmen die Umschreibung. Das Modell benennt nur die Schlüssel und übersetzt.
Minimale Unterschiede
Änderungen werden an genauen AST-Offsets eingefügt. Formatierung und Importreihenfolge bleiben wie sie sind, damit Prüfer nur die geänderten Zeilen sehen.
Vollständige Sätze
Text, Ausdrücke, Links und Fettdruck verschmelzen zu einer Nachricht, damit Übersetzer den vollständigen Satz sehen, anstatt Fragmente.
Hallo {name}, Sie haben {count} elemente
Überspringt, was sicher nicht geändert werden kann
Zeichenketten, die die Engine nicht sicher umschreiben kann, wie die in Klassenkomponenten oder außerhalb eines Composable, bleiben unverändert und werden mit dem Grund gemeldet.
Idempotent
Führe es bei jedem Push aus. Eingeschlossene Strings bleiben unverändert und identische Kopien verwenden ihren bestehenden Schlüssel.
Nichts zu hosten
Übersetzungen laufen auf dem gehosteten localize.dev-Modell in jedem Plan. Sie benötigen keine GPUs, Prompts oder Anbieter-Keys. Ein API-Schlüssel ist ausreichend.
Kein Lock-in
Die Ausgabe ist die i18n-Bibliothek, die dein Framework bereits verwendet, mit einfachen Locale-Dateien in deinem Repo. Hör morgen auf, localize.dev zu verwenden, und deine App funktioniert weiterhin, inklusive Übersetzungen.
- react-i18next
- vue-i18n
- ngx-translate
- svelte-i18n
- ember-intl
- Rails I18n
- gettext
- strings.xml
- Flutter ARB
Daten, Zahlen und Geld auch
toLocaleDateString('en-US'), Intl-Formatter und `$${{price}}` werden so umgeschrieben, dass sie der Sprache der App folgen, sodass $1.234,50 für einen deutschen Besucher als 1.234,50 € angezeigt wird.
Sicherheit & Datenschutz
Was Ihren Computer verlässt
Nur die übersetzten Strings werden an die API gesendet. Deine Quelldateien bleiben auf deinem Rechner oder CI-Runner.
Strings, nicht Quellcode
Nur extrahierte Strings werden gesendet, mit Dateipfad für Kontext. Ganze Dateien verlassen nie Ihren Rechner.
Lokal, wenn Sie möchten
Scans und Offline-Läufe finden auf Ihrem Rechner statt, ohne API-Schlüssel und Netzwerkaufrufe, und sie verbrauchen Ihre Kontingente nicht.
Hash-API-Schlüssel
Nur ein Hash jeder Schlüssel wird gespeichert. Geheimnisse werden einmal angezeigt, und das Widerrufen wirkt sofort.
Alles oder nichts
Wenn ein Lauf Ihren Plan überschreiten würde, stoppt er, bevor er etwas schreibt, sodass Ihr Code nie halb geschrieben bleibt.
Preise
Kostenlos starten. Upgrade, wenn dein Text wächst.
Free
$0für immer
Alles, was Sie brauchen, um ein Nebenprojekt zu lokalisieren oder es an einer echten Codebasis auszuprobieren.
- 1.000 Zeichenfolgen / Monat
- 3 Zielsprachen
- CLI and GitHub Action
- Der Offline-Modus und Scans verbrauchen nie Ihr Kontingent
Pro
Am beliebtesten$100/Jahr
Jährlich abgerechnet
Für Produkte, die in mehreren Märkten ausgeliefert werden.
- Unbegrenzte Zeichenfolgen
- 5 Zielsprachen
- Pull-Requests bei jedem Push
- Nutzungs-Dashboard und mehrere API-Schlüssel
Team
$200/Jahr
Jährlich abgerechnet
Enthält 3 Mitglieder · +50 $/Jahr pro zusätzlichem Mitglied
Für Produktteams, die in vielen Märkten ausliefern.
- Unbegrenzte Zeichenfolgen
- Unbegrenzte Zielsprachen
- 3 Mitglieder inklusive, dann 50 $/Jahr pro Person
- Unbegrenzte Arbeitsbereiche, Teilen des Plans
- Gemeinsame Projekte, Schlüssel und Nutzung
- Prioritäts-Support
Häufige Fragen
Fragen, die Teams zuerst stellen
Ist es nur für React-Web-Apps?+
Nein. Es funktioniert mit React und Next.js, React Native und Expo, Flutter, Angular, Vue und Nuxt, Svelte und SvelteKit, Astro, Solid, Qwik, Lit, Ember, Electron und Tauri, einfachen HTML-Seiten, Rails-, Django- und Laravel-Vorlagen, Android-Layouts, Jetpack Compose und View-Code sowie iOS- und macOS-Apps in SwiftUI und UIKit. Es richtet die passende i18n-Bibliothek für jede ein: react-i18next, ngx-translate, vue-i18n oder @nuxtjs/i18n, svelte-i18n, ember-intl, Flutter’s gen-l10n, Rails I18n, Django’s gettext, Android-Ressourcen oder ein kleines Skript für statische Seiten.
Wir haben bereits i18n eingerichtet. Ist es trotzdem nützlich?+
Ja. localize-dev translate füllt die fehlenden Übersetzungen in den bereits vorhandenen Locale-Dateien auf, in jedem Stack: JSON (i18next, react-intl, vue-i18n, ngx-translate), Rails YAML, gettext .po, Flutter .arb, Android strings.xml, Apple String Catalogs und .strings sowie Browser-Erweiterungsnachrichten. Der Code wird nicht angefasst, bestehende Übersetzungen werden nicht geändert, und in CI wird ein Pull-Request geöffnet, sobald neue Schlüssel landen.
Verlässt mein Code meinen Computer?+
Nur die zu übersetzenden Zeichenfolgen werden mit ihrem Dateipfad und ihrem Speicherort (die Komponente und das Element wie ein Button oder eine Überschrift) als Kontext an die localize.dev API gesendet. Ganze Dateien werden nie gesendet. Das Umschreiben erfolgt lokal (oder auf Ihrem eigenen CI-Runner), und Scans und Offline-Läufe berühren nie das Netzwerk.
Sind maschinelle Übersetzungen gut genug zum Ausliefern?+
Sie sind ein starker erster Entwurf mit korrekten Platzhaltern und konsistenten Schlüsseln. Für regulierte oder markenkritische Texte weisen Sie pro Sprache einen Prüfer zu: Sie erhalten eine E-Mail, wenn ein Lauf abgeschlossen ist, genehmigen oder korrigieren jede Übersetzung auf der Registerkarte "Überprüfen", und Korrekturen fließen in den offenen Pull Request und jeden späteren Lauf ein. Immer wiederkehrende Korrekturen werden mit einem Klick zu Glossarbegriffen. Das Modell markiert auch Übersetzungen, bei denen es sich nicht sicher ist, mit seiner Begründung, sodass Prüfer mit diesen beginnen.
Was passiert, wenn wir localize.dev nicht mehr verwenden?+
Ihre App funktioniert weiter. Die Ausgabe ist die i18n-Bibliothek, die Ihr Framework bereits verwendet (react-i18next, vue-i18n, ngx-translate, Rails I18n, gettext, Android-Zeichenfolgenressourcen, Apple String Catalogs…) mit einfachen Locale-Dateien in Ihrem Repository. Es gibt keine localize.dev-Laufzeit, kein SDK und keinen Proxy, der entfernt werden müsste.
Füge ein Komponent oder eine Seite ein. Sieh es in zwei Sprachen.
Kein Konto nötig. Der Playground nutzt denselben Motor wie die CLI.

