@intlayer/docs 8.1.5 → 8.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -9
- package/dist/cjs/generated/docs.entry.cjs +1 -1
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +1 -1
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +2 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/compiler.md +26 -0
- package/docs/ar/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/ar/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/ar/readme.md +138 -110
- package/docs/de/compiler.md +26 -0
- package/docs/de/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/de/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/de/readme.md +152 -124
- package/docs/en/compiler.md +27 -0
- package/docs/en/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/en/intlayer_with_vite+react_compiler.md +368 -0
- package/docs/en/readme.md +129 -105
- package/docs/en-GB/compiler.md +26 -0
- package/docs/en-GB/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/en-GB/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/en-GB/readme.md +134 -108
- package/docs/es/compiler.md +26 -0
- package/docs/es/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/es/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/es/readme.md +149 -121
- package/docs/fr/compiler.md +26 -0
- package/docs/fr/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/fr/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/fr/readme.md +150 -122
- package/docs/hi/compiler.md +26 -0
- package/docs/hi/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/hi/intlayer_with_vite+react_compiler.md +370 -0
- package/docs/hi/readme.md +153 -125
- package/docs/id/compiler.md +26 -0
- package/docs/id/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/id/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/id/readme.md +133 -105
- package/docs/it/compiler.md +26 -0
- package/docs/it/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/it/intlayer_with_vite+react_compiler.md +374 -0
- package/docs/it/readme.md +155 -127
- package/docs/ja/compiler.md +26 -0
- package/docs/ja/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/ja/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/ja/readme.md +152 -126
- package/docs/ko/compiler.md +26 -0
- package/docs/ko/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/ko/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/ko/readme.md +154 -126
- package/docs/pl/compiler.md +26 -0
- package/docs/pl/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/pl/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/pl/readme.md +134 -106
- package/docs/pt/compiler.md +27 -1
- package/docs/pt/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/pt/intlayer_with_vite+react_compiler.md +374 -0
- package/docs/pt/readme.md +154 -126
- package/docs/ru/compiler.md +26 -0
- package/docs/ru/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/ru/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/ru/readme.md +137 -109
- package/docs/tr/compiler.md +26 -0
- package/docs/tr/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/tr/intlayer_with_vite+react_compiler.md +375 -0
- package/docs/tr/readme.md +139 -111
- package/docs/uk/compiler.md +26 -0
- package/docs/uk/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/uk/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/uk/readme.md +133 -109
- package/docs/vi/compiler.md +27 -1
- package/docs/vi/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/vi/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/vi/readme.md +138 -110
- package/docs/zh/compiler.md +26 -0
- package/docs/zh/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/zh/intlayer_with_vite+react_compiler.md +372 -0
- package/docs/zh/readme.md +148 -120
- package/package.json +7 -8
- package/src/generated/docs.entry.ts +40 -0
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2024-03-07
|
|
3
|
+
updatedAt: 2025-12-30
|
|
4
|
+
title: Vite und React i18n - Eine bestehende App in eine mehrsprachige App umwandeln (i18n-Leitfaden 2026)
|
|
5
|
+
description: Erfahren Sie, wie Sie Ihre bestehende Vite- und React-Anwendung mit dem Intlayer-Compiler mehrsprachig machen. Folgen Sie der Dokumentation zur Internationalisierung (i18n) und lassen Sie sie mit KI übersetzen.
|
|
6
|
+
keywords:
|
|
7
|
+
- Internationalisierung
|
|
8
|
+
- Dokumentation
|
|
9
|
+
- Intlayer
|
|
10
|
+
- Vite
|
|
11
|
+
- React
|
|
12
|
+
- Compiler
|
|
13
|
+
- KI
|
|
14
|
+
slugs:
|
|
15
|
+
- doc
|
|
16
|
+
- environment
|
|
17
|
+
- vite-and-react
|
|
18
|
+
- compiler
|
|
19
|
+
- AI
|
|
20
|
+
applicationTemplate: https://github.com/aymericzip/intlayer-vite-react-template
|
|
21
|
+
youtubeVideo: https://www.youtube.com/watch?v=dS9L7uJeak4
|
|
22
|
+
history:
|
|
23
|
+
- version: 8.1.6
|
|
24
|
+
date: 2026-02-23
|
|
25
|
+
changes: Erstveröffentlichung
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# Wie man eine bestehende Vite- und React-Anwendung nachträglich mehrsprachig (i18n) macht (i18n-Leitfaden 2026)
|
|
29
|
+
|
|
30
|
+
<Tabs defaultTab="video">
|
|
31
|
+
<Tab label="Video" value="video">
|
|
32
|
+
|
|
33
|
+
<iframe title="Die beste i18n-Lösung für Vite und React? Entdecken Sie Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?si=VaKmrYMmXjo3xpk2"/>
|
|
34
|
+
|
|
35
|
+
</Tab>
|
|
36
|
+
<Tab label="Code" value="code">
|
|
37
|
+
|
|
38
|
+
<iframe
|
|
39
|
+
src="https://stackblitz.com/github/aymericzip/intlayer-vite-react-template?embed=1&ctl=1&file=intlayer.config.ts"
|
|
40
|
+
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
41
|
+
title="Demo CodeSandbox - So internationalisieren Sie Ihre Anwendung mit Intlayer"
|
|
42
|
+
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
43
|
+
loading="lazy"
|
|
44
|
+
/>
|
|
45
|
+
|
|
46
|
+
</Tab>
|
|
47
|
+
</Tabs>
|
|
48
|
+
|
|
49
|
+
Siehe [Anwendungsvorlage](https://github.com/aymericzip/intlayer-vite-react-template) auf GitHub.
|
|
50
|
+
|
|
51
|
+
## Inhaltsverzeichnis
|
|
52
|
+
|
|
53
|
+
<TOC/>
|
|
54
|
+
|
|
55
|
+
## Warum ist es schwierig, eine bestehende Anwendung zu internationalisieren?
|
|
56
|
+
|
|
57
|
+
Wenn Sie jemals versucht haben, mehrere Sprachen zu einer App hinzuzufügen, die nur für eine gebaut wurde, kennen Sie den Schmerz. Es ist nicht nur "schwer" – es ist mühsam. Sie müssen jede einzelne Datei durchforsten, jede Textzeichenfolge aufspüren und sie in separate Wörterbuchdateien verschieben.
|
|
58
|
+
|
|
59
|
+
Dann kommt der riskante Teil: das Ersetzen des gesamten Textes durch Code-Hooks, ohne Ihr Layout oder Ihre Logik zu beeinträchtigen. Es ist die Art von Arbeit, die die Entwicklung neuer Funktionen für Wochen zum Stillstand bringt und sich wie endloses Refactoring anfühlt.
|
|
60
|
+
|
|
61
|
+
## Was ist der Intlayer-Compiler?
|
|
62
|
+
|
|
63
|
+
Der **Intlayer-Compiler** wurde entwickelt, um diese manuelle Routinearbeit zu überspringen. Anstatt dass Sie Zeichenfolgen manuell extrahieren, erledigt der Compiler dies für Sie. Er scannt Ihren Code, findet den Text und verwendet KI, um die Wörterbücher im Hintergrund zu generieren.
|
|
64
|
+
Anschließend modifiziert er Ihren Code während des Builds, um die erforderlichen i18n-Hooks einzufügen. Im Grunde schreiben Sie Ihre App weiterhin so, als wäre sie einsprachig, und der Compiler übernimmt die mehrsprachige Transformation automatisch.
|
|
65
|
+
|
|
66
|
+
> Dokumentation Compiler: [https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/compiler.md](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/compiler.md)
|
|
67
|
+
|
|
68
|
+
### Einschränkungen
|
|
69
|
+
|
|
70
|
+
Da der Compiler Codeanalysen und Transformationen (Einfügen von Hooks und Generieren von Wörterbüchern) zum **Zeitpunkt der Kompilierung** durchführt, kann er den **Build-Leistung** Ihrer Anwendung **verlangsamen**.
|
|
71
|
+
|
|
72
|
+
Um diese Auswirkungen während der Entwicklung abzumildern, können Sie den Compiler so konfigurieren, dass er im Modus [`'build-only'`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/configuration.md) läuft, oder ihn deaktivieren, wenn er nicht benötigt wird.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Schritt-für-Schritt-Anleitung zur Einrichtung von Intlayer in einer Vite- und React-Anwendung
|
|
77
|
+
|
|
78
|
+
### Schritt 1: Abhängigkeiten installieren
|
|
79
|
+
|
|
80
|
+
Installieren Sie die erforderlichen Pakete mit npm:
|
|
81
|
+
|
|
82
|
+
```bash packageManager="npm"
|
|
83
|
+
npm install intlayer react-intlayer
|
|
84
|
+
npm install vite-intlayer --save-dev
|
|
85
|
+
npx intlayer init
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
```bash packageManager="pnpm"
|
|
89
|
+
pnpm add intlayer react-intlayer
|
|
90
|
+
pnpm add vite-intlayer --save-dev
|
|
91
|
+
pnpm intlayer init
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```bash packageManager="yarn"
|
|
95
|
+
yarn add intlayer react-intlayer
|
|
96
|
+
yarn add vite-intlayer --save-dev
|
|
97
|
+
yarn intlayer init
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
```bash packageManager="bun"
|
|
101
|
+
bun add intlayer react-intlayer
|
|
102
|
+
bun add vite-intlayer --dev
|
|
103
|
+
bunx intlayer init
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
- **intlayer**
|
|
107
|
+
Das Kernpaket, das Internationalisierungswerkzeuge für die Konfigurationsverwaltung, Übersetzung, [Inhaltsdeklaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/dictionary/content_file.md), Transpilation und [CLI-Befehle](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/cli/index.md) bereitstellt.
|
|
108
|
+
|
|
109
|
+
- **react-intlayer**
|
|
110
|
+
Das Paket, das Intlayer in die React-Anwendung integriert. Es bietet Kontextanbieter und Hooks für die React-Internationalisierung.
|
|
111
|
+
|
|
112
|
+
- **vite-intlayer**
|
|
113
|
+
Enthält das Vite-Plugin zur Integration von Intlayer in den [Vite-Bundler](https://vite.dev/guide/why.html#why-bundle-for-production) sowie Middleware zur Erkennung des bevorzugten Gebietsschemas des Benutzers, zur Verwaltung von Cookies und zur Handhabung von URL-Umleitungen.
|
|
114
|
+
|
|
115
|
+
### Schritt 2: Konfigurieren Sie Ihr Projekt
|
|
116
|
+
|
|
117
|
+
Erstellen Sie eine Konfigurationsdatei, um die Sprachen Ihrer Anwendung zu konfigurieren:
|
|
118
|
+
|
|
119
|
+
```typescript fileName="intlayer.config.ts"
|
|
120
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
121
|
+
|
|
122
|
+
const config: IntlayerConfig = {
|
|
123
|
+
internationalization: {
|
|
124
|
+
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH, Locales.GERMAN],
|
|
125
|
+
defaultLocale: Locales.ENGLISH,
|
|
126
|
+
},
|
|
127
|
+
compiler: {
|
|
128
|
+
enabled: true, // Kann auf 'build-only' gesetzt werden, um die Auswirkungen auf den Dev-Modus zu begrenzen
|
|
129
|
+
outputDir: "i18n",
|
|
130
|
+
dictionaryKeyPrefix: "", // Kein Präfix comp-
|
|
131
|
+
},
|
|
132
|
+
ai: {
|
|
133
|
+
provider: "openai",
|
|
134
|
+
model: "gpt-5-mini",
|
|
135
|
+
apiKey: process.env.OPEN_AI_API_KEY,
|
|
136
|
+
applicationContext: "Diese App ist eine Karten-App", // Hinweis: Sie können diese App-Beschreibung anpassen
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
export default config;
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
> **Hinweis**: Stellen Sie sicher, dass Ihr `OPEN_AI_API_KEY` in Ihren Umgebungsvariablen gesetzt ist.
|
|
144
|
+
|
|
145
|
+
> Über diese Konfigurationsdatei können Sie lokalisierte URLs, Middleware-Umleitungen, Cookie-Namen, den Speicherort und die Erweiterung Ihrer Inhaltsdeklarationen festlegen, Intlayer-Protokolle in der Konsole deaktivieren und vieles mehr. Eine vollständige Liste der verfügbaren Parameter finden Sie in der [Konfigurationsdokumentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/configuration.md).
|
|
146
|
+
|
|
147
|
+
### Schritt 3: Intlayer in Ihre Vite-Konfiguration integrieren
|
|
148
|
+
|
|
149
|
+
Fügen Sie das Intlayer-Plugin zu Ihrer Konfiguration hinzu.
|
|
150
|
+
|
|
151
|
+
```typescript fileName="vite.config.ts"
|
|
152
|
+
import { defineConfig } from "vite";
|
|
153
|
+
import react from "@vitejs/plugin-react-swc";
|
|
154
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
155
|
+
|
|
156
|
+
// https://vitejs.dev/config/
|
|
157
|
+
export default defineConfig({
|
|
158
|
+
plugins: [react(), intlayer(), intlayerCompiler()],
|
|
159
|
+
});
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
> Das `intlayer()`-Vite-Plugin wird verwendet, um Intlayer in Vite zu integrieren. Es stellt die Erstellung von Inhaltsdeklarationsdateien sicher und überwacht diese im Entwicklungsmodus. Es definiert Intlayer-Umgebungsvariablen innerhalb der Vite-Anwendung. Darüber hinaus bietet es Aliase zur Leistungsoptimierung.
|
|
163
|
+
|
|
164
|
+
> Das `intlayerCompiler()`-Vite-Plugin wird verwendet, um Inhalte aus Komponenten zu extrahieren und `.content`-Dateien zu schreiben.
|
|
165
|
+
|
|
166
|
+
### Schritt 4: Kompilieren Sie Ihren Code
|
|
167
|
+
|
|
168
|
+
Schreiben Sie Ihre Komponenten einfach mit fest codierten Zeichenfolgen in Ihrem Standard-Gebietsschema. Der Compiler kümmert sich um den Rest.
|
|
169
|
+
|
|
170
|
+
Beispiel, wie Ihre Seite aussehen könnte:
|
|
171
|
+
|
|
172
|
+
<Tabs>
|
|
173
|
+
<Tab value="Code">
|
|
174
|
+
|
|
175
|
+
```tsx fileName="src/App.tsx"
|
|
176
|
+
import { useState, type FC } from "react";
|
|
177
|
+
import reactLogo from "./assets/react.svg";
|
|
178
|
+
import viteLogo from "/vite.svg";
|
|
179
|
+
import "./App.css";
|
|
180
|
+
import { IntlayerProvider } from "react-intlayer";
|
|
181
|
+
|
|
182
|
+
const AppContent: FC = () => {
|
|
183
|
+
const [count, setCount] = useState(0);
|
|
184
|
+
|
|
185
|
+
return (
|
|
186
|
+
<>
|
|
187
|
+
<div>
|
|
188
|
+
<a href="https://vitejs.dev" target="_blank">
|
|
189
|
+
<img src={viteLogo} className="logo" alt="Vite logo" />
|
|
190
|
+
</a>
|
|
191
|
+
<a href="https://react.dev" target="_blank">
|
|
192
|
+
<img src={reactLogo} className="logo react" alt="React logo" />
|
|
193
|
+
</a>
|
|
194
|
+
</div>
|
|
195
|
+
<h1>Vite + React</h1>
|
|
196
|
+
<div className="card">
|
|
197
|
+
<button onClick={() => setCount((count) => count + 1)}>
|
|
198
|
+
count is {count}
|
|
199
|
+
</button>
|
|
200
|
+
<p>
|
|
201
|
+
Edit <code>src/App.tsx</code> and save to test HMR
|
|
202
|
+
</p>
|
|
203
|
+
</div>
|
|
204
|
+
<p className="read-the-docs">
|
|
205
|
+
Click on the Vite and React logos to learn more
|
|
206
|
+
</p>
|
|
207
|
+
</>
|
|
208
|
+
);
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
const App: FC = () => (
|
|
212
|
+
<IntlayerProvider>
|
|
213
|
+
<AppContent />
|
|
214
|
+
</IntlayerProvider>
|
|
215
|
+
);
|
|
216
|
+
|
|
217
|
+
export default App;
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
</Tab>
|
|
221
|
+
<Tab value="Ausgabe">
|
|
222
|
+
|
|
223
|
+
```ts fileName="i18n/app-content.content.json"
|
|
224
|
+
{
|
|
225
|
+
key: "app-content",
|
|
226
|
+
content: {
|
|
227
|
+
nodeType: "translation",
|
|
228
|
+
translation: {
|
|
229
|
+
en: {
|
|
230
|
+
viteLogo: "Vite logo",
|
|
231
|
+
reactLogo: "React logo",
|
|
232
|
+
title: "Vite + React",
|
|
233
|
+
countButton: "count is",
|
|
234
|
+
editMessage: "Edit",
|
|
235
|
+
hmrMessage: "and save to test HMR",
|
|
236
|
+
readTheDocs: "Click on the Vite and React logos to learn more",
|
|
237
|
+
},
|
|
238
|
+
de: {
|
|
239
|
+
viteLogo: "Vite Logo",
|
|
240
|
+
reactLogo: "React Logo",
|
|
241
|
+
title: "Vite + React",
|
|
242
|
+
countButton: "Zähler ist",
|
|
243
|
+
editMessage: "Bearbeite",
|
|
244
|
+
hmrMessage: "und speichere, um HMR zu testen",
|
|
245
|
+
readTheDocs: "Klicke auf die Vite- und React-Logos, um mehr zu erfahren",
|
|
246
|
+
},
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
```tsx fileName="src/App.tsx"
|
|
253
|
+
import { useState, type FC } from "react";
|
|
254
|
+
import reactLogo from "./assets/react.svg";
|
|
255
|
+
import viteLogo from "/vite.svg";
|
|
256
|
+
import "./App.css";
|
|
257
|
+
import { IntlayerProvider, useIntlayer } from "react-intlayer";
|
|
258
|
+
|
|
259
|
+
const AppContent: FC = () => {
|
|
260
|
+
const [count, setCount] = useState(0);
|
|
261
|
+
const content = useIntlayer("app-content");
|
|
262
|
+
|
|
263
|
+
return (
|
|
264
|
+
<>
|
|
265
|
+
<div>
|
|
266
|
+
<a href="https://vitejs.dev" target="_blank">
|
|
267
|
+
<img src={viteLogo} className="logo" alt={content.viteLogo.value} />
|
|
268
|
+
</a>
|
|
269
|
+
<a href="https://react.dev" target="_blank">
|
|
270
|
+
<img
|
|
271
|
+
src={reactLogo}
|
|
272
|
+
className="logo react"
|
|
273
|
+
alt={content.reactLogo.value}
|
|
274
|
+
/>
|
|
275
|
+
</a>
|
|
276
|
+
</div>
|
|
277
|
+
<h1>{content.title}</h1>
|
|
278
|
+
<div className="card">
|
|
279
|
+
<button onClick={() => setCount((count) => count + 1)}>
|
|
280
|
+
{content.countButton} {count}
|
|
281
|
+
</button>
|
|
282
|
+
<p>
|
|
283
|
+
{content.editMessage} <code>src/App.tsx</code> {content.hmrMessage}
|
|
284
|
+
</p>
|
|
285
|
+
</div>
|
|
286
|
+
<p className="read-the-docs">{content.readTheDocs}</p>
|
|
287
|
+
</>
|
|
288
|
+
);
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
const App: FC = () => (
|
|
292
|
+
<IntlayerProvider>
|
|
293
|
+
<AppContent />
|
|
294
|
+
</IntlayerProvider>
|
|
295
|
+
);
|
|
296
|
+
|
|
297
|
+
export default App;
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
</Tab>
|
|
301
|
+
</Tabs>
|
|
302
|
+
|
|
303
|
+
- **`IntlayerProvider`** wird verwendet, um das Gebietsschema für verschachtelte Komponenten bereitzustellen.
|
|
304
|
+
|
|
305
|
+
### (Optional) Schritt 6: Die Sprache Ihres Inhalts ändern
|
|
306
|
+
|
|
307
|
+
Um die Sprache Ihres Inhalts zu ändern, können Sie die Funktion `setLocale` verwenden, die vom Hook `useLocale` bereitgestellt wird. Mit dieser Funktion können Sie das Gebietsschema der Anwendung festlegen und den Inhalt entsprechend aktualisieren.
|
|
308
|
+
|
|
309
|
+
```tsx fileName="src/components/LocaleSwitcher.tsx"
|
|
310
|
+
import type { FC } from "react";
|
|
311
|
+
import { Locales } from "intlayer";
|
|
312
|
+
import { useLocale } from "react-intlayer";
|
|
313
|
+
|
|
314
|
+
const LocaleSwitcher: FC = () => {
|
|
315
|
+
const { setLocale } = useLocale();
|
|
316
|
+
|
|
317
|
+
return (
|
|
318
|
+
<button onClick={() => setLocale(Locales.GERMAN)}>
|
|
319
|
+
Sprache auf Deutsch ändern
|
|
320
|
+
</button>
|
|
321
|
+
);
|
|
322
|
+
};
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
> Um mehr über den Hook `useLocale` zu erfahren, lesen Sie die [Dokumentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/packages/react-intlayer/useLocale.md).
|
|
326
|
+
|
|
327
|
+
### (Optional) Schritt 7: Fehlende Übersetzungen ausfüllen
|
|
328
|
+
|
|
329
|
+
Intlayer bietet ein CLI-Tool an, mit dem Sie fehlende Übersetzungen ausfüllen können. Sie können den Befehl `intlayer` verwenden, um fehlende Übersetzungen in Ihrem Code zu testen und auszufüllen.
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
npx intlayer test # Testen, ob Übersetzungen fehlen
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
```bash
|
|
336
|
+
npx intlayer fill # Fehlende Übersetzungen ausfüllen
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
> Weitere Informationen finden Sie in der [CLI-Dokumentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/cli/ci.md)
|
|
340
|
+
|
|
341
|
+
### Git-Konfiguration
|
|
342
|
+
|
|
343
|
+
Es wird empfohlen, die von Intlayer generierten Dateien zu ignorieren. Dies ermöglicht es Ihnen zu vermeiden, sie in Ihr Git-Repository zu übertragen.
|
|
344
|
+
|
|
345
|
+
Dazu können Sie die folgenden Anweisungen zu Ihrer `.gitignore`-Datei hinzufügen:
|
|
346
|
+
|
|
347
|
+
```plaintext fileName=".gitignore"
|
|
348
|
+
# Von Intlayer generierte Dateien ignorieren
|
|
349
|
+
.intlayer
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
### VS Code-Erweiterung
|
|
353
|
+
|
|
354
|
+
Um Ihre Entwicklungserfahrung mit Intlayer zu verbessern, können Sie die offizielle **Intlayer VS Code-Erweiterung** installieren.
|
|
355
|
+
|
|
356
|
+
[Im VS Code Marketplace installieren](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
357
|
+
|
|
358
|
+
Diese Erweiterung bietet:
|
|
359
|
+
|
|
360
|
+
- **Autovervollständigung** für Übersetzungsschlüssel.
|
|
361
|
+
- **Fehlererkennung in Echtzeit** für fehlende Übersetzungen.
|
|
362
|
+
- **Inline-Vorschauen** von übersetzten Inhalten.
|
|
363
|
+
- **Schnellaktionen**, um Übersetzungen einfach zu erstellen und zu aktualisieren.
|
|
364
|
+
|
|
365
|
+
Weitere Details zur Verwendung der Erweiterung finden Sie in der [Dokumentation zur Intlayer VS Code-Erweiterung](https://intlayer.org/doc/vs-code-extension).
|
|
366
|
+
|
|
367
|
+
### Weiterführendes
|
|
368
|
+
|
|
369
|
+
Um weiterzugehen, können Sie den [visuellen Editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/intlayer_visual_editor.md) implementieren oder Ihre Inhalte mit dem [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/intlayer_CMS.md) extern verwalten.
|