CSV pro Gebietsschema
KI-Übersetzung für CSV-Dateien mit separaten Dateien pro Gebietsschema mithilfe der Lingo.dev CLI
Was ist CSV pro Gebietsschema?
CSV pro Gebietsschema ist ein Übersetzungsansatz, bei dem jedes Gebietsschema eine eigene separate CSV-Datei hat, anstatt alle Gebietsschemata in einer einzigen CSV-Datei mit mehreren Spalten zu speichern. Dieses Format ist nützlich, wenn Sie strukturierte Daten mit mehreren Spalten haben (wie Produktkataloge, Benutzerdaten oder Content-Management-Systeme), bei denen jede Zeile einen Datensatz und Spalten verschiedene Felder darstellen.
Zum Beispiel:
id,name,description,created,enabled,sort
1,Welcome,Welcome to our application,2024-01-01,true,1
2,Save,Save your changes,2024-01-01,true,2
3,Error,An error occurred,2024-01-01,true,3
Im Gegensatz zum Standard-CSV-Bucket, der alle Gebietsschemata in einer Datei mit Spalten wie KEY,en,es speichert, verwaltet der csv-per-locale-Bucket separate Dateien für jedes Gebietsschema und bewahrt dabei die ursprüngliche CSV-Struktur mit allen Spalten.
Was ist die Lingo.dev CLI?
Die Lingo.dev CLI ist eine kostenlose Open-Source-CLI zur Übersetzung von Apps und Inhalten mit KI. Sie wurde entwickelt, um herkömmliche Translation-Management-Software zu ersetzen und sich gleichzeitig in bestehende Pipelines zu integrieren.
Weitere Informationen finden Sie unter Übersicht.
Über diesen Leitfaden
Dieser Leitfaden erklärt, wie Sie CSV-Dateien mithilfe des csv-per-locale-Buckets mit der Lingo.dev CLI übersetzen.
Sie lernen Folgendes:
- Ein Projekt von Grund auf erstellen
- Eine Übersetzungspipeline mit separaten CSV-Dateien pro Gebietsschema konfigurieren
- Übersetzungen mit KI generieren
- Gesperrte und ignorierte Schlüssel verwenden
Voraussetzungen
Um die Lingo.dev CLI zu verwenden, stellen Sie sicher, dass Node.js v18+ installiert ist:
❯ node -v
v22.17.0
Schritt 1. Ein Projekt einrichten
Erstellen Sie im Verzeichnis Ihres Projekts eine i18n.json-Datei:
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {}
}
Diese Datei definiert das Verhalten der Übersetzungspipeline, einschließlich der Sprachen, zwischen denen übersetzt werden soll, und wo die lokalisierbaren Inhalte im Dateisystem vorhanden sind.
Um mehr über die verfügbaren Eigenschaften zu erfahren, siehe i18n.json.
Schritt 2. Quell-Locale konfigurieren
Die Quell-Locale ist die ursprüngliche Sprache und Region, in der Ihr Inhalt verfasst wurde. Um die Quell-Locale zu konfigurieren, setzen Sie die Eigenschaft locale.source in der Datei i18n.json:
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {}
}
Die Quell-Locale muss als BCP 47 Language Tag angegeben werden.
Die vollständige Liste der Locale-Codes, die von Lingo.dev CLI unterstützt werden, finden Sie unter Unterstützte Locale-Codes.
Schritt 3. Ziel-Locales konfigurieren
Die Ziel-Locales sind die Sprachen und Regionen, in die Sie Ihren Inhalt übersetzen möchten. Um die Ziel-Locales zu konfigurieren, setzen Sie die Eigenschaft locale.targets in der Datei i18n.json:
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {}
}
Schritt 4. Quellinhalt erstellen
Falls noch nicht geschehen, erstellen Sie eine CSV-Datei für Ihre Quell-Locale. Die Datei sollte Folgendes enthalten:
- Eine Kopfzeile mit Spaltennamen
- Eine oder mehrere Datenzeilen
- Beliebige benötigte Spalten (nicht auf bestimmte Spaltennamen beschränkt)
Die CSV-Datei muss sich an einem Pfad befinden, der die Quell-Locale irgendwo im Pfad enthält (z. B. als Verzeichnisname wie en/ oder als Teil des Dateinamens wie data.en.csv).
Hinweis: Im Gegensatz zum Standard-CSV-Bucket benötigen Sie keine "KEY"-Spalte oder eine Spalte, die der Quell-Locale entspricht. Der csv-per-locale-Bucket behandelt jede Zeile als Datensatz und übersetzt den gesamten Textinhalt in der CSV-Datei, während die Struktur erhalten bleibt.
Schritt 5. Bucket erstellen
-
Fügen Sie in der Datei
i18n.jsonein"csv-per-locale"-Objekt zumbuckets-Objekt hinzu:{ "$schema": "https://lingo.dev/schema/i18n.json", "version": "1.10", "locale": { "source": "en", "targets": ["es"] }, "buckets": { "csv-per-locale": {} } } -
Definieren Sie im
"csv-per-locale"-Objekt ein Array mit einem oder mehrereninclude-Mustern:{ "$schema": "https://lingo.dev/schema/i18n.json", "version": "1.10", "locale": { "source": "en", "targets": ["es"] }, "buckets": { "csv-per-locale": { "include": ["./[locale]/example.csv"] } } }Diese Muster definieren, welche Dateien übersetzt werden sollen.
Die Muster selbst:
- müssen
[locale]als Platzhalter für die konfigurierte Locale enthalten - können auf Dateipfade verweisen (z. B.
"[locale]/data.csv") - können Sternchen als Wildcard-Platzhalter verwenden (z. B.
"[locale]/*.csv")
Rekursive Glob-Muster (z. B.
**/*.csv) werden nicht unterstützt. - müssen
-
Optional können Sie
lockedKeysundignoredKeyskonfigurieren:{ "$schema": "https://lingo.dev/schema/i18n.json", "version": "1.10", "locale": { "source": "en", "targets": ["es"] }, "buckets": { "csv-per-locale": { "include": ["./[locale]/example.csv"], "lockedKeys": ["locked_key_1"], "ignoredKeys": ["ignored_key_1"] } } }lockedKeys: Schlüssel (Spaltenwerte in der ersten Spalte, typischerweise eine ID), die nicht übersetzt werden sollenignoredKeys: Schlüssel, die nicht in den Ziel-Locale-Dateien erscheinen sollen
Schritt 6. LLM konfigurieren
Die Lingo.dev CLI verwendet Large Language Models (LLMs), um Inhalte mit KI zu übersetzen. Um eines dieser Modelle zu verwenden, benötigen Sie einen API-Schlüssel von einem unterstützten Anbieter.
Um so schnell wie möglich loszulegen, empfehlen wir die Verwendung der Lingo.dev Engine – unserer eigenen, gehosteten Plattform, die 10.000 Token kostenlose monatliche Nutzung bietet:
-
Führen Sie den folgenden Befehl aus:
npx lingo.dev@latest loginDadurch wird Ihr Standard-Browser geöffnet und Sie werden zur Authentifizierung aufgefordert.
-
Folgen Sie den Anweisungen.
Schritt 7. Übersetzungen generieren
Führen Sie im Verzeichnis, das die Datei i18n.json enthält, den folgenden Befehl aus:
npx lingo.dev@latest run
Dieser Befehl:
- Liest die
i18n.json-Datei. - Findet die Dateien, die übersetzt werden müssen.
- Extrahiert den übersetzbaren Inhalt aus den CSV-Dateien.
- Verwendet das konfigurierte LLM, um den extrahierten Inhalt zu übersetzen.
- Schreibt den übersetzten Inhalt zurück in separate CSV-Dateien für jede Zielsprache.
Beim ersten Generieren von Übersetzungen wird eine i18n.lock-Datei erstellt. Diese Datei verfolgt, welcher Inhalt übersetzt wurde, und verhindert unnötige erneute Übersetzungen bei nachfolgenden Durchläufen.
Beispiel
en/example.csv (vor der Übersetzung)
id,name,description,created,enabled,sort
1,Welcome,Welcome to our application,2024-01-01,true,1
2,Save,Save your changes,2024-01-01,true,2
3,Error,An error occurred,2024-01-01,true,3
4,Success,Operation completed successfully,2024-01-01,true,4
5,Loading,Please wait while we load your data,2024-01-01,true,5
es/example.csv (nach der Übersetzung)
id,name,description,created,enabled,sort
1,Bienvenida,Bienvenido a nuestra aplicación,2024-01-01,true,1
2,Guardar,Guarda tus cambios,2024-01-01,true,2
3,Error,Ha ocurrido un error,2024-01-01,true,3
4,Éxito,Operación completada con éxito,2024-01-01,true,4
5,Cargando,Por favor espera mientras cargamos tus datos,2024-01-01,true,5
i18n.json
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {
"csv-per-locale": {
"include": ["./[locale]/example.csv"],
"lockedKeys": ["locked_key_1"],
"ignoredKeys": ["ignored_key_1"]
}
}
}
i18n.lock
version: 1
checksums:
e8b273672f895de0944f0a2317670d7c:
0/name: 1308168cca4fa5d8d7a0cf24e55e93fc
0/description: 8de4bc8832b11b380bc4cbcedc16e48b
1/name: f7a2929f33bc420195e59ac5a8bcd454
1/description: 8de4bc8832b11b380bc4cbcedc16e48b
2/name: d3d99b147cc363dc6db8a48e8a13d4c1
2/description: 7cd986af1fe5e89abe7ecffba5413110
Unterschiede zum CSV-Bucket
Der csv-per-locale-Bucket unterscheidet sich in mehreren Punkten vom Standard-csv-Bucket:
-
Dateistruktur:
csv-per-localeverwendet separate Dateien für jede Sprache (z. B.en/example.csv,es/example.csv), währendcsveine einzelne Datei mit mehreren Spalten verwendet (z. B.KEY,en,es). -
Spaltenanforderungen:
csv-per-localebenötigt keine "KEY"-Spalte oder nach Sprachen benannte Spalten. Sie können jede Spaltenstruktur verwenden, die zu Ihren Daten passt. -
Anwendungsfälle:
csv-per-localeist ideal für strukturierte Daten wie Produktkataloge, Content-Management-Systeme oder Datenbanken, bei denen jede Zeile einen Datensatz mit mehreren Feldern darstellt. Der Standard-csv-Bucket eignet sich besser für einfache Schlüssel-Wert-Übersetzungstabellen. -
Dateiänderungen: Beide Buckets ändern Dateien direkt, aber
csv-per-localeerstellt separate Dateien für jede Sprache, währendcsvneue Spalten zur vorhandenen Datei hinzufügt.