@intlayer/docs 8.6.0 → 8.6.10

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 (197) hide show
  1. package/dist/cjs/doc.cjs.map +1 -1
  2. package/dist/cjs/generated/docs.entry.cjs +60 -0
  3. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  4. package/dist/esm/doc.mjs.map +1 -1
  5. package/dist/esm/generated/docs.entry.mjs +60 -0
  6. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  7. package/dist/types/doc.d.ts.map +1 -1
  8. package/dist/types/generated/docs.entry.d.ts +3 -0
  9. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  10. package/docs/ar/cli/index.md +54 -42
  11. package/docs/ar/cli/init.md +32 -20
  12. package/docs/ar/cli/standalone.md +91 -0
  13. package/docs/ar/configuration.md +39 -7
  14. package/docs/ar/custom_domains.md +250 -0
  15. package/docs/ar/intlayer_with_tanstack+solid.md +14 -33
  16. package/docs/ar/intlayer_with_tanstack.md +25 -16
  17. package/docs/ar/intlayer_with_vanilla.md +506 -0
  18. package/docs/bn/cli/index.md +195 -0
  19. package/docs/bn/cli/init.md +96 -0
  20. package/docs/bn/cli/standalone.md +91 -0
  21. package/docs/bn/configuration.md +46 -14
  22. package/docs/bn/custom_domains.md +250 -0
  23. package/docs/bn/intlayer_with_vanilla.md +506 -0
  24. package/docs/cs/cli/index.md +195 -0
  25. package/docs/cs/cli/init.md +96 -0
  26. package/docs/cs/cli/standalone.md +91 -0
  27. package/docs/cs/configuration.md +46 -7
  28. package/docs/cs/custom_domains.md +250 -0
  29. package/docs/cs/intlayer_with_vanilla.md +506 -0
  30. package/docs/de/cli/index.md +53 -41
  31. package/docs/de/cli/standalone.md +91 -0
  32. package/docs/de/configuration.md +46 -7
  33. package/docs/de/custom_domains.md +250 -0
  34. package/docs/de/intlayer_with_tanstack+solid.md +15 -36
  35. package/docs/de/intlayer_with_tanstack.md +25 -16
  36. package/docs/de/intlayer_with_vanilla.md +506 -0
  37. package/docs/en/bundle_optimization.md +288 -23
  38. package/docs/en/cli/index.md +6 -1
  39. package/docs/en/cli/init.md +13 -1
  40. package/docs/en/cli/standalone.md +91 -0
  41. package/docs/en/configuration.md +46 -7
  42. package/docs/en/custom_domains.md +245 -0
  43. package/docs/en/intlayer_with_tanstack+solid.md +15 -36
  44. package/docs/en/intlayer_with_tanstack.md +25 -16
  45. package/docs/en/intlayer_with_vanilla.md +506 -0
  46. package/docs/en-GB/cli/index.md +56 -44
  47. package/docs/en-GB/cli/init.md +28 -21
  48. package/docs/en-GB/cli/standalone.md +91 -0
  49. package/docs/en-GB/configuration.md +53 -14
  50. package/docs/en-GB/custom_domains.md +250 -0
  51. package/docs/en-GB/intlayer_with_tanstack+solid.md +15 -36
  52. package/docs/en-GB/intlayer_with_tanstack.md +25 -16
  53. package/docs/en-GB/intlayer_with_vanilla.md +506 -0
  54. package/docs/es/cli/index.md +65 -53
  55. package/docs/es/cli/init.md +33 -21
  56. package/docs/es/cli/standalone.md +91 -0
  57. package/docs/es/configuration.md +39 -1
  58. package/docs/es/custom_domains.md +250 -0
  59. package/docs/es/intlayer_with_tanstack+solid.md +15 -36
  60. package/docs/es/intlayer_with_tanstack.md +25 -16
  61. package/docs/es/intlayer_with_vanilla.md +506 -0
  62. package/docs/fr/cli/index.md +43 -31
  63. package/docs/fr/cli/init.md +37 -25
  64. package/docs/fr/cli/standalone.md +91 -0
  65. package/docs/fr/configuration.md +46 -7
  66. package/docs/fr/custom_domains.md +250 -0
  67. package/docs/fr/intlayer_with_tanstack+solid.md +15 -36
  68. package/docs/fr/intlayer_with_tanstack.md +25 -16
  69. package/docs/fr/intlayer_with_vanilla.md +506 -0
  70. package/docs/hi/cli/index.md +71 -59
  71. package/docs/hi/cli/init.md +37 -33
  72. package/docs/hi/cli/standalone.md +91 -0
  73. package/docs/hi/configuration.md +39 -7
  74. package/docs/hi/custom_domains.md +250 -0
  75. package/docs/hi/intlayer_with_tanstack+solid.md +14 -33
  76. package/docs/hi/intlayer_with_tanstack.md +25 -16
  77. package/docs/hi/intlayer_with_vanilla.md +506 -0
  78. package/docs/id/cli/index.md +59 -47
  79. package/docs/id/cli/init.md +32 -25
  80. package/docs/id/cli/standalone.md +91 -0
  81. package/docs/id/configuration.md +46 -7
  82. package/docs/id/custom_domains.md +250 -0
  83. package/docs/id/intlayer_with_tanstack+solid.md +14 -33
  84. package/docs/id/intlayer_with_tanstack.md +25 -16
  85. package/docs/id/intlayer_with_vanilla.md +506 -0
  86. package/docs/it/cli/index.md +58 -41
  87. package/docs/it/cli/init.md +37 -38
  88. package/docs/it/cli/standalone.md +91 -0
  89. package/docs/it/configuration.md +46 -7
  90. package/docs/it/custom_domains.md +250 -0
  91. package/docs/it/intlayer_with_tanstack+solid.md +15 -36
  92. package/docs/it/intlayer_with_tanstack.md +25 -16
  93. package/docs/it/intlayer_with_vanilla.md +506 -0
  94. package/docs/ja/cli/index.md +59 -47
  95. package/docs/ja/cli/init.md +36 -24
  96. package/docs/ja/cli/standalone.md +91 -0
  97. package/docs/ja/configuration.md +46 -7
  98. package/docs/ja/custom_domains.md +250 -0
  99. package/docs/ja/intlayer_with_tanstack+solid.md +15 -36
  100. package/docs/ja/intlayer_with_tanstack.md +25 -16
  101. package/docs/ja/intlayer_with_vanilla.md +506 -0
  102. package/docs/ko/cli/index.md +58 -46
  103. package/docs/ko/cli/init.md +39 -35
  104. package/docs/ko/cli/standalone.md +91 -0
  105. package/docs/ko/configuration.md +47 -8
  106. package/docs/ko/custom_domains.md +250 -0
  107. package/docs/ko/intlayer_with_tanstack+solid.md +15 -36
  108. package/docs/ko/intlayer_with_tanstack.md +25 -16
  109. package/docs/ko/intlayer_with_vanilla.md +506 -0
  110. package/docs/nl/cli/index.md +195 -0
  111. package/docs/nl/cli/init.md +96 -0
  112. package/docs/nl/cli/standalone.md +91 -0
  113. package/docs/nl/configuration.md +46 -7
  114. package/docs/nl/custom_domains.md +250 -0
  115. package/docs/nl/intlayer_with_vanilla.md +506 -0
  116. package/docs/pl/cli/index.md +56 -44
  117. package/docs/pl/cli/init.md +36 -32
  118. package/docs/pl/cli/standalone.md +91 -0
  119. package/docs/pl/configuration.md +46 -7
  120. package/docs/pl/custom_domains.md +250 -0
  121. package/docs/pl/intlayer_with_tanstack+solid.md +14 -33
  122. package/docs/pl/intlayer_with_tanstack.md +25 -16
  123. package/docs/pl/intlayer_with_vanilla.md +506 -0
  124. package/docs/pt/cli/index.md +64 -52
  125. package/docs/pt/cli/init.md +35 -31
  126. package/docs/pt/cli/standalone.md +91 -0
  127. package/docs/pt/configuration.md +46 -7
  128. package/docs/pt/custom_domains.md +250 -0
  129. package/docs/pt/intlayer_with_tanstack+solid.md +15 -36
  130. package/docs/pt/intlayer_with_tanstack.md +25 -16
  131. package/docs/pt/intlayer_with_vanilla.md +506 -0
  132. package/docs/ru/cli/index.md +54 -42
  133. package/docs/ru/cli/init.md +31 -27
  134. package/docs/ru/cli/standalone.md +91 -0
  135. package/docs/ru/configuration.md +46 -7
  136. package/docs/ru/custom_domains.md +250 -0
  137. package/docs/ru/intlayer_with_tanstack+solid.md +15 -36
  138. package/docs/ru/intlayer_with_tanstack.md +25 -16
  139. package/docs/ru/intlayer_with_vanilla.md +506 -0
  140. package/docs/tr/cli/index.md +64 -52
  141. package/docs/tr/cli/init.md +37 -30
  142. package/docs/tr/cli/standalone.md +91 -0
  143. package/docs/tr/configuration.md +46 -7
  144. package/docs/tr/custom_domains.md +250 -0
  145. package/docs/tr/intlayer_with_tanstack+solid.md +14 -33
  146. package/docs/tr/intlayer_with_tanstack.md +25 -16
  147. package/docs/tr/intlayer_with_vanilla.md +506 -0
  148. package/docs/uk/cli/index.md +60 -55
  149. package/docs/uk/cli/init.md +32 -20
  150. package/docs/uk/cli/standalone.md +91 -0
  151. package/docs/uk/configuration.md +46 -7
  152. package/docs/uk/custom_domains.md +250 -0
  153. package/docs/uk/intlayer_with_tanstack+solid.md +14 -33
  154. package/docs/uk/intlayer_with_tanstack.md +25 -16
  155. package/docs/uk/intlayer_with_vanilla.md +506 -0
  156. package/docs/ur/cli/index.md +195 -0
  157. package/docs/ur/cli/init.md +96 -0
  158. package/docs/ur/cli/standalone.md +91 -0
  159. package/docs/ur/configuration.md +46 -7
  160. package/docs/ur/custom_domains.md +250 -0
  161. package/docs/ur/intlayer_with_vanilla.md +506 -0
  162. package/docs/vi/cli/index.md +72 -61
  163. package/docs/vi/cli/init.md +33 -21
  164. package/docs/vi/cli/standalone.md +91 -0
  165. package/docs/vi/configuration.md +46 -7
  166. package/docs/vi/custom_domains.md +250 -0
  167. package/docs/vi/intlayer_with_tanstack+solid.md +14 -33
  168. package/docs/vi/intlayer_with_tanstack.md +25 -16
  169. package/docs/vi/intlayer_with_vanilla.md +506 -0
  170. package/docs/zh/cli/index.md +56 -49
  171. package/docs/zh/cli/init.md +30 -18
  172. package/docs/zh/cli/standalone.md +91 -0
  173. package/docs/zh/configuration.md +46 -7
  174. package/docs/zh/custom_domains.md +250 -0
  175. package/docs/zh/intlayer_with_tanstack+solid.md +15 -36
  176. package/docs/zh/intlayer_with_tanstack.md +25 -16
  177. package/docs/zh/intlayer_with_vanilla.md +506 -0
  178. package/package.json +8 -8
  179. package/src/doc.ts +4 -1
  180. package/src/generated/docs.entry.ts +60 -0
  181. package/docs/ar/bundle_optimization.md +0 -185
  182. package/docs/de/bundle_optimization.md +0 -195
  183. package/docs/en-GB/bundle_optimization.md +0 -184
  184. package/docs/es/bundle_optimization.md +0 -194
  185. package/docs/fr/bundle_optimization.md +0 -184
  186. package/docs/hi/bundle_optimization.md +0 -185
  187. package/docs/id/bundle_optimization.md +0 -185
  188. package/docs/it/bundle_optimization.md +0 -185
  189. package/docs/ja/bundle_optimization.md +0 -185
  190. package/docs/ko/bundle_optimization.md +0 -185
  191. package/docs/pl/bundle_optimization.md +0 -185
  192. package/docs/pt/bundle_optimization.md +0 -184
  193. package/docs/ru/bundle_optimization.md +0 -185
  194. package/docs/tr/bundle_optimization.md +0 -184
  195. package/docs/uk/bundle_optimization.md +0 -186
  196. package/docs/vi/bundle_optimization.md +0 -185
  197. package/docs/zh/bundle_optimization.md +0 -185
@@ -0,0 +1,506 @@
1
+ ---
2
+ createdAt: 2026-03-31
3
+ updatedAt: 2026-03-31
4
+ title: Vanilla JS i18n - Hoe vertaal je een Vanilla JS app in 2026
5
+ description: Ontdek hoe je je Vanilla JS-website meertalig maakt. Volg de documentatie om deze te internationaliseren (i18n) en te vertalen.
6
+ keywords:
7
+ - Internationalisering
8
+ - Documentatie
9
+ - Intlayer
10
+ - Vanilla JS
11
+ - JavaScript
12
+ - TypeScript
13
+ - HTML
14
+ slugs:
15
+ - doc
16
+ - environment
17
+ - vanilla
18
+ applicationTemplate: https://github.com/aymericzip/intlayer-vanilla-template
19
+ history:
20
+ - version: 8.4.10
21
+ date: 2026-03-31
22
+ changes: "Geschiedenis geïnitialiseerd"
23
+ ---
24
+
25
+ # Vertaal je Vanilla JS website met Intlayer | Internationalisering (i18n)
26
+
27
+ ## Inhoudsopgave
28
+
29
+ <TOC/>
30
+
31
+ ## Wat is Intlayer?
32
+
33
+ **Intlayer** is een innovatieve, open-source internationaliseringsbibliotheek (i18n) die is ontworpen om meertalige ondersteuning in moderne webapplicaties te vereenvoudigen.
34
+
35
+ Met Intlayer kun je:
36
+
37
+ - **Eenvoudig vertalingen beheren** met declaratieve woordenboeken op componentniveau.
38
+ - **Dynamisch metadata, routes en inhoud lokaliseren.**
39
+ - **TypeScript-ondersteuning garanderen** met automatisch gegenereerde types, wat autocompletion en foutdetectie verbetert.
40
+ - **Profiteren van geavanceerde functies**, zoals dynamische taaldetectie en -schakeling.
41
+
42
+ Deze gids laat zien hoe je Intlayer gebruikt in een Vanilla JavaScript-applicatie **zonder een pakketbeheerder of een bundler** (zoals Vite, Webpack, etc.) te gebruiken.
43
+
44
+ Als je applicatie een bundler gebruikt (zoals Vite), raden we aan om in plaats daarvan de [Vite + Vanilla JS Gids](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/intlayer_with_vite+vanilla.md) te volgen.
45
+
46
+ Met behulp van de standalone bundel kun je Intlayer direct in je HTML-bestanden importeren via een enkel JavaScript-bestand, waardoor het perfect is voor legacy-projecten of eenvoudige statische sites.
47
+
48
+ ---
49
+
50
+ ## Stap-voor-stap handleiding om Intlayer in te stellen in een Vanilla JS-applicatie
51
+
52
+ ### Stap 1: Afhankelijkheden installeren
53
+
54
+ Installeer de benodigde pakketten met npm:
55
+
56
+ ```bash packageManager="npm"
57
+ # Genereer een standalone bundel van intlayer en vanilla-intlayer
58
+ # Dit bestand wordt geïmporteerd in je HTML-bestand
59
+ npx intlayer standalone --packages intlayer vanilla-intlayer --outfile intlayer.js
60
+
61
+ # Initialiseer intlayer met configuratiebestand
62
+ npx intlayer init --no-gitignore
63
+
64
+ # Bouw de woordenboeken
65
+ npx intlayer build
66
+ ```
67
+
68
+ ```bash packageManager="pnpm"
69
+ # Genereer een standalone bundel van intlayer en vanilla-intlayer
70
+ # Dit bestand wordt geïmporteerd in je HTML-bestand
71
+ pnpm intlayer standalone --packages intlayer vanilla-intlayer --outfile intlayer.js
72
+
73
+ # Initialiseer intlayer met configuratiebestand
74
+ pnpm intlayer init --no-gitignore
75
+
76
+ # Bouw de woordenboeken
77
+ pnpm intlayer build
78
+ ```
79
+
80
+ ```bash packageManager="yarn"
81
+ # Genereer een standalone bundel van intlayer en vanilla-intlayer
82
+ # Dit bestand wordt geïmporteerd in je HTML-bestand
83
+ yarn intlayer standalone --packages intlayer vanilla-intlayer --outfile intlayer.js
84
+
85
+ # Initialiseer intlayer-configuratiebestand, TypeScript indien ingesteld, env var
86
+ yarn intlayer init --no-gitignore
87
+
88
+ # Bouw de woordenboeken
89
+ yarn intlayer build
90
+ ```
91
+
92
+ ```bash packageManager="bun"
93
+ # Genereer een standalone bundel van intlayer en vanilla-intlayer
94
+ # Dit bestand wordt geïmporteerd in je HTML-bestand
95
+ bun x intlayer standalone --packages intlayer vanilla-intlayer --outfile intlayer.js
96
+
97
+ # Initialiseer intlayer met configuratiebestand
98
+ bun x intlayer init --no-gitignore
99
+
100
+ # Bouw de woordenboeken
101
+ bun x intlayer build
102
+ ```
103
+
104
+ - **intlayer**
105
+ Het kernpakket dat internationaliseringstools biedt voor configuratiebeheer, vertaling, [inhoudsdeclaratie](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/dictionary/content_file.md), transpilatie en [CLI-commando's](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/cli/index.md).
106
+
107
+ - **vanilla-intlayer**
108
+ Het pakket dat Intlayer integreert met pure JavaScript / TypeScript-applicaties. Het biedt een pub/sub-singleton (`IntlayerClient`) and callback-gebaseerde helpers (`useIntlayer`, `useLocale`, etc.) zodat elk deel van je app kan reageren op taalveranderingen zonder afhankelijk te zijn van een UI-framework.
109
+
110
+ > De bundling-export van de `intlayer standalone` CLI produceert een geoptimaliseerde build door middel van tree-shaking van ongebruikte pakketten, locales en niet-essentiële logica (zoals redirects of prefixes) die specifiek zijn voor uw configuratie.
111
+
112
+ ### Stap 2: Configuratie van je project
113
+
114
+ Maak een configuratiebestand om de talen van je applicatie in te stellen:
115
+
116
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
117
+ import { Locales, type IntlayerConfig } from "intlayer";
118
+
119
+ const config: IntlayerConfig = {
120
+ internationalization: {
121
+ locales: [
122
+ Locales.ENGLISH,
123
+ Locales.FRENCH,
124
+ Locales.SPANISH,
125
+ // Je andere talen
126
+ ],
127
+ defaultLocale: Locales.ENGLISH,
128
+ },
129
+ };
130
+
131
+ export default config;
132
+ ```
133
+
134
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
135
+ import { Locales } from "intlayer";
136
+
137
+ /** @type {import('intlayer').IntlayerConfig} */
138
+ const config = {
139
+ internationalization: {
140
+ locales: [
141
+ Locales.ENGLISH,
142
+ Locales.FRENCH,
143
+ Locales.SPANISH,
144
+ // Je andere talen
145
+ ],
146
+ defaultLocale: Locales.ENGLISH,
147
+ },
148
+ };
149
+
150
+ export default config;
151
+ ```
152
+
153
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
154
+ const { Locales } = require("intlayer");
155
+
156
+ /** @type {import('intlayer').IntlayerConfig} */
157
+ const config = {
158
+ internationalization: {
159
+ locales: [
160
+ Locales.ENGLISH,
161
+ Locales.FRENCH,
162
+ Locales.SPANISH,
163
+ // Je andere talen
164
+ ],
165
+ defaultLocale: Locales.ENGLISH,
166
+ },
167
+ };
168
+
169
+ module.exports = config;
170
+ ```
171
+
172
+ > Via dit configuratiebestand kun je gelokaliseerde URL's, middleware-redirection, cookienamen, de locatie en extensie van je inhoudsdeclaraties instellen, Intlayer-logs in de console uitschakelen en meer. Raadpleeg de [configuratie-documentatie](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/configuration.md) voor een volledige lijst van beschikbare parameters.
173
+
174
+ ### Stap 3: Importeer de bundel in je HTML
175
+
176
+ Zodra je de `intlayer.js`-bundel hebt gegeneerd, kun je deze in je HTML-bestand importeren:
177
+
178
+ ```html fileName="index.html"
179
+ <!DOCTYPE html>
180
+ <html lang="nl">
181
+ <head>
182
+ <meta charset="UTF-8" />
183
+
184
+ <!-- Importeer de bundel -->
185
+ <script src="./intlayer.js" defer></script>
186
+ <!-- Importeer je hoofdscript -->
187
+ <script src="./src/main.js" defer></script>
188
+ </head>
189
+ <body>
190
+ <h1 id="title"></h1>
191
+ <p class="read-the-docs"></p>
192
+ </body>
193
+ </html>
194
+ ```
195
+
196
+ De bundel stelt `Intlayer` en `VanillaIntlayer` bloot als globale objecten op `window`.
197
+
198
+ ### Stap 4: Bootstrap Intlayer in je toegangspunt
199
+
200
+ In je `src/main.js`, roep `installIntlayer()` aan **voordat** er inhoud wordt gerenderd, zodat de globale taal-singleton gereed is.
201
+
202
+ ```javascript fileName="src/main.js"
203
+ const { installIntlayer } = window.VanillaIntlayer;
204
+
205
+ // Moet worden aangeroepen voordat i18n-inhoud wordt gerenderd.
206
+ installIntlayer();
207
+ ```
208
+
209
+ Als je ook de markdown-renderer wilt gebruiken, roep dan `installIntlayerMarkdown()` aan:
210
+
211
+ ```javascript fileName="src/main.js"
212
+ const { installIntlayer, installIntlayerMarkdown } = window.VanillaIntlayer;
213
+
214
+ installIntlayer();
215
+ installIntlayerMarkdown();
216
+ ```
217
+
218
+ ### Stap 5: Declareer je inhoud
219
+
220
+ Maak en beheer je inhoudsdeclaraties om vertalingen op te slaan:
221
+
222
+ ```typescript fileName="src/app.content.ts" contentDeclarationFormat="typescript"
223
+ import { insert, t, type Dictionary } from "intlayer";
224
+
225
+ const appContent = {
226
+ key: "app",
227
+ content: {
228
+ title: "Vite + Vanilla",
229
+
230
+ viteLogoLabel: t({
231
+ en: "Vite Logo",
232
+ fr: "Logo Vite",
233
+ es: "Logo Vite",
234
+ }),
235
+
236
+ count: insert(
237
+ t({
238
+ en: "count is {{count}}",
239
+ fr: "le compte est {{count}}",
240
+ es: "el recuento es {{count}}",
241
+ })
242
+ ),
243
+
244
+ readTheDocs: t({
245
+ en: "Click on the Vite logo to learn more",
246
+ fr: "Cliquez sur le logo Vite pour en savoir plus",
247
+ es: "Haga clic en el logotipo de Vite para obtener más información",
248
+ }),
249
+ },
250
+ } satisfies Dictionary;
251
+
252
+ export default appContent;
253
+ ```
254
+
255
+ ```javascript fileName="src/app.content.mjs" contentDeclarationFormat="esm"
256
+ import { insert, t } from "intlayer";
257
+
258
+ /** @type {import('intlayer').Dictionary} */
259
+ const appContent = {
260
+ key: "app",
261
+ content: {
262
+ title: "Vite + Vanilla",
263
+
264
+ viteLogoLabel: t({
265
+ en: "Vite Logo",
266
+ fr: "Logo Vite",
267
+ es: "Logo Vite",
268
+ }),
269
+
270
+ count: insert(
271
+ t({
272
+ en: "count is {{count}}",
273
+ fr: "le compte est {{count}}",
274
+ es: "el recuento es {{count}}",
275
+ })
276
+ ),
277
+
278
+ readTheDocs: t({
279
+ en: "Click on the Vite logo to learn more",
280
+ fr: "Cliquez sur le logo Vite pour en savoir plus",
281
+ es: "Haga clic en el logotipo de Vite para obtener más información",
282
+ }),
283
+ },
284
+ };
285
+
286
+ export default appContent;
287
+ ```
288
+
289
+ ```javascript fileName="src/app.content.cjs" contentDeclarationFormat="commonjs"
290
+ const { insert, t } = require("intlayer");
291
+
292
+ /** @type {import('intlayer').Dictionary} */
293
+ const appContent = {
294
+ key: "app",
295
+ content: {
296
+ title: "Vite + Vanilla",
297
+
298
+ viteLogoLabel: t({
299
+ en: "Vite Logo",
300
+ fr: "Logo Vite",
301
+ es: "Logo Vite",
302
+ }),
303
+
304
+ count: insert(
305
+ t({
306
+ en: "count is {{count}}",
307
+ fr: "le compte est {{count}}",
308
+ es: "el recuento es {{count}}",
309
+ })
310
+ ),
311
+
312
+ readTheDocs: t({
313
+ en: "Click on the Vite logo to learn more",
314
+ fr: "Cliquez sur le logo Vite pour en savoir plus",
315
+ es: "Haga clic en het logo van Vite voor meer informatie",
316
+ }),
317
+ },
318
+ };
319
+
320
+ module.exports = appContent;
321
+ ```
322
+
323
+ ```json fileName="src/app.content.json" contentDeclarationFormat="json"
324
+ {
325
+ "$schema": "https://intlayer.org/schema.json",
326
+ "key": "app",
327
+ "content": {
328
+ "title": "Vite + Vanilla",
329
+ "viteLogoLabel": {
330
+ "nodeType": "translation",
331
+ "translation": {
332
+ "en": "Vite Logo",
333
+ "fr": "Logo Vite",
334
+ "es": "Logo Vite"
335
+ }
336
+ },
337
+ "count": {
338
+ "nodeType": "insertion",
339
+ "insertion": {
340
+ "nodeType": "translation",
341
+ "translation": {
342
+ "en": "count is {{count}}",
343
+ "fr": "le compte est {{count}}",
344
+ "es": "el recuento es {{count}}"
345
+ }
346
+ }
347
+ },
348
+ "readTheDocs": {
349
+ "nodeType": "translation",
350
+ "translation": {
351
+ "en": "Click on the Vite logo to learn more",
352
+ "fr": "Cliquez sur le logo Vite pour en savoir plus",
353
+ "es": "Haga clic en el logotipo de Vite para obtener más información"
354
+ }
355
+ }
356
+ }
357
+ }
358
+ ```
359
+
360
+ > Je inhoudsdeclaraties kunnen overal in je applicatie worden gedefinieerd, zolang ze maar zijn opgenomen in de `contentDir` directory (standaard `./src`). En overeenkomen met de bestandsextensie van de inhoudsdeclaratie (standaard `.content.{json,ts,tsx,js,jsx,mjs,cjs}`).
361
+ >
362
+ > Raadpleeg de [inhoudsdeclaratie-documentatie](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/dictionary/content_file.md) voor meer details.
363
+
364
+ ### Stap 6: Gebruik Intlayer in je JavaScript
365
+
366
+ Het `window.VanillaIntlayer` object biedt API-helpers: `useIntlayer(key, locale?)` retourneert de vertaalde inhoud voor een gegeven sleutel.
367
+
368
+ ```javascript fileName="src/main.js"
369
+ const { installIntlayer, useIntlayer } = window.VanillaIntlayer;
370
+
371
+ installIntlayer();
372
+
373
+ // Haal de initiële inhoud op voor de huidige taal.
374
+ // Koppel .onChange() om op de hoogte te worden gesteld wanneer de taal verandert.
375
+ const content = useIntlayer("app").onChange((newContent) => {
376
+ // Re-render of patch alleen de aangetaste DOM-nodes
377
+ document.querySelector("h1").textContent = String(newContent.title);
378
+ document.querySelector(".read-the-docs").textContent = String(
379
+ newContent.readTheDocs
380
+ );
381
+ });
382
+
383
+ // Initiële render
384
+ document.querySelector("h1").textContent = String(content.title);
385
+ document.querySelector(".read-the-docs").textContent = String(
386
+ content.readTheDocs
387
+ );
388
+ ```
389
+
390
+ > Benader eindwaarden als strings door ze in `String()` te wikkelen, wat de `toString()`-methode van de node aanroept en de vertaalde tekst retourneert.
391
+ >
392
+ > Wanneer je de waarde nodig hebt voor een eigen HTML-attribuut (bijv. `alt`, `aria-label`), gebruik dan direct `.value`:
393
+ >
394
+ > ```javascript
395
+ > img.alt = content.viteLogoLabel.value;
396
+ > ```
397
+
398
+ ### (Optioneel) Stap 7: Verander de taal van je inhoud
399
+
400
+ Om de taal van je inhoud te veranderen, gebruik je de `setLocale` functie die wordt blootgesteld door `useLocale`.
401
+
402
+ ```javascript fileName="src/locale-switcher.js"
403
+ const { getLocaleName } = window.Intlayer;
404
+ const { useLocale } = window.VanillaIntlayer;
405
+
406
+ export function setupLocaleSwitcher(container) {
407
+ const { locale, availableLocales, setLocale, subscribe } = useLocale();
408
+
409
+ const select = document.createElement("select");
410
+ select.setAttribute("aria-label", "Taal");
411
+
412
+ const render = (currentLocale) => {
413
+ select.innerHTML = availableLocales
414
+ .map(
415
+ (loc) =>
416
+ `<option value="${loc}"${loc === currentLocale ? " selected" : ""}>
417
+ ${getLocaleName(loc)}
418
+ </option>`
419
+ )
420
+ .join("");
421
+ };
422
+
423
+ render(locale);
424
+ container.appendChild(select);
425
+
426
+ select.addEventListener("change", () => setLocale(select.value));
427
+
428
+ // Houd de dropdown in sync wanneer de taal elders verandert
429
+ return subscribe((newLocale) => render(newLocale));
430
+ }
431
+ ```
432
+
433
+ ### (Optioneel) Stap 8: Schakel de HTML taal- en richtingsattributen
434
+
435
+ Update de `lang` en `dir` attributen van de `<html>`-tag zodat ze overeenkomen met de huidige taal voor toegankelijkheid en SEO.
436
+
437
+ ```javascript fileName="src/main.js"
438
+ const { getHTMLTextDir } = window.Intlayer;
439
+ const { installIntlayer, useLocale } = window.VanillaIntlayer;
440
+
441
+ installIntlayer();
442
+
443
+ useLocale({
444
+ onLocaleChange: (locale) => {
445
+ document.documentElement.lang = locale;
446
+ document.documentElement.dir = getHTMLTextDir(locale);
447
+ },
448
+ });
449
+ ```
450
+
451
+ ### (Optioneel) Stap 9: Laad woordenboeken lui per taal
452
+
453
+ Als je woordenboeken lui wilt laden per taal, kun je `useDictionaryDynamic` gebruiken. Dit is handig als je niet alle vertalingen in het initiële `intlayer.js`-bestand wilt bundelen.
454
+
455
+ ```javascript fileName="src/app.js"
456
+ const { installIntlayer, useDictionaryDynamic } = window.VanillaIntlayer;
457
+
458
+ installIntlayer();
459
+
460
+ const unsubscribe = useDictionaryDynamic(
461
+ {
462
+ en: () => import("../.intlayer/dictionaries/en/app.mjs"),
463
+ fr: () => import("../.intlayer/dictionaries/fr/app.mjs"),
464
+ es: () => import("../.intlayer/dictionaries/es/app.mjs"),
465
+ },
466
+ "app"
467
+ ).onChange((content) => {
468
+ document.querySelector("h1").textContent = String(content.title);
469
+ });
470
+ ```
471
+
472
+ > Opmerking: `useDictionaryDynamic` vereist dat de woordenboeken beschikbaar zijn als afzonderlijke ESM-bestanden. Deze aanpak wordt doorgaans gebruikt als je een webserver hebt die de woordenboeken serveert.
473
+
474
+ ### TypeScript configureren
475
+
476
+ Zorg ervoor dat je TypeScript-configuratie de automatisch gegenereerde types bevat.
477
+
478
+ ```json5 fileName="tsconfig.json"
479
+ {
480
+ "compilerOptions": {
481
+ // ...
482
+ },
483
+ "include": ["src", ".intlayer/**/*.ts"],
484
+ }
485
+ ```
486
+
487
+ ### VS Code-extensie
488
+
489
+ Om je ontwikkelervaring met Intlayer te verbeteren, kun je de officiële **Intlayer VS Code-extensie** installeren.
490
+
491
+ [Installeren vanuit de VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
492
+
493
+ Deze extensie biedt:
494
+
495
+ - **Autocompletion** voor vertaalsleutels.
496
+ - **Real-time foutdetectie** voor ontbrekende vertalingen.
497
+ - **Inline voorvertoningen** van vertaalde inhoud.
498
+ - **Sneltoetsen** om eenvoudig vertalingen aan te maken en bij te werken.
499
+
500
+ Raadpleeg de [Intlayer VS Code-extensie documentatie](https://intlayer.org/doc/vs-code-extension) voor meer details over het gebruik van de extensie.
501
+
502
+ ---
503
+
504
+ ### Ga verder
505
+
506
+ Om verder te gaan, kun je de [visuele editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/intlayer_visual_editor.md) implementeren of je inhoud externaliseren met behulp van de [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/intlayer_CMS.md).