Konfiguration
Konfigurationsdokumentation für die Datei gt.config.json
Übersicht
Die Datei gt.config.json
dient zur Konfiguration der GT-Einstellungen Ihres Projekts. Sie sollte im Stammverzeichnis des Projekts liegen.
Der CLI-Einrichtungsassistent npx gtx-cli init
erstellt die Datei gt.config.json
automatisch in Ihrem Projekt.
Konfiguration
Die Datei gt.config.json
akzeptiert unter anderem die folgenden Eigenschaften:
-
defaultLocale
: Die Standardsprache (Locale) deines Projekts. In dieser Sprache ist dein Quellinhalt verfasst. Gleichzeitig dient sie als Fallback-Locale für dein Projekt (bei Verwendung vongt-next
odergt-react
). -
locales
: Ein Array der Locales deines Projekts. Das sind die Sprachen, in die du dein Projekt übersetzen möchtest. Siehe die unterstützten Locales für weitere Informationen. Wenn dugt-next
odergt-react
verwendest, sind dies außerdem die Locales, die deine App unterstützt. -
files
: Ein Objekt mit Informationen zu den Inhalten, die du übersetzen möchtest. -
stageTranslations
: Ein optionales boolesches Flag, das angibt, ob dein Projekt für eine menschliche Überprüfung konfiguriert ist. -
src
: Ein optionales Array von Dateiglobmustern für deine Quelldateien. Standardmäßig:
[
"src/**/*.{js,jsx,ts,tsx}",
"app/**/*.{js,jsx,ts,tsx}",
"pages/**/*.{js,jsx,ts,tsx}",
"components/**/*.{js,jsx,ts,tsx}"
]
dictionary
: Ein optionaler String, der den relativen Pfad zur Wörterbuchdatei angibt.
Zur Validierung deiner gt.config.json
kannst du das JSON Schema für die CLI verwenden.
Füge es am Anfang deiner gt.config.json
ein:
{
"$schema": "https://assets.gtx.dev/config-schema.json",
}
Hier ist ein Grundgerüst der Datei gt.config.json
:
{
"$schema": "https://assets.gtx.dev/config-schema.json",
"defaultLocale": "en",
"locales": ["fr", "es"],
"files": {
"gt": {
"output": "..."
},
"json": {
"include": [...]
},
"mdx": {
"include": [...]
},
"md": {
"include": [...]
}
},
"src": [
"src/**/*.{ts,tsx}",
],
"dictionary": "./dictionary.json"
}
Locale-Aliasing
Wenn du ein Locale aliasen möchtest (z. B. cn
statt zh
), kannst du eine benutzerdefinierte Zuordnung in der Datei gt.config.json
festlegen.
{
"customMapping": {
"cn": {
"code": "zh",
}
}
}
Du kannst auch unterschiedliche Attribute für das aliasede Locale festlegen.
{
"customMapping": {
"cn": {
"code": "zh",
"name": "Mandarin",
}
}
}
files
Unterstützte Dateitypen
files
sollte für jeden Dateityp, den Sie übersetzen möchten, einen Schlüssel enthalten.
Sie können Ihr Projekt so konfigurieren, dass verschiedene Dateitypen kombiniert werden und alle übersetzt werden.
Derzeit unterstützen wir die folgenden Dateitypen:
gt
: Allgemeine Übersetzungsdateien.json
: JSON-Dateien.yaml
: YAML-Dateien.mdx
: Markdown-Komponenten (MDX)-Dateien.md
: Markdown-(MD)-Dateien.js
: JavaScript-Dateien.ts
: TypeScript-Dateien.
Jeder Dateityp sollte einem Objekt entsprechen, das einen oder mehrere der folgenden Schlüssel enthält:
include
exclude
transform
output
include
Wenn verwendet, sollte der Wert des Schlüssels include
ein Array von Globmustern sein, die die Dateien abdecken, die Sie übersetzen möchten.
Sie müssen den Platzhalter [locale]
in Ihren Globmustern verwenden, damit Quelldateien korrekt gefunden und übersetzte Dateien am richtigen Ort gespeichert werden.
Das CLI-Tool ersetzt den Platzhalter [locale]
durch den Wert von defaultLocale
, wenn nach übersetzbaren Dateien gesucht wird.
Das CLI-Tool speichert übersetzte Dateien im entsprechenden Pfad, wobei der Platzhalter [locale]
durch den Zielsprachcode ersetzt wird.
{
"include": ["docs/[locale]/**/*.json"]
}
exclude
Wenn verwendet, sollte der Wert des Schlüssels exclude
ein Array aus Globmustern sein, die den Dateien entsprechen, die Sie von der Übersetzung ausschließen möchten.
Das Muster entspricht dem include
-Muster, mit der Ausnahme, dass der Platzhalter [locale]
optional ist. Wenn er angegeben ist, wird er durch den Wert von defaultLocale
ersetzt.
{
"exclude": ["docs/[locale]/exclude/**/*.json"]
}
Wenn Sie Dateien für alle Gebietsschemata von der Übersetzung ausschließen möchten, können Sie den Platzhalter [locales]
anstelle von [locale]
verwenden.
{
"exclude": ["docs/[locales]/exclude/**/*.json"]
}
transform
transform
kann entweder eine Zeichenkette oder ein Objekt sein.
Wenn transform
eine Zeichenkette ist, definiert sie eine Neuzuordnung des Dateinamens. Sie sollte ein Platzhalterzeichen *
enthalten, das durch den ursprünglichen Dateinamen ersetzt wird (alles vor dem ersten .
).
Wenn du zum Beispiel möchtest, dass die Endung all deiner übersetzten Dateien .[locale].json
statt .json
ist, kannst du die folgende Konfiguration verwenden:
{
"transform": "*.[locale].json"
}
Alternativ sollte transform
, wenn es ein Objekt ist, die folgenden Eigenschaften enthalten:
match
(optional): Ein Regex-Muster zum Abgleichen von Zeichenketten; unterstützt Capture-Gruppenreplace
(erforderlich): Zeichenkette oder Regex-Muster, mit dem der Treffer ersetzt wird
Beide Werte unterstützen Regex-Capture-Gruppen und beziehen sich auf den vollständigen relativen Dateinamen der Ausgabedatei.
{
"transform": {
"match": "^(.*)$",
"replace": "{locale}/$1"
}
}
Die obige Konfiguration bewirkt zum Beispiel, dass übersetzte Dateien in einem Unterverzeichnis der Ziel-Lokalisierung gespeichert werden.
Spezielle Platzhalter
Die Option transform unterstützt mehrere spezielle Platzhalter, die sowohl in match
- als auch in replace
-Strings verwendet werden können:
{locale}
: Der Platzhalter für den Sprach-/Ländercode, der je nach Kontext unterschiedlich gehandhabt wird:- In
match
-Strings: Wird durch den Standardcode (z. B."en"
) ersetzt, um Quelldateien zu identifizieren - In
replace
-Strings: Wird durch den Zielcode (z. B."fr"
,"es"
) ersetzt, um die übersetzten Ausgabedateien zu erzeugen
- In
Wenn beispielsweise Ihr Standardcode "en"
ist und Sie nach "fr"
übersetzen:
- Ein
match
-Muster wie"content/{locale}/file.md"
wird zu"content/en/file.md"
- Ein
replace
-Muster wie"content/{locale}/file.md"
wird zu"content/fr/file.md"
Zusätzlich kann jede andere Eigenschaft aus getLocaleProperties()
als Platzhalter mit demselben kontextabhängigen Verhalten verwendet werden.
Dies ist hilfreich, wenn Ihre Doku oder Ihr i18n-Framework für übersetzte Dateien eine bestimmte Dateiendung statt einer auf Unterverzeichnissen basierenden Locale-Routing-Struktur verlangt.
output
Dieser Schlüssel wird ausschließlich für General-Translation-Dateien verwendet, speziell zum lokalen Speichern von Übersetzungen. Wenn du das GT-CDN verwendest, wird dieser Schlüssel nicht benötigt.
Der Wert sollte eine Zeichenfolge mit dem Platzhalter [locale]
sein, der den Ort angibt, an dem die Übersetzungen gespeichert werden.
Wenn du zum Beispiel deine spanischen Übersetzungen in einer Datei namens ui.es.json
im Verzeichnis public/i18n
speichern möchtest, solltest du die folgende Zeichenfolge verwenden:
{
"output": "public/i18n/[locale].json"
}
Diese Option sollte nur verwendet werden, wenn du gt-next
oder gt-react
nutzt und Übersetzungen lokal speichern möchtest, statt das GT-CDN zu verwenden.
Derzeit kann nur eine Datei pro Locale erzeugt werden.
Dateityp: gt
Unterstützte Schlüssel
output
(erforderlich)
Beispiel
{
"defaultLocale": "en",
"locales": ["fr", "es"],
"files": {
"gt": {
"output": "public/i18n/[locale].json"
},
}
}
Mit dieser Konfiguration speichert das CLI-Tool deine französischen und spanischen Übersetzungen im Verzeichnis public/i18n/[locale].json
.
Standardmäßig veröffentlicht das CLI-Tool mit dieser Konfiguration deine Übersetzungen nicht im GT-CDN.
Dateityp: json
Unterstützte Schlüssel
include
(Erforderlich)exclude
(Optional)transform
(Optional)
Beispiel
{
"defaultLocale": "en",
"locales": ["fr", "es"],
"files": {
"json": {
"include": ["json_files/[locale]/**/*.json"],
"exclude": ["json_files/[locale]/exclude/**/*.json"]
}
}
}
Angenommen, die Standardsprache deines Projekts ist en
und du möchtest dein Projekt ins Französische (fr
) und Spanische (es
) übersetzen.
Mit dieser Konfiguration durchsucht die CLI alle JSON-Dateien im Unterverzeichnis json_files/en/
und speichert die übersetzten Dateien in json_files/fr/
und json_files/es/
.
Dateien im Unterverzeichnis json_files/en/exclude/
werden ignoriert.
Dateityp: yaml
Unterstützte Schlüssel
include
(Erforderlich)exclude
(Optional)transform
(Optional)
Beispiel
{
"defaultLocale": "en",
"locales": ["fr", "es"],
"files": {
"yaml": {
"include": ["yaml_files/[locale]/**/*.yaml"],
"exclude": ["yaml_files/[locale]/exclude/**/*.yaml"]
}
}
}
Angenommen, die Standardsprache Ihres Projekts ist en
und Sie möchten Ihr Projekt ins Französische (fr
) und Spanische (es
) übersetzen.
Mit dieser Konfiguration durchsucht die CLI alle YAML-Dateien im Unterverzeichnis yaml_files/en/
und speichert die übersetzten Dateien in yaml_files/fr/
und yaml_files/es/
.
Dateien im Unterverzeichnis yaml_files/en/exclude/
werden ignoriert.
Dateityp: mdx
Unterstützte Schlüssel
include
(Erforderlich)exclude
(Optional)transform
(Optional)
Beispiel
{
"defaultLocale": "en",
"locales": ["ja"],
"files": {
"mdx": {
"include": ["content/docs/[locale]/**/*.mdx"],
"transform": "*.[locale].mdx"
}
}
}
Diese Konfiguration weist das CLI-Tool an, alle MDX-Dateien im Verzeichnis content/docs/en
zu durchsuchen und die übersetzten Dateien im Verzeichnis content/docs/ja
zu speichern.
Der Schlüssel transform
sorgt dafür, dass die Erweiterung der übersetzten Dateien zu .ja.mdx
geändert wird.
Dateityp: md
Unterstützte Schlüssel
include
(erforderlich)exclude
(optional)transform
(optional)
Beispiel
{
"defaultLocale": "en",
"locales": ["ja"],
"files": {
"md": {
"include": ["content/docs/[locale]/**/*.md"],
"exclude": ["content/docs/[locale]/exclude/**/*.md"],
"transform": "*.[locale].md"
}
}
}
Diese Konfiguration weist das CLI-Tool an, alle MD-Dateien im Verzeichnis content/docs/en
zu durchsuchen und die übersetzten Dateien im Verzeichnis content/docs/ja
zu speichern.
Der Schlüssel transform
sorgt dafür, dass die Erweiterung der übersetzten Dateien in .ja.md
geändert wird.
Alle Dateien im Verzeichnis content/docs/en/exclude
werden ignoriert.
Dateityp: js
Unterstützte Schlüssel
include
(Erforderlich)exclude
(Optional)transform
(Optional)
Beispiel
{
"defaultLocale": "en",
"locales": ["fr", "es"],
"files": {
"js": {
"include": ["scripts/[locale]/**/*.js"]
}
}
}
Diese Konfiguration weist das CLI-Tool an, alle JavaScript-Dateien im Verzeichnis scripts/en
zu durchsuchen und die übersetzten Dateien in den Verzeichnissen scripts/fr
und scripts/es
zu speichern.
Der Schlüssel transform
sorgt dafür, dass die Erweiterung der übersetzten Dateien jeweils von .js
auf .fr.js
bzw. .es.js
geändert wird.
Dateityp: ts
Unterstützte Schlüssel
include
(Erforderlich)exclude
(Optional)transform
(Optional)
Beispiel
{
"defaultLocale": "en",
"locales": ["fr", "es"],
"files": {
"ts": {
"include": ["scripts/[locale]/**/*.ts"]
}
}
}
Diese Konfiguration weist das CLI-Tool an, alle TypeScript-Dateien im Verzeichnis scripts/en
zu durchsuchen und die übersetzten Dateien in den Verzeichnissen scripts/fr
und scripts/es
zu speichern.
Der Schlüssel transform
bewirkt, dass die Dateiendung der übersetzten Dateien entsprechend in .fr.ts
bzw. .es.ts
geändert wird (aus .ts
).
Beispielkonfiguration
Sehen wir uns eine Beispiel-gt.config.json
genauer an:
{
"defaultLocale": "en",
"locales": ["fr", "es"],
"files": {
"gt": {
"output": "public/i18n/[locale].json"
},
"mdx": {
"include": ["content/docs/[locale]/**/*.mdx"],
"transform": "*.[locale].mdx"
},
"json": {
"include": ["resources/[locale]/**/*.json"],
"exclude": ["resources/[locale]/exclude/**/*.json"]
}
}
}
In diesem Beispiel übersetzen wir die folgenden Dateien mit einem einzigen Aufruf von gtx-cli translate
:
- Alle MDX-Dateien im Verzeichnis
content/docs/en
. - Alle JSON-Dateien im Verzeichnis
resources/en
(ausgenommen Dateien im Verzeichnisresources/en/exclude
). - Alle Inline-
<T>
-Komponenten in Ihrem React- oder Next.js-Projekt. - Ihre Datei
dictionary.[json|js|ts]
.
GT: Übersetzungen werden in public/i18n/es.json
und public/i18n/fr.json
gespeichert. Diese Dateien können mit loadTranslations()
geladen werden.
MDX: Übersetzungen werden in den Verzeichnissen content/docs/fr
und content/docs/es
gespeichert.
Die Dateierweiterungen werden entsprechend von .mdx
auf .fr.mdx
bzw. .es.mdx
geändert.
JSON: Übersetzungen werden in den Verzeichnissen resources/fr
und resources/es
gespeichert.
Nächste Schritte
Erfahren Sie, wie Sie den Befehl init verwenden, um diese Konfigurationsdatei zu erstellen.
Wie ist dieser Leitfaden?