@intlayer/docs 5.8.0-canary.0 → 5.8.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 (223) hide show
  1. package/blog/ar/intlayer_with_next-i18next.md +2 -2
  2. package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +96 -219
  3. package/blog/ar/react-i18next_vs_react-intl_vs_intlayer.md +88 -129
  4. package/blog/ar/vue-i18n_vs_intlayer.md +268 -0
  5. package/blog/de/intlayer_with_next-i18next.md +2 -2
  6. package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
  7. package/blog/de/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
  8. package/blog/de/vue-i18n_vs_intlayer.md +268 -0
  9. package/blog/en/intlayer_with_next-i18next.md +2 -2
  10. package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +89 -220
  11. package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +85 -123
  12. package/blog/en/vue-i18n_vs_intlayer.md +268 -0
  13. package/blog/en-GB/intlayer_with_next-i18next.md +2 -2
  14. package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +85 -218
  15. package/blog/en-GB/react-i18next_vs_react-intl_vs_intlayer.md +80 -130
  16. package/blog/en-GB/vue-i18n_vs_intlayer.md +258 -0
  17. package/blog/es/intlayer_with_next-i18next.md +2 -2
  18. package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
  19. package/blog/es/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
  20. package/blog/es/vue-i18n_vs_intlayer.md +268 -0
  21. package/blog/fr/intlayer_with_next-i18next.md +2 -2
  22. package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +91 -214
  23. package/blog/fr/react-i18next_vs_react-intl_vs_intlayer.md +86 -127
  24. package/blog/fr/vue-i18n_vs_intlayer.md +269 -0
  25. package/blog/hi/intlayer_with_next-i18next.md +2 -2
  26. package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +97 -220
  27. package/blog/hi/react-i18next_vs_react-intl_vs_intlayer.md +89 -130
  28. package/blog/hi/vue-i18n_vs_intlayer.md +268 -0
  29. package/blog/it/intlayer_with_next-i18next.md +2 -2
  30. package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +91 -214
  31. package/blog/it/react-i18next_vs_react-intl_vs_intlayer.md +86 -127
  32. package/blog/it/vue-i18n_vs_intlayer.md +268 -0
  33. package/blog/ja/intlayer_with_next-i18next.md +2 -2
  34. package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
  35. package/blog/ja/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
  36. package/blog/ja/vue-i18n_vs_intlayer.md +268 -0
  37. package/blog/ko/intlayer_with_next-i18next.md +2 -2
  38. package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +95 -217
  39. package/blog/ko/react-i18next_vs_react-intl_vs_intlayer.md +89 -130
  40. package/blog/ko/vue-i18n_vs_intlayer.md +268 -0
  41. package/blog/pt/intlayer_with_next-i18next.md +2 -2
  42. package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
  43. package/blog/pt/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
  44. package/blog/pt/vue-i18n_vs_intlayer.md +268 -0
  45. package/blog/ru/intlayer_with_next-i18next.md +2 -2
  46. package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +94 -217
  47. package/blog/ru/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
  48. package/blog/ru/vue-i18n_vs_intlayer.md +268 -0
  49. package/blog/zh/intlayer_with_next-i18next.md +2 -2
  50. package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
  51. package/blog/zh/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
  52. package/blog/zh/vue-i18n_vs_intlayer.md +269 -0
  53. package/dist/cjs/generated/blog.entry.cjs +41 -0
  54. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  55. package/dist/esm/generated/blog.entry.mjs +41 -0
  56. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  57. package/dist/types/generated/blog.entry.d.ts +1 -0
  58. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  59. package/docs/ar/formatters.md +417 -31
  60. package/docs/ar/how_works_intlayer.md +2 -4
  61. package/docs/ar/interest_of_intlayer.md +7 -10
  62. package/docs/ar/intlayer_CMS.md +2 -3
  63. package/docs/ar/intlayer_visual_editor.md +2 -3
  64. package/docs/ar/intlayer_with_tanstack.md +1 -1
  65. package/docs/ar/introduction.md +4 -4
  66. package/docs/de/formatters.md +444 -34
  67. package/docs/de/introduction.md +2 -2
  68. package/docs/en/dictionary/enumeration.md +2 -2
  69. package/docs/en/dictionary/function_fetching.md +2 -2
  70. package/docs/en/dictionary/get_started.md +2 -2
  71. package/docs/en/dictionary/translation.md +2 -2
  72. package/docs/en/formatters.md +383 -15
  73. package/docs/en/how_works_intlayer.md +2 -4
  74. package/docs/en/interest_of_intlayer.md +40 -29
  75. package/docs/en/intlayer_CMS.md +2 -3
  76. package/docs/en/intlayer_visual_editor.md +2 -3
  77. package/docs/en/intlayer_with_create_react_app.md +2 -2
  78. package/docs/en/intlayer_with_express.md +2 -2
  79. package/docs/en/intlayer_with_tanstack.md +1 -1
  80. package/docs/en/introduction.md +4 -4
  81. package/docs/en/packages/express-intlayer/index.md +2 -2
  82. package/docs/en/packages/intlayer/getConfiguration.md +2 -3
  83. package/docs/en/packages/intlayer/getEnumeration.md +2 -7
  84. package/docs/en/packages/intlayer/getHTMLTextDir.md +2 -4
  85. package/docs/en/packages/intlayer/getLocaleLang.md +2 -4
  86. package/docs/en/packages/intlayer/getLocaleName.md +2 -3
  87. package/docs/en/packages/intlayer/getLocalizedUrl.md +2 -8
  88. package/docs/en/packages/intlayer/getMultilingualUrls.md +2 -7
  89. package/docs/en/packages/intlayer/getPathWithoutLocale.md +2 -3
  90. package/docs/en/packages/intlayer/getTranslation.md +2 -4
  91. package/docs/en/packages/intlayer/index.md +2 -2
  92. package/docs/en/packages/next-intlayer/index.md +2 -2
  93. package/docs/en/packages/next-intlayer/t.md +2 -2
  94. package/docs/en/packages/next-intlayer/useDictionary.md +2 -2
  95. package/docs/en/packages/next-intlayer/useIntlayer.md +2 -2
  96. package/docs/en/packages/next-intlayer/useLocale.md +2 -2
  97. package/docs/en/packages/react-intlayer/index.md +2 -2
  98. package/docs/en/packages/react-intlayer/t.md +2 -2
  99. package/docs/en/packages/react-intlayer/useI18n.md +2 -2
  100. package/docs/en/packages/react-intlayer/useIntlayer.md +2 -2
  101. package/docs/en/packages/react-intlayer/useLocale.md +2 -2
  102. package/docs/en/packages/react-scripts-intlayer/index.md +2 -2
  103. package/docs/en/packages/solid-intlayer/index.md +2 -2
  104. package/docs/en/packages/vite-intlayer/index.md +2 -2
  105. package/docs/en-GB/formatters.md +402 -16
  106. package/docs/en-GB/how_works_intlayer.md +2 -4
  107. package/docs/en-GB/interest_of_intlayer.md +7 -10
  108. package/docs/en-GB/intlayer_with_tanstack.md +1 -1
  109. package/docs/en-GB/introduction.md +2 -2
  110. package/docs/es/formatters.md +438 -28
  111. package/docs/es/how_works_intlayer.md +2 -4
  112. package/docs/es/interest_of_intlayer.md +7 -10
  113. package/docs/es/intlayer_with_tanstack.md +1 -1
  114. package/docs/es/introduction.md +2 -2
  115. package/docs/fr/formatters.md +438 -28
  116. package/docs/fr/how_works_intlayer.md +2 -4
  117. package/docs/fr/interest_of_intlayer.md +7 -10
  118. package/docs/fr/intlayer_with_tanstack.md +1 -1
  119. package/docs/fr/introduction.md +2 -2
  120. package/docs/hi/formatters.md +430 -39
  121. package/docs/hi/how_works_intlayer.md +2 -4
  122. package/docs/hi/interest_of_intlayer.md +7 -10
  123. package/docs/hi/intlayer_with_tanstack.md +1 -1
  124. package/docs/hi/introduction.md +2 -2
  125. package/docs/it/formatters.md +438 -30
  126. package/docs/it/how_works_intlayer.md +2 -4
  127. package/docs/it/interest_of_intlayer.md +7 -10
  128. package/docs/it/intlayer_with_tanstack.md +1 -1
  129. package/docs/it/introduction.md +2 -2
  130. package/docs/ja/formatters.md +435 -47
  131. package/docs/ja/how_works_intlayer.md +2 -4
  132. package/docs/ja/interest_of_intlayer.md +7 -10
  133. package/docs/ja/intlayer_with_tanstack.md +1 -1
  134. package/docs/ja/introduction.md +2 -2
  135. package/docs/ko/formatters.md +432 -41
  136. package/docs/ko/how_works_intlayer.md +2 -4
  137. package/docs/ko/interest_of_intlayer.md +7 -10
  138. package/docs/ko/intlayer_with_tanstack.md +1 -1
  139. package/docs/ko/introduction.md +2 -2
  140. package/docs/pt/formatters.md +416 -30
  141. package/docs/pt/how_works_intlayer.md +2 -4
  142. package/docs/pt/intlayer_with_tanstack.md +1 -1
  143. package/docs/pt/introduction.md +2 -2
  144. package/docs/ru/autoFill.md +2 -2
  145. package/docs/ru/configuration.md +1 -40
  146. package/docs/ru/formatters.md +438 -28
  147. package/docs/ru/how_works_intlayer.md +5 -7
  148. package/docs/ru/index.md +1 -1
  149. package/docs/ru/interest_of_intlayer.md +8 -11
  150. package/docs/ru/intlayer_CMS.md +7 -8
  151. package/docs/ru/intlayer_cli.md +4 -7
  152. package/docs/ru/intlayer_visual_editor.md +5 -6
  153. package/docs/ru/intlayer_with_angular.md +1 -1
  154. package/docs/ru/intlayer_with_create_react_app.md +5 -5
  155. package/docs/ru/intlayer_with_lynx+react.md +1 -1
  156. package/docs/ru/intlayer_with_nextjs_15.md +3 -3
  157. package/docs/ru/intlayer_with_nextjs_page_router.md +2 -2
  158. package/docs/ru/intlayer_with_nuxt.md +1 -1
  159. package/docs/ru/intlayer_with_react_native+expo.md +2 -2
  160. package/docs/ru/intlayer_with_tanstack.md +3 -3
  161. package/docs/ru/intlayer_with_vite+preact.md +3 -3
  162. package/docs/ru/intlayer_with_vite+react.md +3 -3
  163. package/docs/ru/intlayer_with_vite+solid.md +1 -1
  164. package/docs/ru/intlayer_with_vite+svelte.md +1 -1
  165. package/docs/ru/intlayer_with_vite+vue.md +2 -2
  166. package/docs/ru/introduction.md +5 -5
  167. package/docs/ru/locale_mapper.md +1 -1
  168. package/docs/ru/packages/@intlayer/api/index.md +2 -2
  169. package/docs/ru/packages/@intlayer/chokidar/index.md +1 -1
  170. package/docs/ru/packages/@intlayer/cli/index.md +2 -2
  171. package/docs/ru/packages/@intlayer/config/index.md +2 -2
  172. package/docs/ru/packages/@intlayer/core/index.md +2 -2
  173. package/docs/ru/packages/@intlayer/design-system/index.md +2 -2
  174. package/docs/ru/packages/@intlayer/dictionary-entry/index.md +2 -2
  175. package/docs/ru/packages/@intlayer/editor/index.md +1 -1
  176. package/docs/ru/packages/@intlayer/editor-react/index.md +1 -1
  177. package/docs/ru/packages/@intlayer/webpack/index.md +1 -1
  178. package/docs/ru/packages/angular-intlayer/index.md +1 -1
  179. package/docs/ru/packages/express-intlayer/index.md +3 -3
  180. package/docs/ru/packages/express-intlayer/t.md +1 -1
  181. package/docs/ru/packages/intlayer/getEnumeration.md +3 -8
  182. package/docs/ru/packages/intlayer/getTranslation.md +3 -5
  183. package/docs/ru/packages/intlayer/getTranslationContent.md +1 -3
  184. package/docs/ru/packages/intlayer/index.md +3 -3
  185. package/docs/ru/packages/intlayer-cli/index.md +1 -1
  186. package/docs/ru/packages/intlayer-editor/index.md +2 -2
  187. package/docs/ru/packages/lynx-intlayer/index.md +1 -1
  188. package/docs/ru/packages/next-intlayer/index.md +4 -4
  189. package/docs/ru/packages/next-intlayer/t.md +4 -4
  190. package/docs/ru/packages/next-intlayer/useLocale.md +3 -3
  191. package/docs/ru/packages/nuxt-intlayer/index.md +1 -1
  192. package/docs/ru/packages/preact-intlayer/index.md +1 -1
  193. package/docs/ru/packages/react-intlayer/index.md +4 -4
  194. package/docs/ru/packages/react-intlayer/t.md +4 -4
  195. package/docs/ru/packages/react-native-intlayer/index.md +1 -1
  196. package/docs/ru/packages/react-scripts-intlayer/index.md +3 -3
  197. package/docs/ru/packages/solid-intlayer/index.md +3 -3
  198. package/docs/ru/packages/svelte-intlayer/index.md +1 -1
  199. package/docs/ru/packages/vite-intlayer/index.md +3 -3
  200. package/docs/ru/packages/vue-intlayer/index.md +1 -1
  201. package/docs/ru/per_locale_file.md +1 -1
  202. package/docs/ru/roadmap.md +3 -5
  203. package/docs/ru/vs_code_extension.md +1 -1
  204. package/docs/zh/formatters.md +446 -38
  205. package/docs/zh/how_works_intlayer.md +2 -4
  206. package/docs/zh/interest_of_intlayer.md +7 -10
  207. package/docs/zh/intlayer_with_tanstack.md +1 -1
  208. package/docs/zh/introduction.md +2 -2
  209. package/frequent_questions/ar/domain_routing.md +1 -1
  210. package/frequent_questions/en/domain_routing.md +1 -1
  211. package/frequent_questions/en-GB/domain_routing.md +1 -1
  212. package/frequent_questions/es/domain_routing.md +1 -1
  213. package/frequent_questions/fr/domain_routing.md +1 -1
  214. package/frequent_questions/hi/domain_routing.md +1 -1
  215. package/frequent_questions/it/domain_routing.md +1 -1
  216. package/frequent_questions/ko/domain_routing.md +1 -1
  217. package/frequent_questions/pt/domain_routing.md +1 -1
  218. package/frequent_questions/ru/domain_routing.md +1 -1
  219. package/frequent_questions/ru/get_locale_cookie.md +4 -4
  220. package/frequent_questions/ru/static_rendering.md +1 -2
  221. package/frequent_questions/zh/domain_routing.md +1 -1
  222. package/package.json +7 -7
  223. package/src/generated/blog.entry.ts +41 -0
@@ -1,14 +1,14 @@
1
1
  ---
2
- createdAt: 2024-08-11
3
- updatedAt: 2025-06-29
2
+ createdAt: 2025-08-23
3
+ updatedAt: 2025-08-23
4
4
  title: next-i18next vs next-intl vs Intlayer
5
- description: Vergleichen Sie next-i18next mit next-intl und Intlayer für die Internationalisierung (i18n) einer Next.js-App
5
+ description: Vergleich von next-i18next mit next-intl und Intlayer für die Internationalisierung (i18n) einer Next.js-App
6
6
  keywords:
7
7
  - next-intl
8
8
  - next-i18next
9
9
  - Intlayer
10
10
  - Internationalisierung
11
- - Dokumentation
11
+ - Blog
12
12
  - Next.js
13
13
  - JavaScript
14
14
  - React
@@ -17,269 +17,146 @@ slugs:
17
17
  - next-i18next-vs-next-intl-vs-intlayer
18
18
  ---
19
19
 
20
- # next-i18next VS next-intl VS Intlayer | Next.js Internationalisierung (i18n)
20
+ # next-i18next VS next-intl VS intlayer | Next.js Internationalisierung (i18n)
21
21
 
22
- Unten finden Sie einen prägnanten Vergleich von **drei populären Bibliotheken** zur Internationalisierung (i18n) einer Next.js-Anwendung: **next-intl**, **next-i18next** und **Intlayer**.
22
+ Dieser Leitfaden vergleicht drei weit verbreitete i18n-Optionen für **Next.js**: **next-intl**, **next-i18next** und **Intlayer**.
23
+ Wir konzentrieren uns auf den **Next.js 13+ App Router** (mit **React Server Components**) und bewerten:
23
24
 
24
- Dieses Dokument hebt die wichtigsten Kriterien hervor:
25
+ 1. **Architektur & Inhaltsorganisation**
26
+ 2. **TypeScript & Sicherheit**
27
+ 3. **Umgang mit fehlenden Übersetzungen**
28
+ 4. **Routing & Middleware**
29
+ 5. **Leistung & Ladeverhalten**
30
+ 6. **Entwicklererfahrung (DX), Werkzeuge & Wartung**
31
+ 7. **SEO & Skalierbarkeit bei großen Projekten**
25
32
 
26
- 1. **Architektur** (Halten von Übersetzungen nahe bei ihren Komponenten)
27
- 2. **TypeScript-Unterstützung**
28
- 3. **Verwaltung fehlender Übersetzungen**
29
- 4. **Unterstützung von Serverkomponenten**
30
- 5. **Erweiterte Routing- & Middleware-Funktionen** für Next.js
31
- 6. **Einfachheit der Einrichtung**
32
-
33
- Der Leitfaden bietet auch einen **gründlichen Einblick in Intlayer**, der zeigt, warum es eine starke Wahl sein kann – insbesondere für Next.js 13+, einschließlich **App Router** und **Serverkomponenten**.
33
+ > **Kurzfassung**: Alle drei können eine Next.js-App lokalisieren. Wenn Sie **komponentenbezogenen Inhalt**, **strenge TypeScript-Typen**, **Build-Zeit-Prüfungen fehlender Schlüssel**, **tree-shakbare Wörterbücher** und **erstklassige App Router- und SEO-Hilfen** wünschen, ist **Intlayer** die vollständigste und modernste Wahl.
34
34
 
35
35
  ---
36
36
 
37
- ## Übersicht über jede Bibliothek
38
-
39
- ### 1. next-intl
37
+ ## Übergeordnete Positionierung
40
38
 
41
- **Hauptfokus**: Schnelle und einfache Einrichtung mit einem leichten Ansatz zur Lokalisierung.
39
+ - **next-intl** - Leichtgewichtiges, unkompliziertes Nachrichtenformat mit solider Next.js-Unterstützung. Zentralisierte Kataloge sind üblich; die Entwicklererfahrung ist einfach, aber Sicherheit und großflächige Wartung liegen größtenteils in Ihrer Verantwortung.
40
+ - **next-i18next** - i18next im Next.js-Gewand. Ausgereiftes Ökosystem und Funktionen über Plugins (z. B. ICU), aber die Konfiguration kann umfangreich sein und Kataloge neigen dazu, mit wachsendem Projektumfang zentralisiert zu werden.
41
+ - **Intlayer** - Komponentenorientiertes Inhaltsmodell für Next.js, **strenge TS-Typisierung**, **Build-Zeit-Prüfungen**, **Tree-Shaking**, **eingebaute Middleware- und SEO-Hilfen**, optionaler **Visueller Editor/CMS** und **KI-unterstützte Übersetzungen**.
42
42
 
43
- - **Architektur**: Ermutigt zur Ko-Lokalisierung von Übersetzungen in einem einzigen Ordner (z. B. `locales/`), erlaubt jedoch auch mehrere Strategien. Durchsetzt nicht strikt eine „Übersetzung pro Komponente“ Architektur.
44
- - **TypeScript-Unterstützung**: Grundlegende TypeScript-Integration. Einige Typdefinitionen existieren, sind jedoch nicht stark auf die automatische Generierung von TypeScript-Definitionen aus Ihren Übersetzungsdateien fokussiert.
45
- - **Fehlende Übersetzungen**: Grundmechanismus für Rückfalle. Fällt standardmäßig auf einen Schlüssel oder eine Standard-Lokalisierungszeichenfolge zurück. Keine robuste Out-of-the-Box-Tooling für erweiterte Überprüfungen fehlender Übersetzungen.
46
- - **Unterstützung von Serverkomponenten**: Funktioniert allgemein mit Next.js 13+, jedoch ist das Muster weniger spezialisiert auf tiefe serverseitige Nutzung (z. B. Serverkomponenten mit komplexem dynamischen Routing).
47
- - **Routing & Middleware**: Middleware-Unterstützung ist möglich, aber begrenzt. Vertraut typischerweise auf Next.js `Middleware` zur Lokalisierungserkennung oder manuelle Konfiguration zur Umgestaltung von Lokalisierungspfaden.
48
- - **Einrichtungs Einfachheit**: Sehr unkompliziert. Es ist minimaler Boilerplate erforderlich.
43
+ ---
49
44
 
50
- **Verwenden, wenn**: Sie einen einfacheren Ansatz wünschen oder sich dabei wohlfühlen, Ihre Übersetzungen auf konventionellere Weise zu verwalten (zum Beispiel ein Ordner mit Lokalisierungs-JSON-Dateien).
45
+ ## Vergleich der Funktionen im Überblick (Fokus auf Next.js)
46
+
47
+ | Funktion | `next-intlayer` (Intlayer) | `next-intl` | `next-i18next` |
48
+ | -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
49
+ | **Übersetzungen in der Nähe der Komponenten** | ✅ Ja, Inhalt ist mit jeder Komponente zusammengefasst | ❌ Nein | ❌ Nein |
50
+ | **TypeScript-Integration** | ✅ Fortgeschritten, automatisch generierte strenge Typen | ✅ Gut | ⚠️ Grundlegend |
51
+ | **Fehlende Übersetzungserkennung** | ✅ TypeScript-Fehlerhervorhebung und Fehler-/Warnmeldung zur Build-Zeit | ⚠️ Laufzeit-Fallback | ⚠️ Laufzeit-Fallback |
52
+ | **Reicher Inhalt (JSX/Markdown/Komponenten)** | ✅ Direkte Unterstützung | ❌ Nicht für komplexe Knoten ausgelegt | ⚠️ Eingeschränkt |
53
+ | **KI-gestützte Übersetzung** | ✅ Ja, unterstützt mehrere KI-Anbieter. Nutzbar mit eigenen API-Schlüsseln. Berücksichtigt den Kontext Ihrer Anwendung und den Umfang des Inhalts | ❌ Nein | ❌ Nein |
54
+ | **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 |
55
+ | **Lokalisierte Routenführung** | ✅ Ja, unterstützt lokalisierte Pfade direkt (funktioniert mit Next.js & Vite) | ✅ Integriert, App Router unterstützt `[locale]` Segment | ✅ Integriert |
56
+ | **Dynamische Routen-Generierung** | ✅ Ja | ✅ Ja | ✅ Ja |
57
+ | **Pluralisierung** | ✅ Aufzählungsbasierte Muster | ✅ Gut | ✅ Gut |
58
+ | **Formatierung (Daten, Zahlen, Währungen)** | ✅ Optimierte Formatierer (Intl im Hintergrund) | ✅ Gut (Intl-Hilfsmittel) | ✅ Gut (Intl-Hilfsmittel) |
59
+ | **Inhaltsformat** | ✅ .tsx, .ts, .js, .json, .md, .txt, (.yaml in Arbeit) | ✅ .json, .js, .ts | ⚠️ .json |
60
+ | **ICU-Unterstützung** | ⚠️ In Arbeit | ✅ Ja | ⚠️ Über Plugin (`i18next-icu`) |
61
+ | **SEO-Helfer (hreflang, Sitemap)** | ✅ Eingebaute Werkzeuge: Helfer für Sitemap, robots.txt, Metadaten | ✅ Gut | ✅ Gut |
62
+ | **Ökosystem / Community** | ⚠️ Kleinere, aber schnell wachsende und reaktive Community | ✅ Mittelgroß, Next.js-fokussiert | ✅ Mittelgroß, Next.js-fokussiert |
63
+ | **Server-seitiges Rendering & Server-Komponenten** | ✅ Ja, optimiert für SSR / React Server-Komponenten | ⚠️ Unterstützt auf Seitenebene, aber t-Funktionen müssen im Komponentenbaum für untergeordnete Server-Komponenten übergeben werden | ⚠️ Unterstützt auf Seitenebene, aber t-Funktionen müssen im Komponentenbaum für untergeordnete Server-Komponenten übergeben werden |
64
+ | **Tree-shaking (nur genutzte Inhalte laden)** | ✅ Ja, pro Komponente zur Build-Zeit über Babel/SWC-Plugins | ⚠️ Teilweise | ⚠️ Teilweise |
65
+ | **Lazy Loading** | ✅ Ja, pro Locale / pro Wörterbuch | ✅ Ja (pro Route/pro Locale), benötigt Namespace-Verwaltung | ✅ Ja (pro Route/pro Locale), benötigt Namespace-Verwaltung |
66
+ | **Bereinigung ungenutzter Inhalte** | ✅ Ja, pro Wörterbuch zur Build-Zeit | ❌ Nein, kann manuell mit Namespace-Verwaltung gehandhabt werden | ❌ Nein, kann manuell mit Namespace-Verwaltung gehandhabt werden |
67
+ | **Management großer Projekte** | ✅ Fördert Modularität, geeignet für Design-Systeme | ✅ Modular mit Setup | ✅ Modular mit Setup |
51
68
 
52
69
  ---
53
70
 
54
- ### 2. next-i18next
71
+ ## Tiefgehender Vergleich
55
72
 
56
- **Hauptfokus**: Bewährte Lösung, die `i18next` im Hintergrund verwendet und weit verbreitet für Next.js-Projekte ist.
73
+ ### 1) Architektur & Skalierbarkeit
57
74
 
58
- - **Architektur**: Organisiert Übersetzungen oft im Ordner `public/locales`. Nicht speziell zum Halten von Übersetzungen „nahe“ an jeder Komponente entworfen, obwohl Sie manuell eine andere Struktur annehmen können.
59
- - **TypeScript-Unterstützung**: Angemessene TypeScript-Abdeckung, erfordert jedoch eine benutzerdefinierte Konfiguration für typisierte Übersetzungen und typisierte Hooks.
60
- - **Fehlende Übersetzungen**: i18next bietet Interpolationen/Rückfalle. Das Erkennen fehlender Übersetzungen erfordert jedoch typischerweise zusätzliche Einrichtung oder Drittanbieter-Plugins.
61
- - **Unterstützung von Serverkomponenten**: Grundlegende Nutzung mit Next.js 13 ist dokumentiert, aber die erweiterte Nutzung (z. B. tiefe Integration mit Serverkomponenten, dynamische Routen-Generierung) kann umständlich sein.
62
- - **Routing & Middleware**: Vertraut stark auf Next.js `Middleware` und Umleitungen für Locale-Subpfade. Für komplexere Setups müssen Sie möglicherweise in erweiterte i18next-Konfiguration eintauchen.
63
- - **Einrichtungs-Komplexität**: Vertrauter Ansatz für diejenigen, die an i18next gewöhnt sind. Es kann jedoch beim Bedarf an erweiterten i18n-Funktionen (Namensräume, mehrere Rückfall-Lokalisierungen usw.) aufwendiger werden.
75
+ - **next-intl / next-i18next**: Standardmäßig **zentralisierte Kataloge** pro Locale (plus **Namespaces** in i18next). Funktioniert anfangs gut, wird aber oft zu einer großen gemeinsamen Oberfläche mit zunehmender Kopplung und Schlüsseländerungen.
76
+ - **Intlayer**: Fördert **pro Komponente** (oder pro Funktion) **lokalisierte Wörterbücher**, die **direkt am Code** liegen, den sie bedienen. Dies reduziert die kognitive Belastung, erleichtert die Duplizierung/Migration von UI-Elementen und verringert Konflikte zwischen Teams. Unbenutzte Inhalte sind so leichter zu erkennen und zu entfernen.
64
77
 
65
- **Verwenden, wenn**: Sie bereits im `i18next`-Ökosystem engagiert sind oder über bestehende i18next-basierte Übersetzungen verfügen.
78
+ **Warum das wichtig ist:** In großen Codebasen oder Design-System-Setups skaliert **modularer Inhalt** besser als monolithische Kataloge.
66
79
 
67
80
  ---
68
81
 
69
- ### 3. Intlayer
70
-
71
- **Hauptfokus**: Eine moderne, Open-Source-i18n-Bibliothek, die speziell auf Next.js **App Router** (12, 13, 14 und 15) mit integrierter Unterstützung für **Serverkomponenten** und **Turbopack** abgestimmt ist.
82
+ ### 2) TypeScript & Sicherheit
72
83
 
73
- #### Hauptvorteile
84
+ - **next-intl**: Solide TypeScript-Unterstützung, aber **Schlüssel sind standardmäßig nicht strikt typisiert**; Sicherheitsmuster müssen manuell gepflegt werden.
85
+ - **next-i18next**: Basis-Typen für Hooks; **strikte Schlüsseltypisierung erfordert zusätzliche Tools/Konfiguration**.
86
+ - **Intlayer**: **Erzeugt strenge Typen** aus Ihren Inhalten. **IDE-Autovervollständigung** und **Kompilierzeitfehler** erkennen Tippfehler und fehlende Schlüssel vor der Bereitstellung.
74
87
 
75
- 1. **Architektur**
88
+ **Warum das wichtig ist:** Starke Typisierung verschiebt Fehler **nach links** (CI/Build) statt **nach rechts** (Laufzeit).
76
89
 
77
- - Ermutigt dazu, **Übersetzungen direkt neben ihren Komponenten** zu platzieren. Jede Seite oder Komponente kann ihre eigene `.content.ts` (oder JSON) Datei haben – kein Durchsuchen mehr eines riesigen Übersetzungsordners.
78
- - Dies macht Ihren Code **modularer und wartbarer**, besonders in großen Codebasen.
79
-
80
- 2. **TypeScript-Unterstützung**
81
-
82
- - **Automatisch generierte Typdefinitionen**: In dem Moment, in dem Sie Ihren Inhalt definieren, generiert Intlayer Typen, die Autocomplete ermöglichen und Übersetzungsfehler abfangen.
83
- - Minimiert Laufzeitfehler wie fehlende Schlüssel und bietet fortschrittliche **Autocomplete** direkt in Ihrer IDE.
84
-
85
- 3. **Verwaltung fehlender Übersetzungen**
90
+ ---
86
91
 
87
- - Während des Builds kann Intlayer **fehlende Übersetzungs-Schlüssel** erkennen und Warnungen oder Fehler ausgeben.
88
- - Dies stellt sicher, dass Sie nie versehentlich mit fehlendem Text in Ihren Sprachen versenden.
92
+ ### 3) Umgang mit fehlenden Übersetzungen
89
93
 
90
- 4. **Optimiert für Serverkomponenten**
94
+ - **next-intl / next-i18next**: Verlassen sich auf **Laufzeit-Fallbacks** (z.B. Anzeige des Schlüssels oder der Standardsprache). Der Build schlägt nicht fehl.
95
+ - **Intlayer**: **Erkennung zur Build-Zeit** mit **Warnungen/Fehlern** bei fehlenden Sprachen oder Schlüsseln.
91
96
 
92
- - Vollständig kompatibel mit dem Next.js **App Router** und dem neuen **Serverkomponenten**-Paradigma.
93
- - Bietet spezialisierte Anbieter (`IntlayerServerProvider`, `IntlayerClientProvider`), um **Serverkontexte zu isolieren** (entscheidend bei der Arbeit mit Next.js 13+).
97
+ **Warum das wichtig ist:** Das Erkennen von Lücken während des Builds verhindert „mysteriöse Strings“ in der Produktion und entspricht strengen Release-Richtlinien.
94
98
 
95
- 5. **Erweiterte Routing- & Middleware**
99
+ ---
96
100
 
97
- - Beinhaltet dedizierte [**`intlayerMiddleware`**](#) zur **automatischen Lokalisierungserkennung** (über Cookies oder Browser-Header) und fortschrittlicher Routen-Generierung.
98
- - Handhabt dynamisch lokalisierte Pfade (z. B. `/en-US/about` vs. `/fr/about`) mit minimaler Konfiguration.
99
- - Bietet Hilfsmethoden wie `getMultilingualUrls` zur Generierung alternativer Sprachlinks (großartig für **SEO**).
101
+ ### 4) Routing, Middleware & URL-Strategie
100
102
 
101
- 6. **Vereinfachte Einrichtung**
102
- - Eine einzige Konfigurationsdatei (`intlayer.config.ts`), um Ihre Lokalisierungen, Standardlokalisierung und Integrationspräferenzen zu definieren.
103
- - Ein Wrapper-Plugin `withIntlayer(nextConfig)`, das **alle Umgebungsvariablen und Beobachter für Ihren Inhalt injiziert**.
104
- - **Keine großen Rückfallkonfigurationen** – das System ist darauf ausgelegt, „einfach zu funktionieren“ mit minimalem Widerstand.
103
+ - Alle drei arbeiten mit **Next.js lokalisiertem Routing** im App Router.
104
+ - **Intlayer** geht noch weiter mit **i18n-Middleware** (Locale-Erkennung über Header/Cookies) und **Hilfsfunktionen**, um lokalisierte URLs und `<link rel="alternate" hreflang="…">`-Tags zu generieren.
105
105
 
106
- > **Fazit**: Intlayer ist eine moderne Lösung, die **Best Practices fördern möchte**: von **Übersetzungen nah** bei jeder React-Komponente bis hin zu **robuster TS-Unterstützung** und **einfacher serverseitiger** Nutzung, während **Boilerplate drastisch reduziert** wird.
106
+ **Warum das wichtig ist:** Weniger individuelle Verbindungs-Schichten; **konsistente Benutzererfahrung** und **sauberes SEO** über alle Sprachen hinweg.
107
107
 
108
108
  ---
109
109
 
110
- ## Nebeneinander Feature-Vergleich
111
-
112
- | **Feature** | **next-intl** | **next-i18next** | **Intlayer** |
113
- | --------------------------------------------- | --------------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------ |
114
- | **Übersetzungen nahe bei Komponenten halten** | Teilweise – typischerweise ein Lokalisierungsordner | Nicht standardmäßig – oft `public/locales` | **Ja – empfohlen & einfach** |
115
- | **TypeScript automatisch generiert** | Grundlegende TS-Definitionen | Grundlegende TS-Unterstützung | **Ja – fortgeschritten out-of-the-box** |
116
- | **Erkennung fehlender Übersetzungen** | Vorwiegend Rückfallzeichenfolgen | Vorwiegend Rückfallzeichenfolgen | **Ja – Checks zur Buildzeit** |
117
- | **Unterstützung von Serverkomponenten** | Funktioniert, aber nicht spezialisiert | Unterstützt, kann jedoch umständlich sein | **Vollständige Unterstützung mit spezialisierten Anbietern** |
118
- | **Routing & Middleware** | Manuell in Next-Middleware integriert | Bereitgestellt über Umleitungs-Konfiguration | **Dediziertes i18n-Middleware + erweiterte Hooks** |
119
- | **Einrichtungs-Komplexität** | Einfach, minimale Konfiguration | Traditionell, kann für erweiterte Nutzung umständlich sein | **Eine Konfigurationsdatei & Plugin** |
120
-
121
- ---
110
+ ### 5) Ausrichtung auf Server-Komponenten (RSC)
122
111
 
123
- ## Warum Intlayer?
112
+ - **Alle** unterstützen Next.js 13+.
113
+ - **Intlayer** glättet die **Server/Client-Grenze** mit einer konsistenten API und Providern, die für RSC entwickelt wurden, sodass Sie Formatierer oder t-Funktionen nicht durch Komponentenbäume schleusen müssen.
124
114
 
125
- Für Teams, die zu oder auf **Next.js App Router** (Versionen 13, 14 oder 15) mit **Serverkomponenten** migrieren oder darauf aufbauen, bietet Intlayer:
115
+ **Warum das wichtig ist:** Klareres mentales Modell und weniger Randfälle in hybriden Bäumen.
126
116
 
127
- 1. **Eine vereinfachte Architektur**
117
+ ---
128
118
 
129
- - Jede Route oder Komponente hält ihre eigenen Übersetzungen. Dies fördert Klarheit und Wartbarkeit.
119
+ ### 6) Leistung & Ladeverhalten
130
120
 
131
- 2. **Leistungsstarke TypeScript-Integration**
121
+ - **next-intl / next-i18next**: Teilweise Kontrolle über **Namespaces** und **Routen-spezifische Aufteilungen**; Risiko, ungenutzte Strings mitzuliefern, wenn die Disziplin nachlässt.
122
+ - **Intlayer**: **Tree-Shaking** beim Build und **Lazy-Loading pro Wörterbuch/Locale**. Unbenutzter Inhalt wird nicht ausgeliefert.
132
123
 
133
- - Sie erhalten Compiler-Sicherheit und vermeiden „Tippfehler“ oder fehlende Übersetzungsschlüssel.
124
+ **Warum das wichtig ist:** Kleinere Bundles und schnellerer Start, besonders bei mehrsprachigen Websites.
134
125
 
135
- 3. **Echte Warnungen bei fehlenden Übersetzungen**
126
+ ---
136
127
 
137
- - Wenn Sie einen Schlüssel oder eine Sprachübersetzung vergessen, werden Sie zur Buildzeit gewarnt (statt eine unvollständige UI zu versenden).
128
+ ### 7) DX, Tools & Wartung
138
129
 
139
- 4. **Integriertes fortschrittliches Routing**
130
+ - **next-intl / next-i18next**: In der Regel binden Sie externe Plattformen für Übersetzungen und redaktionelle Workflows ein.
131
+ - **Intlayer**: Bietet einen **kostenlosen Visual Editor** und ein **optionales CMS** (Git-freundlich oder extern). Außerdem eine **VSCode-Erweiterung** für die Inhaltserstellung und **KI-unterstützte Übersetzungen** mit Ihren eigenen Provider-Schlüsseln.
140
132
 
141
- - Automatische Lokalisierungserkennung, dynamische Routengenerierung und einfache Verwaltung lokalisierter URLs sind enthalten.
142
- - Eine standardisierte `intlayerMiddleware` erfordert keine tiefen benutzerdefinierten Umleitungen.
133
+ **Warum es wichtig ist:** Senkt die Betriebskosten und verkürzt die Schleife zwischen Entwicklern und Inhaltserstellern.
143
134
 
144
- 5. **Einzelne Einrichtung**
135
+ ---
145
136
 
146
- - Minimaler Boilerplate: Definieren Sie einfach Ihre `intlayer.config.ts`, umwickeln Sie `next.config` mit `withIntlayer` und fügen Sie die offizielle Middleware hinzu.
147
- - Klare, unkomplizierte Nutzung sowohl für **Server-** als auch **Clientkomponenten** über `IntlayerServerProvider` und `IntlayerClientProvider`.
137
+ ## Wann welche Lösung wählen?
148
138
 
149
- 6. **SEO-freundlich**
150
- - Eingebaute Hilfsfunktionen (`getMultilingualUrls`, `hrefLang`-Attribute usw.) erleichtern die Erstellung SEO-kompatibler Seiten und Sitemaps.
139
+ - **Wählen Sie next-intl**, wenn Sie eine **minimale** Lösung wünschen, mit zentralisierten Katalogen vertraut sind und Ihre App **klein bis mittelgroß** ist.
140
+ - **Wählen Sie next-i18next**, wenn Sie das **Plugin-Ökosystem von i18next** benötigen (z. B. erweiterte ICU-Regeln über Plugins) und Ihr Team i18next bereits kennt, wobei Sie **mehr Konfiguration** für Flexibilität akzeptieren.
141
+ - **Wählen Sie Intlayer**, wenn Sie **komponentenbezogenen Inhalt**, **striktes TypeScript**, **Build-Zeit-Garantien**, **Tree-Shaking** und **umfangreiche Routing/SEO/Editor-Tools** schätzen – insbesondere für den **Next.js App Router** und **große, modulare Codebasen**.
151
142
 
152
143
  ---
153
144
 
154
- ## Beispiel: Intlayer in Aktion
155
-
156
- Nachfolgend finden Sie einen _sehr_ kompakten Ausschnitt, der zeigt, wie Sie Intlayer in einem Next.js 15-Projekt nutzen können. Für die vollständigen Details und Codebeispiele, [sehen Sie sich den vollständigen Intlayer-Leitfaden an](#).
157
-
158
- <details>
159
- <summary>Schritt-für-Schritt-Beispiel</summary>
160
-
161
- 1. **Installieren & Konfigurieren**
162
-
163
- ```bash
164
- npm install intlayer next-intlayer
165
- ```
166
-
167
- ```ts
168
- // intlayer.config.ts
169
- import { Locales, type IntlayerConfig } from "intlayer";
170
-
171
- const config: IntlayerConfig = {
172
- internationalization: {
173
- locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
174
- defaultLocale: Locales.ENGLISH,
175
- },
176
- };
177
- export default config;
178
- ```
179
-
180
- 2. **Das Plugin verwenden**
181
-
182
- ```ts
183
- // next.config.mjs
184
- import { withIntlayer } from "next-intlayer/server";
185
-
186
- /** @type {import('next').NextConfig} */
187
- const nextConfig = {};
188
-
189
- export default withIntlayer(nextConfig);
190
- ```
191
-
192
- 3. **Middleware hinzufügen**
193
-
194
- ```ts
195
- // src/middleware.ts
196
- export { intlayerMiddleware as middleware } from "next-intlayer/middleware";
197
-
198
- export const config = {
199
- matcher:
200
- "/((?!api|static|assets|robots|sitemap|sw|service-worker|manifest|.*\\..*|_next).*)",
201
- };
202
- ```
203
-
204
- 4. **Einen lokalisierten Layout erstellen**
205
-
206
- ```tsx
207
- // src/app/[locale]/layout.tsx
208
- import { getHTMLTextDir } from "intlayer";
209
- import { NextLayoutIntlayer } from "next-intlayer";
210
-
211
- const LocaleLayout: NextLayoutIntlayer = async ({ children, params }) => {
212
- const { locale } = params;
213
- return (
214
- <html lang={locale} dir={getHTMLTextDir(locale)}>
215
- <body>{children}</body>
216
- </html>
217
- );
218
- };
219
-
220
- export { generateStaticParams } from "next-intlayer";
221
- export default LocaleLayout;
222
- ```
223
-
224
- 5. **Inhalt deklarieren & verwenden**
225
-
226
- ```tsx
227
- // src/app/[locale]/page.content.ts
228
- import { t } from "intlayer";
229
-
230
- export default {
231
- key: "page",
232
- content: {
233
- getStarted: {
234
- main: t({
235
- en: "Get started by editing",
236
- fr: "Commencez par éditer",
237
- es: "Comience por editar",
238
- }),
239
- pageLink: "src/app/page.tsx",
240
- },
241
- },
242
- };
243
- ```
244
-
245
- ```tsx
246
- // src/app/[locale]/page.tsx
247
- import { IntlayerServerProvider } from "next-intlayer/server";
248
- import { IntlayerClientProvider, useIntlayer } from "next-intlayer";
249
-
250
- const PageContent = () => {
251
- const { content } = useIntlayer("page");
252
- return (
253
- <>
254
- <p>{content.getStarted.main}</p>
255
- <code>{content.getStarted.pageLink}</code>
256
- </>
257
- );
258
- };
259
-
260
- export default function Page({ params }) {
261
- return (
262
- <IntlayerServerProvider locale={params.locale}>
263
- <IntlayerClientProvider locale={params.locale}>
264
- <PageContent />
265
- </IntlayerClientProvider>
266
- </IntlayerServerProvider>
267
- );
268
- }
269
- ```
270
-
271
- </details>
145
+ ## Praktische Migrationshinweise (next-intl / next-i18next → Intlayer)
146
+
147
+ - **Pro Funktion starten**: Verschieben Sie eine Route oder Komponente nach der anderen zu **lokalen Wörterbüchern**.
148
+ - **Alte Kataloge parallel behalten**: Überbrücken Sie während der Migration; vermeiden Sie einen Big Bang.
149
+ - **Strenge Prüfungen aktivieren**: Lassen Sie Lücken frühzeitig durch Build-Zeit-Erkennung sichtbar werden.
150
+ - **Middleware & Helfer übernehmen**: Standardisieren Sie die Lokalerkennung und SEO-Tags auf der gesamten Website.
151
+ - **Bundles messen**: Erwarten Sie **Reduzierungen der Bundle-Größe**, da ungenutzte Inhalte entfernt werden.
272
152
 
273
153
  ---
274
154
 
275
155
  ## Fazit
276
156
 
277
- Jede Lösung **next-intl**, **next-i18next** und **Intlayer** hat sich für mehrsprachige Next.js-Projekte als effektiv erwiesen. Dennoch geht **Intlayer** weiter, indem es:
157
+ Alle drei Bibliotheken sind bei der Kernlokalisierung erfolgreich. Der Unterschied liegt darin, **wie viel Arbeit Sie investieren müssen**, um eine robuste, skalierbare Einrichtung in **modernem Next.js** zu erreichen:
278
158
 
279
- - **Stark empfiehlt, eine komponentenbasierte Übersetzungsarchitektur zu erhalten**
280
- - Nahtlos mit **Next.js 13+ und Serverkomponenten** integriert
281
- - **Leistungsstarke TypeScript**-Auto-Generierung für sichereren Code bietet
282
- - **Fehlende Übersetzungen** zur Buildzeit behandelt
283
- - Einen **vereinfachten, einzigen Konfigurationsansatz** mit erweitertem Routing & Middleware bereitstellt
159
+ - Mit **Intlayer** sind **modularer Inhalt**, **striktes TypeScript**, **Build-Zeit-Sicherheit**, **tree-shaken Bundles** sowie **erstklassiger App Router und SEO-Tools** **Standard**, keine lästige Pflicht.
160
+ - Wenn Ihr Team **Wartbarkeit und Geschwindigkeit** in einer mehrsprachigen, komponentenbasierten Anwendung schätzt, bietet Intlayer heute die **vollständigste** Erfahrung.
284
161
 
285
- Wenn Sie **moderne** i18n-Funktionen suchen, die auf den Next.js App Router zugeschnitten sind, und nach einem **vollständig typisierten** Erlebnis suchen, ohne manuell Rückfalllogik, Routen-Umschreibungen oder komplexe Build-Schritte einzurichten, ist **Intlayer** eine überzeugende Wahl. Es verkürzt nicht nur Ihre Einrichtungszeit, sondern sorgt außerdem für einen wartbareren, skalierbaren Ansatz für Übersetzungen in Ihrem Team.
162
+ Siehe das Dokument ['Warum Intlayer?'](https://intlayer.org/doc/why) für weitere Details.