@intlayer/docs 8.1.5 → 8.1.7

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 (81) hide show
  1. package/README.md +18 -9
  2. package/dist/cjs/generated/docs.entry.cjs +1 -1
  3. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  4. package/dist/esm/generated/docs.entry.mjs +1 -1
  5. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  6. package/dist/types/generated/docs.entry.d.ts +2 -0
  7. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  8. package/docs/ar/compiler.md +26 -0
  9. package/docs/ar/intlayer_with_nextjs_compiler.md +481 -0
  10. package/docs/ar/intlayer_with_vite+react_compiler.md +369 -0
  11. package/docs/ar/readme.md +138 -110
  12. package/docs/de/compiler.md +26 -0
  13. package/docs/de/intlayer_with_nextjs_compiler.md +481 -0
  14. package/docs/de/intlayer_with_vite+react_compiler.md +369 -0
  15. package/docs/de/readme.md +152 -124
  16. package/docs/en/compiler.md +27 -0
  17. package/docs/en/intlayer_with_nextjs_compiler.md +481 -0
  18. package/docs/en/intlayer_with_vite+react_compiler.md +368 -0
  19. package/docs/en/readme.md +129 -105
  20. package/docs/en-GB/compiler.md +26 -0
  21. package/docs/en-GB/intlayer_with_nextjs_compiler.md +481 -0
  22. package/docs/en-GB/intlayer_with_vite+react_compiler.md +369 -0
  23. package/docs/en-GB/readme.md +134 -108
  24. package/docs/es/compiler.md +26 -0
  25. package/docs/es/intlayer_with_nextjs_compiler.md +481 -0
  26. package/docs/es/intlayer_with_vite+react_compiler.md +369 -0
  27. package/docs/es/readme.md +149 -121
  28. package/docs/fr/compiler.md +26 -0
  29. package/docs/fr/intlayer_with_nextjs_compiler.md +481 -0
  30. package/docs/fr/intlayer_with_vite+react_compiler.md +369 -0
  31. package/docs/fr/readme.md +150 -122
  32. package/docs/hi/compiler.md +26 -0
  33. package/docs/hi/intlayer_with_nextjs_compiler.md +481 -0
  34. package/docs/hi/intlayer_with_vite+react_compiler.md +370 -0
  35. package/docs/hi/readme.md +153 -125
  36. package/docs/id/compiler.md +26 -0
  37. package/docs/id/intlayer_with_nextjs_compiler.md +481 -0
  38. package/docs/id/intlayer_with_vite+react_compiler.md +369 -0
  39. package/docs/id/readme.md +133 -105
  40. package/docs/it/compiler.md +26 -0
  41. package/docs/it/intlayer_with_nextjs_compiler.md +481 -0
  42. package/docs/it/intlayer_with_vite+react_compiler.md +374 -0
  43. package/docs/it/readme.md +155 -127
  44. package/docs/ja/compiler.md +26 -0
  45. package/docs/ja/intlayer_with_nextjs_compiler.md +481 -0
  46. package/docs/ja/intlayer_with_vite+react_compiler.md +369 -0
  47. package/docs/ja/readme.md +152 -126
  48. package/docs/ko/compiler.md +26 -0
  49. package/docs/ko/intlayer_with_nextjs_compiler.md +481 -0
  50. package/docs/ko/intlayer_with_vite+react_compiler.md +369 -0
  51. package/docs/ko/readme.md +154 -126
  52. package/docs/pl/compiler.md +26 -0
  53. package/docs/pl/intlayer_with_nextjs_compiler.md +481 -0
  54. package/docs/pl/intlayer_with_vite+react_compiler.md +369 -0
  55. package/docs/pl/readme.md +134 -106
  56. package/docs/pt/compiler.md +27 -1
  57. package/docs/pt/intlayer_with_nextjs_compiler.md +481 -0
  58. package/docs/pt/intlayer_with_vite+react_compiler.md +374 -0
  59. package/docs/pt/readme.md +154 -126
  60. package/docs/ru/compiler.md +26 -0
  61. package/docs/ru/intlayer_with_nextjs_compiler.md +481 -0
  62. package/docs/ru/intlayer_with_vite+react_compiler.md +369 -0
  63. package/docs/ru/readme.md +137 -109
  64. package/docs/tr/compiler.md +26 -0
  65. package/docs/tr/intlayer_with_nextjs_compiler.md +481 -0
  66. package/docs/tr/intlayer_with_vite+react_compiler.md +375 -0
  67. package/docs/tr/readme.md +139 -111
  68. package/docs/uk/compiler.md +26 -0
  69. package/docs/uk/intlayer_with_nextjs_compiler.md +481 -0
  70. package/docs/uk/intlayer_with_vite+react_compiler.md +369 -0
  71. package/docs/uk/readme.md +133 -109
  72. package/docs/vi/compiler.md +27 -1
  73. package/docs/vi/intlayer_with_nextjs_compiler.md +481 -0
  74. package/docs/vi/intlayer_with_vite+react_compiler.md +369 -0
  75. package/docs/vi/readme.md +138 -110
  76. package/docs/zh/compiler.md +26 -0
  77. package/docs/zh/intlayer_with_nextjs_compiler.md +481 -0
  78. package/docs/zh/intlayer_with_vite+react_compiler.md +372 -0
  79. package/docs/zh/readme.md +148 -120
  80. package/package.json +7 -8
  81. package/src/generated/docs.entry.ts +40 -0
@@ -0,0 +1,481 @@
1
+ ---
2
+ createdAt: 2026-01-10
3
+ updatedAt: 2026-01-10
4
+ title: Next.js i18n - Перетворення існуючого додатка Next.js на багатомовний додаток (посібник i18n 2026)
5
+ description: Дізнайтеся, як зробити ваш існуючий додаток Next.js багатомовним за допомогою Intlayer Compiler. Дотримуйтесь документації, щоб інтернаціоналізувати (i18n) та перекласти ваш додаток за допомогою ШІ.
6
+ keywords:
7
+ - Інтернаціоналізація
8
+ - Документація
9
+ - Intlayer
10
+ - Next.js
11
+ - JavaScript
12
+ - React
13
+ - Компілятор
14
+ - ШІ
15
+ slugs:
16
+ - doc
17
+ - налаштування
18
+ - nextjs
19
+ - компілятор
20
+ applicationTemplate: https://github.com/aymericzip/intlayer-next-no-lolale-path-template
21
+ youtubeVideo: https://www.youtube.com/watch?v=e_PPG7PTqGU
22
+ history:
23
+ - version: 8.1.6
24
+ date: 2026-02-23
25
+ changes: Перший випуск
26
+ ---
27
+
28
+ # Як зробити багатомовним (i18n) існуючий додаток Next.js (посібник i18n 2026)
29
+
30
+ <Tabs defaultTab="video">
31
+ <Tab label="Відео" value="video">
32
+
33
+ <iframe title="Найкраще рішення i18n для Next.js? Відкрийте для себе Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/e_PPG7PTqGU?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
34
+
35
+ </Tab>
36
+ <Tab label="Код" value="code">
37
+
38
+ <iframe
39
+ src="https://stackblitz.com/github/aymericzip/intlayer-next-16-no-locale-path-template?embed=1&ctl=1&file=intlayer.config.ts"
40
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
41
+ title="CodeSandbox Демо - Як інтернаціоналізувати ваш додаток за допомогою Intlayer"
42
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
43
+ loading="lazy"
44
+ />
45
+
46
+ </Tab>
47
+ </Tabs>
48
+
49
+ Ознайомтеся з [Шаблоном додатку](https://github.com/aymericzip/intlayer-next-no-lolale-path-template) на GitHub.
50
+
51
+ ## Зміст
52
+
53
+ <TOC/>
54
+
55
+ ## Чому інтернаціоналізація існуючого додатку є складною?
56
+
57
+ Якщо ви коли-небудь намагалися додати кілька мов до програми, яка була створена лише для однієї, ви знаєте про всі труднощі. Це не просто "важко" - це виснажливо. Вам доводиться переглядати кожен файл, знаходити кожен рядок тексту та переміщувати їх у спеціальні файли словників (dictionaries).
58
+
59
+ Потім настає найризикованіша частина: заміна всього цього тексту на хуки коду без пошкодження макета чи логіки. Це робота, яка призупиняє розробку нових функцій на тижні й здається нескінченним рефакторингом.
60
+
61
+ ## Що таке Intlayer Compiler?
62
+
63
+ **Intlayer Compiler** (Компілятор Intlayer) був створений, щоб обійти цю ручну роботу. Замість того, щоб змушувати вас вручну витягувати рядки, компілятор робить це за вас. Він сканує ваш код, знаходить текст та використовує ШІ, щоб генерувати словники у фоновому режимі.
64
+ Потім він змінює ваш вихідний код під час етапу збірки, щоб впровадити необхідні i18n хуки. По суті, ви продовжуєте писати свій додаток, ніби пишете однією мовою, а компілятор автоматично обробляє багатомовне перетворення на рівні ядра.
65
+
66
+ > Документація компілятора: [https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/compiler.md](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/compiler.md)
67
+
68
+ ### Обмеження
69
+
70
+ Оскільки компілятор виконує аналіз коду і його трансформацію (впровадження хуків та генерування словників) під час **часу збірки**, він може **уповільнити час збірки** вашого додатку.
71
+
72
+ Щоб обмежити цей вплив під час активної розробки (dev mode), ви можете налаштувати компілятор на роботу у режимі [`'build-only'`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md) або відключити його, коли в ньому немає потреби.
73
+
74
+ ---
75
+
76
+ ## Покрокова інструкція з налаштування Intlayer в додатку Next.js
77
+
78
+ ### Крок 1: Встановлення залежностей
79
+
80
+ Встановіть необхідні пакети за допомогою бажаного менеджера пакетів:
81
+
82
+ ```bash packageManager="npm"
83
+ npm install intlayer next-intlayer
84
+ npm install @intlayer/babel --save-dev
85
+ npx intlayer init
86
+ ```
87
+
88
+ ```bash packageManager="pnpm"
89
+ pnpm add intlayer next-intlayer
90
+ pnpm add @intlayer/babel --save-dev
91
+ pnpm intlayer init
92
+ ```
93
+
94
+ ```bash packageManager="yarn"
95
+ yarn add intlayer next-intlayer
96
+ yarn add @intlayer/babel --save-dev
97
+ yarn intlayer init
98
+ ```
99
+
100
+ ```bash packageManager="bun"
101
+ bun add intlayer next-intlayer
102
+ bun add @intlayer/babel --dev
103
+ bunx intlayer init
104
+ ```
105
+
106
+ - **intlayer**
107
+
108
+ Основний пакет, що забезпечує інструменти інтернаціоналізації для управління конфігурацією, перекладом, [декларацією контенту](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/content_file.md), транспіляцією та [CLI командами](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/index.md).
109
+
110
+ - **next-intlayer**
111
+
112
+ Пакет, що інтегрує Intlayer з Next.js. Він надає контекст-провайдери та хуки для інтернаціоналізації Next.js. Крім того, він включає плагін Next.js для інтеграції Intlayer з [Webpack](https://webpack.js.org/) або [Turbopack](https://nextjs.org/docs/app/api-reference/turbopack), а також прошарок (middleware) для виявлення бажаної мови користувача, управління файлами cookie та обробки перенаправлення URL.
113
+
114
+ ### Крок 2: Налаштування вашого проєкту
115
+
116
+ Створіть конфігураційний файл, щоб визначити мови вашого додатку:
117
+
118
+ ```typescript fileName="intlayer.config.ts"
119
+ import { Locales, type IntlayerConfig } from "intlayer";
120
+
121
+ const config: IntlayerConfig = {
122
+ internationalization: {
123
+ locales: [Locales.ENGLISH, Locales.UKRAINIAN],
124
+ defaultLocale: Locales.UKRAINIAN,
125
+ },
126
+ routing: {
127
+ mode: "search-params",
128
+ },
129
+ compiler: {
130
+ enabled: true, // Можна встановити в 'build-only' для обмеження впливу в режимі dev
131
+ outputDir: "i18n",
132
+ dictionaryKeyPrefix: "", // Немає префікса компіляції, за замовчуванням "comp-"
133
+ },
134
+ ai: {
135
+ provider: "openai",
136
+ model: "gpt-5-mini",
137
+ apiKey: process.env.OPEN_AI_API_KEY,
138
+ applicationContext: "Це приклад простого додатку карти",
139
+ },
140
+ };
141
+
142
+ export default config;
143
+ ```
144
+
145
+ > **Примітка**: Переконайтеся, що ви встановили `OPEN_AI_API_KEY` у ваших змінних середовища.
146
+
147
+ > За допомогою цього конфігураційного файлу ви можете налаштувати локалізовані URL-адреси, проксі-перенаправлення, мапінг файлів cookie, розташування та розширення ваших декларацій контенту, вимкнути логи Intlayer в консолі та багато іншого. Для ознайомлення з повним списком доступних параметрів, перегляньте [документацію до конфігурацій](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md).
148
+
149
+ ### Крок 3: Інтегруйте Intlayer до вашої конфігурації Next.js
150
+
151
+ Налаштуйте ваш Next.js для використання Intlayer:
152
+
153
+ ```typescript fileName="next.config.ts"
154
+ import type { NextConfig } from "next";
155
+ import { withIntlayer } from "next-intlayer/server";
156
+
157
+ const nextConfig: NextConfig = {
158
+ /* Тут можуть бути ваші інші налаштування Next.js */
159
+ };
160
+
161
+ export default withIntlayer(nextConfig);
162
+ ```
163
+
164
+ > Плагін Next.js `withIntlayer()` використовується для інтеграції Intlayer із Next.js. Він забезпечує побудову файлів словників і слідкує за ними у режимі dev. Він визначає змінні середовища Intlayer у середовищах [Webpack](https://webpack.js.org/) або [Turbopack](https://nextjs.org/docs/app/api-reference/turbopack). Більше того, він надає псевдоніми для оптимізації продуктивності та повноцінно працює із Серверними Компонентами.
165
+
166
+ ### Налаштування Babel
167
+
168
+ Компілятор Intlayer вимагає Babel для витягування та оптимізації вашого контенту. Оновіть ваш `babel.config.js` (або `babel.config.json`), щоб додати плагіни Intlayer:
169
+
170
+ ```typescript fileName="babel.config.js"
171
+ const {
172
+ intlayerExtractBabelPlugin,
173
+ intlayerOptimizeBabelPlugin,
174
+ getExtractPluginOptions,
175
+ getOptimizePluginOptions,
176
+ } = require("@intlayer/babel");
177
+
178
+ module.exports = {
179
+ presets: ["next/babel"],
180
+ plugins: [
181
+ [intlayerExtractBabelPlugin, getExtractPluginOptions()],
182
+ [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()],
183
+ ],
184
+ };
185
+ ```
186
+
187
+ ### Крок 4: Виявлення мови на ваших сторінках
188
+
189
+ Очистіть контент `RootLayout` та замініть його прикладом нижче:
190
+
191
+ ```tsx fileName="src/app/layout.tsx"
192
+ import type { Metadata } from "next";
193
+ import type { ReactNode } from "react";
194
+ import "./globals.css";
195
+ import { IntlayerClientProvider, LocalPromiseParams } from "next-intlayer";
196
+ import { getHTMLTextDir, getIntlayer } from "intlayer";
197
+ import { getLocale } from "next-intlayer/server";
198
+ export { generateStaticParams } from "next-intlayer";
199
+
200
+ export const generateMetadata = async (): Promise<Metadata> => {
201
+ const locale = await getLocale();
202
+ const { title, description, keywords } = getIntlayer("metadata", locale);
203
+
204
+ return {
205
+ title,
206
+ description,
207
+ keywords,
208
+ };
209
+ };
210
+
211
+ const RootLayout = async ({
212
+ children,
213
+ }: Readonly<{
214
+ children: ReactNode;
215
+ }>) => {
216
+ const locale = await getLocale();
217
+
218
+ return (
219
+ <html lang={locale} dir={getHTMLTextDir(locale)}>
220
+ <IntlayerClientProvider defaultLocale={locale}>
221
+ <body>{children}</body>
222
+ </IntlayerClientProvider>
223
+ </html>
224
+ );
225
+ };
226
+
227
+ export default RootLayout;
228
+ ```
229
+
230
+ ### Крок 5: Декларування вашого контенту (Автоматично)
231
+
232
+ З увімкненим компілятором вам **більше не потрібно** декларувати словники контенту вручну (наприклад, файли `.content.ts`).
233
+
234
+ Натомість, ви просто пишете ваш контент як захардкоджені рядки у вашому коді. Intlayer просканує вихідний код, згенерує переклади за допомогою налаштованого ШІ-провайдера і автоматично замінить ці рядки на локалізований контент під час етапу компіляції збірки. Все це повністю автоматизовано.
235
+
236
+ Просто пишіть ваші компоненти з захардкодженими рядками у вашій мові за замовчуванням і дозвольте Intlayer Compiler зробити все інше.
237
+
238
+ Приклад того, як виглядатиме ваша `page.tsx`:
239
+
240
+ <Tabs>
241
+ <Tab value="Code">
242
+
243
+ ```tsx fileName="src/app/page.tsx"
244
+ import type { FC } from "react";
245
+ import { IntlayerServerProvider } from "next-intlayer/server";
246
+ import { getLocale } from "next-intlayer/server";
247
+
248
+ const PageContent: FC = () => {
249
+ return (
250
+ <>
251
+ <p>Почніть з редагування цього!</p>
252
+ <code>src/app/page.tsx</code>
253
+ </>
254
+ );
255
+ };
256
+
257
+ export default async function Page() {
258
+ const locale = await getLocale();
259
+
260
+ return (
261
+ <IntlayerServerProvider locale={locale}>
262
+ <PageContent />
263
+ </IntlayerServerProvider>
264
+ );
265
+ }
266
+ ```
267
+
268
+ </Tab>
269
+ <Tab value="Output">
270
+
271
+ ```ts fileName="i18n/page-content.content.tsx"
272
+ {
273
+ key: "page-content",
274
+ content: {
275
+ nodeType: "translation",
276
+ translation: {
277
+ en: {
278
+ getStartedByEditingThis: "Get started by editing this!",
279
+ },
280
+ fr: {
281
+ getStartedByEditingThis: "Commencez par éditer ceci !",
282
+ },
283
+ uk: {
284
+ getStartedByEditingThis: "Почніть з редагування цього!",
285
+ },
286
+ }
287
+ }
288
+ }
289
+ ```
290
+
291
+ ```tsx fileName="src/app/page.tsx"
292
+ import { type FC } from "react";
293
+ import { IntlayerServerProvider, useIntlayer } from "next-intlayer/server";
294
+ import { getLocale } from "next-intlayer/server";
295
+
296
+ const PageContent: FC = () => {
297
+ const content = useIntlayer("page-content");
298
+
299
+ return (
300
+ <>
301
+ <p>{content.getStartedByEditingThis}</p>
302
+ <code>src/app/page.tsx</code>
303
+ </>
304
+ );
305
+ };
306
+
307
+ export default async function Page() {
308
+ const locale = await getLocale();
309
+
310
+ return (
311
+ <IntlayerServerProvider locale={locale}>
312
+ <PageContent />
313
+ </IntlayerServerProvider>
314
+ );
315
+ }
316
+ ```
317
+
318
+ </Tab>
319
+ </Tabs>
320
+
321
+ - **`IntlayerClientProvider`** використовується для розповсюдження мови до клієнтських компонентів-нащадків.
322
+ - Водночас **`IntlayerServerProvider`** використовується для забезпечення мови серверним компонентам-нащадкам.
323
+
324
+ ### (Опціонально) Крок 7: Заповнення відсутніх перекладів
325
+
326
+ Intlayer надає CLI-інструмент, щоб допомогти вам заповнити відсутні переклади. Ви можете використовувати команду `intlayer` для перевірки та заповнення відсутніх перекладів із вашого коду.
327
+
328
+ ```bash
329
+ npx intlayer test # Перевірити наявність відсутніх перекладів
330
+ ```
331
+
332
+ ```bash
333
+ npx intlayer fill # Заповнити відсутні переклади
334
+ ```
335
+
336
+ > Для отримання більш детальної інформації зверніться до [документації CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/ci.md)
337
+
338
+ ### (Необов'язково) Крок 8: Middleware для проксі-маршрутизації мов
339
+
340
+ Якщо ви хочете автоматично перенаправляти користувачів на їхню улюблену мову, налаштуйте проксі middleware:
341
+
342
+ ```typescript fileName="src/proxy.ts"
343
+ export { intlayerProxy as proxy } from "next-intlayer/proxy";
344
+
345
+ export const config = {
346
+ matcher:
347
+ "/((?!api|static|assets|robots|sitemap|sw|service-worker|manifest|.*\\..*|_next).*)",
348
+ };
349
+ ```
350
+
351
+ > `intlayerProxy` використовується для виявлення обраної мови користувача та його перенаправлення на відповідну URL-адресу, як це визначено у [файлі конфігурації](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md). Крім того, це дозволяє зберігати бажану мову користувача у cookie.
352
+
353
+ ### (Необов'язково) Крок 9: Зміна мови контенту
354
+
355
+ Найбільш рекомендований спосіб зміни мови контенту в Next.js — використання компонента `Link` для направлення користувача на маршрут з відповідною мовою. Це використовує функцію prefetch фреймворку Next.js і дозволяє уникнути жорсткого перезавантаження сторінки.
356
+
357
+ ```tsx fileName="src/components/localeSwitcher/LocaleSwitcher.tsx"
358
+ "use client";
359
+
360
+ import type { FC } from "react";
361
+ import { Locales, getHTMLTextDir, getLocaleName } from "intlayer";
362
+ import { useLocale } from "next-intlayer";
363
+
364
+ export const LocaleSwitcher: FC = () => {
365
+ const { locale, availableLocales, setLocale } = useLocale({
366
+ onChange: () => window.location.reload(),
367
+ });
368
+
369
+ return (
370
+ <div>
371
+ <button popoverTarget="localePopover">{getLocaleName(locale)}</button>
372
+ <div id="localePopover" popover="auto">
373
+ {availableLocales.map((localeItem) => (
374
+ <button
375
+ key={localeItem}
376
+ aria-current={locale === localeItem ? "page" : undefined}
377
+ onClick={() => setLocale(localeItem)}
378
+ >
379
+ <span>
380
+ {/* Мова - наприклад: UK */}
381
+ {localeItem}
382
+ </span>
383
+ <span>
384
+ {/* Назва мови її власною мовою - наприклад: Українська */}
385
+ {getLocaleName(localeItem, locale)}
386
+ </span>
387
+ <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
388
+ {/* Назва мови поточною обраною мовою - наприклад: Francés (якщо обрана іспанська) */}
389
+ {getLocaleName(localeItem)}
390
+ </span>
391
+ <span dir="ltr" lang={Locales.ENGLISH}>
392
+ {/* Назва мови англійською - наприклад: Ukrainian */}
393
+ {getLocaleName(localeItem, Locales.ENGLISH)}
394
+ </span>
395
+ </button>
396
+ ))}
397
+ </div>
398
+ </div>
399
+ );
400
+ };
401
+ ```
402
+
403
+ > Альтернативним варіантом є використання функції `setLocale`, яка надається хуком `useLocale`. Ця функція не підтримує prefetch сторінок. Більше деталей дивіться у [документації до хука `useLocale`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/packages/next-intlayer/useLocale.md).
404
+
405
+ ### (Необов'язково) Крок 10: Оптимізація розміру Bundle
406
+
407
+ При використанні `next-intlayer`, словники за замовчуванням включаються в bundle для кожної сторінки. Для оптимізації розміру bundle Intlayer надає опціональний SWC-плагін, який інтелектуально замінює виклики `useIntlayer` за допомогою макросів. Це гарантує, що словники включаються лише в bundle тих сторінок, які їх дійсно використовують.
408
+
409
+ Щоб увімкнути цю оптимізацію, встановіть пакет `@intlayer/swc`. Після встановлення `next-intlayer` автоматично виявить і використовуватиме плагін:
410
+
411
+ ```bash packageManager="npm"
412
+ npm install @intlayer/swc --save-dev
413
+ ```
414
+
415
+ ```bash packageManager="pnpm"
416
+ pnpm add @intlayer/swc --save-dev
417
+ ```
418
+
419
+ ```bash packageManager="yarn"
420
+ yarn add @intlayer/swc --save-dev
421
+ ```
422
+
423
+ ```bash packageManager="bun"
424
+ bun add @intlayer/swc --dev
425
+ ```
426
+
427
+ > Примітка: Ця оптимізація доступна лише для Next.js 13 і вище.
428
+
429
+ > Примітка: Цей пакет не встановлюється за замовчуванням, оскільки SWC-плагіни все ще експериментальні в Next.js. Це може змінитися в майбутньому.
430
+
431
+ > Примітка: Якщо ви встановили опцію (у конфігурації словника) `importMode: 'dynamic'` або `importMode: 'fetch'`, вона залежатиме від Suspense, тому вам потрібно буде обгорнути виклики `useIntlayer` у межу `Suspense`. Це означає, що ви не зможете використовувати `useIntlayer` безпосередньо на верхньому рівні ваших компонентів Сторінки / Layout.
432
+
433
+ ### Конфігурація TypeScript
434
+
435
+ Intlayer використовує розширення модулів (module augmentation), щоб скористатися перевагами TypeScript і зробити вашу базу коду міцнішою.
436
+
437
+ ![Автодоповнення](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true)
438
+
439
+ ![Помилка перекладу](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png?raw=true)
440
+
441
+ Переконайтеся, що конфігурація TypeScript включає автоматично згенеровані типи.
442
+
443
+ ```json5 fileName="tsconfig.json"
444
+ {
445
+ // ... Ваші існуючі конфігурації TypeScript
446
+ "include": [
447
+ // ... Ваші існуючі конфігурації TypeScript
448
+ ".intlayer/**/*.ts", // Включити автоматично згенеровані типи
449
+ ],
450
+ }
451
+ ```
452
+
453
+ ### Конфігурація Git
454
+
455
+ Рекомендовано ігнорувати файли, згенеровані Intlayer. Це дозволяє уникнути їх завантаження до вашого Git-репозиторію.
456
+
457
+ Для цього ви можете додати наступні інструкції до вашого файлу `.gitignore`:
458
+
459
+ ```plaintext fileName=".gitignore"
460
+ # Ігнорувати файли, згенеровані Intlayer
461
+ .intlayer
462
+ ```
463
+
464
+ ### Розширення VS Code
465
+
466
+ Для покращення досвіду розробки з Intlayer ви можете встановити **офіційне розширення Intlayer для VS Code**.
467
+
468
+ [Встановити з VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
469
+
470
+ Це розширення забезпечує:
471
+
472
+ - **Автодоповнення** для ключів перекладу.
473
+ - **Виявлення помилок у реальному часі** для відсутніх перекладів.
474
+ - **Вбудований попередній перегляд** перекладеного контенту.
475
+ - **Швидкі дії (Quick actions)** для легкого створення та оновлення перекладів.
476
+
477
+ Прочитайте [документацію до розширення VS Code Intlayer](https://intlayer.org/doc/vs-code-extension) для отримання детальних інструкцій щодо використання розширення.
478
+
479
+ ### Йдемо далі
480
+
481
+ Для подальшого розвитку ви можете впровадити [візуальний редактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_visual_editor.md) або винести ваш контент назовні за допомогою [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_CMS.md).