@intlayer/docs 8.6.10 → 8.7.0-canary.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 (129) hide show
  1. package/blog/ar/i18n_using_next-i18next.md +1 -1
  2. package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
  3. package/blog/de/i18n_using_next-i18next.md +1 -1
  4. package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
  5. package/blog/en/i18n_using_next-i18next.md +1 -1
  6. package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
  7. package/blog/en-GB/i18n_using_next-i18next.md +1 -1
  8. package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  9. package/blog/es/i18n_using_next-i18next.md +1 -1
  10. package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
  11. package/blog/fr/i18n_using_next-i18next.md +1 -1
  12. package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  13. package/blog/hi/i18n_using_next-i18next.md +1 -1
  14. package/blog/id/i18n_using_next-i18next.md +1 -1
  15. package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
  16. package/blog/it/i18n_using_next-i18next.md +1 -1
  17. package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  18. package/blog/ja/i18n_using_next-i18next.md +1 -1
  19. package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  20. package/blog/ko/i18n_using_next-i18next.md +1 -1
  21. package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  22. package/blog/pl/i18n_using_next-i18next.md +1 -1
  23. package/blog/pl/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
  24. package/blog/pt/i18n_using_next-i18next.md +1 -1
  25. package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  26. package/blog/ru/i18n_using_next-i18next.md +1 -1
  27. package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  28. package/blog/tr/i18n_using_next-i18next.md +1 -1
  29. package/blog/uk/i18n_using_next-i18next.md +1 -1
  30. package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
  31. package/blog/vi/i18n_using_next-i18next.md +1 -1
  32. package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
  33. package/blog/zh/i18n_using_next-i18next.md +1 -1
  34. package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +1 -1
  35. package/docs/ar/bundle_optimization.md +454 -0
  36. package/docs/ar/intlayer_with_next-i18next.md +1 -1
  37. package/docs/ar/intlayer_with_next-intl.md +1 -1
  38. package/docs/ar/intlayer_with_tanstack+solid.md +24 -5
  39. package/docs/ar/intlayer_with_tanstack.md +45 -68
  40. package/docs/bn/bundle_optimization.md +454 -0
  41. package/docs/cs/bundle_optimization.md +454 -0
  42. package/docs/de/bundle_optimization.md +454 -0
  43. package/docs/de/intlayer_with_next-i18next.md +1 -1
  44. package/docs/de/intlayer_with_next-intl.md +1 -1
  45. package/docs/de/intlayer_with_tanstack+solid.md +24 -5
  46. package/docs/de/intlayer_with_tanstack.md +45 -68
  47. package/docs/en/bundle_optimization.md +36 -8
  48. package/docs/en/intlayer_with_next-i18next.md +1 -1
  49. package/docs/en/intlayer_with_next-intl.md +1 -1
  50. package/docs/en/intlayer_with_tanstack+solid.md +24 -5
  51. package/docs/en/intlayer_with_tanstack.md +45 -68
  52. package/docs/en-GB/bundle_optimization.md +454 -0
  53. package/docs/en-GB/intlayer_with_next-i18next.md +1 -1
  54. package/docs/en-GB/intlayer_with_next-intl.md +1 -1
  55. package/docs/en-GB/intlayer_with_tanstack+solid.md +24 -5
  56. package/docs/en-GB/intlayer_with_tanstack.md +47 -70
  57. package/docs/es/bundle_optimization.md +454 -0
  58. package/docs/es/intlayer_with_next-i18next.md +1 -1
  59. package/docs/es/intlayer_with_next-intl.md +1 -1
  60. package/docs/es/intlayer_with_tanstack+solid.md +24 -5
  61. package/docs/es/intlayer_with_tanstack.md +45 -68
  62. package/docs/fr/bundle_optimization.md +454 -0
  63. package/docs/fr/intlayer_with_next-i18next.md +1 -1
  64. package/docs/fr/intlayer_with_next-intl.md +1 -1
  65. package/docs/fr/intlayer_with_tanstack+solid.md +24 -5
  66. package/docs/fr/intlayer_with_tanstack.md +45 -68
  67. package/docs/hi/bundle_optimization.md +454 -0
  68. package/docs/hi/intlayer_with_next-i18next.md +1 -1
  69. package/docs/hi/intlayer_with_next-intl.md +1 -1
  70. package/docs/hi/intlayer_with_tanstack+solid.md +24 -5
  71. package/docs/hi/intlayer_with_tanstack.md +45 -68
  72. package/docs/id/bundle_optimization.md +454 -0
  73. package/docs/id/intlayer_with_next-i18next.md +1 -1
  74. package/docs/id/intlayer_with_next-intl.md +1 -1
  75. package/docs/id/intlayer_with_tanstack+solid.md +24 -5
  76. package/docs/id/intlayer_with_tanstack.md +45 -68
  77. package/docs/it/bundle_optimization.md +454 -0
  78. package/docs/it/intlayer_with_next-i18next.md +1 -1
  79. package/docs/it/intlayer_with_next-intl.md +1 -1
  80. package/docs/it/intlayer_with_tanstack+solid.md +24 -5
  81. package/docs/it/intlayer_with_tanstack.md +45 -68
  82. package/docs/ja/bundle_optimization.md +454 -0
  83. package/docs/ja/intlayer_with_next-i18next.md +1 -1
  84. package/docs/ja/intlayer_with_next-intl.md +1 -1
  85. package/docs/ja/intlayer_with_tanstack+solid.md +24 -5
  86. package/docs/ja/intlayer_with_tanstack.md +45 -36
  87. package/docs/ko/bundle_optimization.md +454 -0
  88. package/docs/ko/intlayer_with_next-i18next.md +1 -1
  89. package/docs/ko/intlayer_with_next-intl.md +1 -1
  90. package/docs/ko/intlayer_with_tanstack+solid.md +24 -5
  91. package/docs/ko/intlayer_with_tanstack.md +45 -68
  92. package/docs/nl/bundle_optimization.md +454 -0
  93. package/docs/pl/bundle_optimization.md +454 -0
  94. package/docs/pl/intlayer_with_next-i18next.md +1 -1
  95. package/docs/pl/intlayer_with_next-intl.md +1 -1
  96. package/docs/pl/intlayer_with_tanstack+solid.md +24 -5
  97. package/docs/pl/intlayer_with_tanstack.md +45 -68
  98. package/docs/pt/bundle_optimization.md +454 -0
  99. package/docs/pt/intlayer_with_next-i18next.md +1 -1
  100. package/docs/pt/intlayer_with_next-intl.md +1 -1
  101. package/docs/pt/intlayer_with_tanstack+solid.md +24 -5
  102. package/docs/pt/intlayer_with_tanstack.md +45 -68
  103. package/docs/ru/bundle_optimization.md +454 -0
  104. package/docs/ru/intlayer_with_next-i18next.md +1 -1
  105. package/docs/ru/intlayer_with_next-intl.md +1 -1
  106. package/docs/ru/intlayer_with_tanstack+solid.md +24 -5
  107. package/docs/ru/intlayer_with_tanstack.md +45 -68
  108. package/docs/tr/bundle_optimization.md +454 -0
  109. package/docs/tr/intlayer_with_next-i18next.md +1 -1
  110. package/docs/tr/intlayer_with_next-intl.md +1 -1
  111. package/docs/tr/intlayer_with_tanstack+solid.md +24 -5
  112. package/docs/tr/intlayer_with_tanstack.md +45 -68
  113. package/docs/uk/bundle_optimization.md +454 -0
  114. package/docs/uk/intlayer_with_next-i18next.md +1 -1
  115. package/docs/uk/intlayer_with_next-intl.md +1 -1
  116. package/docs/uk/intlayer_with_tanstack+solid.md +24 -5
  117. package/docs/uk/intlayer_with_tanstack.md +45 -68
  118. package/docs/ur/bundle_optimization.md +454 -0
  119. package/docs/vi/bundle_optimization.md +454 -0
  120. package/docs/vi/intlayer_with_next-i18next.md +1 -1
  121. package/docs/vi/intlayer_with_next-intl.md +1 -1
  122. package/docs/vi/intlayer_with_tanstack+solid.md +24 -5
  123. package/docs/vi/intlayer_with_tanstack.md +45 -68
  124. package/docs/zh/bundle_optimization.md +454 -0
  125. package/docs/zh/intlayer_with_next-i18next.md +1 -1
  126. package/docs/zh/intlayer_with_next-intl.md +1 -1
  127. package/docs/zh/intlayer_with_tanstack+solid.md +24 -5
  128. package/docs/zh/intlayer_with_tanstack.md +45 -68
  129. package/package.json +7 -7
@@ -0,0 +1,454 @@
1
+ ---
2
+ createdAt: 2025-11-25
3
+ updatedAt: 2026-04-08
4
+ title: Optimalizace velikosti bundle i18n a výkonu
5
+ description: Snižte velikost bundle vaší aplikace optimalizací obsahu internacionalizace (i18n). Naučte se využívat tree shaking a lazy loading pro slovníky s Intlayer.
6
+ keywords:
7
+ - Optimalizace bundle
8
+ - Automatizace obsahu
9
+ - Dynamický obsah
10
+ - Intlayer
11
+ - Next.js
12
+ - JavaScript
13
+ - React
14
+ slugs:
15
+ - doc
16
+ - concept
17
+ - bundle-optimization
18
+ history:
19
+ - version: 8.7.0
20
+ date: 2026-04-08
21
+ changes: "Přidány volby `minify` a `purge` do konfigurace buildu"
22
+ ---
23
+
24
+ # Optimalizace velikosti bundle i18n a výkonu
25
+
26
+ Jednou z nejčastějších výzev u tradičních řešení i18n spoléhajících na JSON soubory je správa velikosti obsahu. Pokud vývojáři ručně nerozdělí obsah do jmenných prostorů (namespaces), uživatelé často končí stahováním překladů pro každou stránku a potenciálně pro každý jazyk jen proto, aby si zobrazili jednu stránku.
27
+
28
+ Například aplikace s 10 stránkami přeloženými do 10 jazyků může vést k tomu, že uživatel stahuje obsah 100 stránek, i když potřebuje pouze **jednu** (aktuální stránku v aktuálním jazyce). To vede k plýtvání šířkou pásma a pomalejšímu načítání.
29
+
30
+ **Intlayer řeší tento problém prostřednictvím optimalizace v době sestavení (build-time optimization).** Analyzuje váš kód, aby zjistil, které slovníky jsou skutečně použity pro jednotlivé komponenty, a do vašeho bundle znovu vloží pouze nezbytný obsah.
31
+
32
+ ## Obsah
33
+
34
+ <TOC />
35
+
36
+ ## Skenování bundle
37
+
38
+ Analýza vašeho bundle je prvním krokem k identifikaci "těžkých" JSON souborů a příležitostí pro rozdělení kódu (code-splitting). Tyto nástroje generují vizuální mapu (treemap) zkompilovaného kódu vaší aplikace, což vám umožní přesně vidět, které knihovny zabírají nejvíce místa.
39
+
40
+ <Tabs>
41
+ <Tab value="vite">
42
+
43
+ ### Vite / Rollup
44
+
45
+ Vite využívá Rollup pod kapotou. Plugin `rollup-plugin-visualizer` generuje interaktivní HTML soubor zobrazující velikost každého modulu ve vašem grafu.
46
+
47
+ ```bash
48
+ npm install -D rollup-plugin-visualizer
49
+ ```
50
+
51
+ ```typescript fileName="vite.config.ts"
52
+ import { defineConfig } from "vite";
53
+ import { visualizer } from "rollup-plugin-visualizer";
54
+
55
+ export default defineConfig({
56
+ plugins: [
57
+ visualizer({
58
+ open: true, // Automaticky otevřít zprávu v prohlížeči
59
+ filename: "stats.html",
60
+ gzipSize: true,
61
+ brotliSize: true,
62
+ }),
63
+ ],
64
+ });
65
+ ```
66
+
67
+ </Tab>
68
+ <Tab value="nextjs (turbopack)">
69
+
70
+ ### Next.js (Turbopack)
71
+
72
+ Pro projekty využívající App Router a Turbopack poskytuje Next.js vestavěný experimentální analyzátor, který nevyžaduje žádné další závislosti.
73
+
74
+ ```bash packageManager='npm'
75
+ npx next experimental-analyze
76
+ ```
77
+
78
+ ```bash packageManager='yarn'
79
+ yarn next experimental-analyze
80
+ ```
81
+
82
+ ```bash packageManager='pnpm'
83
+ pnpm next experimental-analyze
84
+ ```
85
+
86
+ ```bash packageManager='bun'
87
+ bun next experimental-analyze
88
+ ```
89
+
90
+ </Tab>
91
+ <Tab value="nextjs (Webpack)">
92
+
93
+ ### Next.js (Webpack)
94
+
95
+ Pokud v Next.js používáte výchozí bundler Webpack, použijte oficiální analyzátor bundle. Aktivujte jej nastavením proměnné prostředí během sestavení.
96
+
97
+ ```bash packageManager='npm'
98
+ npm install -D @next/bundle-analyzer
99
+ ```
100
+
101
+ ```bash packageManager='yarn'
102
+ yarn add -D @next/bundle-analyzer
103
+ ```
104
+
105
+ ```bash packageManager='pnpm'
106
+ pnpm add -D @next/bundle-analyzer
107
+ ```
108
+
109
+ ```bash packageManager='bun'
110
+ bun add -d @next/bundle-analyzer
111
+ ```
112
+
113
+ ```javascript fileName="next.config.js"
114
+ const withBundleAnalyzer = require("@next/bundle-analyzer")({
115
+ enabled: process.env.ANALYZE === "true",
116
+ });
117
+
118
+ module.exports = withBundleAnalyzer({
119
+ // Vaše konfigurace Next.js
120
+ });
121
+ ```
122
+
123
+ **Použití:**
124
+
125
+ ```bash
126
+ ANALYZE=true npm run build
127
+ ```
128
+
129
+ </Tab>
130
+ <Tab value="Webpack (CRA / Angular / etc)">
131
+
132
+ ### Standardní Webpack
133
+
134
+ Pro Create React App (ejected), Angular nebo vlastní nastavení Webpacku použijte průmyslový standard `webpack-bundle-analyzer`.
135
+
136
+ ```bash packageManager='npm'
137
+ npm install -D webpack-bundle-analyzer
138
+ ```
139
+
140
+ ```bash packageManager='yarn'
141
+ yarn add -D webpack-bundle-analyzer
142
+ ```
143
+
144
+ ```bash packageManager='pnpm'
145
+ pnpm add -D webpack-bundle-analyzer
146
+ ```
147
+
148
+ ```bash packageManager='bun'
149
+ bun add -d webpack-bundle-analyzer
150
+ ```
151
+
152
+ ```typescript fileName="webpack.config.ts
153
+ import { BundleAnalyzerPlugin } from "webpack-bundle-analyzer";
154
+
155
+ export default {
156
+ plugins: [
157
+ new BundleAnalyzerPlugin({
158
+ analyzerMode: "static",
159
+ reportFilename: "bundle-analyzer.html",
160
+ openAnalyzer: false,
161
+ }),
162
+ ],
163
+ };
164
+ ```
165
+
166
+ </Tab>
167
+ </Tabs>
168
+
169
+ ## Jak to funguje
170
+
171
+ Intlayer využívá **přístup na úrovni komponent**. Na rozdíl od globálních JSON souborů je váš obsah definován vedle vašich komponent nebo uvnitř nich. Během procesu sestavení Intlayer:
172
+
173
+ 1. **Analyzuje** váš kód, aby našel volání `useIntlayer`.
174
+ 2. **Sestaví** odpovídající obsah slovníku.
175
+ 3. **Nahradí** volání `useIntlayer` optimalizovaným kódem na základě vaší konfigurace.
176
+
177
+ To zajišťuje, že:
178
+
179
+ - Pokud komponenta není importována, její obsah není zahrnut do bundle (Dead Code Elimination).
180
+ - Pokud je komponenta načítána líně (lazy-loaded), její obsah je také načítán líně.
181
+
182
+ ## Nastavení podle platformy
183
+
184
+ <Tabs>
185
+ <Tab value="nextjs">
186
+
187
+ ### Next.js
188
+
189
+ Next.js vyžaduje plugin `@intlayer/swc` pro zpracování transformace, protože Next.js používá SWC pro sestavení.
190
+
191
+ > Tento plugin není nainstalován ve výchozím nastavení, protože SWC pluginy jsou pro Next.js stále experimentální. V budoucnu se to může změnit.
192
+
193
+ ```bash packageManager="npm"
194
+ npm install -D @intlayer/swc
195
+ ```
196
+
197
+ ```bash packageManager="yarn"
198
+ yarn add -D @intlayer/swc
199
+ ```
200
+
201
+ ```bash packageManager="pnpm"
202
+ pnpm add -D @intlayer/swc
203
+ ```
204
+
205
+ ```bash packageManager="bun"
206
+ bun add -d @intlayer/swc
207
+ ```
208
+
209
+ Po instalaci Intlayer automaticky rozpozná a použije plugin.
210
+
211
+ </Tab>
212
+ <Tab value="vite">
213
+
214
+ ### Vite
215
+
216
+ Vite využívá plugin `@intlayer/babel`, který je součástí závislostí `vite-intlayer`. Optimalizace je ve výchozím nastavení povolena. Není třeba nic dalšího dělat.
217
+
218
+ </Tab>
219
+ <Tab value="webpack">
220
+
221
+ ### Webpack
222
+
223
+ Chcete-li povolit optimalizaci bundle s Intlayer na Webpacku, musíte nainstalovat a nakonfigurovat příslušný plugin Babel (`@intlayer/babel`) nebo SWC (`@intlayer/swc`).
224
+
225
+ ```bash packageManager="npm"
226
+ npm install -D @intlayer/babel
227
+ ```
228
+
229
+ ```bash packageManager="yarn"
230
+ yarn add -D @intlayer/babel
231
+ ```
232
+
233
+ ```bash packageManager="pnpm"
234
+ pnpm add -D @intlayer/babel
235
+ ```
236
+
237
+ ```bash packageManager="bun"
238
+ bun add -d @intlayer/babel
239
+ ```
240
+
241
+ ```typescript fileName="babel.config.js"
242
+ const {
243
+ getOptimizePluginOptions,
244
+ intlayerOptimizeBabelPlugin,
245
+ } = require("@intlayer/babel");
246
+
247
+ module.exports = {
248
+ plugins: [[intlayerOptimizeBabelPlugin, getOptimizePluginOptions()]],
249
+ };
250
+ ```
251
+
252
+ </Tab>
253
+ </Tabs>
254
+
255
+ ## Konfigurace
256
+
257
+ Způsob, jakým Intlayer optimalizuje váš bundle, můžete ovládat pomocí vlastnosti `build` ve vašem `intlayer.config.ts`.
258
+
259
+ ```typescript fileName="intlayer.config.ts"
260
+ import { Locales, type IntlayerConfig } from "intlayer";
261
+
262
+ const config: IntlayerConfig = {
263
+ internationalization: {
264
+ locales: [Locales.ENGLISH, Locales.FRENCH],
265
+ defaultLocale: Locales.ENGLISH,
266
+ },
267
+ dictionary: {
268
+ importMode: "dynamic",
269
+ },
270
+ build: {
271
+ /**
272
+ * Minifikovat slovníky pro snížení velikosti bundle.
273
+ */
274
+ minify: true;
275
+
276
+ /**
277
+ * Odstranit (purge) nepoužívané klíče ve slovnících
278
+ */
279
+ purge: true;
280
+
281
+ /**
282
+ * Indikuje, zda má build kontrolovat typy TypeScript
283
+ */
284
+ checkTypes: false;
285
+ },
286
+ };
287
+
288
+ export default config;
289
+ ```
290
+
291
+ > Ponechání výchozí volby pro `optimize` je doporučeno ve většině případů.
292
+
293
+ > Podrobnosti naleznete v dokumentaci konfigurace: [Konfigurace](https://github.com/aymericzip/intlayer/blob/main/docs/docs/cs/configuration.md)
294
+
295
+ ### Možnosti buildu
296
+
297
+ V objektu konfigurace `build` jsou k dispozici následující možnosti:
298
+
299
+ | Vlastnost | Typ | Výchozí | Popis |
300
+ | :------------- | :-------- | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
301
+ | **`optimize`** | `boolean` | `undefined` | Ovládá, zda je povolena optimalizace buildu. Pokud je `true`, Intlayer nahradí volání slovníku optimalizovanými injekcemi. Pokud je `false`, optimalizace je vypnuta. Ideálně nastaveno na `true` v produkci. |
302
+ | **`minify`** | `boolean` | `false` | Zda se mají minifikovat slovníky pro snížení velikosti bundle. |
303
+ | **`purge`** | `boolean` | `false` | Zda se mají odstranit nepoužívané klíče ve slovnících. |
304
+
305
+ ### Minifikace
306
+
307
+ Minifikace slovníků odstraňuje nepotřebné bílé znaky, komentáře a snižuje velikost obsahu JSON. To je užitečné zejména u velkých slovníků.
308
+
309
+ ```typescript fileName="intlayer.config.ts"
310
+ import type { IntlayerConfig } from "intlayer";
311
+
312
+ const config: IntlayerConfig = {
313
+ build: {
314
+ minify: true,
315
+ },
316
+ };
317
+
318
+ export default config;
319
+ ```
320
+
321
+ > Poznámka: Minifikace je ignorována, pokud je `optimize` zakázáno nebo pokud je povolen Visual Editor (protože editor potřebuje úplný obsah pro umožnění úprav).
322
+
323
+ ### Purging (Čištění)
324
+
325
+ Purging zajišťuje, že do finálního bundle slovníků budou zahrnuty pouze klíče skutečně použité ve vašem kódu. To může výrazně snížit velikost vašeho bundle, pokud máte velké slovníky s mnoha klíči, které nejsou použity v každé části vaší aplikace.
326
+
327
+ ```typescript fileName="intlayer.config.ts"
328
+ import type { IntlayerConfig } from "intlayer";
329
+
330
+ const config: IntlayerConfig = {
331
+ build: {
332
+ purge: true,
333
+ },
334
+ };
335
+
336
+ export default config;
337
+ ```
338
+
339
+ > Poznámka: Purging je ignorován, pokud je `optimize` zakázáno.
340
+
341
+ ### Režim importu (Import Mode)
342
+
343
+ U velkých aplikací zahrnujících několik stránek a lokalit mohou vaše JSON soubory představovat významnou část velikosti vašeho bundle. Intlayer vám umožňuje kontrolovat, jak jsou slovníky načítány.
344
+
345
+ Režim importu lze definovat výchozí globálně ve vašem souboru `intlayer.config.ts`.
346
+
347
+ ```typescript fileName="intlayer.config.ts"
348
+ import type { IntlayerConfig } from "intlayer";
349
+
350
+ const config: IntlayerConfig = {
351
+ build: {
352
+ minify: true,
353
+ },
354
+ };
355
+
356
+ export default config;
357
+ ```
358
+
359
+ Stejně jako pro každý slovník ve vašich souborech `.content.{{ts|tsx|js|jsx|mjs|cjs|json|jsonc|json5}}`.
360
+
361
+ ```ts
362
+ import { type Dictionary, t } from "intlayer";
363
+
364
+ const appContent: Dictionary = {
365
+ key: "app",
366
+ importMode: "dynamic", // Přepsat výchozí režim importu
367
+ content: {
368
+ // ...
369
+ },
370
+ };
371
+
372
+ export default appContent;
373
+ ```
374
+
375
+ | Vlastnost | Typ | Výchozí | Popis |
376
+ | :--------------- | :--------------------------------- | :--------- | :--------------------------------------------------------------------------------------------------------------------- |
377
+ | **`importMode`** | `'static'`, `'dynamic'`, `'fetch'` | `'static'` | **Zastaralé**: Místo toho použijte `dictionary.importMode`. Určuje, jak jsou slovníky načítány (viz podrobnosti níže). |
378
+
379
+ Nastavení `importMode` určuje, jak je obsah slovníku vložen do vaší komponenty.
380
+ Můžete jej definovat globálně v souboru `intlayer.config.ts` pod objektem `dictionary`, nebo jej můžete přepsat pro konkrétní slovník v jeho souboru `.content.ts`.
381
+
382
+ ### 1. Statický režim (`default`)
383
+
384
+ V statickém režimu Intlayer nahradí `useIntlayer` za `useDictionary` a vloží slovník přímo do JavaScript bundle.
385
+
386
+ - **Klady:** Okamžité vykreslení (synchronní), nulové dodatečné síťové požadavky během hydratace.
387
+ - **Zápory:** Bundle obsahuje překlady pro **všechny** dostupné jazyky pro danou konkrétní komponentu.
388
+ - **Nejlepší pro:** Single Page Applications (SPA).
389
+
390
+ **Příklad transformovaného kódu:**
391
+
392
+ ```tsx
393
+ // Váš kód
394
+ const content = useIntlayer("my-key");
395
+
396
+ // Optimalizovaný kód (Statický)
397
+ const content = useDictionary({
398
+ key: "my-key",
399
+ content: {
400
+ nodeType: "translation",
401
+ translation: {
402
+ en: "My title",
403
+ fr: "Mon titre",
404
+ },
405
+ },
406
+ });
407
+ ```
408
+
409
+ ### 2. Dynamický režim
410
+
411
+ V dynamickém režimu Intlayer nahradí `useIntlayer` za `useDictionaryAsync`. To využívá `import()` (mechanismus podobný Suspense) k línému načítání konkrétně JSON pro aktuální lokalitu.
412
+
413
+ - **Klady:** **Tree shaking na úrovni lokality.** Uživatel prohlížející anglickou verzi stáhne _pouze_ anglický slovník. Francouzský slovník se nikdy nenačte.
414
+ - **Zápory:** Vyvolá síťový požadavek (stažení assetu) na komponentu během hydratace.
415
+ - **Nejlepší pro:** Velké bloky textu, články nebo aplikace podporující mnoho jazyků, kde je velikost bundle kritická.
416
+
417
+ **Příklad transformovaného kódu:**
418
+
419
+ ```tsx
420
+ // Váš kód
421
+ const content = useIntlayer("my-key");
422
+
423
+ // Optimalizovaný kód (Dynamický)
424
+ const content = useDictionaryAsync({
425
+ en: () =>
426
+ import(".intlayer/dynamic_dictionary/my-key/en.json").then(
427
+ (mod) => mod.default
428
+ ),
429
+ fr: () =>
430
+ import(".intlayer/dynamic_dictionary/my-key/fr.json").then(
431
+ (mod) => mod.default
432
+ ),
433
+ });
434
+ ```
435
+
436
+ > Při použití `importMode: 'dynamic'`, pokud máte na jedné stránce 100 komponent využívajících `useIntlayer`, prohlížeč se pokusí o 100 samostatných stažení. Chcete-li se vyhnout tomuto "vodopádu" požadavků, seskupte obsah do menšího počtu souborů `.content` (např. jeden slovník na sekci stránky) namísto jednoho na komponentu.
437
+
438
+ ### 3. Režim Fetch
439
+
440
+ Chová se podobně jako dynamický režim, ale nejprve se pokusí načíst slovníky z API Intlayer Live Sync. Pokud volání API selže nebo obsah není označen pro živé aktualizace, vrátí se k dynamickému importu.
441
+
442
+ > Podrobnosti naleznete v dokumentaci CMS: [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/cs/intlayer_CMS.md)
443
+
444
+ > V režimu fetch nelze použít purge a minifikaci.
445
+
446
+ ## Shrnutí: Statický vs Dynamický
447
+
448
+ | Funkce | Statický režim | Dynamický režim |
449
+ | :--------------------- | :--------------------------------------------- | :----------------------------------- |
450
+ | **Velikost JS bundle** | Větší (obsahuje všechny jazyky pro komponentu) | Nejmenší (pouze kód, žádný obsah) |
451
+ | **Počáteční načtení** | Okamžité (Obsah je v bundle) | Mírné zpoždění (Načítá JSON) |
452
+ | **Síťové požadavky** | 0 dodatečných požadavků | 1 požadavek na slovník |
453
+ | **Tree Shaking** | Úroveň komponenty | Úroveň komponenty + Úroveň lokality |
454
+ | **Nejlepší využití** | UI komponenty, malé aplikace | Stránky s hodně textem, mnoho jazyků |