@intlayer/docs 8.3.0-canary.4 → 8.3.1

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 (240) hide show
  1. package/docs/ar/compiler.md +84 -49
  2. package/docs/ar/configuration.md +80 -37
  3. package/docs/ar/intlayer_with_nextjs_16.md +174 -1
  4. package/docs/ar/intlayer_with_nextjs_compiler.md +174 -1
  5. package/docs/ar/intlayer_with_react_router_v7.md +224 -1
  6. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +225 -1
  7. package/docs/ar/intlayer_with_svelte_kit.md +175 -2
  8. package/docs/ar/intlayer_with_tanstack.md +176 -1
  9. package/docs/ar/intlayer_with_vite+preact.md +174 -1
  10. package/docs/ar/intlayer_with_vite+react.md +174 -1
  11. package/docs/ar/intlayer_with_vite+solid.md +174 -1
  12. package/docs/ar/intlayer_with_vite+svelte.md +174 -1
  13. package/docs/ar/intlayer_with_vite+vue.md +174 -1
  14. package/docs/de/compiler.md +83 -48
  15. package/docs/de/configuration.md +434 -212
  16. package/docs/de/intlayer_with_nextjs_16.md +176 -1
  17. package/docs/de/intlayer_with_nextjs_compiler.md +106 -349
  18. package/docs/de/intlayer_with_react_router_v7.md +225 -2
  19. package/docs/de/intlayer_with_react_router_v7_fs_routes.md +221 -79
  20. package/docs/de/intlayer_with_svelte_kit.md +158 -2
  21. package/docs/de/intlayer_with_tanstack.md +159 -1
  22. package/docs/de/intlayer_with_vite+preact.md +157 -1
  23. package/docs/de/intlayer_with_vite+react.md +157 -1
  24. package/docs/de/intlayer_with_vite+solid.md +159 -3
  25. package/docs/de/intlayer_with_vite+svelte.md +157 -1
  26. package/docs/de/intlayer_with_vite+vue.md +157 -1
  27. package/docs/en/compiler.md +60 -33
  28. package/docs/en/configuration.md +80 -57
  29. package/docs/en/intlayer_with_nextjs_16.md +176 -0
  30. package/docs/en/intlayer_with_nextjs_compiler.md +179 -1
  31. package/docs/en/intlayer_with_react_router_v7.md +159 -0
  32. package/docs/en/intlayer_with_react_router_v7_fs_routes.md +159 -0
  33. package/docs/en/intlayer_with_svelte_kit.md +159 -0
  34. package/docs/en/intlayer_with_tanstack.md +160 -1
  35. package/docs/en/intlayer_with_vite+preact.md +159 -0
  36. package/docs/en/intlayer_with_vite+react.md +159 -0
  37. package/docs/en/intlayer_with_vite+solid.md +148 -27
  38. package/docs/en/intlayer_with_vite+svelte.md +159 -0
  39. package/docs/en/intlayer_with_vite+vue.md +142 -41
  40. package/docs/en-GB/compiler.md +66 -34
  41. package/docs/en-GB/configuration.md +78 -36
  42. package/docs/es/compiler.md +83 -48
  43. package/docs/es/configuration.md +429 -206
  44. package/docs/es/intlayer_with_adonisjs.md +1 -1
  45. package/docs/es/intlayer_with_express.md +1 -1
  46. package/docs/es/intlayer_with_fastify.md +1 -1
  47. package/docs/es/intlayer_with_hono.md +1 -1
  48. package/docs/es/intlayer_with_nestjs.md +1 -1
  49. package/docs/es/intlayer_with_nextjs_16.md +176 -3
  50. package/docs/es/intlayer_with_nextjs_compiler.md +175 -2
  51. package/docs/es/intlayer_with_nuxt.md +1 -1
  52. package/docs/es/intlayer_with_react_router_v7.md +227 -4
  53. package/docs/es/intlayer_with_react_router_v7_fs_routes.md +162 -4
  54. package/docs/es/intlayer_with_svelte_kit.md +158 -2
  55. package/docs/es/intlayer_with_tanstack.md +160 -2
  56. package/docs/es/intlayer_with_vite+preact.md +162 -6
  57. package/docs/es/intlayer_with_vite+react.md +160 -4
  58. package/docs/es/intlayer_with_vite+solid.md +163 -7
  59. package/docs/es/intlayer_with_vite+svelte.md +157 -1
  60. package/docs/es/intlayer_with_vite+vue.md +165 -9
  61. package/docs/fr/compiler.md +81 -46
  62. package/docs/fr/configuration.md +355 -134
  63. package/docs/fr/intlayer_with_adonisjs.md +1 -1
  64. package/docs/fr/intlayer_with_express.md +1 -1
  65. package/docs/fr/intlayer_with_fastify.md +1 -1
  66. package/docs/fr/intlayer_with_hono.md +1 -1
  67. package/docs/fr/intlayer_with_nestjs.md +1 -1
  68. package/docs/fr/intlayer_with_nextjs_16.md +183 -7
  69. package/docs/fr/intlayer_with_nextjs_compiler.md +179 -3
  70. package/docs/fr/intlayer_with_react_router_v7.md +229 -3
  71. package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +237 -6
  72. package/docs/fr/intlayer_with_svelte_kit.md +158 -2
  73. package/docs/fr/intlayer_with_tanstack.md +159 -1
  74. package/docs/fr/intlayer_with_vite+preact.md +164 -8
  75. package/docs/fr/intlayer_with_vite+react.md +162 -6
  76. package/docs/fr/intlayer_with_vite+solid.md +163 -7
  77. package/docs/fr/intlayer_with_vite+svelte.md +157 -1
  78. package/docs/fr/intlayer_with_vite+vue.md +164 -8
  79. package/docs/hi/compiler.md +81 -46
  80. package/docs/hi/configuration.md +87 -44
  81. package/docs/hi/intlayer_with_nextjs_16.md +174 -1
  82. package/docs/hi/intlayer_with_nextjs_compiler.md +174 -1
  83. package/docs/hi/intlayer_with_react_router_v7.md +224 -1
  84. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +225 -1
  85. package/docs/hi/intlayer_with_svelte_kit.md +158 -2
  86. package/docs/hi/intlayer_with_tanstack.md +159 -1
  87. package/docs/hi/intlayer_with_vite+preact.md +157 -1
  88. package/docs/hi/intlayer_with_vite+react.md +157 -1
  89. package/docs/hi/intlayer_with_vite+solid.md +157 -1
  90. package/docs/hi/intlayer_with_vite+svelte.md +157 -1
  91. package/docs/hi/intlayer_with_vite+vue.md +157 -1
  92. package/docs/id/compiler.md +84 -51
  93. package/docs/id/configuration.md +83 -45
  94. package/docs/id/intlayer_with_nextjs_16.md +174 -1
  95. package/docs/id/intlayer_with_nextjs_compiler.md +174 -1
  96. package/docs/id/intlayer_with_react_router_v7.md +224 -1
  97. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +225 -1
  98. package/docs/id/intlayer_with_svelte_kit.md +158 -2
  99. package/docs/id/intlayer_with_tanstack.md +159 -1
  100. package/docs/id/intlayer_with_vite+preact.md +157 -1
  101. package/docs/id/intlayer_with_vite+react.md +157 -1
  102. package/docs/id/intlayer_with_vite+solid.md +157 -1
  103. package/docs/id/intlayer_with_vite+svelte.md +157 -1
  104. package/docs/id/intlayer_with_vite+vue.md +157 -1
  105. package/docs/it/compiler.md +81 -46
  106. package/docs/it/configuration.md +426 -204
  107. package/docs/it/intlayer_with_nextjs_16.md +174 -1
  108. package/docs/it/intlayer_with_nextjs_compiler.md +174 -1
  109. package/docs/it/intlayer_with_react_router_v7.md +225 -2
  110. package/docs/it/intlayer_with_react_router_v7_fs_routes.md +226 -2
  111. package/docs/it/intlayer_with_svelte_kit.md +158 -2
  112. package/docs/it/intlayer_with_tanstack.md +159 -1
  113. package/docs/it/intlayer_with_vite+preact.md +157 -1
  114. package/docs/it/intlayer_with_vite+react.md +157 -1
  115. package/docs/it/intlayer_with_vite+solid.md +159 -3
  116. package/docs/it/intlayer_with_vite+svelte.md +157 -1
  117. package/docs/it/intlayer_with_vite+vue.md +157 -1
  118. package/docs/ja/compiler.md +94 -58
  119. package/docs/ja/configuration.md +88 -45
  120. package/docs/ja/intlayer_with_nextjs_16.md +174 -1
  121. package/docs/ja/intlayer_with_nextjs_compiler.md +174 -1
  122. package/docs/ja/intlayer_with_react_router_v7.md +184 -394
  123. package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +226 -2
  124. package/docs/ja/intlayer_with_svelte_kit.md +119 -595
  125. package/docs/ja/intlayer_with_tanstack.md +131 -642
  126. package/docs/ja/intlayer_with_vite+preact.md +111 -1231
  127. package/docs/ja/intlayer_with_vite+react.md +129 -1304
  128. package/docs/ja/intlayer_with_vite+solid.md +159 -3
  129. package/docs/ja/intlayer_with_vite+svelte.md +157 -1
  130. package/docs/ja/intlayer_with_vite+vue.md +157 -1
  131. package/docs/ko/compiler.md +88 -52
  132. package/docs/ko/configuration.md +87 -44
  133. package/docs/ko/intlayer_with_nextjs_16.md +174 -1
  134. package/docs/ko/intlayer_with_nextjs_compiler.md +174 -1
  135. package/docs/ko/intlayer_with_react_router_v7.md +225 -2
  136. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +226 -2
  137. package/docs/ko/intlayer_with_svelte_kit.md +158 -2
  138. package/docs/ko/intlayer_with_tanstack.md +159 -1
  139. package/docs/ko/intlayer_with_vite+preact.md +157 -1
  140. package/docs/ko/intlayer_with_vite+react.md +157 -1
  141. package/docs/ko/intlayer_with_vite+solid.md +159 -3
  142. package/docs/ko/intlayer_with_vite+svelte.md +157 -1
  143. package/docs/ko/intlayer_with_vite+vue.md +157 -1
  144. package/docs/pl/compiler.md +84 -51
  145. package/docs/pl/configuration.md +83 -37
  146. package/docs/pl/intlayer_with_nextjs_16.md +174 -1
  147. package/docs/pl/intlayer_with_nextjs_compiler.md +174 -1
  148. package/docs/pl/intlayer_with_react_router_v7.md +224 -1
  149. package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +225 -1
  150. package/docs/pl/intlayer_with_svelte_kit.md +158 -2
  151. package/docs/pl/intlayer_with_tanstack.md +159 -1
  152. package/docs/pl/intlayer_with_vite+preact.md +157 -1
  153. package/docs/pl/intlayer_with_vite+react.md +157 -1
  154. package/docs/pl/intlayer_with_vite+solid.md +157 -1
  155. package/docs/pl/intlayer_with_vite+svelte.md +157 -1
  156. package/docs/pl/intlayer_with_vite+vue.md +157 -1
  157. package/docs/pt/compiler.md +81 -46
  158. package/docs/pt/configuration.md +404 -194
  159. package/docs/pt/intlayer_with_nextjs_16.md +174 -1
  160. package/docs/pt/intlayer_with_nextjs_compiler.md +174 -1
  161. package/docs/pt/intlayer_with_react_router_v7.md +224 -1
  162. package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +225 -1
  163. package/docs/pt/intlayer_with_svelte_kit.md +158 -2
  164. package/docs/pt/intlayer_with_tanstack.md +159 -1
  165. package/docs/pt/intlayer_with_vite+preact.md +157 -1
  166. package/docs/pt/intlayer_with_vite+react.md +157 -1
  167. package/docs/pt/intlayer_with_vite+solid.md +157 -1
  168. package/docs/pt/intlayer_with_vite+svelte.md +157 -1
  169. package/docs/pt/intlayer_with_vite+vue.md +157 -1
  170. package/docs/ru/compiler.md +90 -57
  171. package/docs/ru/configuration.md +76 -46
  172. package/docs/ru/intlayer_with_nextjs_16.md +174 -1
  173. package/docs/ru/intlayer_with_nextjs_compiler.md +174 -1
  174. package/docs/ru/intlayer_with_react_router_v7.md +224 -1
  175. package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +225 -1
  176. package/docs/ru/intlayer_with_svelte_kit.md +158 -2
  177. package/docs/ru/intlayer_with_tanstack.md +159 -1
  178. package/docs/ru/intlayer_with_vite+preact.md +157 -1
  179. package/docs/ru/intlayer_with_vite+react.md +157 -1
  180. package/docs/ru/intlayer_with_vite+solid.md +157 -1
  181. package/docs/ru/intlayer_with_vite+svelte.md +157 -1
  182. package/docs/ru/intlayer_with_vite+vue.md +157 -1
  183. package/docs/tr/compiler.md +85 -52
  184. package/docs/tr/configuration.md +83 -40
  185. package/docs/tr/intlayer_with_nextjs_16.md +174 -1
  186. package/docs/tr/intlayer_with_nextjs_compiler.md +174 -1
  187. package/docs/tr/intlayer_with_react_router_v7.md +224 -1
  188. package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +225 -1
  189. package/docs/tr/intlayer_with_svelte_kit.md +158 -2
  190. package/docs/tr/intlayer_with_tanstack.md +159 -1
  191. package/docs/tr/intlayer_with_vite+preact.md +157 -1
  192. package/docs/tr/intlayer_with_vite+react.md +157 -1
  193. package/docs/tr/intlayer_with_vite+solid.md +157 -1
  194. package/docs/tr/intlayer_with_vite+svelte.md +157 -1
  195. package/docs/tr/intlayer_with_vite+vue.md +157 -1
  196. package/docs/uk/compiler.md +96 -61
  197. package/docs/uk/configuration.md +83 -37
  198. package/docs/uk/intlayer_with_nextjs_16.md +174 -1
  199. package/docs/uk/intlayer_with_nextjs_compiler.md +174 -1
  200. package/docs/uk/intlayer_with_react_router_v7.md +224 -1
  201. package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +225 -1
  202. package/docs/uk/intlayer_with_svelte_kit.md +157 -1
  203. package/docs/uk/intlayer_with_tanstack.md +159 -1
  204. package/docs/uk/intlayer_with_vite+preact.md +157 -1
  205. package/docs/uk/intlayer_with_vite+react.md +157 -1
  206. package/docs/uk/intlayer_with_vite+solid.md +157 -1
  207. package/docs/uk/intlayer_with_vite+svelte.md +157 -1
  208. package/docs/uk/intlayer_with_vite+vue.md +157 -1
  209. package/docs/vi/compiler.md +85 -50
  210. package/docs/vi/configuration.md +85 -39
  211. package/docs/vi/intlayer_with_nextjs_16.md +174 -1
  212. package/docs/vi/intlayer_with_nextjs_compiler.md +174 -1
  213. package/docs/vi/intlayer_with_react_router_v7.md +224 -1
  214. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +225 -1
  215. package/docs/vi/intlayer_with_svelte_kit.md +158 -2
  216. package/docs/vi/intlayer_with_tanstack.md +159 -1
  217. package/docs/vi/intlayer_with_vite+preact.md +157 -1
  218. package/docs/vi/intlayer_with_vite+react.md +157 -1
  219. package/docs/vi/intlayer_with_vite+solid.md +157 -1
  220. package/docs/vi/intlayer_with_vite+svelte.md +157 -1
  221. package/docs/vi/intlayer_with_vite+vue.md +157 -1
  222. package/docs/zh/compiler.md +84 -49
  223. package/docs/zh/configuration.md +80 -37
  224. package/docs/zh/intlayer_with_adonisjs.md +1 -1
  225. package/docs/zh/intlayer_with_express.md +1 -1
  226. package/docs/zh/intlayer_with_fastify.md +1 -1
  227. package/docs/zh/intlayer_with_hono.md +1 -1
  228. package/docs/zh/intlayer_with_nestjs.md +1 -1
  229. package/docs/zh/intlayer_with_nextjs_16.md +174 -1
  230. package/docs/zh/intlayer_with_nextjs_compiler.md +174 -1
  231. package/docs/zh/intlayer_with_react_router_v7.md +227 -4
  232. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +228 -4
  233. package/docs/zh/intlayer_with_svelte_kit.md +158 -2
  234. package/docs/zh/intlayer_with_tanstack.md +159 -1
  235. package/docs/zh/intlayer_with_vite+preact.md +159 -3
  236. package/docs/zh/intlayer_with_vite+react.md +157 -1
  237. package/docs/zh/intlayer_with_vite+solid.md +161 -5
  238. package/docs/zh/intlayer_with_vite+svelte.md +157 -1
  239. package/docs/zh/intlayer_with_vite+vue.md +158 -2
  240. package/package.json +6 -6
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-01-10
3
- updatedAt: 2026-01-10
3
+ updatedAt: 2026-03-12
4
4
  title: Next.js i18n - Transformieren Sie eine bestehende Next.js-App in eine mehrsprachige App in 2026
5
5
  description: Erfahren Sie, wie Sie Ihre bestehende Next.js-Anwendung mit dem Intlayer Compiler mehrsprachig machen. Folgen Sie der Dokumentation, um sie zu internationalisieren (i18n) und mit KI zu übersetzen.
6
6
  keywords:
@@ -76,430 +76,187 @@ Um diese Auswirkungen während der Entwicklung zu mildern, können Sie den Compi
76
76
 
77
77
  ---
78
78
 
79
- ## Schritt-für-Schritt-Anleitung zur Einrichtung von Intlayer in einer Next.js-Anwendung
79
+ ## Schritt-für-Schritt-Anleitung
80
80
 
81
- ### Schritt 1: Abhängigkeiten installieren
81
+ ### (Optional) Schritt 1 : Inhalt Ihrer Komponenten extrahieren
82
82
 
83
- Installieren Sie die erforderlichen Pakete mit npm:
83
+ Wenn Sie eine bestehende Codebasis haben, kann die Transformation von Tausenden von Dateien zeitaufwendig sein.
84
84
 
85
- ```bash packageManager="npm"
86
- npm install intlayer next-intlayer
87
- npm install @intlayer/babel --save-dev
88
- npx intlayer init
89
- ```
90
-
91
- ```bash packageManager="pnpm"
92
- pnpm add intlayer next-intlayer
93
- pnpm add @intlayer/babel --save-dev
94
- pnpm intlayer init
95
- ```
96
-
97
- ```bash packageManager="yarn"
98
- yarn add intlayer next-intlayer
99
- yarn add @intlayer/babel --save-dev
100
- yarn intlayer init
101
- ```
102
-
103
- ```bash packageManager="bun"
104
- bun add intlayer next-intlayer
105
- bun add @intlayer/babel --dev
106
- bunx intlayer init
107
- ```
108
-
109
- - **intlayer**
110
-
111
- Das Kernpaket, das Internationalisierungstools für Konfigurationsmanagement, Übersetzung, [Inhaltsdeklaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/dictionary/content_file.md), Transpilierung und [CLI-Befehle](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/cli/index.md) bereitstellt.
112
-
113
- - **next-intlayer**
114
-
115
- Das Paket, das Intlayer in Next.js integriert. Es bietet Context Provider und Hooks für die Internationalisierung von Next.js. Zusätzlich enthält es das Next.js-Plugin zur Integration von Intlayer mit [Webpack](https://webpack.js.org/) oder [Turbopack](https://nextjs.org/docs/app/api-reference/turbopack) sowie einen Proxy zur Erkennung der bevorzugten Sprache des Benutzers, zur Verwaltung von Cookies und zur Handhabung von URL-Umleitungen.
85
+ Um diesen Prozess zu erleichtern, bietet Intlayer einen [Compiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/compiler.md) / [Extractor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/cli/extract.md) an, um Ihre Komponenten zu transformieren und den Inhalt zu extrahieren.
116
86
 
117
- ### Schritt 2: Konfigurieren Sie Ihr Projekt
87
+ Um es einzurichten, können Sie einen `compiler`-Abschnitt in Ihrer `intlayer.config.ts`-Datei hinzufügen:
118
88
 
119
- Erstellen Sie eine Konfigurationsdatei, um die Sprachen Ihrer Anwendung zu konfigurieren:
120
-
121
- ```typescript fileName="intlayer.config.ts"
122
- import { Locales, type IntlayerConfig } from "intlayer";
89
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
90
+ import { type IntlayerConfig } from "intlayer";
123
91
 
124
92
  const config: IntlayerConfig = {
125
- internationalization: {
126
- locales: [Locales.ENGLISH, Locales.GERMAN],
127
- defaultLocale: Locales.GERMAN,
128
- },
129
- routing: {
130
- mode: "search-params",
131
- },
93
+ // ... Rest Ihrer Konfiguration
132
94
  compiler: {
133
95
  /**
134
- * Gibt an, ob der Compiler aktiviert werden soll.
96
+ * Gibt an, ob der Compiler aktiviert sein soll.
135
97
  */
136
98
  enabled: true,
137
99
 
138
100
  /**
139
- * Ausgabeverzeichnis für die optimierten Wörterbücher.
101
+ * Definiert den Pfad der Ausgabedateien
140
102
  */
141
- output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
103
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
142
104
 
143
105
  /**
144
- * Fügen Sie nur den Inhalt in die generierte Datei ein, ohne Schlüssel.
106
+ * Gibt an, ob die Komponenten nach der Transformation gespeichert werden sollen. Auf diese Weise kann der Compiler nur einmal ausgeführt werden, um die App zu transformieren, und dann entfernt werden.
145
107
  */
146
- noMetadata: false,
147
-
148
- /**
149
- * Wörterbuch-Präfix
150
- */
151
- dictionaryKeyPrefix: "", // Remove base prefix
108
+ saveComponents: false,
152
109
 
153
110
  /**
154
- * Gibt an, ob die Komponenten nach der Transformation gespeichert werden sollen.
155
- * Auf diese Weise kann der Compiler nur einmal ausgeführt werden, um die App zu transformieren, und dann entfernt werden.
111
+ * Präfix für Wörterbuchschlüssel
156
112
  */
157
- saveComponents: false,
158
- },
159
- ai: {
160
- provider: "openai",
161
- model: "gpt-5-mini",
162
- apiKey: process.env.OPEN_AI_API_KEY,
163
- applicationContext: "Diese App ist eine Karten-App",
113
+ dictionaryKeyPrefix: "",
164
114
  },
165
115
  };
166
116
 
167
117
  export default config;
168
118
  ```
169
119
 
170
- > **Hinweis**: Stellen Sie sicher, dass Ihr `OPEN_AI_API_KEY` in Ihren Umgebungsvariablen gesetzt ist.
171
-
172
- > Über diese Konfigurationsdatei können Sie lokalisierte URLs, Proxy-Umleitungen, Cookie-Namen, den Speicherort und die Erweiterung Ihrer Inhaltsdeklarationen festlegen, Intlayer-Logs 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).
173
-
174
- ### Schritt 3: Intlayer in Ihre Next.js-Konfiguration integrieren
120
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
121
+ /** @type {import('intlayer').IntlayerConfig} */
122
+ const config = {
123
+ // ... Rest Ihrer Konfiguration
124
+ compiler: {
125
+ /**
126
+ * Gibt an, ob der Compiler aktiviert sein soll.
127
+ */
128
+ enabled: true,
175
129
 
176
- Konfigurieren Sie Ihr Next.js-Setup so, dass es Intlayer verwendet:
130
+ /**
131
+ * Definiert den Pfad der Ausgabedateien
132
+ */
133
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
177
134
 
178
- ```typescript fileName="next.config.ts"
179
- import type { NextConfig } from "next";
180
- import { withIntlayer } from "next-intlayer/server";
135
+ /**
136
+ * Gibt an, ob die Komponenten nach der Transformation gespeichert werden sollen. Auf diese Weise kann der Compiler nur einmal ausgeführt werden, um die App zu transformieren, und dann entfernt werden.
137
+ */
138
+ saveComponents: false,
181
139
 
182
- const nextConfig: NextConfig = {
183
- /* Konfigurationsoptionen hier */
140
+ /**
141
+ * Präfix für Wörterbuchschlüssel
142
+ */
143
+ dictionaryKeyPrefix: "",
144
+ },
184
145
  };
185
146
 
186
- export default withIntlayer(nextConfig);
187
- ```
188
-
189
- > Das Next.js-Plugin `withIntlayer()` wird verwendet, um Intlayer in Next.js zu integrieren. Es stellt die Erstellung von Inhaltsdeklarationsdateien sicher und überwacht diese im Entwicklungsmodus. Es definiert Intlayer-Umgebungsvariablen innerhalb der [Webpack](https://webpack.js.org/)- oder [Turbopack](https://nextjs.org/docs/app/api-reference/turbopack)-Umgebungen. Zusätzlich bietet es Aliase zur Leistungsoptimierung und gewährleistet die Kompatibilität mit Server-Komponenten.
190
-
191
- ### Schritt 4: Babel konfigurieren
192
-
193
- Der Intlayer-Compiler benötigt Babel, um Ihren Inhalt zu extrahieren und zu optimieren. Aktualisieren Sie Ihre `babel.config.js` (oder `babel.config.json`) um die Intlayer-Plugins einzubinden:
194
-
195
- ```typescript fileName="babel.config.js"
196
- const {
197
- intlayerExtractBabelPlugin,
198
- intlayerOptimizeBabelPlugin,
199
- getExtractPluginOptions,
200
- getOptimizePluginOptions,
201
- } = require("@intlayer/babel");
202
-
203
- module.exports = {
204
- presets: ["next/babel"],
205
- plugins: [
206
- [intlayerExtractBabelPlugin, getExtractPluginOptions()],
207
- [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()],
208
- ],
209
- };
147
+ export default config;
210
148
  ```
211
149
 
212
- ### Schritt 5: Sprache in Ihren Seiten erkennen
213
-
214
- Entfernen Sie alles aus dem `RootLayout` und ersetzen Sie es durch den folgenden Code:
215
-
216
- ```tsx fileName="src/app/layout.tsx"
217
- import type { Metadata } from "next";
218
- import type { ReactNode } from "react";
219
- import "./globals.css";
220
- import { IntlayerClientProvider, LocalPromiseParams } from "next-intlayer";
221
- import { getHTMLTextDir, getIntlayer } from "intlayer";
222
- import { getLocale } from "next-intlayer/server";
223
- export { generateStaticParams } from "next-intlayer";
150
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
151
+ /** @type {import('intlayer').IntlayerConfig} */
152
+ const config = {
153
+ // ... Rest Ihrer Konfiguration
154
+ compiler: {
155
+ /**
156
+ * Gibt an, ob der Compiler aktiviert sein soll.
157
+ */
158
+ enabled: true,
224
159
 
225
- export const generateMetadata = async (): Promise<Metadata> => {
226
- const locale = await getLocale();
227
- const { title, description, keywords } = getIntlayer("metadata", locale);
160
+ /**
161
+ * Definiert den Pfad der Ausgabedateien
162
+ */
163
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
228
164
 
229
- return {
230
- title,
231
- description,
232
- keywords,
233
- };
234
- };
165
+ /**
166
+ * Gibt an, ob die Komponenten nach der Transformation gespeichert werden sollen. Auf diese Weise kann der Compiler nur einmal ausgeführt werden, um die App zu transformieren, und dann entfernt werden.
167
+ */
168
+ saveComponents: false,
235
169
 
236
- const RootLayout = async ({
237
- children,
238
- }: Readonly<{
239
- children: ReactNode;
240
- }>) => {
241
- const locale = await getLocale();
242
-
243
- return (
244
- <html lang={locale} dir={getHTMLTextDir(locale)}>
245
- <IntlayerClientProvider defaultLocale={locale}>
246
- <body>{children}</body>
247
- </IntlayerClientProvider>
248
- </html>
249
- );
170
+ /**
171
+ * Präfix für Wörterbuchschlüssel
172
+ */
173
+ dictionaryKeyPrefix: "",
174
+ },
250
175
  };
251
176
 
252
- export default RootLayout;
177
+ module.exports = config;
253
178
  ```
254
179
 
255
- ### Schritt 6: Compilieren Sie Ihre Komponenten
256
-
257
- Wenn der Compiler aktiviert ist, müssen Sie Inhaltswörterbücher (wie `.content.ts`-Dateien) **nicht mehr manuell deklarieren**.
258
-
259
- Stattdessen können Sie Ihren Inhalt direkt als Zeichenfolgen in Ihren Code schreiben. Intlayer analysiert Ihren Code, generiert die Übersetzungen mit dem konfigurierten KI-Anbieter und ersetzt die Zeichenfolgen zur Kompilierzeit durch lokalisierten Inhalt.
260
-
261
- Schreiben Sie Ihre Komponenten einfach mit fest kodierten Zeichenfolgen in Ihrer Standardsprache. Der Compiler kümmert sich um den Rest.
262
-
263
- Beispiel für das Aussehen Ihrer Seite:
264
-
265
180
  <Tabs>
266
- <Tab value="Code">
267
-
268
- ```tsx fileName="src/app/page.tsx"
269
- import type { FC } from "react";
270
- import { IntlayerServerProvider } from "next-intlayer/server";
271
- import { getLocale } from "next-intlayer/server";
272
-
273
- const PageContent: FC = () => {
274
- return (
275
- <>
276
- <p>Beginnen Sie mit der Bearbeitung von</p>
277
- <code>src/app/page.tsx</code>
278
- </>
279
- );
280
- };
281
-
282
- export default async function Page() {
283
- const locale = await getLocale();
181
+ <Tab value='Extraktionsbefehl'>
284
182
 
285
- return (
286
- <IntlayerServerProvider locale={locale}>
287
- <PageContent />
288
- </IntlayerServerProvider>
289
- );
290
- }
291
- ```
183
+ Führen Sie den Extractor aus, um Ihre Komponenten zu transformieren und den Inhalt zu extrahieren
292
184
 
293
- </Tab>
294
- <Tab value="Output">
295
-
296
- ```ts fileName="i18n/page-content.content.tsx"
297
- {
298
- key: "page-content",
299
- content: {
300
- nodeType: "translation",
301
- translation: {
302
- en: {
303
- getStartedByEditing: "Get started by editing",
304
- },
305
- fr: {
306
- getStartedByEditing: "Commencez par éditer",
307
- },
308
- de: {
309
- getStartedByEditing: "Beginnen Sie mit der Bearbeitung von",
310
- },
311
- }
312
- }
313
- }
314
- ```
315
-
316
- ```tsx fileName="src/app/page.tsx"
317
- import { type FC } from "react";
318
- import { IntlayerServerProvider, useIntlayer } from "next-intlayer/server";
319
- import { getLocale } from "next-intlayer/server";
320
-
321
- const PageContent: FC = () => {
322
- const content = useIntlayer("page-content");
323
-
324
- return (
325
- <>
326
- <p>{content.getStartedByEditing}</p>
327
- <code>src/app/page.tsx</code>
328
- </>
329
- );
330
- };
331
-
332
- export default async function Page() {
333
- const locale = await getLocale();
334
-
335
- return (
336
- <IntlayerServerProvider locale={locale}>
337
- <PageContent />
338
- </IntlayerServerProvider>
339
- );
340
- }
341
- ```
342
-
343
- </Tab>
344
- </Tabs>
345
-
346
- - **`IntlayerClientProvider`** wird verwendet, um die Sprache für Client-Komponenten bereitzustellen.
347
- - **`IntlayerServerProvider`** wird verwendet, um die Sprache für Server-Kinder bereitzustellen.
348
-
349
- > Layout and page cannot share a common server context because the server context system is based on a per-request data store (via [React's cache](https://react.dev/reference/react/cache) mechanism), causing each "context" to be re-created for different segments of the application. Placing the provider in a shared layout would break this isolation, preventing the correct propagation of the server context values to your server components.
350
-
351
- ### (Optional) Schritt 7: Fehlende Übersetzungen ausfüllen
352
-
353
- Intlayer bietet ein CLI-Tool an, um fehlende Übersetzungen auszufüllen. Sie können den Befehl `intlayer` verwenden, um fehlende Übersetzungen in Ihrem Code zu testen und auszufüllen.
354
-
355
- ```bash
356
- npx intlayer test # Testen, ob Übersetzungen fehlen
185
+ ```bash packageManager="npm"
186
+ npx intlayer extract
357
187
  ```
358
188
 
359
- ```bash
360
- npx intlayer fill # Fehlende Übersetzungen ausfüllen
189
+ ```bash packageManager="pnpm"
190
+ pnpm intlayer extract
361
191
  ```
362
192
 
363
- > Weitere Informationen finden Sie in der [CLI-Dokumentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/cli/ci.md)
364
-
365
- ### (Optional) Schritt 8: Proxy zur Erkennung der Sprache konfigurieren
366
-
367
- Richten Sie einen Proxy ein, um die bevorzugte Sprache des Benutzers zu erkennen:
368
-
369
- ```typescript fileName="src/proxy.ts"
370
- export { intlayerProxy as proxy } from "next-intlayer/proxy";
371
-
372
- export const config = {
373
- matcher:
374
- "/((?!api|static|assets|robots|sitemap|sw|service-worker|manifest|.*\\..*|_next).*)",
375
- };
193
+ ```bash packageManager="yarn"
194
+ yarn intlayer extract
376
195
  ```
377
196
 
378
- > Der `intlayerProxy` wird verwendet, um die bevorzugte Sprache des Benutzers zu erkennen und ihn gemäß der [Konfiguration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/configuration.md) auf die entsprechende URL umzuleiten. Außerdem ermöglicht er das Speichern der bevorzugten Sprache des Benutzers in einem Cookie.
379
-
380
- ### (Optional) Schritt 8: Sprache Ihres Inhalts ändern
381
-
382
- Um die Sprache Ihres Inhalts in Next.js zu ändern, wird empfohlen, die Komponente `Link` zu verwenden, um Benutzer auf die entsprechende lokalisierte Seite umzuleiten. Die Komponente `Link` ermöglicht das Prefetching der Seite, was dazu beiträgt, ein vollständiges Neuladen der Seite zu vermeiden.
383
-
384
- ```tsx fileName="src/components/localeSwitcher/LocaleSwitcher.tsx"
385
- "use client";
386
-
387
- import type { FC } from "react";
388
- import { Locales, getHTMLTextDir, getLocaleName } from "intlayer";
389
- import { useLocale } from "next-intlayer";
390
-
391
- export const LocaleSwitcher: FC = () => {
392
- const { locale, availableLocales, setLocale } = useLocale();
393
-
394
- return (
395
- <div>
396
- <button popoverTarget="localePopover">{getLocaleName(locale)}</button>
397
- <div id="localePopover" popover="auto">
398
- {availableLocales.map((localeItem) => (
399
- <button
400
- key={localeItem}
401
- aria-current={locale === localeItem ? "page" : undefined}
402
- onClick={() => setLocale(localeItem)}
403
- >
404
- <span>
405
- {/* Sprache - z. B. DE */}
406
- {localeItem}
407
- </span>
408
- <span>
409
- {/* Sprache in ihrer eigenen Sprache - z. B. Deutsch */}
410
- {getLocaleName(localeItem, locale)}
411
- </span>
412
- <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
413
- {/* Sprache in der aktuellen Sprache - z. B. Allemand, wenn die aktuelle Sprache auf Locales.FRENCH eingestellt ist */}
414
- {getLocaleName(localeItem)}
415
- </span>
416
- <span dir="ltr" lang={Locales.ENGLISH}>
417
- {/* Sprache in Englisch - z. B. German */}
418
- {getLocaleName(localeItem, Locales.ENGLISH)}
419
- </span>
420
- </button>
421
- ))}
422
- </div>
423
- </div>
424
- );
425
- };
197
+ ```bash packageManager="bun"
198
+ bunx intlayer extract
426
199
  ```
427
200
 
428
- > Eine Alternative ist die Verwendung der Funktion `setLocale`, die vom Hook `useLocale` bereitgestellt wird. Diese Funktion erlaubt kein Prefetching der Seite. Weitere Einzelheiten finden Sie in der [Dokumentation zum Hook `useLocale`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/packages/next-intlayer/useLocale.md).
429
-
430
- ### (Optional) Schritt 10: Bundle-Größe optimieren
431
-
432
- Bei Verwendung von `next-intlayer` sind Wörterbücher standardmäßig für jede Seite im Bundle enthalten. Um die Bundle-Größe zu optimieren, bietet Intlayer ein optionales SWC-Plugin an, das `useIntlayer`-Aufrufe mithilfe von Makros intelligent ersetzt. Dies stellt sicher, dass Wörterbücher nur in Bundles für Seiten enthalten sind, die sie tatsächlich verwenden.
433
-
434
- Um diese Optimierung zu aktivieren, installieren Sie das Paket `@intlayer/swc`. Nach der Installation erkennt und verwendet `next-intlayer` automatisch das Plugin:
201
+ </Tab>
202
+ <Tab value='Babel-Compiler'>
435
203
 
436
204
  ```bash packageManager="npm"
437
- npm install @intlayer/swc --save-dev
205
+ npm install @intlayer/babel --save-dev
438
206
  ```
439
207
 
440
208
  ```bash packageManager="pnpm"
441
- pnpm add @intlayer/swc --save-dev
209
+ pnpm add @intlayer/babel --save-dev
442
210
  ```
443
211
 
444
212
  ```bash packageManager="yarn"
445
- yarn add @intlayer/swc --save-dev
213
+ yarn add @intlayer/babel --save-dev
446
214
  ```
447
215
 
448
216
  ```bash packageManager="bun"
449
- bun add @intlayer/swc --dev
217
+ bun add @intlayer/babel --dev
450
218
  ```
451
219
 
452
- > Hinweis: Diese Optimierung ist nur für Next.js 13 und höher verfügbar.
453
-
454
- > Hinweis: Dieses Paket wird nicht standardmäßig installiert, da SWC-Plugins in Next.js noch experimentell sind. Dies kann sich in Zukunft ändern.
455
-
456
- > Hinweis: Wenn Sie die Option als `importMode: 'dynamic'` oder `importMode: 'fetch'` festlegen (in der Konfiguration `dictionary`), basiert dies auf Suspense. Daher müssen Sie Ihre `useIntlayer`-Aufrufe in eine `Suspense`-Boundary einhüllen. Das bedeutet, dass Sie `useIntlayer` nicht direkt auf der obersten Ebene Ihrer Seite- / Layout-Komponente verwenden können.
457
-
458
- ### TypeScript konfigurieren
459
-
460
- Intlayer verwendet Modul-Augmentation, um die Vorteile von TypeScript zu nutzen und Ihre Codebasis robuster zu machen.
461
-
462
- ![Autovervollständigung](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true)
463
-
464
- ![Übersetzungsfehler](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png?raw=true)
465
-
466
- Stellen Sie sicher, dass Ihre TypeScript-Konfiguration die automatisch generierten Typen enthält.
220
+ ```js fileName="babel.config.js"
221
+ const {
222
+ intlayerExtractBabelPlugin,
223
+ getExtractPluginOptions,
224
+ } = require("@intlayer/babel");
467
225
 
468
- ```json5 fileName="tsconfig.json"
469
- {
470
- // ... Ihre bestehenden TypeScript-Konfigurationen
471
- "include": [
472
- // ... Ihre bestehenden TypeScript-Konfigurationen
473
- ".intlayer/**/*.ts", // Die automatisch generierten Typen einbinden
226
+ module.exports = {
227
+ presets: ["next/babel"],
228
+ plugins: [
229
+ // Inhalt aus Komponenten in Wörterbücher extrahieren
230
+ [intlayerExtractBabelPlugin, getExtractPluginOptions()],
474
231
  ],
475
- }
232
+ };
476
233
  ```
477
234
 
478
- ### Git-Konfiguration
479
-
480
- Es wird empfohlen, die von Intlayer generierten Dateien zu ignorieren. So vermeiden Sie, dass sie in Ihr Git-Repository übertragen werden.
481
-
482
- Fügen Sie hierzu die folgenden Anweisungen in Ihre `.gitignore`-Datei ein:
235
+ ```bash packageManager="npm"
236
+ npm run build # Oder npm run dev
237
+ ```
483
238
 
484
- ```plaintext fileName=".gitignore"
485
- # Die von Intlayer generierten Dateien ignorieren
486
- .intlayer
239
+ ```bash packageManager="pnpm"
240
+ pnpm run build # Oder pnpm run dev
487
241
  ```
488
242
 
489
- ### VS Code Erweiterung
243
+ ```bash packageManager="yarn"
244
+ yarn build # Oder yarn dev
245
+ ```
490
246
 
491
- Um Ihre Entwicklungserfahrung mit Intlayer zu verbessern, können Sie die offizielle **Intlayer VS Code Erweiterung** installieren.
247
+ ```bash packageManager="bun"
248
+ bun run build # Or bun run dev
249
+ ```
492
250
 
493
- [Installation über den VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
251
+ </Tab>
252
+ </Tabs>
494
253
 
495
- Diese Erweiterung bietet:
254
+ zur Einrichtung von Intlayer in einer Next.js-Anwendung
496
255
 
497
- - **Autovervollständigung** für Übersetzungsschlüssel.
498
- - **Fehlererkennung in Echtzeit** für fehlende Übersetzungen.
499
- - **Inline-Vorschau** der übersetzten Inhalte.
500
- - **Schnellaktionen**, um Übersetzungen einfach zu erstellen und zu aktualisieren.
256
+ - **`IntlayerClientProvider`** wird verwendet, um die Sprache für Client-Komponenten bereitzustellen.
257
+ - **`IntlayerServerProvider`** wird verwendet, um die Sprache für Server-Kinder bereitzustellen.
501
258
 
502
- Weitere Einzelheiten zur Verwendung der Erweiterung finden Sie in der [Dokumentation zur Intlayer VS Code Erweiterung](https://intlayer.org/doc/vs-code-extension).
259
+ > Layout and page cannot share a common server context because the server context system is based on a per-request data store (via [React's cache](https://react.dev/reference/react/cache) mechanism), causing each "context" to be re-created for different segments of the application. Placing the provider in a shared layout would break this isolation, preventing the correct propagation of the server context values to your server components.
503
260
 
504
261
  ### Weiterführende Informationen
505
262