@intlayer/docs 5.7.7 → 5.8.0-canary.0

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.
Files changed (142) hide show
  1. package/blog/ar/intlayer_with_next-i18next.md +3 -4
  2. package/blog/ar/intlayer_with_next-intl.md +3 -4
  3. package/blog/ar/intlayer_with_react-i18next.md +1 -1
  4. package/blog/ar/intlayer_with_react-intl.md +1 -1
  5. package/blog/de/intlayer_with_next-i18next.md +3 -4
  6. package/blog/de/intlayer_with_react-intl.md +1 -1
  7. package/blog/en/intlayer_with_next-i18next.md +3 -4
  8. package/blog/en/intlayer_with_next-intl.md +3 -4
  9. package/blog/en/intlayer_with_react-i18next.md +1 -1
  10. package/blog/en/intlayer_with_react-intl.md +1 -1
  11. package/blog/en-GB/intlayer_with_next-i18next.md +3 -4
  12. package/blog/en-GB/intlayer_with_next-intl.md +3 -4
  13. package/blog/en-GB/intlayer_with_react-i18next.md +1 -1
  14. package/blog/en-GB/intlayer_with_react-intl.md +1 -1
  15. package/blog/es/intlayer_with_next-i18next.md +3 -4
  16. package/blog/es/intlayer_with_next-intl.md +3 -4
  17. package/blog/es/intlayer_with_react-i18next.md +1 -1
  18. package/blog/es/intlayer_with_react-intl.md +1 -1
  19. package/blog/fr/intlayer_with_next-i18next.md +3 -4
  20. package/blog/fr/intlayer_with_next-intl.md +3 -4
  21. package/blog/fr/intlayer_with_react-i18next.md +1 -1
  22. package/blog/fr/intlayer_with_react-intl.md +1 -1
  23. package/blog/hi/intlayer_with_next-i18next.md +3 -4
  24. package/blog/hi/intlayer_with_next-intl.md +3 -4
  25. package/blog/hi/intlayer_with_react-i18next.md +1 -1
  26. package/blog/hi/intlayer_with_react-intl.md +1 -1
  27. package/blog/it/intlayer_with_next-i18next.md +3 -4
  28. package/blog/it/intlayer_with_next-intl.md +3 -4
  29. package/blog/it/intlayer_with_react-i18next.md +1 -1
  30. package/blog/it/intlayer_with_react-intl.md +1 -1
  31. package/blog/ja/intlayer_with_next-i18next.md +3 -4
  32. package/blog/ja/intlayer_with_next-intl.md +3 -4
  33. package/blog/ja/intlayer_with_react-intl.md +1 -1
  34. package/blog/ko/intlayer_with_next-i18next.md +3 -4
  35. package/blog/ko/intlayer_with_next-intl.md +3 -4
  36. package/blog/ko/intlayer_with_react-intl.md +1 -1
  37. package/blog/pt/intlayer_with_next-i18next.md +3 -4
  38. package/blog/pt/intlayer_with_next-intl.md +3 -4
  39. package/blog/pt/intlayer_with_react-intl.md +1 -1
  40. package/blog/ru/intlayer_with_next-i18next.md +3 -4
  41. package/blog/ru/intlayer_with_next-intl.md +3 -4
  42. package/blog/ru/intlayer_with_react-i18next.md +1 -1
  43. package/blog/ru/intlayer_with_react-intl.md +1 -1
  44. package/blog/zh/intlayer_with_next-i18next.md +3 -4
  45. package/blog/zh/intlayer_with_next-intl.md +3 -4
  46. package/blog/zh/intlayer_with_react-i18next.md +1 -1
  47. package/blog/zh/intlayer_with_react-intl.md +1 -1
  48. package/dist/cjs/generated/docs.entry.cjs +41 -0
  49. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  50. package/dist/esm/generated/docs.entry.mjs +41 -0
  51. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  52. package/dist/types/generated/docs.entry.d.ts +1 -0
  53. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  54. package/docs/ar/CI_CD.md +67 -41
  55. package/docs/ar/formatters.md +239 -0
  56. package/docs/ar/interest_of_intlayer.md +162 -49
  57. package/docs/ar/introduction.md +3 -3
  58. package/docs/ar/packages/intlayer/index.md +3 -3
  59. package/docs/ar/packages/next-intlayer/index.md +3 -3
  60. package/docs/de/CI_CD.md +63 -37
  61. package/docs/de/formatters.md +239 -0
  62. package/docs/de/interest_of_intlayer.md +161 -47
  63. package/docs/de/introduction.md +3 -3
  64. package/docs/de/packages/intlayer/index.md +3 -3
  65. package/docs/de/packages/next-intlayer/index.md +3 -3
  66. package/docs/de/packages/react-intlayer/index.md +3 -3
  67. package/docs/en/CI_CD.md +51 -27
  68. package/docs/en/formatters.md +250 -0
  69. package/docs/en/interest_of_intlayer.md +159 -46
  70. package/docs/en/introduction.md +3 -3
  71. package/docs/en/packages/intlayer/index.md +3 -3
  72. package/docs/en/packages/next-intlayer/index.md +3 -3
  73. package/docs/en/packages/react-intlayer/index.md +3 -3
  74. package/docs/en-GB/CI_CD.md +58 -32
  75. package/docs/en-GB/formatters.md +239 -0
  76. package/docs/en-GB/interest_of_intlayer.md +160 -53
  77. package/docs/en-GB/packages/intlayer/index.md +3 -3
  78. package/docs/en-GB/packages/next-intlayer/index.md +3 -3
  79. package/docs/en-GB/packages/react-intlayer/index.md +3 -3
  80. package/docs/es/CI_CD.md +68 -42
  81. package/docs/es/formatters.md +239 -0
  82. package/docs/es/interest_of_intlayer.md +159 -47
  83. package/docs/es/introduction.md +3 -3
  84. package/docs/es/packages/intlayer/index.md +3 -3
  85. package/docs/es/packages/next-intlayer/index.md +3 -3
  86. package/docs/fr/formatters.md +239 -0
  87. package/docs/fr/interest_of_intlayer.md +160 -46
  88. package/docs/fr/introduction.md +3 -3
  89. package/docs/fr/packages/intlayer/index.md +3 -3
  90. package/docs/fr/packages/next-intlayer/index.md +3 -3
  91. package/docs/fr/packages/react-intlayer/index.md +3 -3
  92. package/docs/hi/CI_CD.md +69 -44
  93. package/docs/hi/formatters.md +239 -0
  94. package/docs/hi/interest_of_intlayer.md +158 -42
  95. package/docs/hi/introduction.md +3 -3
  96. package/docs/hi/packages/intlayer/index.md +3 -3
  97. package/docs/hi/packages/next-intlayer/index.md +3 -3
  98. package/docs/hi/packages/react-intlayer/index.md +3 -3
  99. package/docs/it/CI_CD.md +67 -41
  100. package/docs/it/formatters.md +239 -0
  101. package/docs/it/interest_of_intlayer.md +160 -46
  102. package/docs/it/introduction.md +3 -3
  103. package/docs/it/packages/intlayer/index.md +3 -3
  104. package/docs/it/packages/next-intlayer/index.md +3 -3
  105. package/docs/it/packages/react-intlayer/index.md +3 -3
  106. package/docs/ja/CI_CD.md +67 -41
  107. package/docs/ja/formatters.md +261 -0
  108. package/docs/ja/interest_of_intlayer.md +157 -48
  109. package/docs/ja/introduction.md +3 -3
  110. package/docs/ja/packages/intlayer/index.md +3 -3
  111. package/docs/ja/packages/next-intlayer/index.md +3 -3
  112. package/docs/ja/packages/react-intlayer/index.md +3 -3
  113. package/docs/ko/CI_CD.md +63 -37
  114. package/docs/ko/formatters.md +258 -0
  115. package/docs/ko/interest_of_intlayer.md +160 -48
  116. package/docs/ko/introduction.md +3 -3
  117. package/docs/ko/packages/intlayer/index.md +3 -3
  118. package/docs/ko/packages/next-intlayer/index.md +3 -3
  119. package/docs/ko/packages/react-intlayer/index.md +3 -3
  120. package/docs/pt/CI_CD.md +67 -41
  121. package/docs/pt/formatters.md +239 -0
  122. package/docs/pt/interest_of_intlayer.md +162 -47
  123. package/docs/pt/introduction.md +3 -3
  124. package/docs/pt/packages/intlayer/index.md +3 -3
  125. package/docs/pt/packages/next-intlayer/index.md +3 -3
  126. package/docs/pt/packages/react-intlayer/index.md +3 -3
  127. package/docs/ru/CI_CD.md +70 -44
  128. package/docs/ru/formatters.md +239 -0
  129. package/docs/ru/interest_of_intlayer.md +168 -50
  130. package/docs/ru/introduction.md +3 -3
  131. package/docs/ru/packages/intlayer/index.md +3 -3
  132. package/docs/ru/packages/next-intlayer/index.md +3 -3
  133. package/docs/ru/packages/react-intlayer/index.md +3 -3
  134. package/docs/zh/CI_CD.md +62 -36
  135. package/docs/zh/formatters.md +239 -0
  136. package/docs/zh/interest_of_intlayer.md +158 -48
  137. package/docs/zh/introduction.md +3 -3
  138. package/docs/zh/packages/intlayer/index.md +3 -3
  139. package/docs/zh/packages/next-intlayer/index.md +3 -3
  140. package/docs/zh/packages/react-intlayer/index.md +3 -3
  141. package/package.json +12 -12
  142. package/src/generated/docs.entry.ts +41 -0
@@ -0,0 +1,239 @@
1
+ ---
2
+ createdAt: 2024-08-13
3
+ updatedAt: 2025-08-20
4
+ title: Formatierer
5
+ description: Ortsabhängige Formatierungswerkzeuge basierend auf Intl für Zahlen, Prozentsätze, Währungen, Daten, relative Zeit, Einheiten und kompakte Notation. Enthält einen gecachten Intl-Helfer.
6
+ keywords:
7
+ - Formatierer
8
+ - Intl
9
+ - Zahl
10
+ - Währung
11
+ - Prozentsatz
12
+ - Datum
13
+ - Relative Zeit
14
+ - Einheiten
15
+ - Kompakt
16
+ - Internationalisierung
17
+ slugs:
18
+ - doc
19
+ - formatters
20
+ ---
21
+
22
+ # Intlayer Formatierer
23
+
24
+ ## Übersicht
25
+
26
+ Intlayer bietet eine Reihe von leichtgewichtigen Helfern, die auf den nativen `Intl`-APIs aufbauen, sowie einen gecachten `Intl`-Wrapper, um das wiederholte Erstellen schwerer Formatierer zu vermeiden. Diese Werkzeuge sind vollständig ortsabhängig und können aus dem Hauptpaket `intlayer` verwendet werden.
27
+
28
+ ### Import
29
+
30
+ ```ts
31
+ import {
32
+ Intl,
33
+ number,
34
+ percentage,
35
+ currency,
36
+ date,
37
+ relativeTime,
38
+ units,
39
+ compact,
40
+ } von "intlayer";
41
+ ```
42
+
43
+ Wenn Sie React verwenden, sind auch Hooks verfügbar; siehe `react-intlayer/format`.
44
+
45
+ ## Gecachter Intl
46
+
47
+ Das exportierte `Intl` ist ein dünner, gecachter Wrapper um das globale `Intl`. Es merkt sich Instanzen von `NumberFormat`, `DateTimeFormat`, `RelativeTimeFormat`, wodurch vermieden wird, denselben Formatierer wiederholt neu zu erstellen.
48
+
49
+ Da die Erstellung von Formatierern relativ aufwendig ist, verbessert dieses Caching die Leistung, ohne das Verhalten zu ändern. Der Wrapper bietet dieselbe API wie das native `Intl`, sodass die Nutzung identisch ist.
50
+
51
+ - Das Caching erfolgt pro Prozess und ist für Aufrufer transparent.
52
+
53
+ > Wenn `Intl.DisplayNames` in der Umgebung nicht verfügbar ist, wird eine einmalige Entwickler-Warnung ausgegeben (ein Polyfill wird empfohlen).
54
+
55
+ Beispiel:
56
+
57
+ ```ts
58
+ import { Intl } from "intlayer";
59
+
60
+ const numberFormat = new Intl.NumberFormat("en-GB", {
61
+ style: "currency",
62
+ currency: "GBP",
63
+ });
64
+ numberFormat.format(1234.5); // "£1,234.50"
65
+ ```
66
+
67
+ ## Formatierer
68
+
69
+ Alle untenstehenden Hilfsfunktionen werden von `intlayer` exportiert.
70
+
71
+ ### `number(value, options?)`
72
+
73
+ Formatiert einen numerischen Wert unter Verwendung von lokalisierter Gruppierung und Dezimalstellen.
74
+
75
+ - **value**: `number | string`
76
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
77
+
78
+ Beispiele:
79
+
80
+ ```ts
81
+ import { number } from "intlayer";
82
+
83
+ number(123456.789); // "123,456.789" (in en-US)
84
+ number("1000000", { locale: "fr" }); // "1 000 000"
85
+ number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
86
+ ```
87
+
88
+ ### `percentage(value, options?)`
89
+
90
+ Formatiert eine Zahl als Prozentzeichenkette.
91
+
92
+ Verhalten: Werte größer als 1 werden als ganze Prozentsätze interpretiert und normalisiert (z. B. `25` → `25%`, `0.25` → `25%`).
93
+
94
+ - **value**: `number | string`
95
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
96
+
97
+ Beispiele:
98
+
99
+ ```ts
100
+ import { percentage } from "intlayer";
101
+
102
+ percentage(0.25); // "25%"
103
+ percentage(25); // "25%"
104
+ percentage(0.237, { minimumFractionDigits: 1 }); // "23,7%"
105
+ ```
106
+
107
+ ### `currency(value, options?)`
108
+
109
+ Formatiert einen Wert als lokalisierte Währung. Standardmäßig `USD` mit zwei Nachkommastellen.
110
+
111
+ - **value**: `number | string`
112
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
113
+ - Häufige Felder: `currency` (z. B. `"EUR"`), `currencyDisplay` (`"symbol" | "code" | "name"`)
114
+
115
+ Beispiele:
116
+
117
+ ```ts
118
+ import { currency } from "intlayer";
119
+
120
+ currency(1234.5, { currency: "EUR" }); // "€1.234,50"
121
+ currency("5000", { locale: "fr", currency: "CAD", currencyDisplay: "code" }); // "5 000,00 CAD"
122
+ ```
123
+
124
+ ### `date(date, optionsOrPreset?)`
125
+
126
+ Formatiert einen Datum-/Uhrzeitwert mit `Intl.DateTimeFormat`.
127
+
128
+ - **date**: `Date | string | number`
129
+ - **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` oder eines der Presets:
130
+ - Presets: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
131
+
132
+ Beispiele:
133
+
134
+ ```ts
135
+ import { date } from "intlayer";
136
+
137
+ date(new Date(), "short"); // z.B. "02.08.25, 14:30"
138
+ date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 août"
139
+ ```
140
+
141
+ ### `relativeTime(from, to = new Date(), options?)`
142
+
143
+ Formatiert relative Zeit zwischen zwei Zeitpunkten mit `Intl.RelativeTimeFormat`.
144
+
145
+ - Übergebe "now" als erstes Argument und das Ziel als zweites, um eine natürliche Formulierung zu erhalten.
146
+ - **from**: `Date | string | number`
147
+ - **to**: `Date | string | number` (Standard ist `new Date()`)
148
+ - **options**: `{ locale?: LocalesValues; unit?: Intl.RelativeTimeFormatUnit; numeric?: Intl.RelativeTimeFormatNumeric; style?: Intl.RelativeTimeFormatStyle }`
149
+ - Standard-`unit` ist `"second"`.
150
+
151
+ Beispiele:
152
+
153
+ ```ts
154
+ import { relativeTime } from "intlayer";
155
+
156
+ const now = new Date();
157
+ const in3Days = new Date(now.getTime() + 3 * 864e5);
158
+ relativeTime(now, in3Days, { unit: "day" }); // "in 3 Tagen"
159
+
160
+ const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
161
+ relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "vor 2 Stunden"
162
+ ```
163
+
164
+ ### `units(value, options?)`
165
+
166
+ Formatiert einen numerischen Wert als lokalisierten Einheitentext unter Verwendung von `Intl.NumberFormat` mit `style: 'unit'`.
167
+
168
+ - **value**: `number | string`
169
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
170
+ - Häufige Felder: `unit` (z.B. `"kilometer"`, `"byte"`), `unitDisplay` (`"short" | "narrow" | "long"`)
171
+ - Standardwerte: `unit: 'day'`, `unitDisplay: 'short'`, `useGrouping: false`
172
+
173
+ Beispiele:
174
+
175
+ ```ts
176
+ import { units } from "intlayer";
177
+
178
+ units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 kilometers"
179
+ units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B" (abhängig von der Locale)
180
+ ```
181
+
182
+ ### `compact(value, options?)`
183
+
184
+ Formatiert eine Zahl mit kompakter Notation (z.B. `1.2K`, `1M`).
185
+
186
+ - **value**: `number | string`
187
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }` (verwendet intern `notation: 'compact'`)
188
+
189
+ Beispiele:
190
+
191
+ ```ts
192
+ import { compact } from "intlayer";
193
+
194
+ compact(1200); // "1.2K"
195
+ compact("1000000", { locale: "fr", compactDisplay: "long" }); // "1 million"
196
+ ```
197
+
198
+ ## Hinweise
199
+
200
+ - Alle Helfer akzeptieren Eingaben als `string`; diese werden intern in Zahlen oder Daten umgewandelt.
201
+ - Die Locale verwendet standardmäßig die konfigurierte `internationalization.defaultLocale`, falls keine angegeben ist.
202
+ - Diese Hilfsfunktionen sind dünne Wrapper; für erweiterte Formatierungen können die Standard-`Intl`-Optionen direkt verwendet werden.
203
+
204
+ ## Einstiegspunkte und Re-Exports (`@index.ts`)
205
+
206
+ Die Formatter befinden sich im Core-Paket und werden von höherstufigen Paketen erneut exportiert, um Importe über verschiedene Laufzeitumgebungen hinweg ergonomisch zu gestalten:
207
+
208
+ Beispiele:
209
+
210
+ ```ts
211
+ // App-Code (empfohlen)
212
+ import { number, currency, date, Intl } from "intlayer";
213
+ ```
214
+
215
+ ### React
216
+
217
+ Client-Komponenten:
218
+
219
+ ```ts
220
+ import { useNumber, useCurrency, useDate } from "react-intlayer/format";
221
+ // oder in Next.js-Anwendungen
222
+ import { useNumber, useCurrency, useDate } from "next-intlayer/client/format";
223
+ ```
224
+
225
+ Server-Komponenten (oder React Server Runtime):
226
+
227
+ ```ts
228
+ import { useNumber, useCurrency, useDate } from "intlayer/server/format";
229
+ // oder in Next.js-Anwendungen
230
+ import { useNumber, useCurrency, useDate } from "next-intlayer/server/format";
231
+ ```
232
+
233
+ > Diese Hooks berücksichtigen die Locale vom `IntlayerProvider` oder `IntlayerServerProvider`
234
+
235
+ ## Dokumentationshistorie
236
+
237
+ | Version | Datum | Änderungen |
238
+ | ------- | ---------- | ------------------------------------- |
239
+ | 5.8.0 | 2025-08-18 | Formatierer-Dokumentation hinzugefügt |
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  createdAt: 2024-08-14
3
- updatedAt: 2025-06-29
3
+ updatedAt: 2025-08-20
4
4
  title: Interesse an Intlayer
5
- description: Entdecken Sie die Vorteile und Nutzen der Verwendung von Intlayer in Ihren Projekten. Verstehen Sie, warum Intlayer sich von anderen Frameworks abhebt.
5
+ description: Entdecken Sie die Vorteile und Nutzen der Verwendung von Intlayer in Ihren Projekten. Verstehen Sie, warum Intlayer sich unter anderen Frameworks hervorhebt.
6
6
  keywords:
7
7
  - Vorteile
8
8
  - Nutzen
@@ -11,41 +11,104 @@ keywords:
11
11
  - Vergleich
12
12
  slugs:
13
13
  - doc
14
- - concept
15
- - interest
14
+ - why
16
15
  ---
17
16
 
18
- # Intlayer: Ein maßgeschneiderter Weg, Ihre Website zu übersetzen
17
+ # Warum sollten Sie Intlayer in Betracht ziehen?
19
18
 
20
- **Intlayer** ist eine Internationalisierungsbibliothek, die speziell für JavaScript-Entwickler entwickelt wurde. Sie ermöglicht die Deklaration Ihres Inhalts überall in Ihrem Code. Sie wandelt die Deklaration von mehrsprachigem Inhalt in strukturierte Wörterbücher um, um eine einfache Integration in Ihren Code zu gewährleisten. Durch die Verwendung von TypeScript macht **Intlayer** Ihre Entwicklung robuster und effizienter.
19
+ ## Was ist Intlayer?
21
20
 
22
- ## Anwendungsbeispiel
21
+ **Intlayer** ist eine Internationalisierungsbibliothek, die speziell für JavaScript-Entwickler entwickelt wurde. Sie ermöglicht die Deklaration Ihres Inhalts überall in Ihrem Code. Sie wandelt Deklarationen mehrsprachiger Inhalte in strukturierte Wörterbücher um, um sie einfach in Ihren Code zu integrieren. Durch die Verwendung von TypeScript macht **Intlayer** Ihre Entwicklung robuster und effizienter.
22
+
23
+ ## Warum wurde Intlayer erstellt?
24
+
25
+ Intlayer wurde entwickelt, um ein häufiges Problem zu lösen, das alle gängigen i18n-Bibliotheken wie `next-intl`, `react-i18next`, `react-intl`, `next-i18next`, `react-intl` und `vue-i18n` betrifft.
26
+
27
+ Alle diese Lösungen verfolgen einen zentralisierten Ansatz, um Ihre Inhalte aufzulisten und zu verwalten. Zum Beispiel:
28
+
29
+ ```bash
30
+ .
31
+ ├── locales
32
+ │ ├── en.json
33
+ │ ├── fr.json
34
+ │ └── es.json
35
+ ├── i18n.ts
36
+ └── src
37
+ └── components
38
+ └── MyComponent
39
+ └── index.tsx
40
+ ```
41
+
42
+ Oder hier mit Namespaces:
43
+
44
+ ```bash
45
+ .
46
+ ├── locales
47
+ │ ├── en
48
+ │ │ ├── footer.json
49
+ │ │ └── navbar.json
50
+ │ ├── fr
51
+ │ │ ├── footer.json
52
+ │ │ └── navbar.json
53
+ │ └── es
54
+ │ ├── footer.json
55
+ │ └── navbar.json
56
+ ├── i18n.ts
57
+ └── src
58
+ └── components
59
+ └── MyComponent
60
+ └── index.tsx
61
+ ```
62
+
63
+ Diese Art von Architektur verlangsamt den Entwicklungsprozess und macht den Codebestand aus mehreren Gründen komplexer zu warten:
64
+
65
+ 1. **Für jede neu erstellte Komponente sollten Sie:**
66
+ - Die neue Ressource/den neuen Namespace im Ordner `locales` anlegen
67
+ - Daran denken, den neuen Namespace in Ihrer Seite zu importieren
68
+ - Ihre Inhalte übersetzen (oft manuell durch Kopieren/Einfügen von KI-Anbietern)
69
+
70
+ 2. **Für jede Änderung an Ihren Komponenten sollten Sie:**
71
+ - Nach der zugehörigen Ressource/dem Namespace suchen (weit entfernt von der Komponente)
72
+ - Ihre Inhalte übersetzen
73
+ - Sicherstellen, dass Ihre Inhalte für jede Locale aktuell sind
74
+ - Überprüfen, dass Ihr Namespace keine ungenutzten Schlüssel/Werte enthält
75
+ - Sicherstellen, dass die Struktur Ihrer JSON-Dateien für alle Locales gleich ist
76
+
77
+ Bei professionellen Projekten, die diese Lösungen verwenden, werden häufig Lokalisierungsplattformen eingesetzt, um die Übersetzung Ihrer Inhalte zu verwalten. Dies kann jedoch bei großen Projekten schnell kostspielig werden.
78
+
79
+ Um dieses Problem zu lösen, verfolgt Intlayer einen Ansatz, bei dem Ihre Inhalte pro Komponente abgegrenzt und nahe bei Ihrer Komponente gehalten werden, ähnlich wie wir es oft mit CSS (`styled-components`), Typen, Dokumentation (`storybook`) oder Unit-Tests (`jest`) tun.
23
80
 
24
81
  ```bash codeFormat="typescript"
25
82
  .
26
- └── Components
83
+ └── components
27
84
  └── MyComponent
28
85
  ├── index.content.ts
86
+ ├── index.test.tsx
87
+ ├── index.stories.tsx
29
88
  └── index.tsx
30
89
  ```
31
90
 
32
91
  ```bash codeFormat="commonjs"
33
92
  .
34
- └── Components
93
+ └── components
35
94
  └── MyComponent
36
95
  ├── index.content.cjs
37
- └── index.mjs
96
+ ├── index.test.mjs
97
+ ├── index.stories.mjs
98
+ └── index.tsx
38
99
  ```
39
100
 
40
101
  ```bash codeFormat="esm"
41
102
  .
42
- └── Components
103
+ └── components
43
104
  └── MyComponent
44
105
  ├── index.content.mjs
45
- └── index.js
106
+ ├── index.test.mjs
107
+ ├── index.stories.mjs
108
+ └── index.tsx
46
109
  ```
47
110
 
48
- ```tsx fileName="./Components/MyComponent/index.content.ts" codeFormat="typescript"
111
+ ```tsx fileName="./components/MyComponent/index.content.ts" codeFormat="typescript"
49
112
  import { t, type Dictionary } from "intlayer";
50
113
 
51
114
  const componentExampleContent = {
@@ -53,8 +116,8 @@ const componentExampleContent = {
53
116
  content: {
54
117
  myTranslatedContent: t({
55
118
  en: "Hello World",
56
- fr: "Bonjour le monde",
57
119
  es: "Hola Mundo",
120
+ fr: "Bonjour le monde",
58
121
  }),
59
122
  },
60
123
  } satisfies Dictionary;
@@ -62,18 +125,17 @@ const componentExampleContent = {
62
125
  export default componentExampleContent;
63
126
  ```
64
127
 
65
- ```jsx fileName="./Components/MyComponent/index.mjx" codeFormat="esm"
128
+ ```jsx fileName="./components/MyComponent/index.mjx" codeFormat="esm"
66
129
  import { t } from "intlayer";
67
130
 
68
131
  /** @type {import('intlayer').Dictionary} */
69
- // Beispielinhalt für die Komponente mit mehrsprachigem Text
70
132
  const componentExampleContent = {
71
133
  key: "component-example",
72
134
  content: {
73
135
  myTranslatedContent: t({
74
136
  en: "Hello World",
75
- fr: "Bonjour le monde",
76
137
  es: "Hola Mundo",
138
+ fr: "Bonjour le monde",
77
139
  }),
78
140
  },
79
141
  };
@@ -81,17 +143,18 @@ const componentExampleContent = {
81
143
  export default componentExampleContent;
82
144
  ```
83
145
 
84
- ```jsx fileName="./Components/MyComponent/index.csx" codeFormat="commonjs"
146
+ ```jsx fileName="./components/MyComponent/index.csx" codeFormat="commonjs"
85
147
  const { t } = require("intlayer");
86
148
 
87
149
  /** @type {import('intlayer').Dictionary} */
150
+ // Übersetzungsinhalt für die Komponente
88
151
  const componentExampleContent = {
89
152
  key: "component-example",
90
153
  content: {
91
154
  myTranslatedContent: t({
92
155
  en: "Hello World",
93
- fr: "Bonjour le monde",
94
156
  es: "Hola Mundo",
157
+ fr: "Bonjour le monde",
95
158
  }),
96
159
  },
97
160
  };
@@ -99,7 +162,7 @@ const componentExampleContent = {
99
162
  module.exports = componentExampleContent;
100
163
  ```
101
164
 
102
- ```tsx fileName="./Components/MyComponent/index.tsx" codeFormat="typescript"
165
+ ```tsx fileName="./components/MyComponent/index.tsx" codeFormat="typescript"
103
166
  import { useIntlayer } from "react-intlayer";
104
167
 
105
168
  export const ComponentExample = () => {
@@ -109,8 +172,7 @@ export const ComponentExample = () => {
109
172
  };
110
173
  ```
111
174
 
112
- ```jsx fileName="./Components/MyComponent/index.mjx" codeFormat="esm"
113
- jsx fileName="./Components/MyComponent/index.mjx" codeFormat="esm"
175
+ ```jsx fileName="./components/MyComponent/index.mjx" codeFormat="esm"
114
176
  import { useIntlayer } from "react-intlayer";
115
177
 
116
178
  const ComponentExample = () => {
@@ -120,7 +182,7 @@ const ComponentExample = () => {
120
182
  };
121
183
  ```
122
184
 
123
- ```jsx fileName="./Components/MyComponent/index.csx" codeFormat="commonjs"
185
+ ```jsx fileName="./components/MyComponent/index.csx" codeFormat="commonjs"
124
186
  const { useIntlayer } = require("react-intlayer");
125
187
 
126
188
  const ComponentExample = () => {
@@ -130,27 +192,79 @@ const ComponentExample = () => {
130
192
  };
131
193
  ```
132
194
 
133
- ## Warum Intlayer wählen?
134
-
135
- | Funktion | Beschreibung |
136
- | --------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
137
- | **JavaScript-gesteuertes Content-Management** | Nutzen Sie die Flexibilität von JavaScript, um Ihre Inhalte effizient zu definieren und zu verwalten. |
138
- | **Typensichere Umgebung** | Nutzen Sie TypeScript, um sicherzustellen, dass alle Ihre Inhaltsdefinitionen präzise und fehlerfrei sind. |
139
- | **Integrierte Inhaltsdateien** | Halten Sie Ihre Übersetzungen nahe bei den jeweiligen Komponenten, um die Wartbarkeit und Klarheit zu verbessern. |
140
- | **Vereinfachte Einrichtung** | Starten Sie schnell mit minimaler Konfiguration, speziell optimiert für Next.js-Projekte. |
141
- | **Server-Komponenten-Unterstützung** | Perfekt geeignet für Next.js-Serverkomponenten und gewährleistet ein reibungsloses serverseitiges Rendering. |
142
- | **Erweiterte Routing-Funktionalität** | Vollständige Unterstützung für das Routing von Next.js-Apps, die sich nahtlos an komplexe Anwendungsstrukturen anpasst. |
143
- | **Organisierte Codebasis** | Halten Sie Ihre Codebasis besser organisiert: 1 Komponente = 1 Wörterbuch im selben Ordner. |
144
- | **CI Auto-Übersetzung** | Füllen Sie Ihre Übersetzungen in Ihrer CI automatisch mit Ihrem eigenen OpenAI API-Schlüssel aus, wodurch die Notwendigkeit einer L10n-Plattform entfällt. |
145
- | **MCP-Server-Integration** | Bietet einen MCP (Model Context Protocol) Server für IDE-Automatisierung, der nahtloses Content-Management und i18n-Workflows direkt in Ihrer Entwicklungsumgebung ermöglicht. [Mehr erfahren](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/mcp_server.md). |
146
- | **Markdown-Unterstützung** | Importieren und Interpretieren von Markdown-Dateien für mehrsprachige Inhalte wie Datenschutzrichtlinien. |
147
- | **Kostenloser visueller Editor & CMS** | Ein kostenloser visueller Editor und CMS stehen zur Verfügung, wenn Sie mit Content-Autoren für Ihre Übersetzungen zusammenarbeiten müssen. Dies eliminiert erneut die Notwendigkeit einer Lokalisierungsplattform und ermöglicht die Auslagerung von Inhalten aus dem Codebasis. |
148
- | **Vereinfachte Inhaltsabfrage** | Es ist nicht erforderlich, Ihre `t`-Funktion für jeden einzelnen Inhalt aufzurufen; rufen Sie alle Ihre Inhalte direkt mit einem einzigen Hook ab. |
149
- | **Konsistente Implementierung** | Dieselbe Implementierung für sowohl Client- als auch Server-Komponenten, es ist nicht notwendig, Ihre `t`-Funktion über jede Server-Komponente weiterzugeben. |
150
- | **Tree-shakable Inhalte** | Der Inhalt ist tree-shakable, was das endgültige Bundle erleichtert. |
151
- | **Nicht-blockierendes statisches Rendering** | Intlayer blockiert das statische Rendering nicht, wie es `next-intl` tut. |
152
- | **Interoperabilität** | Ermöglicht die Interoperabilität mit [react-i18next](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/intlayer_with_react-i18next.md), [next-i18next](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/intlayer_with_next-i18next.md), [next-intl](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/intlayer_with_next-intl.md) und [react-intl](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/intlayer_with_react-intl.md). |
153
-
154
- ## Dokumentationshistorie
155
-
156
- - 5.5.10 - 2025-06-29: Initiale Historie
195
+ Dieser Ansatz ermöglicht es Ihnen:
196
+
197
+ 1. **Die Entwicklungsgeschwindigkeit zu erhöhen**
198
+ - `.content.{{ts|mjs|cjs|json}}` Dateien können mit einer VSCode-Erweiterung erstellt werden
199
+ - Autovervollständigungs-KI-Tools in Ihrer IDE (wie GitHub Copilot) können Ihnen helfen, Ihren Inhalt zu deklarieren, wodurch Copy/Paste reduziert wird
200
+
201
+ 2. **Reduzieren Sie die Komplexität Ihres Codebestands**
202
+
203
+ 3. **Erhöhen Sie die Wartbarkeit Ihres Codebestands**
204
+
205
+ 4. **Duplizieren Sie Ihre Komponenten und deren zugehörigen Inhalte einfacher (Beispiel: Login/Register-Komponenten usw.)**
206
+ - Indem Sie das Risiko minimieren, den Inhalt anderer Komponenten zu beeinflussen
207
+ - Indem Sie Ihre Inhalte von einer Anwendung in eine andere ohne externe Abhängigkeiten kopieren/einfügen
208
+
209
+ 5. **Vermeiden Sie es, Ihren Codebestand mit ungenutzten Schlüsseln/Werten für ungenutzte Komponenten zu verschmutzen**
210
+ - Wenn Sie eine Komponente nicht verwenden, müssen Sie deren Inhalt nicht importieren
211
+ - Wenn Sie eine Komponente löschen, erinnern Sie sich leichter daran, den zugehörigen Inhalt zu entfernen, da dieser im selben Ordner vorhanden ist
212
+
213
+ 6. **Reduzieren Sie die Denkaufwand für KI-Agenten, um Ihre mehrsprachigen Inhalte zu deklarieren**
214
+ - Der KI-Agent muss nicht Ihren gesamten Codebestand durchsuchen, um zu wissen, wo Ihr Inhalt implementiert werden soll
215
+ - Übersetzungen können einfach mit Autovervollständigungs-KI-Tools in Ihrer IDE (wie GitHub Copilot) durchgeführt werden
216
+
217
+ 7. **Optimieren Sie die Ladeleistung**
218
+ - Wenn eine Komponente lazy geladen wird, wird ihr zugehöriger Inhalt gleichzeitig geladen
219
+
220
+ ## Zusätzliche Funktionen von Intlayer
221
+
222
+ | Funktion | Beschreibung |
223
+ | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
224
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true) | **Framework-übergreifende Unterstützung**<br><br>Intlayer ist kompatibel mit allen wichtigen Frameworks und Bibliotheken, einschließlich Next.js, React, Vite, Vue.js, Nuxt, Preact, Express und mehr. |
225
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.png?raw=true) | **JavaScript-gesteuertes Content-Management**<br><br>Nutzen Sie die Flexibilität von JavaScript, um Ihre Inhalte effizient zu definieren und zu verwalten. <br><br> - [Inhaltsdeklaration](https://intlayer.org/doc/concept/content) |
226
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true) | **Pro-Lokale Inhaltsdeklarationsdatei**<br><br>Beschleunigen Sie Ihre Entwicklung, indem Sie Ihre Inhalte einmalig deklarieren, bevor die automatische Generierung erfolgt.<br><br> - [Pro-Lokale Inhaltsdeklarationsdatei](https://intlayer.org/doc/concept/per-locale-file) |
227
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true) | **Typsicheres Umfeld**<br><br>Nutzen Sie TypeScript, um sicherzustellen, dass Ihre Inhaltsdefinitionen und Ihr Code fehlerfrei sind, und profitieren Sie gleichzeitig von der Autovervollständigung in der IDE.<br><br> - [TypeScript-Konfiguration](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
228
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true) | **Vereinfachte Einrichtung**<br><br>Starten Sie schnell mit minimaler Konfiguration. Passen Sie Einstellungen für Internationalisierung, Routing, KI, Build und Inhaltsverwaltung mühelos an.<br><br> - [Next.js-Integration erkunden](https://intlayer.org/doc/environment/nextjs) |
229
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true) | **Vereinfachte Inhaltsabfrage**<br><br>Sie müssen Ihre `t`-Funktion nicht für jeden einzelnen Inhalt aufrufen. Rufen Sie alle Ihre Inhalte direkt mit einem einzigen Hook ab.<br><br> - [React-Integration](https://intlayer.org/doc/environment/create-react-app) |
230
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true) | **Konsistente Implementierung von Server-Komponenten**<br><br>Perfekt geeignet für Next.js Server-Komponenten, verwenden Sie dieselbe Implementierung sowohl für Client- als auch für Server-Komponenten, ohne Ihre `t`-Funktion an jede Server-Komponente weitergeben zu müssen. <br><br> - [Server-Komponenten](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
231
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true) | **Organisierte Codebasis**<br><br>Halten Sie Ihre Codebasis besser organisiert: 1 Komponente = 1 Wörterbuch im selben Ordner. Übersetzungen, die nahe bei ihren jeweiligen Komponenten liegen, verbessern die Wartbarkeit und Klarheit. <br><br> - [Wie Intlayer funktioniert](https://intlayer.org/doc/concept/how-works-intlayer) |
232
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true) | **Erweitertes Routing**<br><br>Volle Unterstützung des App-Routings, die sich nahtlos an komplexe Anwendungsstrukturen anpasst, für Next.js, React, Vite, Vue.js usw.<br><br> - [Next.js-Integration erkunden](https://intlayer.org/doc/environment/nextjs) |
233
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true) | **Markdown-Unterstützung**<br><br>Importieren und interpretieren Sie Lokalisierungsdateien und entfernte Markdown-Dateien für mehrsprachige Inhalte wie Datenschutzrichtlinien, Dokumentationen usw. Interpretieren Sie Markdown-Metadaten und machen Sie sie in Ihrem Code zugänglich.<br><br> - [Inhaltsdateien](https://intlayer.org/doc/concept/content/file) |
234
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true) | **Kostenloser visueller Editor & CMS**<br><br>Ein kostenloser visueller Editor und CMS stehen Content-Autoren zur Verfügung, wodurch keine Lokalisierungsplattform mehr benötigt wird. Halten Sie Ihre Inhalte mit Git synchronisiert oder externalisieren Sie sie ganz oder teilweise mit dem CMS.<br><br> - [Intlayer Editor](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms) |
235
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true) | **Tree-shakable Inhalte**<br><br>Tree-shakable Inhalte, die die Größe des finalen Bundles reduzieren. Lädt Inhalte pro Komponente und schließt ungenutzte Inhalte aus Ihrem Bundle aus. Unterstützt Lazy Loading, um die Ladeeffizienz der App zu verbessern. <br><br> - [App-Build-Optimierung](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
236
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true) | **Statisches Rendering**<br><br>Blockiert das statische Rendering nicht. <br><br> - [Next.js-Integration](https://intlayer.org/doc/environment/nextjs) |
237
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true) | **KI-gestützte Übersetzung**<br><br>Verwandeln Sie Ihre Website mit nur einem Klick in 231 Sprachen mithilfe der fortschrittlichen KI-gestützten Übersetzungswerkzeuge von Intlayer unter Verwendung Ihres eigenen KI-Anbieters/API-Schlüssels. <br><br> - [CI/CD-Integration](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [Automatisches Ausfüllen](https://intlayer.org/doc/concept/auto-fill) |
238
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true) | **MCP-Server-Integration**<br><br>Stellt einen MCP (Model Context Protocol) Server für IDE-Automatisierung bereit, der nahtloses Content-Management und i18n-Workflows direkt in Ihrer Entwicklungsumgebung ermöglicht. <br><br> - [MCP-Server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/mcp_server.md) |
239
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true) | **VSCode-Erweiterung**<br><br>Intlayer bietet eine VSCode-Erweiterung, die Ihnen hilft, Ihre Inhalte und Übersetzungen zu verwalten, Ihre Wörterbücher zu erstellen, Ihre Inhalte zu übersetzen und mehr. <br><br> - [VSCode-Erweiterung](https://intlayer.org/doc/vs-code-extension) |
240
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true) | **Interoperabilität**<br><br>Ermöglicht die Interoperabilität mit react-i18next, next-i18next, next-intl und react-intl. <br><br> - [Intlayer und react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer und next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer und next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) |
241
+
242
+ ## Vergleich von Intlayer mit anderen Lösungen
243
+
244
+ | Funktion | Intlayer | React-i18next / i18next | React-Intl (FormatJS) | LinguiJS | next-intl | next-i18next | vue-i18n |
245
+ | -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------------------ |
246
+ | **Übersetzungen in der Nähe der Komponenten** | Ja, Inhalte sind mit jeder Komponente zusammengefasst | Nein | Nein | Nein | Nein | Nein | Ja - Verwendung von `Single File Components` (SFCs) |
247
+ | **TypeScript-Integration** | Fortgeschritten, automatisch generierte strenge Typen | Grundlegend; zusätzliche Konfiguration für Sicherheit | Gut, aber weniger strikt | Typen, benötigt Konfiguration | Gut | Grundlegend | Gut (Typen verfügbar; Schlüssel-Sicherheit benötigt Einrichtung) |
248
+ | **Fehlende Übersetzungs-Erkennung** | Fehler/Warnung zur Build-Zeit | Meist Fallback-Strings zur Laufzeit | Fallback-Strings | Benötigt zusätzliche Konfiguration | Laufzeit-Fallback | Laufzeit-Fallback | Laufzeit-Fallback/Warnungen (konfigurierbar) |
249
+ | **Reicher Inhalt (JSX/Markdown/Komponenten)** | Direkte Unterstützung, sogar React-Knoten | Eingeschränkt / nur Interpolation | ICU-Syntax, kein echtes JSX | Eingeschränkt | Nicht für reiche Knoten ausgelegt | Eingeschränkt | Eingeschränkt (Komponenten über `<i18n-t>`, Markdown über Plugins) |
250
+ | **KI-gestützte Übersetzung** | Ja, unterstützt mehrere KI-Anbieter. Nutzbar mit eigenen API-Schlüsseln. Berücksichtigt den Kontext Ihrer Anwendung und des Inhaltsumfangs | Nein | Nein | Nein | Nein | Nein | Nein |
251
+ | **Visueller Editor** | Ja, lokaler visueller Editor + optionales CMS; kann Codebasis-Inhalte auslagern; einbettbar | Nein / verfügbar über externe Lokalisierungsplattformen | Nein / verfügbar über externe Lokalisierungsplattformen | Nein / verfügbar über externe Lokalisierungsplattformen | Nein / verfügbar über externe Lokalisierungsplattformen | Nein / verfügbar über externe Lokalisierungsplattformen | Nein / verfügbar über externe Lokalisierungsplattformen |
252
+ | **Lokalisierte Routenführung** | Eingebaut, Middleware-Unterstützung | Plugins oder manuelle Konfiguration | Nicht eingebaut | Plugin/manuelle Konfiguration | Eingebaut | Eingebaut | Manuell über Vue Router (wird von Nuxt i18n verwaltet) |
253
+ | **Dynamische Routen-Generierung** | Ja | Plugin/Ökosystem oder manuelle Einrichtung | Nicht bereitgestellt | Plugin/manuell | Ja | Ja | Nicht bereitgestellt (wird von Nuxt i18n bereitgestellt) |
254
+ | **Pluralisierung** | Aufzählungsbasierte Muster; siehe Dokumentation | Konfigurierbar (Plugins wie i18next-icu) | Fortgeschritten (ICU) | Fortgeschritten (ICU/messageformat) | Gut | Gut | Fortgeschritten (eingebaute Pluralregeln) |
255
+ | **Formatierung (Daten, Zahlen, Währungen)** | Optimierte Formatierer (Intl im Hintergrund) | Über Plugins oder benutzerdefinierte Intl-Nutzung | Erweiterte ICU-Formatierer | ICU/CLI-Helfer | Gut (Intl-Helfer) | Gut (Intl-Helfer) | Eingebaute Datums-/Zahlenformatierer (Intl) |
256
+ | **Inhaltsformat** | .tsx, .ts, .js, .json, .md, .txt | .json | .json, .js | .po, .json | .json, .js, .ts | .json | .json, .js |
257
+ | **ICU-Unterstützung** | In Arbeit (native ICU) | Über Plugin (i18next-icu) | Ja | Ja | Ja | Über Plugin (i18next-icu) | Über benutzerdefinierten Formatter/Compiler |
258
+ | **SEO-Helfer (hreflang, Sitemap)** | Eingebaute Werkzeuge: Helfer für Sitemap, **robots.txt**, Metadaten | Community-Plugins/Manuell | Nicht Kernfunktion | Nicht Kernfunktion | Gut | Gut | Nicht Kernfunktion (Nuxt i18n stellt Helfer bereit) |
259
+ | **Ökosystem / Gemeinschaft** | Klein, aber schnell wachsend und reaktiv | Größte und am weitesten entwickelte | Groß, unternehmensorientiert | Wachsend, kleiner | Mittelgroß, Next.js-fokussiert | Mittelgroß, Next.js-fokussiert | Groß im Vue-Ökosystem |
260
+ | **Server-seitiges Rendering & Server-Komponenten** | Ja, optimiert für SSR / React Server-Komponenten | Unterstützt, einige Konfiguration erforderlich | Unterstützt in Next.js | Unterstützt | Volle Unterstützung | Volle Unterstützung | SSR über Nuxt/Vue SSR (kein RSC) |
261
+ | **Tree-shaking (nur verwendete Inhalte laden)** | Ja, pro Komponente zur Build-Zeit über Babel/SWC-Plugins | Lädt normalerweise alles (kann mit Namespaces/Code-Splitting verbessert werden) | Lädt normalerweise alles | Nicht standardmäßig | Teilweise | Teilweise | Teilweise (mit Code-Splitting/manuellem Setup) |
262
+ | **Lazy Loading** | Ja, pro Locale/pro Komponente | Ja (z.B. Backends/Namespaces bei Bedarf) | Ja (aufgeteilte Locale-Bündel) | Ja (dynamische Katalogimporte) | Ja (pro Route/pro Locale) | Ja (pro Route/pro Locale) | Ja (asynchrone Locale-Nachrichten) |
263
+ | **Verwaltung großer Projekte** | Fördert Modularität, geeignet für Design-Systeme | Benötigt gute Dateidisziplin | Zentrale Kataloge können groß werden | Kann komplex werden | Modular mit Setup | Modular mit Setup | Modular mit Vue Router/Nuxt i18n Setup |
264
+
265
+ ## Dokumenthistorie
266
+
267
+ | Version | Datum | Änderungen |
268
+ | ------- | ---------- | -------------------------------- |
269
+ | 5.8.0 | 2025-08-19 | Aktualisierung Vergleichstabelle |
270
+ | 5.5.10 | 2025-06-29 | Initiale Historie |
@@ -44,8 +44,8 @@ const componentContent = {
44
44
  content: {
45
45
  myTranslatedContent: t({
46
46
  en: "Hello World",
47
- fr: "Bonjour le monde",
48
47
  es: "Hola Mundo",
48
+ fr: "Bonjour le monde",
49
49
  }),
50
50
  },
51
51
  } satisfies Dictionary;
@@ -64,8 +64,8 @@ const componentContent = {
64
64
  content: {
65
65
  myTranslatedContent: t({
66
66
  en: "Hello World",
67
- fr: "Bonjour le monde",
68
67
  es: "Hola Mundo",
68
+ fr: "Bonjour le monde",
69
69
  }),
70
70
  },
71
71
  };
@@ -83,8 +83,8 @@ const componentContent = {
83
83
  content: {
84
84
  myTranslatedContent: t({
85
85
  en: "Hello World",
86
- fr: "Bonjour le monde",
87
86
  es: "Hola Mundo",
87
+ fr: "Bonjour le monde",
88
88
  }),
89
89
  },
90
90
  };