\n\n
\n\n\n\n

{$content.title}

\n\n

{@const Title = $content.title}</h1>\n<!-- Відобразити вміст як рядок -->\n<div aria-label={$content.title.value}></div>\n<div aria-label={$content.title.toString()}></div>\n<div aria-label={String($content.title)}></div>\n\n> Якщо ваш застосунок уже існує, ви можете скористатися [Intlayer Compiler](/uk/doc/compiler) у поєднанні з [командой extract](/uk/doc/concept/cli/extract), щоб перетворити тисячі компонентів за одну секунду.\n```\n\n</Step>\n\n<Step number={6} title=\"Змініть мову вашого вмісту\" isOptional={true}>\n\n```svelte fileName=\"src/App.svelte\"\n<script lang=\"ts\">\nimport { getLocaleName } from 'intlayer';\nimport { useLocale } from \"svelte-intlayer\";\n\n// Отримати інформацію про локаль та функцію setLocale\nconst { locale, availableLocales, setLocale } = useLocale();\n\n// Обробка зміни локалі\nconst changeLocale = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n const newLocale = target.value;\n setLocale(newLocale);\n};\n</script>\n\n<div>\n <select value={$locale} on:change={changeLocale}>\n {#each availableLocales ?? [] as loc}\n <option value={loc}>\n {getLocaleName(loc)}\n </option>\n {/each}\n </select>\n</div>\n```\n\n</Step>\n\n<Step number={7} title=\"Відображення Markdown\" isOptional={true}>\n\nIntlayer підтримує рендеринг вмісту в Markdown безпосередньо у вашому Svelte-застосунку. За замовчуванням Markdown розглядається як звичайний текст. Щоб перетворити Markdown у багате HTML-представлення, ви можете інтегрувати `@humanspeak/svelte-markdown` або інший Markdown-парсер.\n\n> Щоб дізнатися, як оголосити markdown-контент за допомогою пакета `intlayer`, див. [документацію з markdown](https://github.com/aymericzip/intlayer/tree/main/docs/uk/dictionary/markdown.md).\n\n```svelte fileName=\"src/App.svelte\"\n<script>\n import { setIntlayerMarkdown } from \"svelte-intlayer\";\n\n setIntlayerMarkdown((markdown) =>\n // відобразити вміст markdown як рядок\n return markdown;\n );\n</script>\n\n<h1>{$content.markdownContent}</h1>\n```\n\n> Ви також можете отримати доступ до даних front-matter вашого markdown за допомогою властивості `content.markdownContent.metadata.xxx`.\n\n</Step>\n\n<Step number={8} title=\"Налаштування intlayer editor / CMS\" isOptional={true}>\n\nЩоб налаштувати intlayer editor, дотримуйтесь [документації intlayer editor](/uk/doc/concept/editor).\n\nЩоб налаштувати intlayer CMS, дотримуйтесь [документації intlayer CMS](/uk/doc/concept/cms).\n\n</Step>\n\n<Step number={7} title=\"Додайте локалізований Routing у ваш застосунок\" isOptional={true}>\n\nЩоб обробляти локалізовану маршрутизацію в Svelte-застосунку, ви можете використовувати `svelte-spa-router` разом з `localeFlatMap` від Intlayer для генерації маршрутів для кожної локалі.\n\nСпочатку встановіть `svelte-spa-router`:\n\n```bash packageManager=\"npm\"\nnpm install svelte-spa-router\nnpx intlayer init\n```\n\n```bash packageManager=\"pnpm\"\npnpm add svelte-spa-router\npnpm intlayer init\n```\n\n```bash packageManager=\"yarn\"\nyarn add svelte-spa-router\nyarn intlayer init\n```\n\n```bash packageManager=\"bun\"\nbun add svelte-spa-router\n```\n\nThen, create a `Router.svelte` file to define your routes:\n\n```svelte fileName=\"src/Router.svelte\"\n<script lang=\"ts\">\nimport { localeFlatMap } from \"intlayer\";\nimport Router from \"svelte-spa-router\";\nimport { wrap } from \"svelte-spa-router/wrap\";\nimport App from \"./App.svelte\";\n\nconst routes = Object.fromEntries(\n localeFlatMap(({locale, urlPrefix}) => [\n [\n urlPrefix || '/',\n wrap({\n component: App as any,\n props: {\n locale,\n },\n }),\n ],\n ])\n);\n</script>\n\n<Router {routes} />\n```\n\nUpdate your `main.ts` to mount the `Router` component instead of `App`:\n\n```typescript fileName=\"src/main.ts\"\nimport { mount } from \"svelte\";\nimport Router from \"./Router.svelte\";\n\nconst app = mount(Router, {\n target: document.getElementById(\"app\")!,\n});\n\nexport default app;\n```\n\nНарешті, оновіть ваш `App.svelte`, щоб приймати проп `locale` і використовувати його з `useIntlayer`:\n\n```svelte fileName=\"src/App.svelte\"\n<script lang=\"ts\">\nimport type { Locale } from 'intlayer';\nimport { useIntlayer } from \"svelte-intlayer\";\nimport Counter from './lib/Counter.svelte';\nimport LocaleSwitcher from './lib/LocaleSwitcher.svelte';\n\nexport let locale: Locale;\n\n$: content = useIntlayer('app', locale);\n</script>\n\n<main>\n <div class=\"locale-switcher-container\">\n <LocaleSwitcher currentLocale={locale} />\n </div>\n\n <!-- ... решта вашого додатка ... -->\n</main>\n```\n\n#### Налаштування маршрутизації на стороні сервера (необов'язково)\n\nПаралельно ви також можете використати `intlayerProxy` для додавання маршрутизації на стороні сервера до вашого застосунку. Цей плагін автоматично визначатиме поточну локаль на основі URL і встановлюватиме відповідний cookie для локалі. Якщо локаль не вказана, плагін обере найвідповіднішу локаль на основі налаштувань мови браузера користувача. Якщо локаль не буде виявлена, плагін виконає перенаправлення на локаль за замовчуванням.\n\n> Зауважте, що для використання `intlayerProxy` в production потрібно перемістити пакет `vite-intlayer` з `devDependencies` до `dependencies`.\n\n```typescript {3,7} fileName=\"vite.config.ts\" codeFormat={[\"typescript\", \"esm\", \"commonjs\"]}\nimport { defineConfig } from \"vite\";\nimport { svelte } from \"@sveltejs/vite-plugin-svelte\";\nimport { intlayer, intlayerProxy } from \"vite-intlayer\";\n\n// https://vitejs.dev/config/ - конфігурація Vite\nexport default defineConfig({\n plugins: [\n intlayerProxy(), // should be placed first\n svelte(),\n intlayer(),\n ],\n});\n```\n\n</Step>\n\n<Step number={8} title=\"Зміна URL при зміні локалі\" isOptional={true}>\n\nЩоб дозволити користувачам змінювати мову й відповідно оновлювати URL, ви можете створити компонент `LocaleSwitcher`. Цей компонент використовуватиме `getLocalizedUrl` з `intlayer` та `push` із `svelte-spa-router`.\n\n```svelte fileName=\"src/lib/LocaleSwitcher.svelte\"\n<script lang=\"ts\">\nimport { getLocaleName, getLocalizedUrl } from \"intlayer\";\nimport { useLocale } from \"svelte-intlayer\";\nimport { push } from \"svelte-spa-router\";\n\nexport let currentLocale: string | undefined = undefined;\n\n// Отримати інформацію про локаль\nconst { locale, availableLocales } = useLocale();\n\n// Обробка зміни локалі\nconst changeLocale = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n const newLocale = target.value;\n const currentUrl = window.location.pathname;\n const url = getLocalizedUrl( currentUrl, newLocale);\n push(url);\n};\n</script>\n\n<div class=\"locale-switcher\">\n <select value={currentLocale ?? $locale} onchange={changeLocale}>\n {#each availableLocales ?? [] as loc}\n <option value={loc}>\n {getLocaleName(loc)}\n </option>\n {/each}\n </select>\n</div>\n```\n\n</Step>\n\n<Step number={9} title=\"Інтернаціоналізовані посилання\" isOptional={true}>\n\nДля SEO рекомендується додавати префікс локалі до ваших маршрутів (наприклад, `/about`, `/fr/about`).\n\n```svelte fileName=\"src/lib/components/Link.svelte\"\n<script lang=\"ts\">\n import { getLocalizedUrl } from \"intlayer\";\n import { useLocale } from \"svelte-intlayer\";\n\n export let href = \"\";\n const { locale } = useLocale();\n\n // Helper to prefix URL\n $: localizedHref = getLocalizedUrl(href, $locale);\n</script>\n\n<a href={localizedHref}>\n <slot />\n</a>\n```\n\n</Step>\n\n<Step number={1} title=\"Витягніть вміст ваших компонентів\" isOptional={true}>\n\nЯкщо у вас є існуюча кодова база, перетворення тисяч файлів може зайняти багато часу.\n\nЩоб спростити цей процес, Intlayer пропонує [компілятор](/uk/doc/compiler) / [екстрактор](/uk/doc/concept/cli/extract) для перетворення ваших компонентів і витягування вмісту.\n\nЩоб налаштувати його, ви можете додати розділ `compiler` у свій файл `intlayer.config.ts`:\n\n```typescript fileName=\"intlayer.config.ts\" codeFormat={[\"typescript\", \"esm\", \"commonjs\"]}\nimport { type IntlayerConfig } from \"intlayer\";\n\nconst config: IntlayerConfig = {\n // ... Інша частина вашої конфігурації\n compiler: {\n /**\n * Вказує, чи повинен бути включений компілятор.\n */\n enabled: true,\n\n /**\n * Визначає шлях до вихідних файлів\n */\n output: ({ fileName, extension }) => `./${fileName}${extension}`,\n\n /**\n * Вказує, чи повинні компоненти зберігатися після перетворення. Таким чином, компілятор можна запустити лише один раз для перетворення програми, а потім видалити.\n */\n saveComponents: false,\n\n /**\n * Префікс ключа словника\n */\n dictionaryKeyPrefix: \"\",\n },\n};\n\nexport default config;\n```\n\n<Tabs>\n <Tab value='Команда витягування'>\n\nЗапустіть екстрактор для перетворення компонентів і витягування вмісту\n\n```bash packageManager=\"npm\"\nnpx intlayer extract\n```\n\n```bash packageManager=\"pnpm\"\npnpm intlayer extract\n```\n\n```bash packageManager=\"yarn\"\nyarn intlayer extract\n```\n\n```bash packageManager=\"bun\"\nbun x intlayer extract\n```\n\n </Tab>\n <Tab value='Компілятор Babel'>\n\nОновіть свій `vite.config.ts`, щоб включити плагін `intlayerCompiler`:\n\n```ts fileName=\"vite.config.ts\"\nimport { defineConfig } from \"vite\";\nimport { intlayer, intlayerCompiler } from \"vite-intlayer\";\n\nexport default defineConfig({\n plugins: [\n intlayer(),\n intlayerCompiler(), // Додає плагін компілятора\n ],\n});\n```\n\n```bash packageManager=\"npm\"\nnpm run build # Або npm run dev\n```\n\n```bash packageManager=\"pnpm\"\npnpm run build # Or pnpm run dev\n```\n\n```bash packageManager=\"yarn\"\nyarn build # Or yarn dev\n```\n\n```bash packageManager=\"bun\"\nbun run build # Or bun run dev\n```\n\n </Tab>\n</Tabs>\n</Step>\n\n</Steps>\n\n### Конфігурація Git\n\nРекомендується ігнорувати файли, згенеровані Intlayer. Це дозволяє уникнути їх коміту до вашого Git-репозиторію.\n\nДля цього можна додати наступні інструкції до файлу `.gitignore`:\n\n```bash\n# Ігнорувати файли, згенеровані Intlayer\n.intlayer\n```\n\n### Розширення VS Code\n\nЩоб покращити ваш досвід розробки з Intlayer, ви можете встановити офіційне **Intlayer VS Code Extension**.\n\n[Встановити з VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)\n\nЦе розширення надає:\n\n- **Автозаповнення** для ключів перекладу.\n- **Виявлення помилок у реальному часі** для відсутніх перекладів.\n- **Вбудовані попередні перегляди** перекладеного контенту.\n- **Швидкі дії** для швидкого створення й оновлення перекладів.\n\nДля детальнішої інформації про використання розширення зверніться до документації [розширення Intlayer для VS Code](https://intlayer.org/doc/vs-code-extension).\n\n---\n\n### (Опційно) Sitemap і robots.txt (генерація під час збірки)\n\nIntlayer надає `generateSitemap` і `getMultilingualUrls` - утиліти для формування багатомовних `sitemap.xml` і `robots.txt` для краулерів та автоматичного запису в `public/`. Зазвичай запускають невеликий Node-скрипт **перед** Vite (наприклад, npm-хуки `predev` / `prebuild`).\n\n#### Sitemap\n\nГенератор sitemap враховує локалі й додає метадані для краулерів.\n\n> Підтримується простір імен `xhtml:link` (hreflang). Замість плоского списку URL Intlayer пов’язує всі мовні версії сторінки в обидва боки (наприклад `/about`, `/fr/about` або `/about?lang=fr` залежно від режиму маршрутизації).\n\n#### Robots.txt\n\nВикористовуйте `getMultilingualUrls`, щоб правила `Disallow` покривали всі локалізовані варіанти шляхів.\n\n#### 1. Файл `generate-seo.mjs` у корені проєкту\n\n```javascript fileName=\"generate-seo.mjs\"\nimport fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { generateSitemap, getMultilingualUrls } from \"intlayer\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst SITE_URL = (process.env.SITE_URL || \"http://localhost:5173\").replace(\n /\\/$/,\n \"\"\n);\n\nconst pathList = [\n { path: \"/\", changefreq: \"daily\", priority: 1.0 },\n { path: \"/about\", changefreq: \"monthly\", priority: 0.7 },\n];\n\nconst sitemapXml = generateSitemap(pathList, { siteUrl: SITE_URL });\nfs.writeFileSync(path.join(__dirname, \"public\", \"sitemap.xml\"), sitemapXml);\n\nconst getAllMultilingualUrls = (urls) =>\n urls.flatMap((url) => Object.values(getMultilingualUrls(url)));\n\nconst disallowedPaths = getAllMultilingualUrls([\"/admin\", \"/private\"]);\n\nconst robotsTxt = [\n \"User-agent: *\",\n \"Allow: /\",\n ...disallowedPaths.map((path) => `Disallow: ${path}`),\n \"\",\n `Sitemap: ${SITE_URL}/sitemap.xml`,\n].join(\"\\n\");\n\nfs.writeFileSync(path.join(__dirname, \"public\", \"robots.txt\"), robotsTxt);\n\nconsole.log(\"SEO files generated successfully.\");\n```\n\nПакет `intlayer` має бути встановлений. У продакшені задайте `SITE_URL` у середовищі (наприклад у CI).\n\n> Для Node ESM краще `generate-seo.mjs`. Для `generate-seo.js` додайте `\"type\": \"module\"` у `package.json` або ввімкніть ESM інакше.\n\n#### 2. Запуск скрипта перед Vite\n\n```json fileName=\"package.json\"\n{\n \"scripts\": {\n \"dev\": \"vite\",\n \"prebuild\": \"node generate-seo.mjs\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n }\n}\n```\n\nПідлаштуйте команди для pnpm або yarn. Можна викликати скрипт із CI.\n\n### Розширені можливості\n\nЩоб рухатися далі, ви можете реалізувати [візуальний редактор](/uk/doc/concept/editor) або винести свій контент у зовнішню систему за допомогою [CMS](/uk/doc/concept/cms).\n","description":"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Vite + Svelte. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.","url":"https://intlayer.org/uk/doc/environment/vite-and-svelte","datePublished":"2025-04-18","dateModified":"2026-05-31","version":"8.9.0","keywords":"Інтернаціоналізація, Документація, Intlayer, Vite, Svelte, JavaScript","license":"https://raw.githubusercontent.com/aymericzip/intlayer/refs/heads/main/LICENSE","audience":{"@type":"Audience","audienceType":"Розробники, менеджери контенту"}}</script></head><body class="relative flex size-full min-h-screen flex-col overflow-auto overflow-x-clip scroll-smooth bg-background leading-8 transition md:flex"><div role="region" aria-label="Notifications (F8)" tabindex="-1" style="pointer-events:none"><ol tabindex="-1" class="fixed top-0 z-100 flex max-h-screen w-full flex-col-reverse p-4 sm:top-auto sm:right-0 sm:bottom-0 sm:flex-col md:max-w-105"></ol></div><!--$--><script>((e, i, s, u, m, a, l, h) => { let d = document.documentElement, w = ["light", "dark"]; function p(n) { (Array.isArray(e) ? e : [e]).forEach((y) => { let k = y === "class", S = k && a ? m.map((f) => a[f] || f) : m; k ? (d.classList.remove(...S), d.classList.add(a && a[n] ? a[n] : n)) : d.setAttribute(y, n); }), R(n); } function R(n) { h && w.includes(n) && (d.style.colorScheme = n); } function c() { return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; } if (u) p(u); else try { let n = localStorage.getItem(i) || s; p(l && n === "system" ? c() : n); } catch (n) {} })("data-theme","theme","system",null,["light","dark"],null,true,true)</script><nav class="sticky top-0 z-50 flex w-full items-center bg-card/95 px-4 py-3 shadow-[0_0_10px_-15px_rgba(0,0,0,0.3)] backdrop-blur"><div class="group/dropdown relative flex items-center" aria-label="DropDown navbar-logo" id="dropdown-container-navbar-logo"><a aria-label="Логотип компанії — перейти на головну сторінку" aria-current="page" id="dropdown-trigger-navbar-logo" aria-haspopup="true" aria-controls="dropdown-panel-navbar-logo" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-neutral active" href="/uk" target="_self" data-status="active"><svg width="2704" height="517" viewBox="0 0 2704 517" fill="none" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" role="img" aria-label="Intlayer logo" class="max-h-6 w-auto flex-auto text-text"><path fill-rule="evenodd" clip-rule="evenodd" d="M5 46C5 21.1472 25.1472 1 50 1H295C319.853 1 340 21.1472 340 46C340 70.8528 319.853 91 295 91H50C25.1472 91 5 70.8528 5 46ZM50 176C25.1472 176 5 196.147 5 221C5 245.853 25.1472 266 50 266H430C454.853 266 475 245.853 475 221C475 196.147 454.853 176 430 176H50ZM50 349C25.1472 349 5 369.147 5 394C5 418.853 25.1472 439 50 439H230C254.853 439 275 418.853 275 394C275 369.147 254.853 349 230 349H50ZM841.5 38V403H914.5V38H841.5ZM991.215 143V403H1060.21V250C1060.21 239 1062.71 229.5 1067.71 221.5C1073.05 213.167 1080.38 206.667 1089.71 202C1099.05 197 1109.71 194.5 1121.71 194.5C1137.71 194.5 1149.38 199.5 1156.71 209.5C1164.05 219.167 1167.71 234.833 1167.71 256.5V403H1236.21V243C1236.21 206.667 1228.71 180.167 1213.71 163.5C1199.05 146.5 1176.05 138 1144.71 138C1126.05 138 1109.55 141 1095.21 147C1081.21 152.667 1068.88 161.5 1058.21 173.5H1057.21L1056.71 143H991.215ZM1341.52 389C1355.52 401.667 1378.19 408 1409.52 408C1420.52 408 1431.19 407.167 1441.52 405.5C1451.85 404.167 1462.69 401.833 1474.02 398.5L1468.52 344C1461.85 346.333 1454.52 348.167 1446.52 349.5C1438.85 350.833 1431.52 351.5 1424.52 351.5C1411.52 351.5 1402.52 348.5 1397.52 342.5C1392.52 336.167 1390.02 325.167 1390.02 309.5V196.5H1474.52V143H1390.02V58H1321.02V143H1264.52V196.5H1321.02V326.5C1321.02 355.5 1327.85 376.333 1341.52 389ZM1536.71 38V403H1606.71V38H1536.71ZM1681.19 386.5C1696.19 400.833 1716.52 408 1742.19 408C1759.19 408 1775.86 404.833 1792.19 398.5C1808.52 392.167 1821.36 383.667 1830.69 373H1831.19L1832.19 403H1897.69V239C1897.69 214 1894.19 194.167 1887.19 179.5C1880.19 164.5 1869.02 153.833 1853.69 147.5C1838.36 141.167 1817.36 138 1790.69 138C1769.69 138 1748.52 139.833 1727.19 143.5C1706.19 146.833 1687.02 151.667 1669.69 158L1678.19 211C1694.19 204.667 1711.19 199.833 1729.19 196.5C1747.19 192.833 1764.52 191 1781.19 191C1793.86 191 1803.52 192.333 1810.19 195C1817.19 197.333 1822.02 201.667 1824.69 208C1827.69 214.333 1829.19 223.333 1829.19 235H1794.69C1751.36 235 1717.86 243.167 1694.19 259.5C1670.86 275.833 1659.19 299 1659.19 329C1659.19 353 1666.52 372.167 1681.19 386.5ZM1798.69 350C1789.36 354 1778.86 356 1767.19 356C1753.52 356 1742.86 353 1735.19 347C1727.86 341 1724.19 332.667 1724.19 322C1724.19 307.667 1730.86 297.167 1744.19 290.5C1757.52 283.5 1777.69 280 1804.69 280H1829.19V309.5C1829.19 318.167 1826.36 326.167 1820.69 333.5C1815.36 340.5 1808.02 346 1798.69 350ZM2025.11 401.5L1982.11 508H2054.61L2197.61 143H2123.61L2060.11 335.5H2059.11L1996.11 143L1922.61 143.5L2025.11 401.5ZM2251.46 373C2276.79 396.333 2312.79 408 2359.46 408C2376.13 408 2392.63 406.5 2408.96 403.5C2425.63 400.833 2440.13 397 2452.46 392L2444.46 339.5C2432.13 344.167 2417.96 347.833 2401.96 350.5C2385.96 353.167 2370.79 354.5 2356.46 354.5C2331.13 354.5 2312.29 349 2299.96 338C2289.75 328.893 2283.77 315.56 2282.01 298H2464.46C2464.79 295 2464.96 290.5 2464.96 284.5C2465.29 278.5 2465.46 273.167 2465.46 268.5C2465.46 226.833 2454.79 194.667 2433.46 172C2412.46 149.333 2382.46 138 2343.46 138C2303.13 138 2271.46 150 2248.46 174C2225.46 198 2213.96 231 2213.96 273C2213.96 316.333 2226.46 349.667 2251.46 373ZM2282.19 250.5C2283.95 232.347 2288.87 218.18 2296.96 208C2307.29 194.667 2322.79 188 2343.46 188C2363.13 188 2377.63 194.333 2386.96 207C2394.74 217.188 2399.38 231.688 2400.91 250.5H2282.19ZM2583.09 143H2517.09V403H2586.59V283C2586.59 267 2591.59 252.5 2601.59 239.5C2611.59 226.167 2625.09 215.667 2642.09 208C2659.09 200.333 2677.93 196.5 2698.59 196.5V138C2683.59 138 2668.93 140.167 2654.59 144.5C2640.59 148.5 2627.59 154.5 2615.59 162.5C2603.93 170.167 2593.76 179.833 2585.09 191.5H2583.59L2583.09 143Z"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M5 46C5 21.1472 25.1472 1 50 1H295C319.853 1 340 21.1472 340 46C340 70.8528 319.853 91 295 91H50C25.1472 91 5 70.8528 5 46ZM50 176C25.1472 176 5 196.147 5 221C5 245.853 25.1472 266 50 266H430C454.853 266 475 245.853 475 221C475 196.147 454.853 176 430 176H50ZM50 349C25.1472 349 5 369.147 5 394C5 418.853 25.1472 439 50 439H230C254.853 439 275 418.853 275 394C275 369.147 254.853 349 230 349H50ZM841.5 38V403H914.5V38H841.5ZM991.215 143V403H1060.21V250C1060.21 239 1062.71 229.5 1067.71 221.5C1073.05 213.167 1080.38 206.667 1089.71 202C1099.05 197 1109.71 194.5 1121.71 194.5C1137.71 194.5 1149.38 199.5 1156.71 209.5C1164.05 219.167 1167.71 234.833 1167.71 256.5V403H1236.21V243C1236.21 206.667 1228.71 180.167 1213.71 163.5C1199.05 146.5 1176.05 138 1144.71 138C1126.05 138 1109.55 141 1095.21 147C1081.21 152.667 1068.88 161.5 1058.21 173.5H1057.21L1056.71 143H991.215ZM1341.52 389C1355.52 401.667 1378.19 408 1409.52 408C1420.52 408 1431.19 407.167 1441.52 405.5C1451.85 404.167 1462.69 401.833 1474.02 398.5L1468.52 344C1461.85 346.333 1454.52 348.167 1446.52 349.5C1438.85 350.833 1431.52 351.5 1424.52 351.5C1411.52 351.5 1402.52 348.5 1397.52 342.5C1392.52 336.167 1390.02 325.167 1390.02 309.5V196.5H1474.52V143H1390.02V58H1321.02V143H1264.52V196.5H1321.02V326.5C1321.02 355.5 1327.85 376.333 1341.52 389ZM1536.71 38V403H1606.71V38H1536.71ZM1681.19 386.5C1696.19 400.833 1716.52 408 1742.19 408C1759.19 408 1775.86 404.833 1792.19 398.5C1808.52 392.167 1821.36 383.667 1830.69 373H1831.19L1832.19 403H1897.69V239C1897.69 214 1894.19 194.167 1887.19 179.5C1880.19 164.5 1869.02 153.833 1853.69 147.5C1838.36 141.167 1817.36 138 1790.69 138C1769.69 138 1748.52 139.833 1727.19 143.5C1706.19 146.833 1687.02 151.667 1669.69 158L1678.19 211C1694.19 204.667 1711.19 199.833 1729.19 196.5C1747.19 192.833 1764.52 191 1781.19 191C1793.86 191 1803.52 192.333 1810.19 195C1817.19 197.333 1822.02 201.667 1824.69 208C1827.69 214.333 1829.19 223.333 1829.19 235H1794.69C1751.36 235 1717.86 243.167 1694.19 259.5C1670.86 275.833 1659.19 299 1659.19 329C1659.19 353 1666.52 372.167 1681.19 386.5ZM1798.69 350C1789.36 354 1778.86 356 1767.19 356C1753.52 356 1742.86 353 1735.19 347C1727.86 341 1724.19 332.667 1724.19 322C1724.19 307.667 1730.86 297.167 1744.19 290.5C1757.52 283.5 1777.69 280 1804.69 280H1829.19V309.5C1829.19 318.167 1826.36 326.167 1820.69 333.5C1815.36 340.5 1808.02 346 1798.69 350ZM2025.11 401.5L1982.11 508H2054.61L2197.61 143H2123.61L2060.11 335.5H2059.11L1996.11 143L1922.61 143.5L2025.11 401.5ZM2251.46 373C2276.79 396.333 2312.79 408 2359.46 408C2376.13 408 2392.63 406.5 2408.96 403.5C2425.63 400.833 2440.13 397 2452.46 392L2444.46 339.5C2432.13 344.167 2417.96 347.833 2401.96 350.5C2385.96 353.167 2370.79 354.5 2356.46 354.5C2331.13 354.5 2312.29 349 2299.96 338C2289.75 328.893 2283.77 315.56 2282.01 298H2464.46C2464.79 295 2464.96 290.5 2464.96 284.5C2465.29 278.5 2465.46 273.167 2465.46 268.5C2465.46 226.833 2454.79 194.667 2433.46 172C2412.46 149.333 2382.46 138 2343.46 138C2303.13 138 2271.46 150 2248.46 174C2225.46 198 2213.96 231 2213.96 273C2213.96 316.333 2226.46 349.667 2251.46 373ZM2282.19 250.5C2283.95 232.347 2288.87 218.18 2296.96 208C2307.29 194.667 2322.79 188 2343.46 188C2363.13 188 2377.63 194.333 2386.96 207C2394.74 217.188 2399.38 231.688 2400.91 250.5H2282.19ZM2583.09 143H2517.09V403H2586.59V283C2586.59 267 2591.59 252.5 2601.59 239.5C2611.59 226.167 2625.09 215.667 2642.09 208C2659.09 200.333 2677.93 196.5 2698.59 196.5V138C2683.59 138 2668.93 140.167 2654.59 144.5C2640.59 148.5 2627.59 154.5 2615.59 162.5C2603.93 170.167 2593.76 179.833 2585.09 191.5H2583.59L2583.09 143Z" fill="currentColor"></path><path d="M841.5 403H840.5V404H841.5V403ZM841.5 38V37H840.5V38H841.5ZM914.5 403V404H915.5V403H914.5ZM914.5 38H915.5V37H914.5V38ZM991.215 403H990.215V404H991.215V403ZM991.215 143V142H990.215V143H991.215ZM1060.21 403V404H1061.21V403H1060.21ZM1067.71 221.5L1066.87 220.961L1066.87 220.97L1067.71 221.5ZM1089.71 202L1090.16 202.894L1090.17 202.888L1090.19 202.881L1089.71 202ZM1156.71 209.5L1155.91 210.091L1155.91 210.098L1155.92 210.104L1156.71 209.5ZM1167.71 403H1166.71V404H1167.71V403ZM1236.21 403V404H1237.21V403H1236.21ZM1213.71 163.5L1212.96 164.153L1212.96 164.161L1212.97 164.169L1213.71 163.5ZM1095.21 147L1095.59 147.927L1095.6 147.922L1095.21 147ZM1058.21 173.5V174.5H1058.66L1058.96 174.164L1058.21 173.5ZM1057.21 173.5L1056.21 173.516L1056.23 174.5H1057.21V173.5ZM1056.71 143L1057.71 142.984L1057.7 142H1056.71V143ZM1341.52 389L1340.84 389.733L1340.85 389.742L1341.52 389ZM1441.52 405.5L1441.39 404.508L1441.38 404.51L1441.36 404.513L1441.52 405.5ZM1474.02 398.5L1474.3 399.459L1475.1 399.225L1475.01 398.4L1474.02 398.5ZM1468.52 344L1469.51 343.9L1469.39 342.637L1468.19 343.056L1468.52 344ZM1446.52 349.5L1446.36 348.514L1446.35 348.515L1446.52 349.5ZM1397.52 342.5L1396.73 343.12L1396.74 343.13L1396.75 343.14L1397.52 342.5ZM1390.02 196.5V195.5H1389.02V196.5H1390.02ZM1474.52 196.5V197.5H1475.52V196.5H1474.52ZM1474.52 143H1475.52V142H1474.52V143ZM1390.02 143H1389.02V144H1390.02V143ZM1390.02 58H1391.02V57H1390.02V58ZM1321.02 58V57H1320.02V58H1321.02ZM1321.02 143V144H1322.02V143H1321.02ZM1264.52 143V142H1263.52V143H1264.52ZM1264.52 196.5H1263.52V197.5H1264.52V196.5ZM1321.02 196.5H1322.02V195.5H1321.02V196.5ZM1536.71 403H1535.71V404H1536.71V403ZM1536.71 38V37H1535.71V38H1536.71ZM1606.71 403V404H1607.71V403H1606.71ZM1606.71 38H1607.71V37H1606.71V38ZM1681.19 386.5L1680.49 387.215L1680.5 387.223L1681.19 386.5ZM1830.69 373V372H1830.24L1829.94 372.341L1830.69 373ZM1831.19 373L1832.19 372.967L1832.16 372H1831.19V373ZM1832.19 403L1831.19 403.033L1831.22 404H1832.19V403ZM1897.69 403V404H1898.69V403H1897.69ZM1887.19 179.5L1886.29 179.923L1886.29 179.931L1887.19 179.5ZM1853.69 147.5L1854.07 146.576L1854.07 146.576L1853.69 147.5ZM1727.19 143.5L1727.35 144.488L1727.36 144.486L1727.19 143.5ZM1669.69 158L1669.35 157.061L1668.57 157.344L1668.7 158.158L1669.69 158ZM1678.19 211L1677.2 211.158L1677.4 212.388L1678.56 211.93L1678.19 211ZM1729.19 196.5L1729.37 197.483L1729.38 197.482L1729.39 197.48L1729.19 196.5ZM1810.19 195L1809.82 195.928L1809.85 195.939L1809.88 195.949L1810.19 195ZM1824.69 208L1823.77 208.388L1823.78 208.408L1823.79 208.428L1824.69 208ZM1829.19 235V236H1830.19V235H1829.19ZM1694.19 259.5L1693.62 258.677L1693.62 258.681L1694.19 259.5ZM1735.19 347L1734.56 347.774L1734.57 347.781L1734.58 347.788L1735.19 347ZM1744.19 290.5L1744.64 291.394L1744.65 291.39L1744.66 291.385L1744.19 290.5ZM1829.19 280H1830.19V279H1829.19V280ZM1820.69 333.5L1819.9 332.889L1819.9 332.894L1820.69 333.5ZM1982.11 508L1981.18 507.626L1980.62 509H1982.11V508ZM2025.11 401.5L2026.03 401.874L2026.18 401.503L2026.03 401.131L2025.11 401.5ZM2054.61 508V509H2055.29L2055.54 508.365L2054.61 508ZM2197.61 143L2198.54 143.365L2199.07 142H2197.61V143ZM2123.61 143V142H2122.88L2122.66 142.687L2123.61 143ZM2060.11 335.5V336.5H2060.83L2061.06 335.813L2060.11 335.5ZM2059.11 335.5L2058.16 335.811L2058.38 336.5H2059.11V335.5ZM1996.11 143L1997.06 142.689L1996.83 141.995L1996.1 142L1996.11 143ZM1922.61 143.5L1922.6 142.5L1921.14 142.51L1921.68 143.869L1922.61 143.5ZM2251.46 373L2250.78 373.731L2250.78 373.736L2251.46 373ZM2408.96 403.5L2408.8 402.513L2408.79 402.514L2408.78 402.516L2408.96 403.5ZM2452.46 392L2452.84 392.927L2453.57 392.63L2453.45 391.849L2452.46 392ZM2444.46 339.5L2445.45 339.349L2445.26 338.127L2444.11 338.565L2444.46 339.5ZM2299.96 338L2299.3 338.746L2299.3 338.746L2299.96 338ZM2282.01 298V297H2280.9L2281.01 298.1L2282.01 298ZM2464.46 298V299H2465.36L2465.45 298.11L2464.46 298ZM2464.96 284.5L2463.96 284.445L2463.96 284.472V284.5H2464.96ZM2433.46 172L2432.73 172.68L2432.73 172.685L2433.46 172ZM2296.96 208L2297.74 208.622L2297.75 208.613L2296.96 208ZM2282.19 250.5L2281.19 250.404L2281.09 251.5H2282.19V250.5ZM2386.96 207L2386.16 207.593L2386.16 207.6L2386.17 207.607L2386.96 207ZM2400.91 250.5V251.5H2401.99L2401.9 250.419L2400.91 250.5ZM2517.09 143V142H2516.09V143H2517.09ZM2583.09 143L2584.09 142.99L2584.08 142H2583.09V143ZM2517.09 403H2516.09V404H2517.09V403ZM2586.59 403V404H2587.59V403H2586.59ZM2601.59 239.5L2602.39 240.11L2602.39 240.1L2601.59 239.5ZM2642.09 208L2641.68 207.088L2641.68 207.088L2642.09 208ZM2698.59 196.5V197.5H2699.59V196.5H2698.59ZM2698.59 138H2699.59V137H2698.59V138ZM2654.59 144.5L2654.87 145.462L2654.88 145.459L2654.88 145.457L2654.59 144.5ZM2615.59 162.5L2616.14 163.336L2616.15 163.332L2615.59 162.5ZM2585.09 191.5V192.5H2585.6L2585.9 192.096L2585.09 191.5ZM2583.59 191.5L2582.59 191.51L2582.6 192.5H2583.59V191.5ZM50 0C24.5949 0 4 20.5949 4 46H6C6 21.6995 25.6995 2 50 2V0ZM295 0H50V2H295V0ZM341 46C341 20.5949 320.405 0 295 0V2C319.301 2 339 21.6995 339 46H341ZM295 92C320.405 92 341 71.4051 341 46H339C339 70.3005 319.301 90 295 90V92ZM50 92H295V90H50V92ZM4 46C4 71.4051 24.5949 92 50 92V90C25.6995 90 6 70.3005 6 46H4ZM6 221C6 196.699 25.6995 177 50 177V175C24.5949 175 4 195.595 4 221H6ZM50 265C25.6995 265 6 245.301 6 221H4C4 246.405 24.5949 267 50 267V265ZM430 265H50V267H430V265ZM474 221C474 245.301 454.301 265 430 265V267C455.405 267 476 246.405 476 221H474ZM430 177C454.301 177 474 196.699 474 221H476C476 195.595 455.405 175 430 175V177ZM50 177H430V175H50V177ZM6 394C6 369.699 25.6995 350 50 350V348C24.5949 348 4 368.595 4 394H6ZM50 438C25.6995 438 6 418.3 6 394H4C4 419.405 24.5949 440 50 440V438ZM230 438H50V440H230V438ZM274 394C274 418.3 254.301 438 230 438V440C255.405 440 276 419.405 276 394H274ZM230 350C254.301 350 274 369.699 274 394H276C276 368.595 255.405 348 230 348V350ZM50 350H230V348H50V350ZM842.5 403V38H840.5V403H842.5ZM914.5 402H841.5V404H914.5V402ZM913.5 38V403H915.5V38H913.5ZM841.5 39H914.5V37H841.5V39ZM992.215 403V143H990.215V403H992.215ZM1060.21 402H991.215V404H1060.21V402ZM1059.21 250V403H1061.21V250H1059.21ZM1066.87 220.97C1061.75 229.154 1059.21 238.844 1059.21 250H1061.21C1061.21 239.156 1063.68 229.846 1068.56 222.03L1066.87 220.97ZM1089.27 201.106C1079.78 205.848 1072.31 212.467 1066.87 220.961L1068.56 222.039C1073.79 213.866 1080.98 207.485 1090.16 202.894L1089.27 201.106ZM1121.71 193.5C1109.57 193.5 1098.74 196.031 1089.24 201.119L1090.19 202.881C1099.36 197.969 1109.86 195.5 1121.71 195.5V193.5ZM1157.52 208.909C1149.95 198.579 1137.93 193.5 1121.71 193.5V195.5C1137.5 195.5 1148.82 200.421 1155.91 210.091L1157.52 208.909ZM1168.71 256.5C1168.71 234.767 1165.05 218.827 1157.51 208.896L1155.92 210.104C1163.05 219.506 1166.71 234.9 1166.71 256.5H1168.71ZM1168.71 403V256.5H1166.71V403H1168.71ZM1236.21 402H1167.71V404H1236.21V402ZM1235.21 243V403H1237.21V243H1235.21ZM1212.97 164.169C1227.73 180.567 1235.21 206.769 1235.21 243H1237.21C1237.21 206.564 1229.7 179.766 1214.46 162.831L1212.97 164.169ZM1144.71 139C1175.88 139 1198.55 147.45 1212.96 164.153L1214.47 162.847C1199.55 145.55 1176.22 137 1144.71 137V139ZM1095.6 147.922C1109.79 141.983 1126.15 139 1144.71 139V137C1125.94 137 1109.31 140.017 1094.83 146.078L1095.6 147.922ZM1058.96 174.164C1069.53 162.272 1081.74 153.532 1095.59 147.927L1094.84 146.073C1080.69 151.801 1068.23 160.728 1057.47 172.836L1058.96 174.164ZM1057.21 174.5H1058.21V172.5H1057.21V174.5ZM1055.71 143.016L1056.21 173.516L1058.21 173.484L1057.71 142.984L1055.71 143.016ZM991.215 144H1056.71V142H991.215V144ZM1409.52 407C1378.28 407 1355.92 400.679 1342.19 388.258L1340.85 389.742C1355.12 402.654 1378.09 409 1409.52 409V407ZM1441.36 404.513C1431.08 406.171 1420.47 407 1409.52 407V409C1420.57 409 1431.29 408.163 1441.68 406.487L1441.36 404.513ZM1473.74 397.541C1462.45 400.861 1451.67 403.182 1441.39 404.508L1441.65 406.492C1452.04 405.151 1462.92 402.806 1474.3 399.459L1473.74 397.541ZM1467.52 344.1L1473.02 398.6L1475.01 398.4L1469.51 343.9L1467.52 344.1ZM1446.68 350.486C1454.73 349.145 1462.12 347.299 1468.85 344.944L1468.19 343.056C1461.58 345.368 1454.31 347.188 1446.36 348.514L1446.68 350.486ZM1424.52 352.5C1431.58 352.5 1438.97 351.827 1446.69 350.485L1446.35 348.515C1438.73 349.839 1431.46 350.5 1424.52 350.5V352.5ZM1396.75 343.14C1402.04 349.483 1411.41 352.5 1424.52 352.5V350.5C1411.62 350.5 1403 347.517 1398.29 341.86L1396.75 343.14ZM1389.02 309.5C1389.02 325.211 1391.51 336.507 1396.73 343.12L1398.3 341.88C1393.52 335.826 1391.02 325.123 1391.02 309.5H1389.02ZM1389.02 196.5V309.5H1391.02V196.5H1389.02ZM1474.52 195.5H1390.02V197.5H1474.52V195.5ZM1473.52 143V196.5H1475.52V143H1473.52ZM1390.02 144H1474.52V142H1390.02V144ZM1389.02 58V143H1391.02V58H1389.02ZM1321.02 59H1390.02V57H1321.02V59ZM1322.02 143V58H1320.02V143H1322.02ZM1264.52 144H1321.02V142H1264.52V144ZM1265.52 196.5V143H1263.52V196.5H1265.52ZM1321.02 195.5H1264.52V197.5H1321.02V195.5ZM1322.02 326.5V196.5H1320.02V326.5H1322.02ZM1342.2 388.267C1328.83 375.873 1322.02 355.374 1322.02 326.5H1320.02C1320.02 355.626 1326.88 376.794 1340.84 389.733L1342.2 388.267ZM1537.71 403V38H1535.71V403H1537.71ZM1606.71 402H1536.71V404H1606.71V402ZM1605.71 38V403H1607.71V38H1605.71ZM1536.71 39H1606.71V37H1536.71V39ZM1742.19 407C1716.72 407 1696.65 399.893 1681.88 385.777L1680.5 387.223C1695.73 401.774 1716.33 409 1742.19 409V407ZM1791.83 397.568C1775.61 403.858 1759.06 407 1742.19 407V409C1759.32 409 1776.11 405.809 1792.55 399.432L1791.83 397.568ZM1829.94 372.341C1820.73 382.861 1808.05 391.279 1791.83 397.568L1792.55 399.432C1809 393.054 1821.98 384.472 1831.44 373.659L1829.94 372.341ZM1831.19 372H1830.69V374H1831.19V372ZM1833.19 402.967L1832.19 372.967L1830.19 373.033L1831.19 403.033L1833.19 402.967ZM1897.69 402H1832.19V404H1897.69V402ZM1896.69 239V403H1898.69V239H1896.69ZM1886.29 179.931C1893.2 194.41 1896.69 214.077 1896.69 239H1898.69C1898.69 213.923 1895.18 193.923 1888.09 179.069L1886.29 179.931ZM1853.31 148.424C1868.41 154.662 1879.39 165.15 1886.29 179.923L1888.1 179.077C1880.99 163.85 1869.64 153.004 1854.07 146.576L1853.31 148.424ZM1790.69 139C1817.3 139 1838.15 142.162 1853.31 148.424L1854.07 146.576C1838.57 140.171 1817.42 137 1790.69 137V139ZM1727.36 144.486C1748.64 140.828 1769.75 139 1790.69 139V137C1769.63 137 1748.41 138.838 1727.02 142.514L1727.36 144.486ZM1670.03 158.939C1687.3 152.631 1706.4 147.812 1727.35 144.488L1727.03 142.512C1705.98 145.854 1686.75 150.702 1669.35 157.061L1670.03 158.939ZM1679.18 210.842L1670.68 157.842L1668.7 158.158L1677.2 211.158L1679.18 210.842ZM1729.01 195.517C1710.95 198.861 1693.89 203.712 1677.82 210.07L1678.56 211.93C1694.5 205.622 1711.43 200.806 1729.37 197.483L1729.01 195.517ZM1781.19 190C1764.45 190 1747.05 191.841 1728.99 195.52L1729.39 197.48C1747.33 193.825 1764.6 192 1781.19 192V190ZM1810.56 194.072C1803.72 191.334 1793.9 190 1781.19 190V192C1793.81 192 1803.33 193.332 1809.82 195.928L1810.56 194.072ZM1825.61 207.612C1822.83 200.992 1817.76 196.468 1810.51 194.051L1809.88 195.949C1816.62 198.199 1821.22 202.341 1823.77 208.388L1825.61 207.612ZM1830.19 235C1830.19 223.271 1828.69 214.1 1825.6 207.572L1823.79 208.428C1826.7 214.567 1828.19 223.395 1828.19 235H1830.19ZM1794.69 236H1829.19V234H1794.69V236ZM1694.76 260.323C1718.19 244.15 1751.46 236 1794.69 236V234C1751.25 234 1717.52 242.184 1693.62 258.677L1694.76 260.323ZM1660.19 329C1660.19 299.306 1671.72 276.454 1694.76 260.319L1693.62 258.681C1670 275.213 1658.19 298.694 1658.19 329H1660.19ZM1681.89 385.785C1667.45 371.672 1660.19 352.78 1660.19 329H1658.19C1658.19 353.22 1665.6 372.662 1680.49 387.215L1681.89 385.785ZM1767.19 357C1778.97 357 1789.61 354.98 1799.09 350.919L1798.3 349.081C1789.11 353.02 1778.74 355 1767.19 355V357ZM1734.58 347.788C1742.48 353.971 1753.39 357 1767.19 357V355C1753.66 355 1743.24 352.029 1735.81 346.212L1734.58 347.788ZM1723.19 322C1723.19 332.924 1726.96 341.559 1734.56 347.774L1735.82 346.226C1728.75 340.441 1725.19 332.409 1725.19 322H1723.19ZM1743.74 289.606C1736.95 293.004 1731.8 297.408 1728.35 302.839C1724.9 308.273 1723.19 314.673 1723.19 322H1725.19C1725.19 314.994 1726.82 308.977 1730.04 303.911C1733.25 298.842 1738.1 294.663 1744.64 291.394L1743.74 289.606ZM1804.69 279C1777.64 279 1757.28 282.501 1743.73 289.615L1744.66 291.385C1757.77 284.499 1777.74 281 1804.69 281V279ZM1829.19 279H1804.69V281H1829.19V279ZM1830.19 309.5V280H1828.19V309.5H1830.19ZM1821.48 334.111C1827.27 326.616 1830.19 318.404 1830.19 309.5H1828.19C1828.19 317.93 1825.44 325.717 1819.9 332.889L1821.48 334.111ZM1799.09 350.919C1808.55 346.862 1816.03 341.263 1821.49 334.106L1819.9 332.894C1814.68 339.737 1807.5 345.138 1798.3 349.081L1799.09 350.919ZM1983.03 508.374L2026.03 401.874L2024.18 401.126L1981.18 507.626L1983.03 508.374ZM2054.61 507H1982.11V509H2054.61V507ZM2196.67 142.635L2053.67 507.635L2055.54 508.365L2198.54 143.365L2196.67 142.635ZM2123.61 144H2197.61V142H2123.61V144ZM2061.06 335.813L2124.56 143.313L2122.66 142.687L2059.16 335.187L2061.06 335.813ZM2059.11 336.5H2060.11V334.5H2059.11V336.5ZM1995.16 143.311L2058.16 335.811L2060.06 335.189L1997.06 142.689L1995.16 143.311ZM1922.61 144.5L1996.11 144L1996.1 142L1922.6 142.5L1922.61 144.5ZM2026.03 401.131L1923.53 143.131L1921.68 143.869L2024.18 401.869L2026.03 401.131ZM2359.46 407C2312.95 407 2277.23 395.375 2252.14 372.264L2250.78 373.736C2276.36 397.292 2312.63 409 2359.46 409V407ZM2408.78 402.516C2392.51 405.505 2376.07 407 2359.46 407V409C2376.19 409 2392.75 407.495 2409.14 404.484L2408.78 402.516ZM2452.09 391.073C2439.84 396.038 2425.41 399.855 2408.8 402.513L2409.12 404.487C2425.84 401.812 2440.42 397.962 2452.84 392.927L2452.09 391.073ZM2443.47 339.651L2451.47 392.151L2453.45 391.849L2445.45 339.349L2443.47 339.651ZM2402.13 351.486C2418.18 348.811 2432.41 345.13 2444.81 340.435L2444.11 338.565C2431.85 343.204 2417.75 346.855 2401.8 349.514L2402.13 351.486ZM2356.46 355.5C2370.86 355.5 2386.08 354.161 2402.13 351.486L2401.8 349.514C2385.84 352.172 2370.73 353.5 2356.46 353.5V355.5ZM2299.3 338.746C2311.89 349.978 2331.01 355.5 2356.46 355.5V353.5C2331.25 353.5 2312.7 348.022 2300.63 337.254L2299.3 338.746ZM2281.01 298.1C2282.79 315.834 2288.85 329.429 2299.3 338.746L2300.63 337.254C2290.65 328.358 2284.74 315.286 2283 297.9L2281.01 298.1ZM2464.46 297H2282.01V299H2464.46V297ZM2463.96 284.5C2463.96 290.492 2463.79 294.947 2463.47 297.89L2465.45 298.11C2465.79 295.053 2465.96 290.508 2465.96 284.5H2463.96ZM2464.46 268.5C2464.46 273.144 2464.29 278.458 2463.96 284.445L2465.96 284.555C2466.29 278.542 2466.46 273.19 2466.46 268.5H2464.46ZM2432.73 172.685C2453.84 195.111 2464.46 227 2464.46 268.5H2466.46C2466.46 226.667 2455.75 194.222 2434.19 171.315L2432.73 172.685ZM2343.46 139C2382.26 139 2411.96 150.268 2432.73 172.68L2434.19 171.32C2412.96 148.399 2382.66 137 2343.46 137V139ZM2249.18 174.692C2271.96 150.93 2303.34 139 2343.46 139V137C2302.92 137 2270.97 149.07 2247.74 173.308L2249.18 174.692ZM2214.96 273C2214.96 231.187 2226.41 198.46 2249.18 174.692L2247.74 173.308C2224.52 197.54 2212.96 230.813 2212.96 273H2214.96ZM2252.14 372.269C2227.4 349.172 2214.96 316.135 2214.96 273H2212.96C2212.96 316.532 2225.52 350.161 2250.78 373.731L2252.14 372.269ZM2296.18 207.378C2287.93 217.759 2282.96 232.133 2281.19 250.404L2283.19 250.596C2284.93 232.561 2289.81 218.602 2297.74 208.622L2296.18 207.378ZM2343.46 187C2322.56 187 2306.74 193.754 2296.17 207.387L2297.75 208.613C2307.85 195.579 2323.03 189 2343.46 189V187ZM2387.77 206.407C2378.2 193.421 2363.36 187 2343.46 187V189C2362.9 189 2377.06 195.246 2386.16 207.593L2387.77 206.407ZM2401.9 250.419C2400.37 231.501 2395.69 216.789 2387.76 206.393L2386.17 207.607C2393.78 217.586 2398.4 231.874 2399.91 250.581L2401.9 250.419ZM2282.19 251.5H2400.91V249.5H2282.19V251.5ZM2517.09 144H2583.09V142H2517.09V144ZM2518.09 403V143H2516.09V403H2518.09ZM2586.59 402H2517.09V404H2586.59V402ZM2585.59 283V403H2587.59V283H2585.59ZM2600.8 238.89C2590.67 252.06 2585.59 266.774 2585.59 283H2587.59C2587.59 267.226 2592.52 252.94 2602.39 240.11L2600.8 238.89ZM2641.68 207.088C2624.55 214.816 2610.91 225.416 2600.79 238.9L2602.39 240.1C2612.28 226.917 2625.64 216.517 2642.5 208.912L2641.68 207.088ZM2698.59 195.5C2677.8 195.5 2658.83 199.357 2641.68 207.088L2642.5 208.912C2659.36 201.309 2678.05 197.5 2698.59 197.5V195.5ZM2697.59 138V196.5H2699.59V138H2697.59ZM2654.88 145.457C2669.12 141.152 2683.69 139 2698.59 139V137C2683.5 137 2668.73 139.181 2654.3 143.543L2654.88 145.457ZM2616.15 163.332C2628.06 155.39 2640.97 149.433 2654.87 145.462L2654.32 143.538C2640.22 147.567 2627.13 153.61 2615.04 161.668L2616.15 163.332ZM2585.9 192.096C2594.5 180.52 2604.58 170.935 2616.14 163.336L2615.04 161.664C2603.28 169.398 2593.02 179.147 2584.29 190.904L2585.9 192.096ZM2583.59 192.5H2585.09V190.5H2583.59V192.5ZM2582.09 143.01L2582.59 191.51L2584.59 191.49L2584.09 142.99L2582.09 143.01Z" fill="currentColor"></path></svg></a><div class="absolute z-100 min-w-full left-0 top-[calc(100%+0.5rem)]" role="region" aria-labelledby="dropdown-trigger-navbar-logo" id="dropdown-panel-navbar-logo"><div role="none" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out overflow-x-visible group-hover/dropdown:visible group-hover/dropdown:grid-rows-[1fr] delay-0 group-hover/dropdown:delay-600"><div style="min-height:0px" class="overflow-x-visible group-hover/dropdown:visible group-hover/dropdown:grid-rows-[1fr] delay-0 group-hover/dropdown:delay-600"><div class="flex flex-col text-text backdrop-blur rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl bg-card/70 px-3 py-2 gap-3 border border-text/5"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-neutral ring-neutral-500/5 *:text-text-light rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-vector-square flex-none shrink-0 size-4 mr-3" aria-hidden="true"><path d="M19.5 7a24 24 0 0 1 0 10"></path><path d="M4.5 7a24 24 0 0 0 0 10"></path><path d="M7 19.5a24 24 0 0 0 10 0"></path><path d="M7 4.5a24 24 0 0 1 10 0"></path><rect x="17" y="17" width="5" height="5" rx="1"></rect><rect x="17" y="2" width="5" height="5" rx="1"></rect><rect x="2" y="17" width="5" height="5" rx="1"></rect><rect x="2" y="2" width="5" height="5" rx="1"></rect></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><span class="ml-2 flex w-full text-text">Завантажити SVG</span></span></button><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-neutral ring-neutral-500/5 *:text-text-light rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-image flex-none shrink-0 size-4 mr-3" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"></rect><circle cx="9" cy="9" r="2"></circle><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><span class="ml-2 flex w-full text-text">Завантажити PNG</span></span></button><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-neutral ring-neutral-500/5 *:text-text-light rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-vector-square flex-none shrink-0 size-4 mr-3" aria-hidden="true"><path d="M19.5 7a24 24 0 0 1 0 10"></path><path d="M4.5 7a24 24 0 0 0 0 10"></path><path d="M7 19.5a24 24 0 0 0 10 0"></path><path d="M7 4.5a24 24 0 0 1 10 0"></path><rect x="17" y="17" width="5" height="5" rx="1"></rect><rect x="17" y="2" width="5" height="5" rx="1"></rect><rect x="2" y="17" width="5" height="5" rx="1"></rect><rect x="2" y="2" width="5" height="5" rx="1"></rect></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><span class="ml-2 flex w-full text-text">Копіювати як SVG</span></span></button><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-neutral ring-neutral-500/5 *:text-text-light rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-image flex-none shrink-0 size-4 mr-3" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"></rect><circle cx="9" cy="9" r="2"></circle><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><span class="ml-2 flex w-full text-text">Копіювати як зображення</span></span></button></div></div></div></div></div><div class="relative z-0 flex size-full flex-row items-center border-text ml-[2vw] h-auto gap-3 overflow-x-auto text-neutral tracking-wide lg:ml-[5vw] lg:gap-3 xl:ml-[10vw] xl:gap-6" aria-orientation="horizontal" aria-multiselectable="false" role="tablist"><a aria-label="Перейти на головну сторінку" aria-current="page" id="home" role="tab" aria-selected="false" data-active="false" tabindex="-1" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex text-nowrap px-4 py-0.5 text-sm aria-[current]:bg-current/0 active" href="/uk" target="_self" data-status="active">Головна</a><a aria-label="Перейти до пісочниці" id="playground" role="tab" aria-selected="false" data-active="false" tabindex="-1" href="/uk/playground" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex text-nowrap px-4 py-0.5 text-sm aria-[current]:bg-current/0">Пісочниця</a><a aria-label="Переглянути проекти Intlayer" id="showcase" role="tab" aria-selected="false" data-active="false" tabindex="-1" href="https://showcase.intlayer.org/uk" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex text-nowrap px-4 py-0.5 text-sm aria-[current]:bg-current/0">Вітрина</a><a aria-label="Перейти до панелі керування" id="dashboard" role="tab" aria-selected="false" data-active="false" tabindex="-1" href="https://app.intlayer.org/uk" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex text-nowrap px-4 py-0.5 text-sm aria-[current]:bg-current/0">Додаток</a><a aria-label="Перейти до сторінки документації" aria-current="page" id="doc" role="tab" aria-selected="true" data-active="true" tabindex="0" href="/uk/doc/get-started" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex text-nowrap px-4 py-0.5 text-sm aria-[current]:bg-current/0">Документація</a><a aria-label="Перейти до блогу" id="blog" role="tab" aria-selected="false" data-active="false" tabindex="-1" href="/uk/blog" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex text-nowrap px-4 py-0.5 text-sm aria-[current]:bg-current/0">Блог</a></div><div class="mr-4 flex items-center justify-end gap-2 md:gap-4"><div class="flex rounded-xl text-text transition-colors"><div class="group/dropdown relative flex" aria-label="DropDown locale-switcher" id="dropdown-container-locale-switcher"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-7 px-3 text-xs max-md:py-1 text-text ring-text/20 *:text-text-opposite rounded-[4rem] [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-[5rem] rounded-2xl border-[1.3px] border-current bg-current/0 *:text-current! hover:bg-current/20 focus-visible:bg-current/20 hover:ring-5 focus-visible:ring-5 aria-selected:ring-5 justify-center text-center w-full cursor-pointer group-focus-within/dropdown:bg-current/20 group-focus-within/dropdown:ring-4 p-0!" aria-label="Перемикач мови" aria-haspopup="true" aria-busy="false" aria-disabled="false" aria-controls="dropdown-panel-locale-switcher" id="dropdown-trigger-locale-switcher"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><div class="flex w-full items-center justify-between"><div class="text-nowrap px-2 text-base">UK</div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-move-vertical w-5 self-center" aria-hidden="true"><path d="M12 2v20"></path><path d="m8 18 4 4 4-4"></path><path d="m8 6 4-4 4 4"></path></svg></div></span></button><div class="absolute z-100 min-w-full right-0 top-[calc(100%+0.5rem)]" role="region" aria-labelledby="dropdown-trigger-locale-switcher" id="dropdown-panel-locale-switcher"><div role="none" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out overflow-x-visible group-hover/dropdown:visible group-hover/dropdown:grid-rows-[1fr] group-focus-within/dropdown:visible group-focus-within/dropdown:grid-rows-[1fr]"><div style="min-height:0px" class="overflow-x-visible group-hover/dropdown:visible group-hover/dropdown:grid-rows-[1fr] group-focus-within/dropdown:visible group-focus-within/dropdown:grid-rows-[1fr]"><div class="flex flex-col text-text backdrop-blur rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl bg-card/95 p-0 divide-y divide-dashed divide-text/20 gap-0 max-h-[80vh] min-w-28 border border-text/5"><div class="p-3"><input class="w-full select-text resize-none text-base shadow-none outline-none transition-all duration-300 md:text-sm ring-0 disabled:opacity-50 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text bg-neutral-50 dark:bg-neutral-950 ring-text/20 disabled:ring-0 hover:ring-3 focus-within:ring-4 focus-visible:outline-none focus-visible:ring-4 [box-shadow:none] focus:[box-shadow:none] aria-invalid:border-error px-2 py-3 md:py-2" type="search" aria-label="Пошук мови" placeholder="Шукати мову"/></div><ul class="divide-y divide-dashed divide-text/20 overflow-y-auto p-1" aria-label="Список мов"><li class="py-1 pr-3"><a aria-label="Переключитися на Англійська" href="/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="en">English</span><span class="text-neutral text-xs">Англійська</span></div><span class="text-nowrap text-neutral text-sm">EN</span></div></a></li><li class="py-1 pr-3"><a aria-label="Переключитися на Російська" href="/ru/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="ru">Русский</span><span class="text-neutral text-xs">Російська</span></div><span class="text-nowrap text-neutral text-sm">RU</span></div></a></li><li class="py-1 pr-3"><a aria-label="Переключитися на Японська" href="/ja/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="ja">日本語</span><span class="text-neutral text-xs">Японська</span></div><span class="text-nowrap text-neutral text-sm">JA</span></div></a></li><li class="py-1 pr-3"><a aria-label="Переключитися на Французька" href="/fr/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="fr">français</span><span class="text-neutral text-xs">Французька</span></div><span class="text-nowrap text-neutral text-sm">FR</span></div></a></li><li class="py-1 pr-3"><a aria-label="Переключитися на Корейська" href="/ko/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="ko">한국어</span><span class="text-neutral text-xs">Корейська</span></div><span class="text-nowrap text-neutral text-sm">KO</span></div></a></li><li class="py-1 pr-3"><a aria-label="Переключитися на Китайська" href="/zh/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="zh">中文</span><span class="text-neutral text-xs">Китайська</span></div><span class="text-nowrap text-neutral text-sm">ZH</span></div></a></li><li class="py-1 pr-3"><a aria-label="Переключитися на Іспанська" href="/es/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="es">Español</span><span class="text-neutral text-xs">Іспанська</span></div><span class="text-nowrap text-neutral text-sm">ES</span></div></a></li><li class="py-1 pr-3"><a aria-label="Переключитися на Німецька" href="/de/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="de">Deutsch</span><span class="text-neutral text-xs">Німецька</span></div><span class="text-nowrap text-neutral text-sm">DE</span></div></a></li><li class="py-1 pr-3"><a aria-label="Переключитися на Арабська" href="/ar/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="rtl" lang="ar">العربية</span><span class="text-neutral text-xs">Арабська</span></div><span class="text-nowrap text-neutral text-sm">AR</span></div></a></li><li class="py-1 pr-3"><a aria-label="Переключитися на Італійська" href="/it/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="it">Italiano</span><span class="text-neutral text-xs">Італійська</span></div><span class="text-nowrap text-neutral text-sm">IT</span></div></a></li><li class="py-1 pr-3"><a aria-label="Переключитися на Англійська (Велика Британія)" href="/en-GB/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="en-GB">British English</span><span class="text-neutral text-xs">Англійська (Велика Британія)</span></div><span class="text-nowrap text-neutral text-sm">EN-GB</span></div></a></li><li class="py-1 pr-3"><a aria-label="Переключитися на Португальська" href="/pt/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="pt">Português</span><span class="text-neutral text-xs">Португальська</span></div><span class="text-nowrap text-neutral text-sm">PT</span></div></a></li><li class="py-1 pr-3"><a aria-label="Переключитися на Гінді" href="/hi/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="hi">हिन्दी</span><span class="text-neutral text-xs">Гінді</span></div><span class="text-nowrap text-neutral text-sm">HI</span></div></a></li><li class="py-1 pr-3"><a aria-label="Переключитися на Турецька" href="/tr/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="tr">Türkçe</span><span class="text-neutral text-xs">Турецька</span></div><span class="text-nowrap text-neutral text-sm">TR</span></div></a></li><li class="py-1 pr-3"><a aria-label="Переключитися на Польська" href="/pl/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="pl">polski</span><span class="text-neutral text-xs">Польська</span></div><span class="text-nowrap text-neutral text-sm">PL</span></div></a></li><li class="py-1 pr-3"><a aria-label="Переключитися на Індонезійська" href="/id/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="id">Indonesia</span><span class="text-neutral text-xs">Індонезійська</span></div><span class="text-nowrap text-neutral text-sm">ID</span></div></a></li><li class="py-1 pr-3"><a aria-label="Переключитися на Вʼєтнамська" href="/vi/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="vi">Tiếng Việt</span><span class="text-neutral text-xs">Вʼєтнамська</span></div><span class="text-nowrap text-neutral text-sm">VI</span></div></a></li><li class="py-1 pr-3"><a aria-label="Переключитися на Українська" aria-current="page" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text active" href="/uk/doc/environment/vite-and-svelte" target="_self" data-status="active"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="uk">Українська</span><span class="text-neutral text-xs">Українська</span></div><span class="text-nowrap text-neutral text-sm">UK</span></div></a></li></ul></div></div></div></div></div></div><!--$--><!--/$--><a aria-label="Перейти на сервер Discord" rel="noopener noreferrer nofollow" href="https://discord.gg/7uxamYVeCk" target="_blank" class="transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 relative min-h-8 flex-row justify-center border-current text-center font-medium text-sm ring-0 *:text-text hover:bg-current/20 hover:ring-5 aria-selected:ring-5 aria-[current]:ring-5 max-md:py-2 text-text ring-text/20 flex cursor-pointer items-center gap-2 rounded-full border-[1.3px] p-1.5"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="800px" viewBox="0 0 71 80" fill="none" role="img" aria-label="Discord logo" class="aspect-square h-auto"><path d="M60.1045 13.8978C55.5792 11.8214 50.7265 10.2916 45.6527 9.41542C45.5603 9.39851 45.468 9.44077 45.4204 9.52529C44.7963 10.6353 44.105 12.0834 43.6209 13.2216C38.1637 12.4046 32.7345 12.4046 27.3892 13.2216C26.905 12.0581 26.1886 10.6353 25.5617 9.52529C25.5141 9.44359 25.4218 9.40133 25.3294 9.41542C20.2584 10.2888 15.4057 11.8186 10.8776 13.8978C10.8384 13.9147 10.8048 13.9429 10.7825 13.9795C1.57795 27.7309 -0.943561 41.1443 0.293408 54.3914C0.299005 54.4562 0.335386 54.5182 0.385761 54.5576C6.45866 59.0174 12.3413 61.7249 18.1147 63.5195C18.2071 63.5477 18.305 63.5139 18.3638 63.4378C19.7295 61.5728 20.9469 59.6063 21.9907 57.5383C22.0523 57.4172 21.9935 57.2735 21.8676 57.2256C19.9366 56.4931 18.0979 55.6 16.3292 54.5858C16.1893 54.5041 16.1781 54.304 16.3068 54.2082C16.679 53.9293 17.0513 53.6391 17.4067 53.3461C17.471 53.2926 17.5606 53.2813 17.6362 53.3151C29.2558 58.6202 41.8354 58.6202 53.3179 53.3151C53.3935 53.2785 53.4831 53.2898 53.5502 53.3433C53.9057 53.6363 54.2779 53.9293 54.6529 54.2082C54.7816 54.304 54.7732 54.5041 54.6333 54.5858C52.8646 55.6197 51.0259 56.4931 49.0921 57.2228C48.9662 57.2707 48.9102 57.4172 48.9718 57.5383C50.038 59.6034 51.2554 61.5699 52.5959 63.435C52.6519 63.5139 52.7526 63.5477 52.845 63.5195C58.6464 61.7249 64.529 59.0174 70.6019 54.5576C70.6551 54.5182 70.6887 54.459 70.6943 54.3942C72.1747 39.0791 68.2147 25.7757 60.1968 13.9823C60.1772 13.9429 60.1437 13.9147 60.1045 13.8978ZM23.7259 46.3253C20.2276 46.3253 17.3451 43.1136 17.3451 39.1693C17.3451 35.225 20.1717 32.0133 23.7259 32.0133C27.308 32.0133 30.1626 35.2532 30.1066 39.1693C30.1066 43.1136 27.28 46.3253 23.7259 46.3253ZM47.3178 46.3253C43.8196 46.3253 40.9371 43.1136 40.9371 39.1693C40.9371 35.225 43.7636 32.0133 47.3178 32.0133C50.9 32.0133 53.7545 35.2532 53.6986 39.1693C53.6986 43.1136 50.9 46.3253 47.3178 46.3253Z" fill="currentColor"></path></svg></a><a aria-label="Перейти до репозиторію на GitHub" rel="noopener noreferrer" href="https://github.com/aymericzip/intlayer" target="_blank" class="transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 relative min-h-8 flex-row justify-center bg-current text-center font-medium text-sm ring-0 *:text-text-opposite hover:bg-current/90 hover:ring-5 aria-selected:ring-5 aria-[current]:ring-5 max-md:py-2 rounded-full text-text ring-text/20 group/github flex cursor-pointer items-center gap-1 p-0.5"><svg role="img" aria-label="GitHub logo" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="25"><path d="M127.975 10C61.1744 10 7 64.167 7 130.99C7 184.444 41.663 229.787 89.7396 245.786C95.7928 246.9 97.9987 243.164 97.9987 239.955C97.9987 237.088 97.8947 229.475 97.8353 219.382C64.1824 226.69 57.082 203.161 57.082 203.161C51.5784 189.182 43.6461 185.461 43.6461 185.461C32.6612 177.96 44.4779 178.108 44.4779 178.108C56.6215 178.963 63.0089 190.579 63.0089 190.579C73.8007 209.065 91.329 203.725 98.2215 200.628C99.3208 192.814 102.448 187.482 105.901 184.459C79.0369 181.406 50.7911 171.023 50.7911 124.662C50.7911 111.456 55.5074 100.65 63.2466 92.1974C61.9988 89.1374 57.847 76.8304 64.435 60.1785C64.435 60.1785 74.588 56.9254 97.7016 72.582C107.35 69.8934 117.703 68.5565 127.99 68.5045C138.269 68.5565 148.615 69.8934 158.278 72.582C181.377 56.9254 191.515 60.1785 191.515 60.1785C198.118 76.8304 193.966 89.1374 192.726 92.1974C200.48 100.65 205.159 111.456 205.159 124.662C205.159 171.142 176.869 181.369 149.923 184.362C154.26 188.098 158.13 195.481 158.13 206.77C158.13 222.939 157.981 235.989 157.981 239.955C157.981 243.193 160.165 246.959 166.3 245.778C214.339 229.743 248.973 184.429 248.973 130.99C248.973 64.167 194.798 10 127.975 10Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="18" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star mr-1 group-hover/github:fill-text-opposite" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></a></div></nav><main class="relative flex w-full flex-1 flex-col"><div class="flex w-full bg-card max-md:flex-col md:h-[calc(100dvh-3.5rem)]"><aside aria-label="Навігація по документації" class="z-40 flex-none"><div class="fixed top-18 left-2 z-50 flex-col gap-1 md:hidden hidden"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-search-trigger" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Натисніть, щоб виконати пошук" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search flex-none shrink-0 size-4" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Натисніть, щоб виконати пошук</span></button><div class="flex flex-col text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 p-0 border-text gap-0 absolute z-60 min-w-full rounded-md ring-1 ring-neutral left-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:left-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800" role="group" aria-labelledby="unrollable-panel-button-search-trigger" id="unrollable-panel-search-trigger"><kbd class="inline-flex items-center justify-center gap-0.5 p-0.5 rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl font-medium font-sans border-1 border-neutral/20 text-neutral text-xs"><span class="inline-flex items-center"><span class="min-w-4 px-0.5 text-center">/</span></span></kbd></div></div><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center rotate-180" aria-label="Згорнути" aria-expanded="false" aria-busy="false" aria-disabled="false" aria-controls="doc-nav-content"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left-to-line flex-none shrink-0 size-4" aria-hidden="true"><path d="M3 19V5"></path><path d="m13 6-6 6 6 6"></path><path d="M7 12h14"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Згорнути</span></button></div><div class="top-0 left-0 z-40 flex h-full justify-end max-md:fixed max-md:transition-transform max-md:duration-300 max-md:ease-in-out max-md:translate-x-0" role="region"><div class="flex flex-col text-text backdrop-blur rounded-none bg-card/95 p-0 border-text gap-0 h-full sticky top-15 rounded-br-2xl"><div class="relative h-full max-w-80"><div class="flex flex-col text-text backdrop-blur rounded-none bg-card/95 p-0 border-text gap-0 sticky top-[3.6rem] z-10 m-auto pt-4"><div class="relative m-auto flex w-full flex-row items-center justify-center gap-2 px-2"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-doc-nav-framework-filter" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Фільтрувати за фреймворком" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-funnel flex-none shrink-0 size-4" aria-hidden="true"><path d="M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Фільтрувати за фреймворком</span></button><div class="flex flex-col text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text gap-0 absolute z-60 rounded-md ring-1 ring-neutral left-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:left-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 min-w-50 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-doc-nav-framework-filter" id="unrollable-panel-doc-nav-framework-filter">Фільтрувати документи за фреймворком</div></div><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text w-full select-text resize-none rounded-2xl text-base shadow-none outline-none supports-[corner-shape:squircle]:rounded-4xl transition-shadow duration-100 md:text-sm ring-0 disabled:opacity-50 text-text bg-neutral-50 dark:bg-neutral-950 ring-neutral-100 dark:ring-neutral-700 hover:ring-3 aria-selected:ring-4 focus-visible:ring-3 disabled:ring-0 focus-visible:outline-none [box-shadow:none] focus:[box-shadow:none] aria-invalid:border-error justify-center text-center mb-1 pr-1.5" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search flex-none shrink-0 size-4 mr-3" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><span class="flex w-full items-center gap-2">Пошук<kbd class="inline-flex items-center justify-center gap-0.5 p-0.5 rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl font-medium font-sans border-1 border-neutral/20 text-neutral text-xs ml-auto"><span class="inline-flex items-center"><span class="min-w-4 px-0.5 text-center">/</span></span></kbd></span></span></button><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-doc-nav-collapse" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center transition-transform" aria-label="Згорнути" aria-expanded="true" aria-busy="false" aria-disabled="false" aria-controls="doc-nav-content"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left-to-line flex-none shrink-0 size-4" aria-hidden="true"><path d="M3 19V5"></path><path d="m13 6-6 6 6 6"></path><path d="M7 12h14"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Згорнути</span></button><div class="flex flex-col text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 p-0 border-text gap-0 absolute z-60 min-w-full rounded-md ring-1 ring-neutral left-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:left-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800" role="group" aria-labelledby="unrollable-panel-button-doc-nav-collapse" id="unrollable-panel-doc-nav-collapse"><kbd class="inline-flex items-center justify-center gap-0.5 p-0.5 rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl font-medium font-sans border-1 border-neutral/20 text-neutral text-xs"><span class="inline-flex items-center"><span class="min-w-4 px-0.5 text-center">Alt</span></span><span class="inline-flex items-center"><span class="text-neutral/50">+</span><span class="min-w-4 px-0.5 text-center">←</span></span></kbd></div></div><div class="absolute bottom-0 left-0 h-8 w-full translate-y-full bg-linear-to-b from-card/90 backdrop-blur"></div></div></div><div id="doc-nav-content" class="sticky top-28 pt-0"><div class="relative grid h-full overflow-x-hidden overflow-y-hidden transition-all duration-500 ease-in-out grid-cols-[1fr]" aria-hidden="false"><div style="min-width:0px" class=""><div class="relative overflow-hidden"><nav aria-label="Розділи документації" class="m-auto flex max-h-[calc(100vh-8.2rem)] min-w-40 max-w-xl flex-col gap-5 overflow-auto px-3 pt-8 pb-20"><div><a aria-label="why" href="/uk/doc/why" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text flex w-full truncate text-nowrap p-2 text-left font-semibold transition-color"><span class="flex items-center gap-1.5 opacity-60">Чому Intlayer?</span></a></div><div><a aria-label="get-started" href="/uk/doc/get-started" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text flex w-full truncate text-nowrap p-2 text-left font-semibold transition-color"><span class="flex items-center gap-1.5 opacity-60">Почати</span></a></div><div><span class="flex w-full truncate text-nowrap p-2 text-left font-semibold text-neutral transition-color" label="concept"><span class="flex items-center gap-1.5 opacity-60">Концепція</span></span><ul class="mt-4 flex flex-col gap-4 border-neutral border-l-[0.5px] p-1 text-base"><li><a aria-label="how-works-intlayer" href="/uk/doc/concept/how-works-intlayer" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Як працює Intlayer</span></a></li><li><a aria-label="configuration" href="/uk/doc/concept/configuration" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Конфігурація</span></a></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_e6qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="cli" href="/uk/doc/concept/cli" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">CLI</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_e6qb9bcq_-accordion-content" aria-labelledby="_R_e6qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="test" href="/uk/doc/concept/cli/test" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Test</span></a><a aria-label="fill" href="/uk/doc/concept/cli/fill" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Fill</span></a><a aria-label="build" href="/uk/doc/concept/cli/build" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Build</span></a><a aria-label="watch" href="/uk/doc/concept/cli/watch" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Watch</span></a><a aria-label="extract" href="/uk/doc/concept/cli/extract" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Extract</span></a><a aria-label="login" href="/uk/doc/concept/cli/login" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Login</span></a><a aria-label="push" href="/uk/doc/concept/cli/push" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Push</span></a><a aria-label="pull" href="/uk/doc/concept/cli/pull" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Pull</span></a><a aria-label="configuration" href="/uk/doc/concept/cli/configuration" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Configuration</span></a><a aria-label="list" href="/uk/doc/concept/cli/list" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">List</span></a><a aria-label="version" href="/uk/doc/concept/cli/version" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Version</span></a><a aria-label="editor" href="/uk/doc/concept/cli/editor" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Editor</span></a><a aria-label="live" href="/uk/doc/concept/cli/live" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Live</span></a><a aria-label="debug" href="/uk/doc/concept/cli/debug" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Debug</span></a><a aria-label="doc-review" href="/uk/doc/concept/cli/doc-review" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Doc Review</span></a><a aria-label="doc-translate" href="/uk/doc/concept/cli/doc-translate" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Doc Translate</span></a><a aria-label="sdk" href="/uk/doc/concept/cli/sdk" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">SDK</span></a><a aria-label="scan" href="/uk/doc/concept/cli/scan" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Scan</span></a></div></div></div></div></div></li><li><a aria-label="editor" href="/uk/doc/concept/editor" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Візуальний редактор</span></a></li><li><a aria-label="cms" href="/uk/doc/concept/cms" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">CMS</span></a></li><li><a aria-label="ci-cd" href="/uk/doc/concept/ci-cd" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Інтеграція CI/CD</span></a></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_u6qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="content" href="/uk/doc/concept/content" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Оголошення контенту</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_u6qb9bcq_-accordion-content" aria-labelledby="_R_u6qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="translation" href="/uk/doc/concept/content/translation" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Переклад</span></a><a aria-label="plural" href="/uk/doc/concept/content/plural" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Множина</span></a><a aria-label="enumeration" href="/uk/doc/concept/content/enumeration" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Перелік</span></a><a aria-label="condition" href="/uk/doc/concept/content/condition" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Умова</span></a><a aria-label="gender" href="/uk/doc/concept/content/gender" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Рід</span></a><a aria-label="insertion" href="/uk/doc/concept/content/insertion" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Вставка</span></a><a aria-label="file" href="/uk/doc/concept/content/file" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Файл</span></a><a aria-label="nesting" href="/uk/doc/concept/content/nesting" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Вкладеність</span></a><a aria-label="markdown" href="/uk/doc/concept/content/markdown" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Markdown</span></a><a aria-label="html" href="/uk/doc/concept/content/html" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">HTML</span></a><a aria-label="function-fetching" href="/uk/doc/concept/content/function-fetching" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Отримання функції</span></a></div></div></div></div></div></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_126qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="dynamic-dyctionary" href="/uk/doc/concept/dynamic-dictionaries" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Файл для кожної локалі</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_126qb9bcq_-accordion-content" aria-labelledby="_R_126qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="collections" href="/uk/doc/concept/collections" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Колекції</span></a><a aria-label="variants" href="/uk/doc/concept/variants" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Варіанти</span></a><a aria-label="dynamic-content" href="/uk/doc/concept/dynamic-records" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Динамічні записи</span></a></div></div></div></div></div></li><li><a aria-label="per-locale-file" href="/uk/doc/concept/per-locale-file" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Файл для кожної локалі</span></a></li><li><a aria-label="compiler" href="/uk/doc/compiler" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Компілятор</span></a></li><li><a aria-label="auto-fill" href="/uk/doc/concept/auto-fill" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Автозаповнення</span></a></li><li><a aria-label="testing" href="/uk/doc/testing" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Тестування</span></a></li><li><a aria-label="bundle_optimization" href="/uk/doc/concept/bundle-optimization" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Оптимізація пакета</span></a></li></ul></div><div><span class="flex w-full truncate text-nowrap p-2 text-left font-semibold text-neutral transition-color" label="environment"><span class="flex items-center gap-1.5 opacity-60">Середовище</span></span><ul class="mt-4 flex flex-col gap-4 border-neutral border-l-[0.5px] p-1 text-base"><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_68qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="nextjs" href="/uk/doc/environment/nextjs" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg width="800px" height="800px" viewBox="0 0 256 256" version="1.1" preserveAspectRatio="xMidYMid" fill="currentColor" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Nextjs logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m 119.90598,4.4814875 c -0.53154,0.048313 -2.22282,0.2174192 -3.745,0.3382075 C 81.054703,7.9843533 48.17125,26.923985 27.344258,56.034007 15.746859,72.219661 8.329357,90.57951 5.5266527,110.02645 c -0.9906106,6.78831 -1.1114168,8.7934 -1.1114168,17.99748 0,9.20409 0.1208062,11.20918 1.1114168,17.99749 6.7168263,46.40692 39.7452473,85.39745 84.5401943,99.84374 8.021533,2.58488 16.477973,4.34839 26.094133,5.41133 3.745,0.41069 19.93304,0.41069 23.67803,0 16.59877,-1.83598 30.66062,-5.94279 44.52917,-13.021 2.12619,-1.08709 2.53693,-1.37699 2.247,-1.61856 -0.19329,-0.14494 -9.25375,-12.29627 -20.12631,-26.98414 l -19.7639,-26.69426 -24.76528,-36.64721 c -13.62694,-20.14753 -24.83776,-36.62307 -24.934405,-36.62307 -0.09665,-0.0242 -0.19329,16.25813 -0.241612,36.13991 -0.07248,34.81123 -0.09665,36.21238 -0.531547,37.03375 -0.628193,1.18372 -1.111418,1.66687 -2.12619,2.19834 -0.77316,0.38652 -1.449674,0.459 -5.098022,0.459 h -4.179896 l -1.111416,-0.70058 c -0.724838,-0.45899 -1.256386,-1.06293 -1.618805,-1.7635 l -0.507385,-1.08711 0.04832,-48.43617 0.07249,-48.460335 0.748999,-0.94215 c 0.386579,-0.507311 1.208061,-1.159569 1.787931,-1.47362 0.990612,-0.483153 1.377191,-0.531468 5.557087,-0.531468 4.928894,0 5.750376,0.193262 7.030921,1.594408 0.36242,0.386523 13.7719,20.582355 29.81498,44.909155 16.04305,24.3268 37.98146,57.54363 48.75739,73.85007 l 19.5706,29.64148 0.99061,-0.65225 c 8.77054,-5.70121 18.04845,-13.81819 25.39347,-22.27339 15.63232,-17.94917 25.70756,-39.83604 29.09014,-63.17237 0.99062,-6.78831 1.11141,-8.7934 1.11141,-17.99749 0,-9.20408 -0.12079,-11.20917 -1.11141,-17.99748 C 243.75652,63.619523 210.72809,24.629005 165.93316,10.182703 158.03243,7.6219874 149.62432,5.8584758 140.20143,4.7955375 137.88194,4.5539609 121.91136,4.2882259 119.90598,4.4814875 Z m 50.59365,74.7439055 c 1.15974,0.579785 2.10202,1.691038 2.44028,2.850608 0.1933,0.6281 0.24162,14.059778 0.1933,44.329369 l -0.0725,43.43554 -7.65911,-11.74064 -7.68328,-11.74064 v -31.57411 c 0,-20.413252 0.0966,-31.888157 0.24161,-32.443785 0.38658,-1.352829 1.23223,-2.415769 2.39196,-3.043868 0.99061,-0.507311 1.35304,-0.555627 5.14636,-0.555627 3.57585,0 4.20405,0.04831 5.00138,0.483153 z" fill="currentColor"></path></svg><!--/$--></span>Next.js</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_68qb9bcq_-accordion-content" aria-labelledby="_R_68qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="14" href="/uk/doc/environment/nextjs/14" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg width="800px" height="800px" viewBox="0 0 256 256" version="1.1" preserveAspectRatio="xMidYMid" fill="currentColor" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Nextjs logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m 119.90598,4.4814875 c -0.53154,0.048313 -2.22282,0.2174192 -3.745,0.3382075 C 81.054703,7.9843533 48.17125,26.923985 27.344258,56.034007 15.746859,72.219661 8.329357,90.57951 5.5266527,110.02645 c -0.9906106,6.78831 -1.1114168,8.7934 -1.1114168,17.99748 0,9.20409 0.1208062,11.20918 1.1114168,17.99749 6.7168263,46.40692 39.7452473,85.39745 84.5401943,99.84374 8.021533,2.58488 16.477973,4.34839 26.094133,5.41133 3.745,0.41069 19.93304,0.41069 23.67803,0 16.59877,-1.83598 30.66062,-5.94279 44.52917,-13.021 2.12619,-1.08709 2.53693,-1.37699 2.247,-1.61856 -0.19329,-0.14494 -9.25375,-12.29627 -20.12631,-26.98414 l -19.7639,-26.69426 -24.76528,-36.64721 c -13.62694,-20.14753 -24.83776,-36.62307 -24.934405,-36.62307 -0.09665,-0.0242 -0.19329,16.25813 -0.241612,36.13991 -0.07248,34.81123 -0.09665,36.21238 -0.531547,37.03375 -0.628193,1.18372 -1.111418,1.66687 -2.12619,2.19834 -0.77316,0.38652 -1.449674,0.459 -5.098022,0.459 h -4.179896 l -1.111416,-0.70058 c -0.724838,-0.45899 -1.256386,-1.06293 -1.618805,-1.7635 l -0.507385,-1.08711 0.04832,-48.43617 0.07249,-48.460335 0.748999,-0.94215 c 0.386579,-0.507311 1.208061,-1.159569 1.787931,-1.47362 0.990612,-0.483153 1.377191,-0.531468 5.557087,-0.531468 4.928894,0 5.750376,0.193262 7.030921,1.594408 0.36242,0.386523 13.7719,20.582355 29.81498,44.909155 16.04305,24.3268 37.98146,57.54363 48.75739,73.85007 l 19.5706,29.64148 0.99061,-0.65225 c 8.77054,-5.70121 18.04845,-13.81819 25.39347,-22.27339 15.63232,-17.94917 25.70756,-39.83604 29.09014,-63.17237 0.99062,-6.78831 1.11141,-8.7934 1.11141,-17.99749 0,-9.20408 -0.12079,-11.20917 -1.11141,-17.99748 C 243.75652,63.619523 210.72809,24.629005 165.93316,10.182703 158.03243,7.6219874 149.62432,5.8584758 140.20143,4.7955375 137.88194,4.5539609 121.91136,4.2882259 119.90598,4.4814875 Z m 50.59365,74.7439055 c 1.15974,0.579785 2.10202,1.691038 2.44028,2.850608 0.1933,0.6281 0.24162,14.059778 0.1933,44.329369 l -0.0725,43.43554 -7.65911,-11.74064 -7.68328,-11.74064 v -31.57411 c 0,-20.413252 0.0966,-31.888157 0.24161,-32.443785 0.38658,-1.352829 1.23223,-2.415769 2.39196,-3.043868 0.99061,-0.507311 1.35304,-0.555627 5.14636,-0.555627 3.57585,0 4.20405,0.04831 5.00138,0.483153 z" fill="currentColor"></path></svg><!--/$--></span>Next.js 14 та App Router</span></a><a aria-label="15" href="/uk/doc/environment/nextjs/15" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg width="800px" height="800px" viewBox="0 0 256 256" version="1.1" preserveAspectRatio="xMidYMid" fill="currentColor" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Nextjs logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m 119.90598,4.4814875 c -0.53154,0.048313 -2.22282,0.2174192 -3.745,0.3382075 C 81.054703,7.9843533 48.17125,26.923985 27.344258,56.034007 15.746859,72.219661 8.329357,90.57951 5.5266527,110.02645 c -0.9906106,6.78831 -1.1114168,8.7934 -1.1114168,17.99748 0,9.20409 0.1208062,11.20918 1.1114168,17.99749 6.7168263,46.40692 39.7452473,85.39745 84.5401943,99.84374 8.021533,2.58488 16.477973,4.34839 26.094133,5.41133 3.745,0.41069 19.93304,0.41069 23.67803,0 16.59877,-1.83598 30.66062,-5.94279 44.52917,-13.021 2.12619,-1.08709 2.53693,-1.37699 2.247,-1.61856 -0.19329,-0.14494 -9.25375,-12.29627 -20.12631,-26.98414 l -19.7639,-26.69426 -24.76528,-36.64721 c -13.62694,-20.14753 -24.83776,-36.62307 -24.934405,-36.62307 -0.09665,-0.0242 -0.19329,16.25813 -0.241612,36.13991 -0.07248,34.81123 -0.09665,36.21238 -0.531547,37.03375 -0.628193,1.18372 -1.111418,1.66687 -2.12619,2.19834 -0.77316,0.38652 -1.449674,0.459 -5.098022,0.459 h -4.179896 l -1.111416,-0.70058 c -0.724838,-0.45899 -1.256386,-1.06293 -1.618805,-1.7635 l -0.507385,-1.08711 0.04832,-48.43617 0.07249,-48.460335 0.748999,-0.94215 c 0.386579,-0.507311 1.208061,-1.159569 1.787931,-1.47362 0.990612,-0.483153 1.377191,-0.531468 5.557087,-0.531468 4.928894,0 5.750376,0.193262 7.030921,1.594408 0.36242,0.386523 13.7719,20.582355 29.81498,44.909155 16.04305,24.3268 37.98146,57.54363 48.75739,73.85007 l 19.5706,29.64148 0.99061,-0.65225 c 8.77054,-5.70121 18.04845,-13.81819 25.39347,-22.27339 15.63232,-17.94917 25.70756,-39.83604 29.09014,-63.17237 0.99062,-6.78831 1.11141,-8.7934 1.11141,-17.99749 0,-9.20408 -0.12079,-11.20917 -1.11141,-17.99748 C 243.75652,63.619523 210.72809,24.629005 165.93316,10.182703 158.03243,7.6219874 149.62432,5.8584758 140.20143,4.7955375 137.88194,4.5539609 121.91136,4.2882259 119.90598,4.4814875 Z m 50.59365,74.7439055 c 1.15974,0.579785 2.10202,1.691038 2.44028,2.850608 0.1933,0.6281 0.24162,14.059778 0.1933,44.329369 l -0.0725,43.43554 -7.65911,-11.74064 -7.68328,-11.74064 v -31.57411 c 0,-20.413252 0.0966,-31.888157 0.24161,-32.443785 0.38658,-1.352829 1.23223,-2.415769 2.39196,-3.043868 0.99061,-0.507311 1.35304,-0.555627 5.14636,-0.555627 3.57585,0 4.20405,0.04831 5.00138,0.483153 z" fill="currentColor"></path></svg><!--/$--></span>Next.js 15</span></a><a aria-label="no-locale-path" href="/uk/doc/environment/nextjs/no-locale-path" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg width="800px" height="800px" viewBox="0 0 256 256" version="1.1" preserveAspectRatio="xMidYMid" fill="currentColor" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Nextjs logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m 119.90598,4.4814875 c -0.53154,0.048313 -2.22282,0.2174192 -3.745,0.3382075 C 81.054703,7.9843533 48.17125,26.923985 27.344258,56.034007 15.746859,72.219661 8.329357,90.57951 5.5266527,110.02645 c -0.9906106,6.78831 -1.1114168,8.7934 -1.1114168,17.99748 0,9.20409 0.1208062,11.20918 1.1114168,17.99749 6.7168263,46.40692 39.7452473,85.39745 84.5401943,99.84374 8.021533,2.58488 16.477973,4.34839 26.094133,5.41133 3.745,0.41069 19.93304,0.41069 23.67803,0 16.59877,-1.83598 30.66062,-5.94279 44.52917,-13.021 2.12619,-1.08709 2.53693,-1.37699 2.247,-1.61856 -0.19329,-0.14494 -9.25375,-12.29627 -20.12631,-26.98414 l -19.7639,-26.69426 -24.76528,-36.64721 c -13.62694,-20.14753 -24.83776,-36.62307 -24.934405,-36.62307 -0.09665,-0.0242 -0.19329,16.25813 -0.241612,36.13991 -0.07248,34.81123 -0.09665,36.21238 -0.531547,37.03375 -0.628193,1.18372 -1.111418,1.66687 -2.12619,2.19834 -0.77316,0.38652 -1.449674,0.459 -5.098022,0.459 h -4.179896 l -1.111416,-0.70058 c -0.724838,-0.45899 -1.256386,-1.06293 -1.618805,-1.7635 l -0.507385,-1.08711 0.04832,-48.43617 0.07249,-48.460335 0.748999,-0.94215 c 0.386579,-0.507311 1.208061,-1.159569 1.787931,-1.47362 0.990612,-0.483153 1.377191,-0.531468 5.557087,-0.531468 4.928894,0 5.750376,0.193262 7.030921,1.594408 0.36242,0.386523 13.7719,20.582355 29.81498,44.909155 16.04305,24.3268 37.98146,57.54363 48.75739,73.85007 l 19.5706,29.64148 0.99061,-0.65225 c 8.77054,-5.70121 18.04845,-13.81819 25.39347,-22.27339 15.63232,-17.94917 25.70756,-39.83604 29.09014,-63.17237 0.99062,-6.78831 1.11141,-8.7934 1.11141,-17.99749 0,-9.20408 -0.12079,-11.20917 -1.11141,-17.99748 C 243.75652,63.619523 210.72809,24.629005 165.93316,10.182703 158.03243,7.6219874 149.62432,5.8584758 140.20143,4.7955375 137.88194,4.5539609 121.91136,4.2882259 119.90598,4.4814875 Z m 50.59365,74.7439055 c 1.15974,0.579785 2.10202,1.691038 2.44028,2.850608 0.1933,0.6281 0.24162,14.059778 0.1933,44.329369 l -0.0725,43.43554 -7.65911,-11.74064 -7.68328,-11.74064 v -31.57411 c 0,-20.413252 0.0966,-31.888157 0.24161,-32.443785 0.38658,-1.352829 1.23223,-2.415769 2.39196,-3.043868 0.99061,-0.507311 1.35304,-0.555627 5.14636,-0.555627 3.57585,0 4.20405,0.04831 5.00138,0.483153 z" fill="currentColor"></path></svg><!--/$--></span>Next.js без locale URL</span></a><a aria-label="next-with-Page-Router" href="/uk/doc/environment/nextjs/next-with-page-router" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg width="800px" height="800px" viewBox="0 0 256 256" version="1.1" preserveAspectRatio="xMidYMid" fill="currentColor" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Nextjs logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m 119.90598,4.4814875 c -0.53154,0.048313 -2.22282,0.2174192 -3.745,0.3382075 C 81.054703,7.9843533 48.17125,26.923985 27.344258,56.034007 15.746859,72.219661 8.329357,90.57951 5.5266527,110.02645 c -0.9906106,6.78831 -1.1114168,8.7934 -1.1114168,17.99748 0,9.20409 0.1208062,11.20918 1.1114168,17.99749 6.7168263,46.40692 39.7452473,85.39745 84.5401943,99.84374 8.021533,2.58488 16.477973,4.34839 26.094133,5.41133 3.745,0.41069 19.93304,0.41069 23.67803,0 16.59877,-1.83598 30.66062,-5.94279 44.52917,-13.021 2.12619,-1.08709 2.53693,-1.37699 2.247,-1.61856 -0.19329,-0.14494 -9.25375,-12.29627 -20.12631,-26.98414 l -19.7639,-26.69426 -24.76528,-36.64721 c -13.62694,-20.14753 -24.83776,-36.62307 -24.934405,-36.62307 -0.09665,-0.0242 -0.19329,16.25813 -0.241612,36.13991 -0.07248,34.81123 -0.09665,36.21238 -0.531547,37.03375 -0.628193,1.18372 -1.111418,1.66687 -2.12619,2.19834 -0.77316,0.38652 -1.449674,0.459 -5.098022,0.459 h -4.179896 l -1.111416,-0.70058 c -0.724838,-0.45899 -1.256386,-1.06293 -1.618805,-1.7635 l -0.507385,-1.08711 0.04832,-48.43617 0.07249,-48.460335 0.748999,-0.94215 c 0.386579,-0.507311 1.208061,-1.159569 1.787931,-1.47362 0.990612,-0.483153 1.377191,-0.531468 5.557087,-0.531468 4.928894,0 5.750376,0.193262 7.030921,1.594408 0.36242,0.386523 13.7719,20.582355 29.81498,44.909155 16.04305,24.3268 37.98146,57.54363 48.75739,73.85007 l 19.5706,29.64148 0.99061,-0.65225 c 8.77054,-5.70121 18.04845,-13.81819 25.39347,-22.27339 15.63232,-17.94917 25.70756,-39.83604 29.09014,-63.17237 0.99062,-6.78831 1.11141,-8.7934 1.11141,-17.99749 0,-9.20408 -0.12079,-11.20917 -1.11141,-17.99748 C 243.75652,63.619523 210.72809,24.629005 165.93316,10.182703 158.03243,7.6219874 149.62432,5.8584758 140.20143,4.7955375 137.88194,4.5539609 121.91136,4.2882259 119.90598,4.4814875 Z m 50.59365,74.7439055 c 1.15974,0.579785 2.10202,1.691038 2.44028,2.850608 0.1933,0.6281 0.24162,14.059778 0.1933,44.329369 l -0.0725,43.43554 -7.65911,-11.74064 -7.68328,-11.74064 v -31.57411 c 0,-20.413252 0.0966,-31.888157 0.24161,-32.443785 0.38658,-1.352829 1.23223,-2.415769 2.39196,-3.043868 0.99061,-0.507311 1.35304,-0.555627 5.14636,-0.555627 3.57585,0 4.20405,0.04831 5.00138,0.483153 z" fill="currentColor"></path></svg><!--/$--></span>Next.js та Page Router</span></a><a aria-label="next-with-compiler" href="/uk/doc/environment/nextjs/compiler" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg width="800px" height="800px" viewBox="0 0 256 256" version="1.1" preserveAspectRatio="xMidYMid" fill="currentColor" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Nextjs logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m 119.90598,4.4814875 c -0.53154,0.048313 -2.22282,0.2174192 -3.745,0.3382075 C 81.054703,7.9843533 48.17125,26.923985 27.344258,56.034007 15.746859,72.219661 8.329357,90.57951 5.5266527,110.02645 c -0.9906106,6.78831 -1.1114168,8.7934 -1.1114168,17.99748 0,9.20409 0.1208062,11.20918 1.1114168,17.99749 6.7168263,46.40692 39.7452473,85.39745 84.5401943,99.84374 8.021533,2.58488 16.477973,4.34839 26.094133,5.41133 3.745,0.41069 19.93304,0.41069 23.67803,0 16.59877,-1.83598 30.66062,-5.94279 44.52917,-13.021 2.12619,-1.08709 2.53693,-1.37699 2.247,-1.61856 -0.19329,-0.14494 -9.25375,-12.29627 -20.12631,-26.98414 l -19.7639,-26.69426 -24.76528,-36.64721 c -13.62694,-20.14753 -24.83776,-36.62307 -24.934405,-36.62307 -0.09665,-0.0242 -0.19329,16.25813 -0.241612,36.13991 -0.07248,34.81123 -0.09665,36.21238 -0.531547,37.03375 -0.628193,1.18372 -1.111418,1.66687 -2.12619,2.19834 -0.77316,0.38652 -1.449674,0.459 -5.098022,0.459 h -4.179896 l -1.111416,-0.70058 c -0.724838,-0.45899 -1.256386,-1.06293 -1.618805,-1.7635 l -0.507385,-1.08711 0.04832,-48.43617 0.07249,-48.460335 0.748999,-0.94215 c 0.386579,-0.507311 1.208061,-1.159569 1.787931,-1.47362 0.990612,-0.483153 1.377191,-0.531468 5.557087,-0.531468 4.928894,0 5.750376,0.193262 7.030921,1.594408 0.36242,0.386523 13.7719,20.582355 29.81498,44.909155 16.04305,24.3268 37.98146,57.54363 48.75739,73.85007 l 19.5706,29.64148 0.99061,-0.65225 c 8.77054,-5.70121 18.04845,-13.81819 25.39347,-22.27339 15.63232,-17.94917 25.70756,-39.83604 29.09014,-63.17237 0.99062,-6.78831 1.11141,-8.7934 1.11141,-17.99749 0,-9.20408 -0.12079,-11.20917 -1.11141,-17.99748 C 243.75652,63.619523 210.72809,24.629005 165.93316,10.182703 158.03243,7.6219874 149.62432,5.8584758 140.20143,4.7955375 137.88194,4.5539609 121.91136,4.2882259 119.90598,4.4814875 Z m 50.59365,74.7439055 c 1.15974,0.579785 2.10202,1.691038 2.44028,2.850608 0.1933,0.6281 0.24162,14.059778 0.1933,44.329369 l -0.0725,43.43554 -7.65911,-11.74064 -7.68328,-11.74064 v -31.57411 c 0,-20.413252 0.0966,-31.888157 0.24161,-32.443785 0.38658,-1.352829 1.23223,-2.415769 2.39196,-3.043868 0.99061,-0.507311 1.35304,-0.555627 5.14636,-0.555627 3.57585,0 4.20405,0.04831 5.00138,0.483153 z" fill="currentColor"></path></svg><!--/$--></span>Compiler</span></a></div></div></div></div></div></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_a8qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="tanstack-start" href="/uk/doc/environment/tanstack-start" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg height="660" viewBox="0 0 663 660" width="663" xmlns="http://www.w3.org/2000/svg" fill="currentColor" role="img" aria-label="Tanstack logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m305.114318.62443771c8.717817-1.14462121 17.926803-.36545135 26.712694-.36545135 32.548987 0 64.505987 5.05339923 95.64868 14.63098274 39.74418 12.2236582 76.762804 31.7666864 109.435876 57.477568 40.046637 31.5132839 73.228974 72.8472109 94.520714 119.2362609 39.836383 86.790386 39.544267 191.973146-1.268422 278.398081-26.388695 55.880442-68.724007 102.650458-119.964986 136.75724-41.808813 27.828603-90.706831 44.862601-140.45707 50.89341-63.325458 7.677926-131.784923-3.541603-188.712259-32.729444-106.868873-54.795293-179.52309291-165.076271-180.9604082-285.932068-.27660564-23.300971.08616998-46.74071 4.69884909-69.814998 7.51316071-37.57857 20.61272131-73.903917 40.28618971-106.877282 21.2814003-35.670293 48.7704861-67.1473767 81.6882804-92.5255597 38.602429-29.7610135 83.467691-51.1674988 130.978372-62.05777669 11.473831-2.62966514 22.9946-4.0869914 34.57273-5.4964306l3.658171-.44480576c3.050084-.37153079 6.104217-.74794222 9.162589-1.14972654zm-110.555861 549.44131429c-14.716752 1.577863-30.238964 4.25635-42.869928 12.522173 2.84343.683658 6.102369.004954 9.068638 0 7.124652-.011559 14.317732-.279903 21.434964.032202 17.817402.781913 36.381729 3.63214 53.58741 8.350042 22.029372 6.040631 41.432961 17.928687 62.656049 25.945156 22.389644 8.456554 44.67706 11.084675 68.427 11.084675 11.96813 0 23.845573-.035504 35.450133-3.302696-6.056202-3.225083-14.72582-2.619864-21.434964-3.963236-14.556814-2.915455-28.868774-6.474936-42.869928-11.470264-10.304996-3.676672-20.230803-8.214291-30.11097-12.848661l-6.348531-2.985046c-9.1705-4.309263-18.363277-8.560752-27.845391-12.142608-24.932161-9.418465-52.560181-14.071964-79.144482-11.221737zm22.259385-62.614168c-29.163917 0-58.660076 5.137344-84.915434 18.369597-6.361238 3.206092-12.407546 7.02566-18.137277 11.258891-1.746125 1.290529-4.841829 2.948483-5.487351 5.191839-.654591 2.275558 1.685942 4.182039 3.014086 5.637703 6.562396-3.497556 12.797498-7.199878 19.78612-9.855246 45.19892-17.169893 99.992458-13.570779 145.098218 2.172348 22.494346 7.851335 43.219483 19.592421 65.129314 28.800338 24.503461 10.297807 49.53043 16.975034 75.846795 20.399104 31.04195 4.037546 66.433549.7654 94.808495-13.242161 9.970556-4.921843 23.814245-12.422267 28.030337-23.320339-5.207047.454947-9.892236 2.685918-14.83959 4.224149-7.866632 2.445646-15.827248 4.51974-23.908229 6.138887-27.388113 5.486604-56.512458 6.619429-84.091013 1.639788-25.991939-4.693152-50.142596-14.119246-74.179513-24.03502l-3.068058-1.268177c-2.045137-.846788-4.089983-1.695816-6.135603-2.544467l-3.069142-1.272366c-12.279956-5.085721-24.606928-10.110797-37.210937-14.51024-24.485325-8.546552-50.726667-13.784628-76.671218-13.784628zm51.114145-447.9909432c-34.959602 7.7225298-66.276908 22.7605319-96.457338 41.7180089-17.521434 11.0054099-34.281927 22.2799893-49.465301 36.4444283-22.5792616 21.065423-39.8360564 46.668751-54.8866988 73.411509-15.507372 27.55357-25.4498976 59.665686-30.2554517 90.824149-4.7140432 30.568106-5.4906485 62.70747-.0906864 93.301172 6.7503648 38.248526 19.5989769 74.140579 39.8896436 107.337631 6.8187918-3.184625 11.659796-10.445603 17.3128555-15.336896 11.4149428-9.875888 23.3995608-19.029311 36.2745548-26.928535 4.765981-2.923712 9.662222-5.194315 14.83959-7.275014 1.953055-.785216 5.14604-1.502727 6.06527-3.647828 1.460876-3.406732-1.240754-9.335897-1.704904-12.865654-1.324845-10.095517-2.124534-20.362774-1.874735-30.549941.725492-29.668947 6.269727-59.751557 16.825623-87.521453 7.954845-20.924233 20.10682-39.922168 34.502872-56.971512 4.884699-5.785498 10.077731-11.170545 15.437296-16.512656 3.167428-3.157378 7.098271-5.858983 9.068639-9.908915-10.336599.006606-20.674847 2.987289-30.503603 6.013385-21.174447 6.519522-41.801477 16.19312-59.358362 29.841512-8.008432 6.226409-13.873368 14.387371-21.44733 20.939921-2.32322 2.010516-6.484901 4.704691-9.695199 3.187928-4.8500728-2.29042-4.1014979-11.835213-4.6571581-16.222019-2.1369011-16.873476 4.2548401-38.216325 12.3778671-52.843142 13.039878-23.479694 37.150915-43.528712 65.467327-42.82854 12.228647.302197 22.934587 4.551115 34.625711 7.324555-2.964621-4.211764-6.939158-7.28162-10.717482-10.733763-9.257431-8.459031-19.382979-16.184864-30.503603-22.028985-4.474136-2.350694-9.291232-3.77911-14.015169-5.506421-2.375159-.867783-5.36616-2.062533-6.259834-4.702213-1.654614-4.888817 7.148561-9.416813 10.381943-11.478522 12.499882-7.969406 27.826705-14.525258 42.869928-14.894334 23.509209-.577147 46.479246 12.467678 56.162903 34.665926 3.404469 7.803171 4.411273 16.054969 5.079109 24.382907l.121749 1.56229.174325 2.345587c.01913.260708.038244.521433.057403.782164l.11601 1.56437.120128 1.563971c7.38352-6.019164 12.576553-14.876995 19.78612-21.323859 16.861073-15.07846 39.936636-21.7722 61.831627-14.984333 19.786945 6.133107 36.984382 19.788105 47.105807 37.959541 2.648042 4.754231 10.035685 16.373942 4.698379 21.109183-4.177345 3.707277-9.475079.818243-13.880788-.719162-3.33605-1.16376-6.782939-1.90214-10.241828-2.585698l-1.887262-.369639c-.629089-.122886-1.257979-.246187-1.886079-.372129-11.980496-2.401886-25.91652-2.152533-37.923398-.041284-7.762754 1.364839-15.349083 4.127545-23.083807 5.271929v1.651348c21.149714.175043 41.608563 12.240618 52.043268 30.549941 4.323267 7.585468 6.482428 16.267431 8.138691 24.770223 2.047864 10.50918.608423 21.958802-2.263037 32.201289-.962925 3.433979-2.710699 9.255807-6.817143 10.046802-2.902789.558982-5.36781-2.330878-7.024898-4.279468-4.343878-5.10762-8.475879-9.96341-13.573278-14.374161-12.895604-11.157333-26.530715-21.449361-40.396663-31.373138-7.362086-5.269452-15.425755-12.12007-23.908229-15.340199 2.385052 5.745041 4.721463 11.086326 5.532694 17.339156 2.385876 18.392716-5.314223 35.704625-16.87179 49.540445-3.526876 4.222498-7.29943 8.475545-11.744712 11.755948-1.843407 1.360711-4.156734 3.137561-6.595373 2.752797-7.645687-1.207961-8.555849-12.73272-9.728176-18.637115-3.970415-19.998652-2.375984-39.861068 3.132802-59.448534-4.901187 2.485279-8.443727 7.923994-11.521293 12.385111-6.770975 9.816439-12.645804 20.199291-16.858599 31.375615-16.777806 44.519521-16.616219 96.664142 5.118834 139.523233 2.427098 4.786433 6.110614 4.144058 10.894733 4.144058.720854 0 1.44257-.004515 2.164851-.010924l2.168232-.022283c4.338648-.045438 8.686803-.064635 12.979772.508795 2.227588.297243 5.320818.032202 7.084256 1.673642 2.111344 1.966755.986008 5.338808.4996 7.758859-1.358647 6.765574-1.812904 12.914369-1.812904 19.816178 9.02412-1.398692 11.525415-15.866153 14.724172-23.118874 3.624982-8.216283 7.313444-16.440823 10.667192-24.770223 1.648843-4.093692 3.854171-8.671229 3.275427-13.210785-.649644-5.10184-4.335633-10.510831-6.904531-14.862134-4.86244-8.234447-10.389363-16.70834-13.969002-25.595896-2.861567-7.104926-.197036-15.983399 7.871579-18.521521 4.450228-1.400344 9.198073 1.345848 12.094266 4.562675 6.07269 6.74328 9.992815 16.777697 14.401823 24.692609l34.394873 61.925556c2.920926 5.243856 5.848447 10.481933 8.836976 15.687808 1.165732 2.031158 2.352075 5.167068 4.740424 6.0332 2.127008.77118 5.033095-.325315 7.148561-.748886 5.492297-1.099798 10.97635-2.287117 16.488434-3.28288 6.605266-1.193099 16.673928-.969342 21.434964-6.129805-6.963066-2.205375-15.011895-2.074919-22.259386-1.577863-4.352947.298894-9.178287 1.856116-13.178381-.686135-5.953149-3.783239-9.910373-12.522173-13.552668-18.377854-8.980425-14.439388-17.441465-29.095929-26.041008-43.760726l-1.376261-2.335014-2.765943-4.665258c-1.380597-2.334387-2.750786-4.67476-4.079753-7.036188-1.02723-1.826391-2.549937-4.233231-1.078344-6.24705 1.545791-2.114476 4.91472-2.239146 7.956473-2.243117l.603351.000261c1.195428.001526 2.315572.002427 3.222811-.11692 12.27399-1.615019 24.718635-2.952611 37.098976-2.952611-.963749-3.352237-3.719791-7.141255-2.838484-10.73046 1.972017-8.030506 13.526287-10.543033 18.899867-4.780653 3.60767 3.868283 5.704174 9.192229 8.051303 13.859765 3.097352 6.162006 6.624228 12.118418 9.940876 18.16483 5.805578 10.585967 12.146205 20.881297 18.116667 31.375615.49237.865561.999687 1.726685 1.512269 2.587098l.771613 1.290552c2.577138 4.303168 5.164895 8.635123 6.553094 13.461506-20.735854-.9487-36.30176-25.018751-45.343193-41.283704-.721369 2.604176.450959 4.928448 1.388326 7.431066 1.948109 5.197619 4.276275 10.147535 7.20627 14.862134 4.184765 6.732546 8.982075 13.665732 15.313633 18.553722 11.236043 8.673707 26.05255 8.721596 39.572241 7.794364 8.669619-.595311 19.50252-4.542034 28.030338-1.864372 8.513803 2.673532 11.940924 12.063098 6.884745 19.276187-3.787393 5.403211-8.842747 7.443452-15.128962 8.257566 4.445282 9.53571 10.268996 18.385285 14.490036 28.072919 1.758491 4.035895 3.59118 10.22102 7.8048 12.350433 2.805507 1.416857 6.824562.09743 9.85761.034678-3.043765-8.053625-8.742992-14.887729-11.541904-23.118874 8.533589.390544 16.786875 4.843404 24.732651 7.685374 15.630376 5.590144 31.063836 11.701854 46.475333 17.86913l7.112077 2.848685c6.338978 2.538947 12.71588 5.052299 18.961699 7.812528 2.285297 1.009799 5.449427 3.370401 7.975455 1.917215 2.061054-1.186494 3.394144-4.015253 4.665403-5.931643 3.55573-5.361927 6.775921-10.928622 9.965609-16.513481 12.774414-22.36586 22.143967-46.872692 28.402976-71.833646 20.645168-82.323009 2.934117-173.156241-46.677107-241.922507-19.061454-26.420745-43.033164-49.262193-69.46165-68.1783861-66.13923-47.336721-152.911262-66.294198-232.486917-48.7172481zm135.205158 410.5292842c-17.532977 4.570931-35.601827 8.714164-53.58741 11.040088 2.365265 8.052799 8.145286 15.885969 12.376218 23.118874 1.635653 2.796558 3.3859 6.541816 6.618457 7.755557 3.651364 1.370619 8.063669-.853747 11.508927-1.975838-1.595256-4.364513-4.279573-8.292245-6.476657-12.385112-.905215-1.687677-2.305907-3.685809-1.559805-5.68972 1.410585-3.786541 7.266452-3.563609 10.509727-4.221671 8.54678-1.733916 17.004522-3.898008 25.557073-5.611281 3.150939-.631641 7.538512-2.342438 10.705115-1.285575 2.371037.791232 3.800147 2.744743 5.152304 4.781948l.606196.918752c.80912 1.222827 1.637246 2.41754 2.671212 3.351165 3.457625 3.121874 8.628398 3.60159 13.017619 4.453686-2.678546-6.027421-7.130424-11.301001-9.984571-17.339156-1.659561-3.511592-3.023155-8.677834-6.656381-10.707341-5.005064-2.795733-15.341663 2.461334-20.458024 3.795624zm-110.472507-40.151706c-.825246 10.467897-4.036369 18.984725-9.068639 28.072919 5.76683.729896 11.649079.989984 17.312856 2.39363 4.244947 1.051908 8.156828 3.058296 12.366325 4.211763-2.250671-6.157877-6.426367-11.651913-9.661398-17.339156-3.266358-5.740912-6.189758-12.717032-10.949144-17.339156z" transform="translate(.9778)"></path></svg><!--/$--></span>Tanstack Start</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_a8qb9bcq_-accordion-content" aria-labelledby="_R_a8qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="tanstack-start-solid" href="/uk/doc/environment/tanstack-start/solid" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="Solid logo" style="z-index:0" class="shrink-0 size-3.5"><defs><linearGradient id="a" x1="27.5" x2="152" y1="3" y2="63.5" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#76b3e1"></stop><stop offset=".3" stop-color="#dcf2fd"></stop><stop offset="1" stop-color="#76b3e1"></stop></linearGradient><linearGradient id="b" x1="95.8" x2="74" y1="32.6" y2="105.2" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#76b3e1"></stop><stop offset=".5" stop-color="#4377bb"></stop><stop offset="1" stop-color="#1f3b77"></stop></linearGradient><linearGradient id="c" x1="18.4" x2="144.3" y1="64.2" y2="149.8" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#315aa9"></stop><stop offset=".5" stop-color="#518ac8"></stop><stop offset="1" stop-color="#315aa9"></stop></linearGradient><linearGradient id="d" x1="75.2" x2="24.4" y1="74.5" y2="260.8" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#4377bb"></stop><stop offset=".5" stop-color="#1a336b"></stop><stop offset="1" stop-color="#1a336b"></stop></linearGradient></defs><path fill="#76b3e1" d="M128 29.683S85.333-1.713 52.327 5.532l-2.415.805c-4.83 1.61-8.855 4.025-11.27 7.245l-1.61 2.415-12.076 20.931 20.93 4.025c8.856 5.636 20.127 8.05 30.592 5.636l37.031 7.245z"></path><path fill="url(#a)" d="M128 29.683S85.333-1.713 52.327 5.532l-2.415.805c-4.83 1.61-8.855 4.025-11.27 7.245l-1.61 2.415-12.076 20.931 20.93 4.025c8.856 5.636 20.127 8.05 30.592 5.636l37.031 7.245z" opacity=".3"></path><path fill="#518ac8" d="m38.642 29.683-3.22.805C21.735 34.513 17.71 47.394 24.955 58.664c8.05 10.465 24.956 16.1 38.641 12.076l49.912-16.906S70.843 22.438 38.642 29.683z"></path><path fill="url(#b)" d="m38.642 29.683-3.22.805C21.735 34.513 17.71 47.394 24.955 58.664c8.05 10.465 24.956 16.1 38.641 12.076l49.912-16.906S70.843 22.438 38.642 29.683z" opacity=".3"></path><path fill="url(#c)" d="M104.654 65.91a36.226 36.226 0 0 0-38.641-12.076L16.1 69.934 0 98.111l90.164 15.295 16.1-28.981c3.22-5.635 2.415-12.075-1.61-18.516z"></path><path fill="url(#d)" d="M88.553 94.085A36.226 36.226 0 0 0 49.912 82.01L0 98.11s42.667 32.202 75.673 24.152l2.415-.806c13.686-4.025 18.516-16.905 10.465-27.37z"></path></svg><!--/$--></span>Tanstack Start Solid</span></a></div></div></div></div></div></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_e8qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="astro" href="/uk/doc/environment/astro" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg viewBox="0 0 85 107" role="img" aria-label="Astro logo" xmlns="http://www.w3.org/2000/svg" fill="currentColor" style="z-index:0" class="shrink-0 size-3.5"><path d="M27.5894 91.1365C22.7555 86.7178 21.3444 77.4335 23.3583 70.7072C26.8503 74.948 31.6888 76.2914 36.7005 77.0497C44.4375 78.2199 52.0359 77.7822 59.2232 74.2459C60.0454 73.841 60.8052 73.3027 61.7036 72.7574C62.378 74.714 62.5535 76.6892 62.318 78.6996C61.7452 83.5957 59.3086 87.3778 55.4332 90.2448C53.8835 91.3916 52.2437 92.4167 50.6432 93.4979C45.7262 96.8213 44.3959 100.718 46.2435 106.386C46.2874 106.525 46.3267 106.663 46.426 107C43.9155 105.876 42.0817 104.24 40.6845 102.089C39.2087 99.8193 38.5066 97.3081 38.4696 94.5909C38.4511 93.2686 38.4511 91.9345 38.2733 90.6309C37.8391 87.4527 36.3471 86.0297 33.5364 85.9478C30.6518 85.8636 28.37 87.6469 27.7649 90.4554C27.7187 90.6707 27.6517 90.8837 27.5847 91.1341L27.5894 91.1365Z" fill="currentColor"></path><path d="M27.5894 91.1365C22.7555 86.7178 21.3444 77.4335 23.3583 70.7072C26.8503 74.948 31.6888 76.2914 36.7005 77.0497C44.4375 78.2199 52.0359 77.7822 59.2232 74.2459C60.0454 73.841 60.8052 73.3027 61.7036 72.7574C62.378 74.714 62.5535 76.6892 62.318 78.6996C61.7452 83.5957 59.3086 87.3778 55.4332 90.2448C53.8835 91.3916 52.2437 92.4167 50.6432 93.4979C45.7262 96.8213 44.3959 100.718 46.2435 106.386C46.2874 106.525 46.3267 106.663 46.426 107C43.9155 105.876 42.0817 104.24 40.6845 102.089C39.2087 99.8193 38.5066 97.3081 38.4696 94.5909C38.4511 93.2686 38.4511 91.9345 38.2733 90.6309C37.8391 87.4527 36.3471 86.0297 33.5364 85.9478C30.6518 85.8636 28.37 87.6469 27.7649 90.4554C27.7187 90.6707 27.6517 90.8837 27.5847 91.1341L27.5894 91.1365Z" fill="url(#paint0_linear_1_59)"></path><path d="M0 69.5866C0 69.5866 14.3139 62.6137 28.6678 62.6137L39.4901 29.1204C39.8953 27.5007 41.0783 26.3999 42.4139 26.3999C43.7495 26.3999 44.9325 27.5007 45.3377 29.1204L56.1601 62.6137C73.1601 62.6137 84.8278 69.5866 84.8278 69.5866C84.8278 69.5866 60.5145 3.35233 60.467 3.21944C59.7692 1.2612 58.5911 0 57.0029 0H27.8274C26.2392 0 25.1087 1.2612 24.3634 3.21944C24.3108 3.34983 0 69.5866 0 69.5866Z" fill="currentColor"></path><defs><linearGradient id="paint0_linear_1_59" x1="22.4702" y1="107" x2="69.1451" y2="84.9468" gradientUnits="userSpaceOnUse"><stop stop-color="#D83333"></stop><stop offset="1" stop-color="#F041FF"></stop></linearGradient></defs></svg><!--/$--></span>Astro</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_e8qb9bcq_-accordion-content" aria-labelledby="_R_e8qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="astro-and-react" href="/uk/doc/environment/astro/react" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="175.7 78 490.6 436.9" role="img" aria-label="React logo" style="z-index:0" class="shrink-0 size-3.5"><g fill="#61dafb"><path d="m666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9v-22.3c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6v-22.3c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zm-101.4 106.7c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24s9.5 15.8 14.4 23.4zm73.9-208.1c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6s22.9-35.6 58.3-50.6c8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zm53.8 142.9c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6z"></path><circle cx="420.9" cy="296.5" r="45.7"></circle></g></svg><!--/$--></span>Astro та React</span></a><a aria-label="astro-and-svelte" href="/uk/doc/environment/astro/svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="10 10 130 130" role="img" aria-label="Svelte logo" style="z-index:0" class="shrink-0 size-3.5"><path style="fill:none" d="M0,.2H150v150H0Z" transform="translate(0 -0.2)"></path><path style="fill:#FF3E00" d="M120.85,29.22v-.09C109.38,12.72,86.74,7.86,70.36,18.29L41.61,36.61a32.94,32.94,0,0,0-14.9,22A34.73,34.73,0,0,0,30.12,81,33.12,33.12,0,0,0,25.19,93.3a35.19,35.19,0,0,0,6,26.6c11.47,16.4,34.12,21.27,50.49,10.84l28.75-18.25a33.08,33.08,0,0,0,14.91-22,34.79,34.79,0,0,0-3.43-22.31,33.14,33.14,0,0,0,4.94-12.32A35.16,35.16,0,0,0,120.85,29.22Zm-8.23,23.46a22.87,22.87,0,0,1-.68,2.68L111.39,57l-1.47-1.1a37.31,37.31,0,0,0-11.24-5.63L97.57,50l.1-1.1a6.47,6.47,0,0,0-1.16-4.28,6.88,6.88,0,0,0-7.35-2.65,6,6,0,0,0-1.76.77L58.63,61a6,6,0,0,0-2.7,4A6.44,6.44,0,0,0,57,69.82a6.89,6.89,0,0,0,7.33,2.74,6.44,6.44,0,0,0,1.76-.78l11-7A20.75,20.75,0,0,1,83,62.22a22.83,22.83,0,0,1,24.51,9.09,21.09,21.09,0,0,1,3.61,16,19.8,19.8,0,0,1-9,13.29L73.4,118.92a21.53,21.53,0,0,1-5.85,2.57A22.87,22.87,0,0,1,43,112.39a21.14,21.14,0,0,1-3.6-16,18.39,18.39,0,0,1,.68-2.65l.54-1.66,1.48,1.1a37.25,37.25,0,0,0,11.21,5.58l1.1.32-.09,1.11a6.43,6.43,0,0,0,1.2,4.24,6.86,6.86,0,0,0,7.38,2.73,6.06,6.06,0,0,0,1.77-.77L93.41,88.08a6,6,0,0,0,2.7-4A6.36,6.36,0,0,0,95,79.25a6.9,6.9,0,0,0-7.39-2.74,6.31,6.31,0,0,0-1.76.78l-11,7A21.05,21.05,0,0,1,69,86.84a22.84,22.84,0,0,1-24.48-9.08,21.13,21.13,0,0,1-3.58-16,19.83,19.83,0,0,1,9-13.29L78.7,30.15a21.2,21.2,0,0,1,5.8-2.56A22.85,22.85,0,0,1,109,36.69,21.09,21.09,0,0,1,112.62,52.68Z" transform="translate(0 -0.2)"></path></svg><!--/$--></span>Astro та Svelte</span></a><a aria-label="astro-and-vue" href="/uk/doc/environment/astro/vue" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="0 0 261.76 226.69" role="img" aria-label="Vuejs logo" style="z-index:0" class="shrink-0 size-3.5"><g transform="matrix(1.3333 0 0 -1.3333 -76.311 313.34)"><g transform="translate(178.06 235.01)"><path d="m0 0-22.669-39.264-22.669 39.264h-75.491l98.16-170.02 98.16 170.02z" fill="#41b883"></path></g><g transform="translate(178.06 235.01)"><path d="m0 0-22.669-39.264-22.669 39.264h-36.227l58.896-102.01 58.896 102.01z" fill="#34495e"></path></g></g></svg><!--/$--></span>Astro та Vue</span></a><a aria-label="astro-and-solid" href="/uk/doc/environment/astro/solid" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="Solid logo" style="z-index:0" class="shrink-0 size-3.5"><defs><linearGradient id="a" x1="27.5" x2="152" y1="3" y2="63.5" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#76b3e1"></stop><stop offset=".3" stop-color="#dcf2fd"></stop><stop offset="1" stop-color="#76b3e1"></stop></linearGradient><linearGradient id="b" x1="95.8" x2="74" y1="32.6" y2="105.2" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#76b3e1"></stop><stop offset=".5" stop-color="#4377bb"></stop><stop offset="1" stop-color="#1f3b77"></stop></linearGradient><linearGradient id="c" x1="18.4" x2="144.3" y1="64.2" y2="149.8" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#315aa9"></stop><stop offset=".5" stop-color="#518ac8"></stop><stop offset="1" stop-color="#315aa9"></stop></linearGradient><linearGradient id="d" x1="75.2" x2="24.4" y1="74.5" y2="260.8" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#4377bb"></stop><stop offset=".5" stop-color="#1a336b"></stop><stop offset="1" stop-color="#1a336b"></stop></linearGradient></defs><path fill="#76b3e1" d="M128 29.683S85.333-1.713 52.327 5.532l-2.415.805c-4.83 1.61-8.855 4.025-11.27 7.245l-1.61 2.415-12.076 20.931 20.93 4.025c8.856 5.636 20.127 8.05 30.592 5.636l37.031 7.245z"></path><path fill="url(#a)" d="M128 29.683S85.333-1.713 52.327 5.532l-2.415.805c-4.83 1.61-8.855 4.025-11.27 7.245l-1.61 2.415-12.076 20.931 20.93 4.025c8.856 5.636 20.127 8.05 30.592 5.636l37.031 7.245z" opacity=".3"></path><path fill="#518ac8" d="m38.642 29.683-3.22.805C21.735 34.513 17.71 47.394 24.955 58.664c8.05 10.465 24.956 16.1 38.641 12.076l49.912-16.906S70.843 22.438 38.642 29.683z"></path><path fill="url(#b)" d="m38.642 29.683-3.22.805C21.735 34.513 17.71 47.394 24.955 58.664c8.05 10.465 24.956 16.1 38.641 12.076l49.912-16.906S70.843 22.438 38.642 29.683z" opacity=".3"></path><path fill="url(#c)" d="M104.654 65.91a36.226 36.226 0 0 0-38.641-12.076L16.1 69.934 0 98.111l90.164 15.295 16.1-28.981c3.22-5.635 2.415-12.075-1.61-18.516z"></path><path fill="url(#d)" d="M88.553 94.085A36.226 36.226 0 0 0 49.912 82.01L0 98.11s42.667 32.202 75.673 24.152l2.415-.806c13.686-4.025 18.516-16.905 10.465-27.37z"></path></svg><!--/$--></span>Astro та Solid</span></a><a aria-label="astro-and-preact" href="/uk/doc/environment/astro/preact" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" aria-label="Preact" role="img" viewBox="0 0 512 512" style="z-index:0" class="shrink-0 size-3.5"><g transform="translate(256,256)"><path d="M0,-256 222,-128 222,128 0,256 -222,128 -222,-128z" fill="#673ab8"></path><ellipse cx="0" cy="0" stroke-width="16" rx="75" ry="196" fill="none" stroke="#ffffff" transform="rotate(52.5)"></ellipse><ellipse cx="0" cy="0" stroke-width="16" rx="75" ry="196" fill="none" stroke="#ffffff" transform="rotate(-52.5)"></ellipse><circle cx="0" cy="0" r="34" fill="#ffffff"></circle></g></svg><!--/$--></span>Astro та Preact</span></a><a aria-label="astro-and-lit" href="/uk/doc/environment/astro/lit" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg style="z-index:0" class="shrink-0 size-3.5" viewBox="0 0 256 320" preserveAspectRatio="xMidYMid" role="img" aria-label="Lit"><path fill="#00E8FF" d="m64 192 25.926-44.727 38.233-19.114 63.974 63.974 10.833 61.754L192 320l-64-64-38.074-25.615z"></path><path d="M128 256V128l64-64v128l-64 64ZM0 256l64 64 9.202-60.602L64 192l-37.542 23.71L0 256Z" fill="#283198"></path><path d="M64 192V64l64-64v128l-64 64Zm128 128V192l64-64v128l-64 64ZM0 256V128l64 64-64 64Z" fill="#324FFF"></path><path fill="#0FF" d="M64 320V192l64 64z"></path></svg><!--/$--></span>Astro та Lit</span></a><a aria-label="astro-and-vanilla-js" href="/uk/doc/environment/astro/vanilla" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg style="z-index:0" class="shrink-0 size-3.5" viewBox="0 0 1052 1052" role="img" aria-label="Vanilla JavaScript logo"><path fill="#f0db4f" d="M0 0h1052v1052H0z"></path><path d="M965.9 801.1c-7.7-48-39-88.3-131.7-125.9-32.2-14.8-68.1-25.399-78.8-49.8-3.8-14.2-4.3-22.2-1.9-30.8 6.9-27.9 40.2-36.6 66.6-28.6 17 5.7 33.1 18.801 42.8 39.7 45.4-29.399 45.3-29.2 77-49.399-11.6-18-17.8-26.301-25.4-34-27.3-30.5-64.5-46.2-124-45-10.3 1.3-20.699 2.699-31 4-29.699 7.5-58 23.1-74.6 44-49.8 56.5-35.6 155.399 25 196.1 59.7 44.8 147.4 55 158.6 96.9 10.9 51.3-37.699 67.899-86 62-35.6-7.4-55.399-25.5-76.8-58.4-39.399 22.8-39.399 22.8-79.899 46.1 9.6 21 19.699 30.5 35.8 48.7 76.2 77.3 266.899 73.5 301.1-43.5 1.399-4.001 10.6-30.801 3.199-72.101zm-394-317.6h-98.4c0 85-.399 169.4-.399 254.4 0 54.1 2.8 103.7-6 118.9-14.4 29.899-51.7 26.2-68.7 20.399-17.3-8.5-26.1-20.6-36.3-37.699-2.8-4.9-4.9-8.7-5.601-9-26.699 16.3-53.3 32.699-80 49 13.301 27.3 32.9 51 58 66.399 37.5 22.5 87.9 29.4 140.601 17.3 34.3-10 63.899-30.699 79.399-62.199 22.4-41.3 17.6-91.3 17.4-146.6.5-90.2 0-180.4 0-270.9z" fill="#323330"></path></svg><!--/$--></span>Astro та Vanilla JS</span></a></div></div></div></div></div></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_i8qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="vite-and-react" href="/uk/doc/environment/vite-and-react" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="175.7 78 490.6 436.9" role="img" aria-label="React logo" style="z-index:0" class="shrink-0 size-3.5"><g fill="#61dafb"><path d="m666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9v-22.3c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6v-22.3c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zm-101.4 106.7c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24s9.5 15.8 14.4 23.4zm73.9-208.1c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6s22.9-35.6 58.3-50.6c8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zm53.8 142.9c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6z"></path><circle cx="420.9" cy="296.5" r="45.7"></circle></g></svg><!--/$--></span>Vite та React</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_i8qb9bcq_-accordion-content" aria-labelledby="_R_i8qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="react-router-v7" href="/uk/doc/environment/vite-and-react/react-router-v7" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="175.7 78 490.6 436.9" role="img" aria-label="React logo" style="z-index:0" class="shrink-0 size-3.5"><g fill="#61dafb"><path d="m666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9v-22.3c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6v-22.3c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zm-101.4 106.7c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24s9.5 15.8 14.4 23.4zm73.9-208.1c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6s22.9-35.6 58.3-50.6c8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zm53.8 142.9c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6z"></path><circle cx="420.9" cy="296.5" r="45.7"></circle></g></svg><!--/$--></span>React Router v7</span></a><a aria-label="react-router-v7-fs-routes" href="/uk/doc/environment/vite-and-react/react-router-v7-fs-routes" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="175.7 78 490.6 436.9" role="img" aria-label="React logo" style="z-index:0" class="shrink-0 size-3.5"><g fill="#61dafb"><path d="m666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9v-22.3c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6v-22.3c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zm-101.4 106.7c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24s9.5 15.8 14.4 23.4zm73.9-208.1c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6s22.9-35.6 58.3-50.6c8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zm53.8 142.9c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6z"></path><circle cx="420.9" cy="296.5" r="45.7"></circle></g></svg><!--/$--></span>React Router v7 (fs-routes)</span></a><a aria-label="compiler" href="/uk/doc/environment/vite-and-react/compiler" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="175.7 78 490.6 436.9" role="img" aria-label="React logo" style="z-index:0" class="shrink-0 size-3.5"><g fill="#61dafb"><path d="m666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9v-22.3c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6v-22.3c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zm-101.4 106.7c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24s9.5 15.8 14.4 23.4zm73.9-208.1c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6s22.9-35.6 58.3-50.6c8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zm53.8 142.9c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6z"></path><circle cx="420.9" cy="296.5" r="45.7"></circle></g></svg><!--/$--></span>Compiler</span></a></div></div></div></div></div></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_m8qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="vite-and-vue" href="/uk/doc/environment/vite-and-vue" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="0 0 261.76 226.69" role="img" aria-label="Vuejs logo" style="z-index:0" class="shrink-0 size-3.5"><g transform="matrix(1.3333 0 0 -1.3333 -76.311 313.34)"><g transform="translate(178.06 235.01)"><path d="m0 0-22.669-39.264-22.669 39.264h-75.491l98.16-170.02 98.16 170.02z" fill="#41b883"></path></g><g transform="translate(178.06 235.01)"><path d="m0 0-22.669-39.264-22.669 39.264h-36.227l58.896-102.01 58.896 102.01z" fill="#34495e"></path></g></g></svg><!--/$--></span>Vite та Vue</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_m8qb9bcq_-accordion-content" aria-labelledby="_R_m8qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="nuxt-and-vue" href="/uk/doc/environment/nuxt-and-vue" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 298" preserveAspectRatio="xMidYMid" role="img" aria-label="Nuxt logo" style="z-index:0" class="shrink-0 size-3.5"><g fill="none" fill-rule="nonzero"><path fill="#00C58E" d="M227.92099 82.07407l-13.6889 23.7037-46.8148-81.08641L23.7037 273.58025h97.3037c0 13.0912 10.61252 23.7037 23.70371 23.7037H23.70371c-8.46771 0-16.29145-4.52017-20.5246-11.85382-4.23315-7.33366-4.23272-16.36849.00114-23.70174L146.89383 12.83951c4.23415-7.33433 12.0596-11.85252 20.5284-11.85252 8.46878 0 16.29423 4.51819 20.52839 11.85252l39.97037 69.23456z"></path><path fill="#2F495E" d="M331.6642 261.7284l-90.05432-155.95062-13.6889-23.7037-13.68888 23.7037-90.04445 155.95061c-4.23385 7.33325-4.23428 16.36808-.00113 23.70174 4.23314 7.33365 12.05689 11.85382 20.5246 11.85382h166.4c8.46946 0 16.29644-4.51525 20.532-11.84955 4.23555-7.3343 4.23606-16.37123.00132-23.706h.01976zM144.7111 273.58024L227.921 129.48148l83.19012 144.09877h-166.4z"></path><path fill="#108775" d="M396.04938 285.4321c-4.23344 7.33254-12.05656 11.85185-20.52345 11.85185H311.1111c13.0912 0 23.7037-10.6125 23.7037-23.7037h40.66173L260.09877 73.74815l-18.4889 32.02963-13.68888-23.7037L239.5753 61.8963c4.23416-7.33433 12.0596-11.85252 20.5284-11.85252 8.46879 0 16.29423 4.51819 20.52839 11.85252l115.41728 199.8321c4.23426 7.33395 4.23426 16.36975 0 23.7037z"></path></g></svg><!--/$--></span>Nuxt та Vue</span></a></div></div></div></div></div></li><li><a aria-label="vite-and-solid" href="/uk/doc/environment/vite-and-solid" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="Solid logo" style="z-index:0" class="shrink-0 size-3.5"><defs><linearGradient id="a" x1="27.5" x2="152" y1="3" y2="63.5" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#76b3e1"></stop><stop offset=".3" stop-color="#dcf2fd"></stop><stop offset="1" stop-color="#76b3e1"></stop></linearGradient><linearGradient id="b" x1="95.8" x2="74" y1="32.6" y2="105.2" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#76b3e1"></stop><stop offset=".5" stop-color="#4377bb"></stop><stop offset="1" stop-color="#1f3b77"></stop></linearGradient><linearGradient id="c" x1="18.4" x2="144.3" y1="64.2" y2="149.8" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#315aa9"></stop><stop offset=".5" stop-color="#518ac8"></stop><stop offset="1" stop-color="#315aa9"></stop></linearGradient><linearGradient id="d" x1="75.2" x2="24.4" y1="74.5" y2="260.8" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#4377bb"></stop><stop offset=".5" stop-color="#1a336b"></stop><stop offset="1" stop-color="#1a336b"></stop></linearGradient></defs><path fill="#76b3e1" d="M128 29.683S85.333-1.713 52.327 5.532l-2.415.805c-4.83 1.61-8.855 4.025-11.27 7.245l-1.61 2.415-12.076 20.931 20.93 4.025c8.856 5.636 20.127 8.05 30.592 5.636l37.031 7.245z"></path><path fill="url(#a)" d="M128 29.683S85.333-1.713 52.327 5.532l-2.415.805c-4.83 1.61-8.855 4.025-11.27 7.245l-1.61 2.415-12.076 20.931 20.93 4.025c8.856 5.636 20.127 8.05 30.592 5.636l37.031 7.245z" opacity=".3"></path><path fill="#518ac8" d="m38.642 29.683-3.22.805C21.735 34.513 17.71 47.394 24.955 58.664c8.05 10.465 24.956 16.1 38.641 12.076l49.912-16.906S70.843 22.438 38.642 29.683z"></path><path fill="url(#b)" d="m38.642 29.683-3.22.805C21.735 34.513 17.71 47.394 24.955 58.664c8.05 10.465 24.956 16.1 38.641 12.076l49.912-16.906S70.843 22.438 38.642 29.683z" opacity=".3"></path><path fill="url(#c)" d="M104.654 65.91a36.226 36.226 0 0 0-38.641-12.076L16.1 69.934 0 98.111l90.164 15.295 16.1-28.981c3.22-5.635 2.415-12.075-1.61-18.516z"></path><path fill="url(#d)" d="M88.553 94.085A36.226 36.226 0 0 0 49.912 82.01L0 98.11s42.667 32.202 75.673 24.152l2.415-.806c13.686-4.025 18.516-16.905 10.465-27.37z"></path></svg><!--/$--></span>Vite та Solid</span></a></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="true" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_u8qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="vite-and-svelte" aria-current="page" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text active" href="/uk/doc/environment/vite-and-svelte" target="_self" data-status="active"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="10 10 130 130" role="img" aria-label="Svelte logo" style="z-index:0" class="shrink-0 size-3.5"><path style="fill:none" d="M0,.2H150v150H0Z" transform="translate(0 -0.2)"></path><path style="fill:#FF3E00" d="M120.85,29.22v-.09C109.38,12.72,86.74,7.86,70.36,18.29L41.61,36.61a32.94,32.94,0,0,0-14.9,22A34.73,34.73,0,0,0,30.12,81,33.12,33.12,0,0,0,25.19,93.3a35.19,35.19,0,0,0,6,26.6c11.47,16.4,34.12,21.27,50.49,10.84l28.75-18.25a33.08,33.08,0,0,0,14.91-22,34.79,34.79,0,0,0-3.43-22.31,33.14,33.14,0,0,0,4.94-12.32A35.16,35.16,0,0,0,120.85,29.22Zm-8.23,23.46a22.87,22.87,0,0,1-.68,2.68L111.39,57l-1.47-1.1a37.31,37.31,0,0,0-11.24-5.63L97.57,50l.1-1.1a6.47,6.47,0,0,0-1.16-4.28,6.88,6.88,0,0,0-7.35-2.65,6,6,0,0,0-1.76.77L58.63,61a6,6,0,0,0-2.7,4A6.44,6.44,0,0,0,57,69.82a6.89,6.89,0,0,0,7.33,2.74,6.44,6.44,0,0,0,1.76-.78l11-7A20.75,20.75,0,0,1,83,62.22a22.83,22.83,0,0,1,24.51,9.09,21.09,21.09,0,0,1,3.61,16,19.8,19.8,0,0,1-9,13.29L73.4,118.92a21.53,21.53,0,0,1-5.85,2.57A22.87,22.87,0,0,1,43,112.39a21.14,21.14,0,0,1-3.6-16,18.39,18.39,0,0,1,.68-2.65l.54-1.66,1.48,1.1a37.25,37.25,0,0,0,11.21,5.58l1.1.32-.09,1.11a6.43,6.43,0,0,0,1.2,4.24,6.86,6.86,0,0,0,7.38,2.73,6.06,6.06,0,0,0,1.77-.77L93.41,88.08a6,6,0,0,0,2.7-4A6.36,6.36,0,0,0,95,79.25a6.9,6.9,0,0,0-7.39-2.74,6.31,6.31,0,0,0-1.76.78l-11,7A21.05,21.05,0,0,1,69,86.84a22.84,22.84,0,0,1-24.48-9.08,21.13,21.13,0,0,1-3.58-16,19.83,19.83,0,0,1,9-13.29L78.7,30.15a21.2,21.2,0,0,1,5.8-2.56A22.85,22.85,0,0,1,109,36.69,21.09,21.09,0,0,1,112.62,52.68Z" transform="translate(0 -0.2)"></path></svg><!--/$--></span>Vite та Svelte</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out rotate-0" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div role="region" class="group/height-smoother relative grid w-full overflow-hidden transition-all duration-700 ease-in-out grid-rows-[1fr] overflow-x-auto" id="_R_u8qb9bcq_-accordion-content" aria-labelledby="_R_u8qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="vite-and-svelte-kit" href="/uk/doc/environment/sveltekit" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="10 10 130 130" role="img" aria-label="Svelte logo" style="z-index:0" class="shrink-0 size-3.5"><path style="fill:none" d="M0,.2H150v150H0Z" transform="translate(0 -0.2)"></path><path style="fill:#FF3E00" d="M120.85,29.22v-.09C109.38,12.72,86.74,7.86,70.36,18.29L41.61,36.61a32.94,32.94,0,0,0-14.9,22A34.73,34.73,0,0,0,30.12,81,33.12,33.12,0,0,0,25.19,93.3a35.19,35.19,0,0,0,6,26.6c11.47,16.4,34.12,21.27,50.49,10.84l28.75-18.25a33.08,33.08,0,0,0,14.91-22,34.79,34.79,0,0,0-3.43-22.31,33.14,33.14,0,0,0,4.94-12.32A35.16,35.16,0,0,0,120.85,29.22Zm-8.23,23.46a22.87,22.87,0,0,1-.68,2.68L111.39,57l-1.47-1.1a37.31,37.31,0,0,0-11.24-5.63L97.57,50l.1-1.1a6.47,6.47,0,0,0-1.16-4.28,6.88,6.88,0,0,0-7.35-2.65,6,6,0,0,0-1.76.77L58.63,61a6,6,0,0,0-2.7,4A6.44,6.44,0,0,0,57,69.82a6.89,6.89,0,0,0,7.33,2.74,6.44,6.44,0,0,0,1.76-.78l11-7A20.75,20.75,0,0,1,83,62.22a22.83,22.83,0,0,1,24.51,9.09,21.09,21.09,0,0,1,3.61,16,19.8,19.8,0,0,1-9,13.29L73.4,118.92a21.53,21.53,0,0,1-5.85,2.57A22.87,22.87,0,0,1,43,112.39a21.14,21.14,0,0,1-3.6-16,18.39,18.39,0,0,1,.68-2.65l.54-1.66,1.48,1.1a37.25,37.25,0,0,0,11.21,5.58l1.1.32-.09,1.11a6.43,6.43,0,0,0,1.2,4.24,6.86,6.86,0,0,0,7.38,2.73,6.06,6.06,0,0,0,1.77-.77L93.41,88.08a6,6,0,0,0,2.7-4A6.36,6.36,0,0,0,95,79.25a6.9,6.9,0,0,0-7.39-2.74,6.31,6.31,0,0,0-1.76.78l-11,7A21.05,21.05,0,0,1,69,86.84a22.84,22.84,0,0,1-24.48-9.08,21.13,21.13,0,0,1-3.58-16,19.83,19.83,0,0,1,9-13.29L78.7,30.15a21.2,21.2,0,0,1,5.8-2.56A22.85,22.85,0,0,1,109,36.69,21.09,21.09,0,0,1,112.62,52.68Z" transform="translate(0 -0.2)"></path></svg><!--/$--></span>SvelteKit</span></a></div></div></div></div></div></li><li><a aria-label="vite-and-preact" href="/uk/doc/environment/vite-and-preact" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" aria-label="Preact" role="img" viewBox="0 0 512 512" style="z-index:0" class="shrink-0 size-3.5"><g transform="translate(256,256)"><path d="M0,-256 222,-128 222,128 0,256 -222,128 -222,-128z" fill="#673ab8"></path><ellipse cx="0" cy="0" stroke-width="16" rx="75" ry="196" fill="none" stroke="#ffffff" transform="rotate(52.5)"></ellipse><ellipse cx="0" cy="0" stroke-width="16" rx="75" ry="196" fill="none" stroke="#ffffff" transform="rotate(-52.5)"></ellipse><circle cx="0" cy="0" r="34" fill="#ffffff"></circle></g></svg><!--/$--></span>Vite та Preact</span></a></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_168qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="vite-and-vanilla-js" href="/uk/doc/environment/vite-and-vanilla" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg style="z-index:0" class="shrink-0 size-3.5" viewBox="0 0 1052 1052" role="img" aria-label="Vanilla JavaScript logo"><path fill="#f0db4f" d="M0 0h1052v1052H0z"></path><path d="M965.9 801.1c-7.7-48-39-88.3-131.7-125.9-32.2-14.8-68.1-25.399-78.8-49.8-3.8-14.2-4.3-22.2-1.9-30.8 6.9-27.9 40.2-36.6 66.6-28.6 17 5.7 33.1 18.801 42.8 39.7 45.4-29.399 45.3-29.2 77-49.399-11.6-18-17.8-26.301-25.4-34-27.3-30.5-64.5-46.2-124-45-10.3 1.3-20.699 2.699-31 4-29.699 7.5-58 23.1-74.6 44-49.8 56.5-35.6 155.399 25 196.1 59.7 44.8 147.4 55 158.6 96.9 10.9 51.3-37.699 67.899-86 62-35.6-7.4-55.399-25.5-76.8-58.4-39.399 22.8-39.399 22.8-79.899 46.1 9.6 21 19.699 30.5 35.8 48.7 76.2 77.3 266.899 73.5 301.1-43.5 1.399-4.001 10.6-30.801 3.199-72.101zm-394-317.6h-98.4c0 85-.399 169.4-.399 254.4 0 54.1 2.8 103.7-6 118.9-14.4 29.899-51.7 26.2-68.7 20.399-17.3-8.5-26.1-20.6-36.3-37.699-2.8-4.9-4.9-8.7-5.601-9-26.699 16.3-53.3 32.699-80 49 13.301 27.3 32.9 51 58 66.399 37.5 22.5 87.9 29.4 140.601 17.3 34.3-10 63.899-30.699 79.399-62.199 22.4-41.3 17.6-91.3 17.4-146.6.5-90.2 0-180.4 0-270.9z" fill="#323330"></path></svg><!--/$--></span>Vite та Vanilla JS</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_168qb9bcq_-accordion-content" aria-labelledby="_R_168qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="vanilla-js" href="/uk/doc/environment/vanilla" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg style="z-index:0" class="shrink-0 size-3.5" viewBox="0 0 1052 1052" role="img" aria-label="Vanilla JavaScript logo"><path fill="#f0db4f" d="M0 0h1052v1052H0z"></path><path d="M965.9 801.1c-7.7-48-39-88.3-131.7-125.9-32.2-14.8-68.1-25.399-78.8-49.8-3.8-14.2-4.3-22.2-1.9-30.8 6.9-27.9 40.2-36.6 66.6-28.6 17 5.7 33.1 18.801 42.8 39.7 45.4-29.399 45.3-29.2 77-49.399-11.6-18-17.8-26.301-25.4-34-27.3-30.5-64.5-46.2-124-45-10.3 1.3-20.699 2.699-31 4-29.699 7.5-58 23.1-74.6 44-49.8 56.5-35.6 155.399 25 196.1 59.7 44.8 147.4 55 158.6 96.9 10.9 51.3-37.699 67.899-86 62-35.6-7.4-55.399-25.5-76.8-58.4-39.399 22.8-39.399 22.8-79.899 46.1 9.6 21 19.699 30.5 35.8 48.7 76.2 77.3 266.899 73.5 301.1-43.5 1.399-4.001 10.6-30.801 3.199-72.101zm-394-317.6h-98.4c0 85-.399 169.4-.399 254.4 0 54.1 2.8 103.7-6 118.9-14.4 29.899-51.7 26.2-68.7 20.399-17.3-8.5-26.1-20.6-36.3-37.699-2.8-4.9-4.9-8.7-5.601-9-26.699 16.3-53.3 32.699-80 49 13.301 27.3 32.9 51 58 66.399 37.5 22.5 87.9 29.4 140.601 17.3 34.3-10 63.899-30.699 79.399-62.199 22.4-41.3 17.6-91.3 17.4-146.6.5-90.2 0-180.4 0-270.9z" fill="#323330"></path></svg><!--/$--></span>Vanilla JS (без бандлера)</span></a></div></div></div></div></div></li><li><a aria-label="vite-and-lit" href="/uk/doc/environment/vite-and-lit" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg style="z-index:0" class="shrink-0 size-3.5" viewBox="0 0 256 320" preserveAspectRatio="xMidYMid" role="img" aria-label="Lit"><path fill="#00E8FF" d="m64 192 25.926-44.727 38.233-19.114 63.974 63.974 10.833 61.754L192 320l-64-64-38.074-25.615z"></path><path d="M128 256V128l64-64v128l-64 64ZM0 256l64 64 9.202-60.602L64 192l-37.542 23.71L0 256Z" fill="#283198"></path><path d="M64 192V64l64-64v128l-64 64Zm128 128V192l64-64v128l-64 64ZM0 256V128l64 64-64 64Z" fill="#324FFF"></path><path fill="#0FF" d="M64 320V192l64 64z"></path></svg><!--/$--></span>Vite та Lit</span></a></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_1e8qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="angular" href="/uk/doc/environment/angular" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Angular logo" version="1.1" preserveAspectRatio="xMidYMid" viewBox="20 20 210 210" style="z-index:0" class="shrink-0 size-3.5"><g><polygon style="fill:#DD0031" points="125,30 125,30 125,30 31.9,63.2 46.1,186.3 125,230 125,230 125,230 203.9,186.3 218.1,63.2 "></polygon><polygon style="fill:#C3002F" points="125,30 125,52.2 125,52.1 125,153.4 125,153.4 125,230 125,230 203.9,186.3 218.1,63.2 125,30 "></polygon><path style="fill:#FFFFFF" d="M125,52.1L66.8,182.6h0h21.7h0l11.7-29.2h49.4l11.7,29.2h0h21.7h0L125,52.1L125,52.1L125,52.1L125,52.1 L125,52.1z M142,135.4H108l17-40.9L142,135.4z"></path></g></svg><!--/$--></span>Angular 21</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_1e8qb9bcq_-accordion-content" aria-labelledby="_R_1e8qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="19" href="/uk/doc/environment/angular/19" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Angular logo" version="1.1" preserveAspectRatio="xMidYMid" viewBox="20 20 210 210" style="z-index:0" class="shrink-0 size-3.5"><g><polygon style="fill:#DD0031" points="125,30 125,30 125,30 31.9,63.2 46.1,186.3 125,230 125,230 125,230 203.9,186.3 218.1,63.2 "></polygon><polygon style="fill:#C3002F" points="125,30 125,52.2 125,52.1 125,153.4 125,153.4 125,230 125,230 203.9,186.3 218.1,63.2 125,30 "></polygon><path style="fill:#FFFFFF" d="M125,52.1L66.8,182.6h0h21.7h0l11.7-29.2h49.4l11.7,29.2h0h21.7h0L125,52.1L125,52.1L125,52.1L125,52.1 L125,52.1z M142,135.4H108l17-40.9L142,135.4z"></path></g></svg><!--/$--></span>Angular 19 (Webpack)</span></a><a aria-label="analog" href="/uk/doc/environment/analog" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Angular logo" version="1.1" preserveAspectRatio="xMidYMid" viewBox="20 20 210 210" style="z-index:0" class="shrink-0 size-3.5"><g><polygon style="fill:#DD0031" points="125,30 125,30 125,30 31.9,63.2 46.1,186.3 125,230 125,230 125,230 203.9,186.3 218.1,63.2 "></polygon><polygon style="fill:#C3002F" points="125,30 125,52.2 125,52.1 125,153.4 125,153.4 125,230 125,230 203.9,186.3 218.1,63.2 125,30 "></polygon><path style="fill:#FFFFFF" d="M125,52.1L66.8,182.6h0h21.7h0l11.7-29.2h49.4l11.7,29.2h0h21.7h0L125,52.1L125,52.1L125,52.1L125,52.1 L125,52.1z M142,135.4H108l17-40.9L142,135.4z"></path></g></svg><!--/$--></span>Analog</span></a></div></div></div></div></div></li><li><a aria-label="create-react-app" href="/uk/doc/environment/create-react-app" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="175.7 78 490.6 436.9" role="img" aria-label="React logo" style="z-index:0" class="shrink-0 size-3.5"><g fill="#61dafb"><path d="m666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9v-22.3c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6v-22.3c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zm-101.4 106.7c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24s9.5 15.8 14.4 23.4zm73.9-208.1c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6s22.9-35.6 58.3-50.6c8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zm53.8 142.9c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6z"></path><circle cx="420.9" cy="296.5" r="45.7"></circle></g></svg><!--/$--></span>React CRA</span></a></li><li><a aria-label="react-native-and-expo" href="/uk/doc/environment/react-native-and-expo" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="175.7 78 490.6 436.9" role="img" aria-label="React logo" style="z-index:0" class="shrink-0 size-3.5"><g fill="#61dafb"><path d="m666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9v-22.3c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6v-22.3c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zm-101.4 106.7c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24s9.5 15.8 14.4 23.4zm73.9-208.1c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6s22.9-35.6 58.3-50.6c8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zm53.8 142.9c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6z"></path><circle cx="420.9" cy="296.5" r="45.7"></circle></g></svg><!--/$--></span>React Native та Expo</span></a></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_1q8qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><span class="truncate font-semibold text-neutral transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text" label="node"><span class="flex items-center gap-1.5 opacity-60">Node & Backend</span></span></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_1q8qb9bcq_-accordion-content" aria-labelledby="_R_1q8qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="express" href="/uk/doc/environment/express" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1333.33 773.55" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" role="img" aria-label="Express logo" fill="currentColor" style="z-index:0" class="shrink-0 size-3.5"><path d="M1333.33 753.49c-48.5 12.33-78.5.54-105.41-39.87L1036.5 448.79l-27.67-36.67L785.29 714.5c-25.54 36.38-52.33 52.2-100 39.33l286.25-384.25-266.5-347.09c45.83-8.91 77.5-4.38 105.62 36.67l198.54 268.13 200-266.67c25.62-36.38 53.17-50.2 99.17-36.8l-103.33 137-140 182.29c-16.67 20.83-14.38 35.09.96 55.2l267.33 355.18zM.34 363.16l23.41-115.17c63.75-227.92 325-322.63 505.17-181.8 105.29 82.83 131.46 200 126.25 331.25H61.67C52.76 633.69 222.8 776.27 439.58 703.53c76.04-25.54 120.83-85.09 143.25-159.58 11.38-37.33 30.2-43.17 65.29-32.5-17.91 93.17-58.33 171-143.75 219.71-127.62 72.91-309.8 49.33-405.62-52C41.66 620.36 18.08 545.87 7.5 466.2c-1.67-13.17-5-25.71-7.5-38.33.22-21.56.34-43.11.34-64.67v-.04zm62.41-15.83h536.33c-3.5-170.83-109.87-292.17-255.25-293.2-159.58-1.25-274.17 117.2-281.09 293.2h.01z" fill-rule="nonzero"></path></svg><!--/$--></span>Express.js</span></a><a aria-label="nest" href="/uk/doc/environment/nest" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" height="966" viewBox="0 0 264.58333 255.58751" width="1000" role="img" aria-label="NestJS logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m153.33845 45.652481c-1.80934 0-3.48944.387729-5.04032.904673 3.29558 2.19706 5.10493 5.104961 6.00963 8.400551.0648.45233.19386.775444.25856 1.227759.0648.387729.12916.775444.12916 1.163171.2586 5.686509-1.48628 6.397323-2.71403 9.757543-1.87398 4.329529-1.35704 8.982133.90466 12.730079.19387.452318.45234.969275.77546 1.421618-2.45558-16.348759 11.17919-18.804304 13.69932-23.90924.19386-4.458761-3.48944-7.431263-6.39731-9.499092-2.77864-1.680104-5.29884-2.197062-7.62513-2.197062zm20.54903 3.683318c-.25858 1.486247-.0647 1.09853-.12913 1.873973-.0647.516945-.0647 1.163157-.12914 1.680102-.12914.516959-.2586 1.033904-.45236 1.550886-.12913.516945-.32309 1.033903-.51694 1.550847-.2586.516983-.45234.969301-.71082 1.486258-.19385.258585-.32309.516945-.51695.775443-.12914.193857-.25858.387715-.38771.581572-.32309.452355-.64621.904673-.96929 1.292387-.38774.387729-.71083.840046-1.16319 1.163171v.0647c-.38771.3231-.77543.710815-1.22775 1.033903-1.35702 1.033902-2.90787 1.809344-4.32952 2.778644-.45231.323088-.90468.581587-1.29238.9693-.45233.323088-.84006.646176-1.22776 1.033903-.45236.387715-.77545.775442-1.16318 1.227784-.32309.387728-.7108.840048-.96927 1.292402-.32312.452317-.6462.904661-.9047 1.35699-.25857.516944-.45233.969299-.71081 1.486245-.19385.516944-.38773.969301-.51695 1.486244-.19386.581586-.3231 1.098544-.45234 1.615514-.0647.258583-.0647.58156-.12914.840045-.0648.258584-.0648.516945-.12913.775443 0 .516944-.0647 1.09853-.0647 1.615475 0 .387727 0 .775441.0647 1.163169 0 .516946.0647 1.033892.19385 1.615476.0647.516944.19384 1.033902.32312 1.550885.19386.516944.3231 1.033902.51694 1.550847.12916.323126.32309.646213.45236.904673l-14.86252-5.75114c-2.52018-.710815-4.9757-1.35699-7.49588-1.938576-1.357-.323087-2.714-.646198-4.07102-.969299-3.87719-.77543-7.81895-1.356991-11.76076-1.744705-.12913 0-.19385-.06471-.32309-.06471-3.8772-.387714-7.68973-.581572-11.5669-.581572-2.84328 0-5.68656.129131-8.465201.323088-3.941798.258584-7.883602.775442-11.825373 1.421617-.969302.129144-1.938602.323125-2.907905.516984-2.003199.387689-3.941771.840044-5.815742 1.292386-.9693.258584-1.938602.516958-2.907903.775419-.96927.387713-1.87394.84007-2.778642 1.227784-.710811.323088-1.421619.646187-2.132431.9693-.129139.06471-.25858.06471-.32309.129144-.64621.323087-1.22779.581547-1.809341.904671-.193861.06471-.323122.129132-.452351.193859-.71081.323089-1.421618.710803-2.003201 1.033902-.45235.193858-.90467.452343-1.292389.646213-.193862.129131-.452353.258572-.581582.323088-.581579.323088-1.16316.646174-1.680111.9693-.581581.323087-1.098532.646175-1.550882.969263-.452318.323125-.904667.581585-1.29239.904672-.06474.06471-.129139.06471-.193861.129145-.387719.258583-.840039.581571-1.227758.904696 0 0-.06473.0647-.12914.129142-.32309.258584-.646212.516947-.969301.775407-.129138.06471-.258581.193857-.38772.258583-.32309.258586-.64618.581586-.969271.84007-.06473.129143-.193859.193858-.258581.258585-.38772.387715-.775441.710802-1.163161 1.09853-.06473 0-.06473.06471-.129139.129131-.38772.3231-.775439.710816-1.163159 1.098543-.06473.06471-.06473.12913-.12914.12913-.32309.323089-.64618.646213-.969301 1.033902-.129137.129143-.32309.258586-.452319.387715-.32309.387728-.710811.775443-1.09853 1.163171-.06473.129132-.19386.193858-.258582.323087-.516952.516983-.969302 1.033928-1.486252 1.550885-.06473.06471-.129138.129128-.193859.193858-1.033931 1.098529-2.132463 2.197059-3.295594 3.166352-1.163159 1.0339-2.390922 2.0032-3.618711 2.84325-1.292392.9047-2.520152 1.68011-3.877173 2.45555-1.292392.71079-2.649412 1.35701-4.071032 1.9386-1.357022.58157-2.778641 1.09854-4.200264 1.55085-2.714041.58157-5.492684 1.68011-7.883605 1.87397-.51695 0-1.098531.12915-1.615482.19385-.581578.12914-1.098529.25859-1.615479.38774-.516951.19384-1.033931.38771-1.550883.58156-.516951.19386-1.033901.45235-1.550852.71083-.45235.32308-.969299.58157-1.421651.90466-.452322.32309-.904672.7108-1.292393 1.09853-.452319.32312-.904669.77545-1.29239 1.16315-.387721.45237-.77544.84008-1.0985304 1.29239-.3230901.51695-.7108108.96931-.9693016 1.48627-.32309.45235-.6461799.96929-.9046707 1.48622-.2585815.58161-.5169498 1.09855-.7108107 1.68014-.1938599.51695-.3877199 1.09852-.5815799 1.68011-.1291382.51694-.2585813 1.0339-.3230898 1.55083 0 .0648-.064719.12916-.064719.19387-.1291392.58161-.1291392 1.35706-.1938608 1.74479-.064719.45232-.1291373.84002-.1291373 1.29238 0 .25858 0 .58155.064719.84003.064719.45236.1291371.84007.2585814 1.22782.1291382.38766.2585815.77539.4523201 1.16312v.0647c.1938599.38775.4523506.77545.7108108 1.16317.2585814.38772.5169804.77544.8400704 1.16317.3230899.32309.7108109.71078 1.0985304 1.03389.3877209.38772.7754421.71081 1.2277611 1.0339 1.550881 1.35703 1.938601 1.80938 3.941806 2.84327.323087.19387.64621.32311 1.03393.51697.06473 0 .129139.0647.193859.0647 0 .12913 0 .19387.06473.32313.06472.51696.193859 1.03389.32309 1.55086.129138.58158.323121 1.09855.516981 1.55087.19386.38773.32309.77543.516951 1.16317.06472.12915.12914.25858.19386.32309.258581.51694.51695.96932.77541 1.42162.323121.45233.64621.90466.969299 1.35703.323092.3877.710813.84004 1.098532 1.22775.387721.38773.775442.71083 1.227793 1.09852 0 0 .06473.0648.129137.0648.387722.32312.77544.64622 1.163162.90466.45232.32311.90467.58157 1.421619.84007.452351.25858.969302.51695 1.486252.71082.387721.19386.84004.32311 1.292392.45234.06473.0648.129138.0648.258582.12916.258581.0648.581548.12912.840039.19384-.193859 3.48945-.258582 6.78504.258583 7.94822.58155 1.29238 3.424821-2.64941 6.268094-7.17277-.387719 4.45875-.646211 9.6929 0 11.24381.710809 1.61545 4.587982-3.42487 7.948203-8.98215 45.815262-10.59757 87.62418 21.066 92.01829 65.78273-.84006-6.97892-9.43446-10.85608-13.37623-9.88677-1.93861 4.78183-5.2342 10.92068-10.53299 14.73324.45233-4.2649.25856-8.65901-.64619-12.92392-1.42165 5.94501-4.2003 11.50232-8.01287 16.28415-6.138857.45232-12.277729-2.52019-15.50872-6.97891-.258582-.19388-.323091-.58159-.516951-.84006-.193862-.45238-.387719-.90467-.516951-1.35703-.193859-.45232-.323089-.90467-.387719-1.35699-.06473-.45236-.06473-.90469-.06473-1.42163 0-.32312 0-.6462 0-.96928.06473-.45238.19386-.90471.323091-1.35705.129138-.45232.25858-.90467.45235-1.35701.258582-.45231.45232-.90466.775441-1.35698 1.09853-3.10178 1.09853-5.62192-.90467-7.10816-.387721-.25858-.775441-.45236-1.227791-.64622-.258584-.0647-.581582-.19386-.84004-.25857-.193861-.0647-.32309-.12916-.516951-.19387-.452351-.12914-.904702-.25859-1.357022-.32309-.45235-.12913-.90467-.19386-1.35702-.19386-.452321-.0648-.969303-.12914-1.421622-.12914-.323089 0-.64621.0647-.969301.0647-.516949 0-.969299.0648-1.421621.19386-.45235.0648-.904669.12913-1.357019.25856-.452322.12915-.904673.25859-1.357023.45238-.452319.19385-.840041.38771-1.292389.58157-.38769.19387-.775412.45232-1.227761.64618-15.056371 9.82217-6.074235 32.82674 4.200264 39.48256-3.877175.71081-7.818947 1.5509-8.917479 2.39092-.06473.0647-.129138.12915-.129138.12915 2.778642 1.68009 5.686516 3.10173 8.723616 4.32949 4.135665 1.35702 8.529786 2.58479 10.468387 3.10176v.0647c5.363424 1.09854 10.79148 1.48626 16.284139 1.16317 28.62649-2.00321 52.0834-23.78003 56.3483-52.47111.12914.58159.25858 1.09852.38772 1.68012.19387 1.16312.45232 2.3909.58155 3.61867v.0648c.12914.58158.19386 1.16315.25858 1.6801v.25859c.0648.58157.12915 1.16316.12915 1.6801.0647.71082.12914 1.42162.12914 2.13247v1.0339c0 .32312.0647.7108.0647 1.03392 0 .38773-.0647.77542-.0647 1.16314v.90467c0 .45236-.0648.84006-.0648 1.2924 0 .25856 0 .51696-.0647.84006 0 .45236-.0647.90466-.0647 1.42162-.0648.19386-.0648.38772-.0648.58159-.0647.51696-.12914.9693-.19387 1.48626 0 .19387 0 .38771-.0647.58159-.0648.64617-.19385 1.22777-.25855 1.87394v.0648.0647c-.12914.58157-.2586 1.22776-.38775 1.80933v.19387c-.12912.58156-.25858 1.16316-.3877 1.74471 0 .0648-.0647.19387-.0647.25856-.12916.5816-.2586 1.16317-.45232 1.74478v.19384c-.19386.64617-.38773 1.22776-.51698 1.80934-.0647.0647-.0647.12914-.0647.12914-.19387.64621-.38771 1.29239-.58155 1.93858-.25858.64621-.45234 1.22778-.71081 1.87398-.25857.6462-.45236 1.2924-.71083 1.87396-.25859.64622-.51697 1.2278-.77543 1.87397h-.0648c-.2586.58157-.51699 1.22779-.8401 1.80938-.0647.19383-.12912.32309-.19384.4523-.0647.0648-.0647.12914-.12914.19388-4.20026 8.46514-10.40377 15.89639-18.15809 21.71217-.51695.32309-1.03392.71082-1.55086 1.09852-.12915.12915-.32312.19388-.45235.32309-.45235.3231-.90468.64618-1.42161.96931l.19385.38772h.0647c.90466-.12913 1.80934-.25858 2.71402-.38772h.0647c1.68012-.25858 3.36023-.58158 5.04035-.90467.45231-.0648.9693-.19385 1.42161-.32312.32309-.0648.58158-.12913.90467-.19386.45235-.0648.90468-.19386 1.35704-.25857.3877-.12914.77543-.19388 1.16314-.3231 6.46195-1.55089 12.73007-3.68335 18.73965-6.20349-10.27448 14.02243-24.03847 25.33087-40.12874 32.76212 7.43127-.51696 14.86251-1.74472 22.03528-3.81254 26.0417-7.68977 47.94772-25.20165 61.06549-48.7878-2.6494 14.92714-8.5944 29.14344-17.38265 41.55041 6.26809-4.13569 12.01923-8.91753 17.25342-14.34557 14.47478-15.12097 23.97388-34.31296 27.20483-54.92665 2.19708 10.2099 2.84328 20.74293 1.87398 31.14666 46.65534-65.07192 3.87717-132.53476-14.02244-150.305141-.0648-.129133-.12914-.193858-.12914-.323089-.0648.0647-.0648.0647-.0648.129144 0-.06471 0-.06471-.0647-.129144 0 .775442-.0647 1.550848-.12914 2.326291-.19387 1.48625-.38771 2.907879-.64621 4.329529-.32308 1.42162-.71081 2.84322-1.09854 4.26488-.45232 1.35699-.96925 2.77862-1.55085 4.13565-.58158 1.29237-1.22778 2.64939-1.93859 3.9418-.71082 1.22778-1.48625 2.52016-2.32629 3.6833-.84006 1.2278-1.74474 2.39093-2.64943 3.48944-.96931 1.16318-2.00319 2.1971-3.03712 3.23101-.64618.58158-1.22775 1.09853-1.87398 1.61546-.51694.45236-.96927.84009-1.48625 1.29239-1.16314.90468-2.32629 1.74474-3.61867 2.52019-1.22778.77542-2.52014 1.55086-3.81254 2.19707-1.35702.64619-2.71404 1.22776-4.07104 1.80935-1.35702.51693-2.77864.96928-4.20031 1.35701-1.42161.3877-2.90785.71081-4.32949.96928-1.48623.25858-2.97249.38771-4.39412.51697-1.03392.0647-2.06782.12915-3.10175.12915-1.48626 0-2.97248-.12915-4.39412-.25858-1.48624-.12914-2.97251-.32314-4.39413-.64623-1.48625-.25858-2.9079-.64621-4.32953-1.09851h-.0647c1.42163-.12914 2.84327-.2586 4.26492-.51697 1.48622-.25858 2.90785-.58156 4.3295-.96931 1.42162-.38771 2.84325-.84006 4.20026-1.357 1.42162-.51696 2.77865-1.16313 4.07105-1.80936 1.357-.64621 2.58478-1.357 3.87716-2.13244 1.22776-.84005 2.45554-1.68009 3.61869-2.58479 1.16316-.90466 2.26167-1.87394 3.29562-2.90786 1.09853-.96932 2.06781-2.06784 3.03711-3.16638.96927-1.16312 1.87396-2.32628 2.71402-3.48944.12915-.19387.25859-.45232.38774-.64619.64617-1.03392 1.29235-2.06783 1.87392-3.10176.71083-1.29239 1.35704-2.58479 1.9386-3.94177.58159-1.35702 1.09855-2.71405 1.55089-4.13566.45232-1.35703.77542-2.77864 1.09853-4.200258.25859-1.486258.51694-2.90791.64619-4.329528.12914-1.486244.25857-2.972503.25857-4.394119 0-1.033928-.0648-2.06783-.12912-3.101733-.12915-1.486246-.32311-2.9079-.51696-4.329519-.25859-1.486257-.58157-2.907873-.96931-4.329529-.45231-1.356991-.90467-2.778634-1.42161-4.135623-.51699-1.357028-1.16315-2.714042-1.80938-4.006443-.71081-1.292388-1.42161-2.584776-2.19704-3.812536-.84005-1.22776-1.68013-2.390917-2.5848-3.554087-.96927-1.098531-1.93857-2.19706-2.97251-3.29559-.51694-.516947-1.09853-1.098532-1.6801-1.615476-2.90787-2.2617-5.945-4.394159-8.9821-6.332732-.45233-.258574-.84005-.452342-1.2924-.646212-2.13246-1.356992-4.13566-2.067831-6.13885-2.714007z" fill="#e0234e" fill-rule="evenodd" transform="translate(0 -41.412487)"></path></svg><!--/$--></span>NestJS</span></a><a aria-label="fastify" href="/uk/doc/environment/fastify" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg style="z-index:0" class="shrink-0 size-3.5" preserveAspectRatio="xMidYMid" viewBox="0 0 256 167.509" role="img" aria-label="Fastify logo"><path fill="currentColor" d="M247.942 23.314 256 2.444l-.35-1.293-79.717 21.003C184.433 9.86 181.513 0 181.513 0s-25.457 16.257-44.709 15.832c-19.251-.426-25.457-5.564-54.977 3.853-29.52 9.41-37.86 38.295-46.419 44.5S0 90.603 0 90.603l.058.359 24.207-7.707S17.625 89.51 3.52 108.52l-.659-.609.025.134s11.336 17.324 22.463 14.121c1.118-.325 2.377-.859 3.753-1.56 4.48 2.495 10.327 4.947 16.783 5.622 0 0-4.37-5.08-8.016-10.86.984-.634 1.994-1.293 3.02-1.96l-.476.334 9.217 3.386-1.017-8.666c.033-.017.058-.042.091-.059l9.059 3.328-1.126-7.882a76.868 76.868 0 0 1 3.436-1.693l9.443-35.717 39.045-26.634-3.103 7.808c-7.916 19.468-22.78 24.064-22.78 24.064l-6.206 2.352c-4.612 5.455-6.556 6.798-8.14 25.107 3.72-.934 7.273-1.16 10.492-.292 16.683 4.496 22.463 24.599 17.967 30.162-1.126 1.393-3.803 3.77-7.181 6.565h-6.773l-.092 5.488c-.234.184-.467.359-.693.542h-6.89l-.083 5.355c-.609.468-1.218.918-1.801 1.36-6.473.133-14.673-5.514-14.673-5.514 0 5.139 4.28 13.046 4.28 13.046s.283-.133.758-.367c-.417.309-.65.476-.65.476s17.324 11.552 28.235 7.273c9.7-3.804 34.816-23.606 56.495-32.981l65.603-17.283 8.65-22.413-49.997 13.17V83.597l58.664-15.457 8.65-22.413-67.297 17.734V43.324z"></path></svg><!--/$--></span>Fastify</span></a><a aria-label="hono" href="/uk/doc/environment/hono" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg style="z-index:0" class="shrink-0 size-3.5" preserveAspectRatio="xMidYMid" viewBox="0 0 256 330" role="img" aria-label="Hono logo"><path d="M134.129.029c.876-.113 1.65.108 2.319.662a1256.253 1256.253 0 0 1 69.573 93.427c16.094 24.231 29.788 49.851 41.082 76.862 18.037 48.108 8.65 89.963-28.16 125.564-32.209 27.22-69.314 37.822-111.318 31.805-50.208-10.237-84.332-39.28-102.373-87.133C.553 225.638-.993 209.736.614 193.51c2.676-27.93 9.302-54.877 19.878-80.838 4.407-10.592 10.15-20.31 17.228-29.154a381.88 381.88 0 0 1 16.565 21.203c2.44 2.55 4.98 4.98 7.62 7.289C82.06 72.01 106.135 34.685 134.13.029Z" fill="#FF5B11" opacity=".993"></path><path d="M129.49 53.7c24.314 28.2 46.29 58.238 65.93 90.114a187.318 187.318 0 0 1 15.24 33.13c8.338 32.804-.607 59.86-26.836 81.169-25.367 17.85-53.196 23.15-83.488 15.902-32.666-10.136-51.55-32.113-56.653-65.929-1.238-10.662-.133-21.043 3.314-31.142a225.41 225.41 0 0 1 17.89-35.78l19.878-29.155a5509.508 5509.508 0 0 0 44.726-58.31Z" fill="#FF9758"></path></svg><!--/$--></span>Hono</span></a><a aria-label="adonis" href="/uk/doc/environment/adonisjs" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg style="z-index:0" class="shrink-0 size-3.5" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" role="img" aria-label="Adonis logo"><path d="M106.812 307.933l78.418-178.207c13.23-30.039 38.692-46.332 70.77-46.332 32.078 0 57.535 16.29 70.773 46.328l78.414 178.211c3.562 8.656 6.617 19.86 6.617 29.531 0 44.297-31.059 75.356-75.36 75.356-15.085 0-27.07-3.848-39.198-7.746-12.43-3.993-25.012-8.036-41.246-8.036-16.047 0-28.938 4.079-41.614 8.09-12.257 3.88-24.316 7.692-38.832 7.692-44.296 0-75.359-31.055-75.359-75.352 0-9.676 3.059-20.879 6.617-29.535z" fill="#fff"></path><path d="M6 256c0 201.628 48.371 250 250 250 201.628 0 250-48.372 250-250C506 54.37 457.627 6 256 6 54.37 6 6 54.371 6 256zm100.812 51.933l78.418-178.207c13.23-30.039 38.692-46.332 70.77-46.332 32.078 0 57.535 16.29 70.773 46.328l78.414 178.211c3.562 8.656 6.617 19.86 6.617 29.531 0 44.297-31.059 75.356-75.36 75.356-15.085 0-27.07-3.848-39.198-7.746-12.43-3.993-25.012-8.036-41.246-8.036-16.047 0-28.938 4.079-41.614 8.09-12.257 3.88-24.316 7.692-38.832 7.692-44.296 0-75.359-31.055-75.359-75.352 0-9.676 3.059-20.879 6.621-29.535h-.004zM256 160.785L178.605 335.94c22.914-10.695 49.39-15.785 77.395-15.785 26.988 0 54.48 5.09 76.374 15.781L256 160.789v-.004z" fill="#5a45ff"></path></svg><!--/$--></span>Adonis</span></a></div></div></div></div></div></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_1u8qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><span class="truncate font-semibold text-neutral transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text" label="other"><span class="flex items-center gap-1.5 opacity-60">Інше</span></span></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_1u8qb9bcq_-accordion-content" aria-labelledby="_R_1u8qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="lynx-and-react" href="/uk/doc/environment/lynx-and-react" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg width="27" height="28" viewBox="0 0 27 28" fill="currentColor" role="img" aria-label="Lynx logo" xmlns="http://www.w3.org/2000/svg" style="z-index:0" class="shrink-0 size-3.5"><g style="opacity:0"></g><g><circle style="fill:#ffffff;stroke-width:0.2;stroke:#1a1a1a;stroke-dasharray:none" cx="13.533393" cy="-14.052804" r="13.173257" transform="scale(1,-1)"></circle><g transform="matrix(0.81399984,0,0,0.81399984,2.5290274,2.4955799)" style="fill:#000000"><path fill-rule="evenodd" clip-rule="evenodd" d="M 7.56542,6.19594 3.90642,8.7164 C 3.50877,8.99031 3.23346,9.40191 3.13675,9.86708 L 2.77902,11.5878 C 2.76005,11.679 2.71799,11.7642 2.65665,11.8355 l -1.660344,2.1766 c -0.223545,0.2601 -0.218154,0.9511 0.394134,1.3936 0.23479,0.2046 0.54871,0.6634 0.90578,1.1853 0.75602,1.1049 1.70547,2.4926 2.5069,2.3484 1.13408,-0.3984 2.52232,-0.5259 3.58816,0 2.07192,1.7888 1.56321,3.4381 0.83386,5.8027 -0.29349,0.9515 -0.62271,2.0188 -0.83386,3.2576 0.99515,-3.622 3.23292,-7.8286 7.26792,-9.256 -0.727,-0.5939 -2.2106,-1.1456 -3.5235,-1.2784 0,0 4.0334,-3.4532 9.0082,-5.0399 C 17.671,4.16205 11.9386,0.213095 11.9386,0.213095 11.6465,-0.148197 11.0566,-0.0296711 10.9349,0.414774 10.8371,1.72112 10.675,2.60942 10.4074,3.44676 L 8.39128,1.12029 C 8.18068,0.866399 7.75965,1.013 7.76176,1.33949 8.10312,3.23719 8.05521,4.30239 7.56542,6.19594 Z M 8.9846,6.02248 8.99663,6.02171 C 9.02298,6.02002 9.0489,6.01659 9.07424,6.01153 Z M 11.7123,1.7617 C 13.094,4.1491 13.7199,5.5054 13.9322,8.03659 12.4625,7.2017 11.8221,6.98923 10.7413,6.99451 11.3718,5.0773 11.5644,3.92284 11.7123,1.7617 Z" fill="white" style="fill:#000000"></path><path d="m 20.5926,19.4929 c -5.6277,1.2877 -8.8245,3.2269 -11.26936,8.5072 4.38876,-7.3634 17.67436,-6.0465 17.67436,-6.0465 -0.2482,-1.2028 -2.8897,-3.4965 -4.627,-4.9033 0,0 1.4016,-1.7231 4.5,-2.5953 0,0 -5.9571,0.3452 -9.4251,2.2177 1.1235,0.5929 2.5626,1.5936 3.1471,2.8202 z" fill="white" style="fill:#000000"></path></g></g></svg><!--/$--></span>Lynx та React</span></a></div></div></div></div></div></li></ul></div><div><span class="flex w-full truncate text-nowrap p-2 text-left font-semibold text-neutral transition-color" label="plugins"><span class="flex items-center gap-1.5 opacity-60">Plugins</span></span><ul class="mt-4 flex flex-col gap-4 border-neutral border-l-[0.5px] p-1 text-base"><li><a aria-label="syncJSON" href="/uk/doc/plugin/sync-json" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">JSON</span></a></li><li><a aria-label="syncPO" href="/uk/doc/plugin/sync-po" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">gettext (.po)</span></a></li></ul></div><div><span class="flex w-full truncate text-nowrap p-2 text-left font-semibold text-neutral transition-color" label="dev-tools"><span class="flex items-center gap-1.5 opacity-60">Інструменти розробника</span></span><ul class="mt-4 flex flex-col gap-4 border-neutral border-l-[0.5px] p-1 text-base"><li><a aria-label="vs-code-extension" href="/uk/doc/vs-code-extension" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Розширення VS Code</span></a></li><li><a aria-label="mcp-server" href="/uk/doc/mcp-server" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Сервер MCP</span></a></li><li><a aria-label="agent-skills" href="/uk/doc/agent_skills" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Навички агента</span></a></li><li><a aria-label="lsp" href="/uk/doc/lsp" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Language Server Protocol</span></a></li></ul></div><div><span class="flex w-full truncate text-nowrap p-2 text-left font-semibold text-neutral transition-color" label="releases"><span class="flex items-center gap-1.5 opacity-60">Релізи</span></span><ul class="mt-4 flex flex-col gap-4 border-neutral border-l-[0.5px] p-1 text-base"><li><a aria-label="v9" href="/uk/doc/releases/v9" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">v9</span></a></li><li><a aria-label="v8" href="/uk/doc/%D1%80%D0%B5%D0%BB%D1%96%D0%B7%D0%B8/v8" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">v8</span></a></li><li><a aria-label="v7" href="/uk/doc/releases/v7" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">v7</span></a></li><li><a aria-label="v6" href="/uk/doc/releases/v6" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">v6</span></a></li></ul></div><div><a aria-label="benchmark" href="/uk/doc/benchmark" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text flex w-full truncate text-nowrap p-2 text-left font-semibold transition-color"><span class="flex items-center gap-1.5 opacity-60">Бенчмарк</span></a><ul class="mt-4 flex flex-col gap-4 border-neutral border-l-[0.5px] p-1 text-base"><li><a aria-label="nextjs" href="/uk/doc/benchmark/nextjs" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg width="800px" height="800px" viewBox="0 0 256 256" version="1.1" preserveAspectRatio="xMidYMid" fill="currentColor" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Nextjs logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m 119.90598,4.4814875 c -0.53154,0.048313 -2.22282,0.2174192 -3.745,0.3382075 C 81.054703,7.9843533 48.17125,26.923985 27.344258,56.034007 15.746859,72.219661 8.329357,90.57951 5.5266527,110.02645 c -0.9906106,6.78831 -1.1114168,8.7934 -1.1114168,17.99748 0,9.20409 0.1208062,11.20918 1.1114168,17.99749 6.7168263,46.40692 39.7452473,85.39745 84.5401943,99.84374 8.021533,2.58488 16.477973,4.34839 26.094133,5.41133 3.745,0.41069 19.93304,0.41069 23.67803,0 16.59877,-1.83598 30.66062,-5.94279 44.52917,-13.021 2.12619,-1.08709 2.53693,-1.37699 2.247,-1.61856 -0.19329,-0.14494 -9.25375,-12.29627 -20.12631,-26.98414 l -19.7639,-26.69426 -24.76528,-36.64721 c -13.62694,-20.14753 -24.83776,-36.62307 -24.934405,-36.62307 -0.09665,-0.0242 -0.19329,16.25813 -0.241612,36.13991 -0.07248,34.81123 -0.09665,36.21238 -0.531547,37.03375 -0.628193,1.18372 -1.111418,1.66687 -2.12619,2.19834 -0.77316,0.38652 -1.449674,0.459 -5.098022,0.459 h -4.179896 l -1.111416,-0.70058 c -0.724838,-0.45899 -1.256386,-1.06293 -1.618805,-1.7635 l -0.507385,-1.08711 0.04832,-48.43617 0.07249,-48.460335 0.748999,-0.94215 c 0.386579,-0.507311 1.208061,-1.159569 1.787931,-1.47362 0.990612,-0.483153 1.377191,-0.531468 5.557087,-0.531468 4.928894,0 5.750376,0.193262 7.030921,1.594408 0.36242,0.386523 13.7719,20.582355 29.81498,44.909155 16.04305,24.3268 37.98146,57.54363 48.75739,73.85007 l 19.5706,29.64148 0.99061,-0.65225 c 8.77054,-5.70121 18.04845,-13.81819 25.39347,-22.27339 15.63232,-17.94917 25.70756,-39.83604 29.09014,-63.17237 0.99062,-6.78831 1.11141,-8.7934 1.11141,-17.99749 0,-9.20408 -0.12079,-11.20917 -1.11141,-17.99748 C 243.75652,63.619523 210.72809,24.629005 165.93316,10.182703 158.03243,7.6219874 149.62432,5.8584758 140.20143,4.7955375 137.88194,4.5539609 121.91136,4.2882259 119.90598,4.4814875 Z m 50.59365,74.7439055 c 1.15974,0.579785 2.10202,1.691038 2.44028,2.850608 0.1933,0.6281 0.24162,14.059778 0.1933,44.329369 l -0.0725,43.43554 -7.65911,-11.74064 -7.68328,-11.74064 v -31.57411 c 0,-20.413252 0.0966,-31.888157 0.24161,-32.443785 0.38658,-1.352829 1.23223,-2.415769 2.39196,-3.043868 0.99061,-0.507311 1.35304,-0.555627 5.14636,-0.555627 3.57585,0 4.20405,0.04831 5.00138,0.483153 z" fill="currentColor"></path></svg><!--/$--></span>Next.js</span></a></li><li><a aria-label="tanstack" href="/uk/doc/benchmark/tanstack" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg height="660" viewBox="0 0 663 660" width="663" xmlns="http://www.w3.org/2000/svg" fill="currentColor" role="img" aria-label="Tanstack logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m305.114318.62443771c8.717817-1.14462121 17.926803-.36545135 26.712694-.36545135 32.548987 0 64.505987 5.05339923 95.64868 14.63098274 39.74418 12.2236582 76.762804 31.7666864 109.435876 57.477568 40.046637 31.5132839 73.228974 72.8472109 94.520714 119.2362609 39.836383 86.790386 39.544267 191.973146-1.268422 278.398081-26.388695 55.880442-68.724007 102.650458-119.964986 136.75724-41.808813 27.828603-90.706831 44.862601-140.45707 50.89341-63.325458 7.677926-131.784923-3.541603-188.712259-32.729444-106.868873-54.795293-179.52309291-165.076271-180.9604082-285.932068-.27660564-23.300971.08616998-46.74071 4.69884909-69.814998 7.51316071-37.57857 20.61272131-73.903917 40.28618971-106.877282 21.2814003-35.670293 48.7704861-67.1473767 81.6882804-92.5255597 38.602429-29.7610135 83.467691-51.1674988 130.978372-62.05777669 11.473831-2.62966514 22.9946-4.0869914 34.57273-5.4964306l3.658171-.44480576c3.050084-.37153079 6.104217-.74794222 9.162589-1.14972654zm-110.555861 549.44131429c-14.716752 1.577863-30.238964 4.25635-42.869928 12.522173 2.84343.683658 6.102369.004954 9.068638 0 7.124652-.011559 14.317732-.279903 21.434964.032202 17.817402.781913 36.381729 3.63214 53.58741 8.350042 22.029372 6.040631 41.432961 17.928687 62.656049 25.945156 22.389644 8.456554 44.67706 11.084675 68.427 11.084675 11.96813 0 23.845573-.035504 35.450133-3.302696-6.056202-3.225083-14.72582-2.619864-21.434964-3.963236-14.556814-2.915455-28.868774-6.474936-42.869928-11.470264-10.304996-3.676672-20.230803-8.214291-30.11097-12.848661l-6.348531-2.985046c-9.1705-4.309263-18.363277-8.560752-27.845391-12.142608-24.932161-9.418465-52.560181-14.071964-79.144482-11.221737zm22.259385-62.614168c-29.163917 0-58.660076 5.137344-84.915434 18.369597-6.361238 3.206092-12.407546 7.02566-18.137277 11.258891-1.746125 1.290529-4.841829 2.948483-5.487351 5.191839-.654591 2.275558 1.685942 4.182039 3.014086 5.637703 6.562396-3.497556 12.797498-7.199878 19.78612-9.855246 45.19892-17.169893 99.992458-13.570779 145.098218 2.172348 22.494346 7.851335 43.219483 19.592421 65.129314 28.800338 24.503461 10.297807 49.53043 16.975034 75.846795 20.399104 31.04195 4.037546 66.433549.7654 94.808495-13.242161 9.970556-4.921843 23.814245-12.422267 28.030337-23.320339-5.207047.454947-9.892236 2.685918-14.83959 4.224149-7.866632 2.445646-15.827248 4.51974-23.908229 6.138887-27.388113 5.486604-56.512458 6.619429-84.091013 1.639788-25.991939-4.693152-50.142596-14.119246-74.179513-24.03502l-3.068058-1.268177c-2.045137-.846788-4.089983-1.695816-6.135603-2.544467l-3.069142-1.272366c-12.279956-5.085721-24.606928-10.110797-37.210937-14.51024-24.485325-8.546552-50.726667-13.784628-76.671218-13.784628zm51.114145-447.9909432c-34.959602 7.7225298-66.276908 22.7605319-96.457338 41.7180089-17.521434 11.0054099-34.281927 22.2799893-49.465301 36.4444283-22.5792616 21.065423-39.8360564 46.668751-54.8866988 73.411509-15.507372 27.55357-25.4498976 59.665686-30.2554517 90.824149-4.7140432 30.568106-5.4906485 62.70747-.0906864 93.301172 6.7503648 38.248526 19.5989769 74.140579 39.8896436 107.337631 6.8187918-3.184625 11.659796-10.445603 17.3128555-15.336896 11.4149428-9.875888 23.3995608-19.029311 36.2745548-26.928535 4.765981-2.923712 9.662222-5.194315 14.83959-7.275014 1.953055-.785216 5.14604-1.502727 6.06527-3.647828 1.460876-3.406732-1.240754-9.335897-1.704904-12.865654-1.324845-10.095517-2.124534-20.362774-1.874735-30.549941.725492-29.668947 6.269727-59.751557 16.825623-87.521453 7.954845-20.924233 20.10682-39.922168 34.502872-56.971512 4.884699-5.785498 10.077731-11.170545 15.437296-16.512656 3.167428-3.157378 7.098271-5.858983 9.068639-9.908915-10.336599.006606-20.674847 2.987289-30.503603 6.013385-21.174447 6.519522-41.801477 16.19312-59.358362 29.841512-8.008432 6.226409-13.873368 14.387371-21.44733 20.939921-2.32322 2.010516-6.484901 4.704691-9.695199 3.187928-4.8500728-2.29042-4.1014979-11.835213-4.6571581-16.222019-2.1369011-16.873476 4.2548401-38.216325 12.3778671-52.843142 13.039878-23.479694 37.150915-43.528712 65.467327-42.82854 12.228647.302197 22.934587 4.551115 34.625711 7.324555-2.964621-4.211764-6.939158-7.28162-10.717482-10.733763-9.257431-8.459031-19.382979-16.184864-30.503603-22.028985-4.474136-2.350694-9.291232-3.77911-14.015169-5.506421-2.375159-.867783-5.36616-2.062533-6.259834-4.702213-1.654614-4.888817 7.148561-9.416813 10.381943-11.478522 12.499882-7.969406 27.826705-14.525258 42.869928-14.894334 23.509209-.577147 46.479246 12.467678 56.162903 34.665926 3.404469 7.803171 4.411273 16.054969 5.079109 24.382907l.121749 1.56229.174325 2.345587c.01913.260708.038244.521433.057403.782164l.11601 1.56437.120128 1.563971c7.38352-6.019164 12.576553-14.876995 19.78612-21.323859 16.861073-15.07846 39.936636-21.7722 61.831627-14.984333 19.786945 6.133107 36.984382 19.788105 47.105807 37.959541 2.648042 4.754231 10.035685 16.373942 4.698379 21.109183-4.177345 3.707277-9.475079.818243-13.880788-.719162-3.33605-1.16376-6.782939-1.90214-10.241828-2.585698l-1.887262-.369639c-.629089-.122886-1.257979-.246187-1.886079-.372129-11.980496-2.401886-25.91652-2.152533-37.923398-.041284-7.762754 1.364839-15.349083 4.127545-23.083807 5.271929v1.651348c21.149714.175043 41.608563 12.240618 52.043268 30.549941 4.323267 7.585468 6.482428 16.267431 8.138691 24.770223 2.047864 10.50918.608423 21.958802-2.263037 32.201289-.962925 3.433979-2.710699 9.255807-6.817143 10.046802-2.902789.558982-5.36781-2.330878-7.024898-4.279468-4.343878-5.10762-8.475879-9.96341-13.573278-14.374161-12.895604-11.157333-26.530715-21.449361-40.396663-31.373138-7.362086-5.269452-15.425755-12.12007-23.908229-15.340199 2.385052 5.745041 4.721463 11.086326 5.532694 17.339156 2.385876 18.392716-5.314223 35.704625-16.87179 49.540445-3.526876 4.222498-7.29943 8.475545-11.744712 11.755948-1.843407 1.360711-4.156734 3.137561-6.595373 2.752797-7.645687-1.207961-8.555849-12.73272-9.728176-18.637115-3.970415-19.998652-2.375984-39.861068 3.132802-59.448534-4.901187 2.485279-8.443727 7.923994-11.521293 12.385111-6.770975 9.816439-12.645804 20.199291-16.858599 31.375615-16.777806 44.519521-16.616219 96.664142 5.118834 139.523233 2.427098 4.786433 6.110614 4.144058 10.894733 4.144058.720854 0 1.44257-.004515 2.164851-.010924l2.168232-.022283c4.338648-.045438 8.686803-.064635 12.979772.508795 2.227588.297243 5.320818.032202 7.084256 1.673642 2.111344 1.966755.986008 5.338808.4996 7.758859-1.358647 6.765574-1.812904 12.914369-1.812904 19.816178 9.02412-1.398692 11.525415-15.866153 14.724172-23.118874 3.624982-8.216283 7.313444-16.440823 10.667192-24.770223 1.648843-4.093692 3.854171-8.671229 3.275427-13.210785-.649644-5.10184-4.335633-10.510831-6.904531-14.862134-4.86244-8.234447-10.389363-16.70834-13.969002-25.595896-2.861567-7.104926-.197036-15.983399 7.871579-18.521521 4.450228-1.400344 9.198073 1.345848 12.094266 4.562675 6.07269 6.74328 9.992815 16.777697 14.401823 24.692609l34.394873 61.925556c2.920926 5.243856 5.848447 10.481933 8.836976 15.687808 1.165732 2.031158 2.352075 5.167068 4.740424 6.0332 2.127008.77118 5.033095-.325315 7.148561-.748886 5.492297-1.099798 10.97635-2.287117 16.488434-3.28288 6.605266-1.193099 16.673928-.969342 21.434964-6.129805-6.963066-2.205375-15.011895-2.074919-22.259386-1.577863-4.352947.298894-9.178287 1.856116-13.178381-.686135-5.953149-3.783239-9.910373-12.522173-13.552668-18.377854-8.980425-14.439388-17.441465-29.095929-26.041008-43.760726l-1.376261-2.335014-2.765943-4.665258c-1.380597-2.334387-2.750786-4.67476-4.079753-7.036188-1.02723-1.826391-2.549937-4.233231-1.078344-6.24705 1.545791-2.114476 4.91472-2.239146 7.956473-2.243117l.603351.000261c1.195428.001526 2.315572.002427 3.222811-.11692 12.27399-1.615019 24.718635-2.952611 37.098976-2.952611-.963749-3.352237-3.719791-7.141255-2.838484-10.73046 1.972017-8.030506 13.526287-10.543033 18.899867-4.780653 3.60767 3.868283 5.704174 9.192229 8.051303 13.859765 3.097352 6.162006 6.624228 12.118418 9.940876 18.16483 5.805578 10.585967 12.146205 20.881297 18.116667 31.375615.49237.865561.999687 1.726685 1.512269 2.587098l.771613 1.290552c2.577138 4.303168 5.164895 8.635123 6.553094 13.461506-20.735854-.9487-36.30176-25.018751-45.343193-41.283704-.721369 2.604176.450959 4.928448 1.388326 7.431066 1.948109 5.197619 4.276275 10.147535 7.20627 14.862134 4.184765 6.732546 8.982075 13.665732 15.313633 18.553722 11.236043 8.673707 26.05255 8.721596 39.572241 7.794364 8.669619-.595311 19.50252-4.542034 28.030338-1.864372 8.513803 2.673532 11.940924 12.063098 6.884745 19.276187-3.787393 5.403211-8.842747 7.443452-15.128962 8.257566 4.445282 9.53571 10.268996 18.385285 14.490036 28.072919 1.758491 4.035895 3.59118 10.22102 7.8048 12.350433 2.805507 1.416857 6.824562.09743 9.85761.034678-3.043765-8.053625-8.742992-14.887729-11.541904-23.118874 8.533589.390544 16.786875 4.843404 24.732651 7.685374 15.630376 5.590144 31.063836 11.701854 46.475333 17.86913l7.112077 2.848685c6.338978 2.538947 12.71588 5.052299 18.961699 7.812528 2.285297 1.009799 5.449427 3.370401 7.975455 1.917215 2.061054-1.186494 3.394144-4.015253 4.665403-5.931643 3.55573-5.361927 6.775921-10.928622 9.965609-16.513481 12.774414-22.36586 22.143967-46.872692 28.402976-71.833646 20.645168-82.323009 2.934117-173.156241-46.677107-241.922507-19.061454-26.420745-43.033164-49.262193-69.46165-68.1783861-66.13923-47.336721-152.911262-66.294198-232.486917-48.7172481zm135.205158 410.5292842c-17.532977 4.570931-35.601827 8.714164-53.58741 11.040088 2.365265 8.052799 8.145286 15.885969 12.376218 23.118874 1.635653 2.796558 3.3859 6.541816 6.618457 7.755557 3.651364 1.370619 8.063669-.853747 11.508927-1.975838-1.595256-4.364513-4.279573-8.292245-6.476657-12.385112-.905215-1.687677-2.305907-3.685809-1.559805-5.68972 1.410585-3.786541 7.266452-3.563609 10.509727-4.221671 8.54678-1.733916 17.004522-3.898008 25.557073-5.611281 3.150939-.631641 7.538512-2.342438 10.705115-1.285575 2.371037.791232 3.800147 2.744743 5.152304 4.781948l.606196.918752c.80912 1.222827 1.637246 2.41754 2.671212 3.351165 3.457625 3.121874 8.628398 3.60159 13.017619 4.453686-2.678546-6.027421-7.130424-11.301001-9.984571-17.339156-1.659561-3.511592-3.023155-8.677834-6.656381-10.707341-5.005064-2.795733-15.341663 2.461334-20.458024 3.795624zm-110.472507-40.151706c-.825246 10.467897-4.036369 18.984725-9.068639 28.072919 5.76683.729896 11.649079.989984 17.312856 2.39363 4.244947 1.051908 8.156828 3.058296 12.366325 4.211763-2.250671-6.157877-6.426367-11.651913-9.661398-17.339156-3.266358-5.740912-6.189758-12.717032-10.949144-17.339156z" transform="translate(.9778)"></path></svg><!--/$--></span>TanStack</span></a></li><li><a aria-label="vue" href="/uk/doc/benchmark/vue" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="0 0 261.76 226.69" role="img" aria-label="Vuejs logo" style="z-index:0" class="shrink-0 size-3.5"><g transform="matrix(1.3333 0 0 -1.3333 -76.311 313.34)"><g transform="translate(178.06 235.01)"><path d="m0 0-22.669-39.264-22.669 39.264h-75.491l98.16-170.02 98.16 170.02z" fill="#41b883"></path></g><g transform="translate(178.06 235.01)"><path d="m0 0-22.669-39.264-22.669 39.264h-36.227l58.896-102.01 58.896 102.01z" fill="#34495e"></path></g></g></svg><!--/$--></span>Vue</span></a></li><li><a aria-label="solid" href="/uk/doc/benchmark/solid" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="Solid logo" style="z-index:0" class="shrink-0 size-3.5"><defs><linearGradient id="a" x1="27.5" x2="152" y1="3" y2="63.5" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#76b3e1"></stop><stop offset=".3" stop-color="#dcf2fd"></stop><stop offset="1" stop-color="#76b3e1"></stop></linearGradient><linearGradient id="b" x1="95.8" x2="74" y1="32.6" y2="105.2" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#76b3e1"></stop><stop offset=".5" stop-color="#4377bb"></stop><stop offset="1" stop-color="#1f3b77"></stop></linearGradient><linearGradient id="c" x1="18.4" x2="144.3" y1="64.2" y2="149.8" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#315aa9"></stop><stop offset=".5" stop-color="#518ac8"></stop><stop offset="1" stop-color="#315aa9"></stop></linearGradient><linearGradient id="d" x1="75.2" x2="24.4" y1="74.5" y2="260.8" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#4377bb"></stop><stop offset=".5" stop-color="#1a336b"></stop><stop offset="1" stop-color="#1a336b"></stop></linearGradient></defs><path fill="#76b3e1" d="M128 29.683S85.333-1.713 52.327 5.532l-2.415.805c-4.83 1.61-8.855 4.025-11.27 7.245l-1.61 2.415-12.076 20.931 20.93 4.025c8.856 5.636 20.127 8.05 30.592 5.636l37.031 7.245z"></path><path fill="url(#a)" d="M128 29.683S85.333-1.713 52.327 5.532l-2.415.805c-4.83 1.61-8.855 4.025-11.27 7.245l-1.61 2.415-12.076 20.931 20.93 4.025c8.856 5.636 20.127 8.05 30.592 5.636l37.031 7.245z" opacity=".3"></path><path fill="#518ac8" d="m38.642 29.683-3.22.805C21.735 34.513 17.71 47.394 24.955 58.664c8.05 10.465 24.956 16.1 38.641 12.076l49.912-16.906S70.843 22.438 38.642 29.683z"></path><path fill="url(#b)" d="m38.642 29.683-3.22.805C21.735 34.513 17.71 47.394 24.955 58.664c8.05 10.465 24.956 16.1 38.641 12.076l49.912-16.906S70.843 22.438 38.642 29.683z" opacity=".3"></path><path fill="url(#c)" d="M104.654 65.91a36.226 36.226 0 0 0-38.641-12.076L16.1 69.934 0 98.111l90.164 15.295 16.1-28.981c3.22-5.635 2.415-12.075-1.61-18.516z"></path><path fill="url(#d)" d="M88.553 94.085A36.226 36.226 0 0 0 49.912 82.01L0 98.11s42.667 32.202 75.673 24.152l2.415-.806c13.686-4.025 18.516-16.905 10.465-27.37z"></path></svg><!--/$--></span>Solid</span></a></li><li><a aria-label="svelte" href="/uk/doc/benchmark/svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="10 10 130 130" role="img" aria-label="Svelte logo" style="z-index:0" class="shrink-0 size-3.5"><path style="fill:none" d="M0,.2H150v150H0Z" transform="translate(0 -0.2)"></path><path style="fill:#FF3E00" d="M120.85,29.22v-.09C109.38,12.72,86.74,7.86,70.36,18.29L41.61,36.61a32.94,32.94,0,0,0-14.9,22A34.73,34.73,0,0,0,30.12,81,33.12,33.12,0,0,0,25.19,93.3a35.19,35.19,0,0,0,6,26.6c11.47,16.4,34.12,21.27,50.49,10.84l28.75-18.25a33.08,33.08,0,0,0,14.91-22,34.79,34.79,0,0,0-3.43-22.31,33.14,33.14,0,0,0,4.94-12.32A35.16,35.16,0,0,0,120.85,29.22Zm-8.23,23.46a22.87,22.87,0,0,1-.68,2.68L111.39,57l-1.47-1.1a37.31,37.31,0,0,0-11.24-5.63L97.57,50l.1-1.1a6.47,6.47,0,0,0-1.16-4.28,6.88,6.88,0,0,0-7.35-2.65,6,6,0,0,0-1.76.77L58.63,61a6,6,0,0,0-2.7,4A6.44,6.44,0,0,0,57,69.82a6.89,6.89,0,0,0,7.33,2.74,6.44,6.44,0,0,0,1.76-.78l11-7A20.75,20.75,0,0,1,83,62.22a22.83,22.83,0,0,1,24.51,9.09,21.09,21.09,0,0,1,3.61,16,19.8,19.8,0,0,1-9,13.29L73.4,118.92a21.53,21.53,0,0,1-5.85,2.57A22.87,22.87,0,0,1,43,112.39a21.14,21.14,0,0,1-3.6-16,18.39,18.39,0,0,1,.68-2.65l.54-1.66,1.48,1.1a37.25,37.25,0,0,0,11.21,5.58l1.1.32-.09,1.11a6.43,6.43,0,0,0,1.2,4.24,6.86,6.86,0,0,0,7.38,2.73,6.06,6.06,0,0,0,1.77-.77L93.41,88.08a6,6,0,0,0,2.7-4A6.36,6.36,0,0,0,95,79.25a6.9,6.9,0,0,0-7.39-2.74,6.31,6.31,0,0,0-1.76.78l-11,7A21.05,21.05,0,0,1,69,86.84a22.84,22.84,0,0,1-24.48-9.08,21.13,21.13,0,0,1-3.58-16,19.83,19.83,0,0,1,9-13.29L78.7,30.15a21.2,21.2,0,0,1,5.8-2.56A22.85,22.85,0,0,1,109,36.69,21.09,21.09,0,0,1,112.62,52.68Z" transform="translate(0 -0.2)"></path></svg><!--/$--></span>Svelte</span></a></li></ul></div><div><a aria-label="Перейти до блогу" href="/uk/blog" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text flex w-full truncate text-nowrap p-2 text-left font-semibold transition-color"><span class="flex items-center gap-1.5 opacity-60">Блог</span></a></div><div><a aria-label="Натисніть, щоб перейти до інтелектуального чат-бота документації на базі штучного інтелекту." href="/uk/doc/chat" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text w-full truncate text-nowrap p-2 text-left font-semibold transition-color flex items-center"><span class="flex items-center gap-1.5 opacity-60"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bot" aria-hidden="true"><path d="M12 8V4H8"></path><rect width="16" height="12" x="4" y="8" rx="2"></rect><path d="M2 14h2"></path><path d="M20 14h2"></path><path d="M15 13v2"></path><path d="M9 13v2"></path></svg>Задати питання</span></a></div></nav></div></div></div></div></div></div></div></aside><div class="mx-1 mb-3 flex min-h-0 min-w-0 flex-1 flex-row rounded-2xl border border-neutral/40 bg-background md:mr-2"><article aria-label="Вміст документації" class="no-scrollbar relative mb-3 h-full max-h-[calc(100vh-4.5rem)] w-auto flex-1 grow overflow-auto px-4 pb-24 max-md:pl-10 md:px-10" id="content"><div class="m-auto max-w-3xl"><nav aria-label="breadcrumb"><ol class="flex flex-row flex-wrap items-center gap-2 mt-12 ml-3 text-xs" itemScope="" itemType="http://schema.org/BreadcrumbList"><li itemProp="itemListElement" itemScope="" itemType="https://schema.org/ListItem" class="flex items-center"><a href="/uk/doc/get-started" aria-label="Go to Documentation" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-neutral" itemProp="item" itemScope="" itemType="https://schema.org/WebPage" itemID="/uk/doc/get-started"><span itemProp="name">Documentation</span></a><meta itemProp="position" content="1"/></li><li aria-hidden="true" class="flex items-center"><span class="text-neutral"><svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></span></li><li itemProp="itemListElement" itemScope="" itemType="https://schema.org/ListItem" class="flex items-center"><span itemProp="item" class="inline-flex items-center font-medium text-neutral-700 transition-colors duration-200"><span itemProp="name">Середовище</span><meta itemProp="position" content="2"/></span></li><li aria-hidden="true" class="flex items-center"><span class="text-neutral"><svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></span></li><li itemProp="itemListElement" itemScope="" itemType="https://schema.org/ListItem" class="flex items-center"><a href="https://intlayer.org/uk/doc/environment/vite-and-svelte" aria-label="Go to Vite та Svelte" target="_self" aria-current="page" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-neutral" itemProp="item" itemScope="" itemType="https://schema.org/WebPage" itemID="https://intlayer.org/uk/doc/environment/vite-and-svelte"><span itemProp="name">Vite та Svelte</span></a><meta itemProp="position" content="3"/></li></ol></nav><header class="z-10 mx-auto mt-5 flex flex-col gap-2 px-4 py-2 text-xs"><span class="flex items-center gap-2">Автор<!-- -->:<!-- --> <div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-author-social-medias" aria-haspopup="true"><a href="https://github.com/aymericzip" aria-label="Сторінка github Aymeric PINEAU" rel="noopener noreferrer nofollow" target="_blank" class="transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl flex items-center gap-2 text-neutral"><div class="rounded-full border-text ring-offset-0 transition-ring duration-200 size-7 border-[1px] p-0.25 scale-70" aria-label="Аватар Aymeric PINEAU" role="img"><div class="relative flex aspect-square size-full flex-row items-center justify-center"><div class="absolute top-0 left-0 flex aspect-square size-full flex-col items-center justify-center rounded-full bg-text text-text-opposite"><img class="size-full rounded-full object-cover" src="https://avatars.githubusercontent.com/u/62554073?v=4&size=124" srcSet="https://avatars.githubusercontent.com/u/62554073?v=4&size=124" alt="Аватар Aymeric PINEAU" width="59" height="59" loading="lazy" draggable="false"/></div></div></div>Aymeric PINEAU</a><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral left-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:left-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 flex w-auto min-w-0 flex-row gap-2 p-2 delay-200 group-hover/popover:delay-100" role="group" aria-labelledby="unrollable-panel-button-author-social-medias" id="unrollable-panel-author-social-medias"><a href="https://www.linkedin.com/in/aymericpineau/" aria-label="Go to https://www.linkedin.com/in/aymericpineau/" rel="noopener noreferrer nofollow" target="_blank" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl max-h-5 max-w-5 shrink-0 transition-colors hover:text-primary"><svg role="img" aria-label="LinkedIn logo" xmlns="http://www.w3.org/2000/svg" width="72" height="72" viewBox="0 0 72 72" class="h-auto max-h-full max-w-full"><mask id="linkedin-mask"><rect width="72" height="72" fill="white"></rect><path d="M62,62 L51.315625,62 L51.315625,43.8021149 C51.315625,38.8127542 49.4197917,36.0245323 45.4707031,36.0245323 C41.1746094,36.0245323 38.9300781,38.9261103 38.9300781,43.8021149 L38.9300781,62 L28.6333333,62 L28.6333333,27.3333333 L38.9300781,27.3333333 L38.9300781,32.0029283 C38.9300781,32.0029283 42.0260417,26.2742151 49.3825521,26.2742151 C56.7356771,26.2742151 62,30.7644705 62,40.051212 L62,62 Z M16.349349,22.7940133 C12.8420573,22.7940133 10,19.9296567 10,16.3970067 C10,12.8643566 12.8420573,10 16.349349,10 C19.8566406,10 22.6970052,12.8643566 22.6970052,16.3970067 C22.6970052,19.9296567 19.8566406,22.7940133 16.349349,22.7940133 Z M11.0325521,62 L21.769401,62 L21.769401,27.3333333 L11.0325521,27.3333333 L11.0325521,62 Z" fill="black"></path></mask><rect width="72" height="72" rx="8" fill="currentColor" mask="url(#linkedin-mask)"></rect></svg></a><a href="https://x.com/aymericzip" aria-label="Go to https://x.com/aymericzip" rel="noopener noreferrer nofollow" target="_blank" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl max-h-5 max-w-5 shrink-0 transition-colors hover:text-primary"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 271" width="300" height="271" fill="currentColor" role="img" aria-label="X logo" class="h-auto max-h-full max-w-full"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a href="https://github.com/aymericzip" aria-label="Go to https://github.com/aymericzip" rel="noopener noreferrer nofollow" target="_blank" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl max-h-5 max-w-5 shrink-0 transition-colors hover:text-primary"><svg role="img" aria-label="GitHub logo" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="h-auto max-h-full max-w-full"><path d="M127.975 10C61.1744 10 7 64.167 7 130.99C7 184.444 41.663 229.787 89.7396 245.786C95.7928 246.9 97.9987 243.164 97.9987 239.955C97.9987 237.088 97.8947 229.475 97.8353 219.382C64.1824 226.69 57.082 203.161 57.082 203.161C51.5784 189.182 43.6461 185.461 43.6461 185.461C32.6612 177.96 44.4779 178.108 44.4779 178.108C56.6215 178.963 63.0089 190.579 63.0089 190.579C73.8007 209.065 91.329 203.725 98.2215 200.628C99.3208 192.814 102.448 187.482 105.901 184.459C79.0369 181.406 50.7911 171.023 50.7911 124.662C50.7911 111.456 55.5074 100.65 63.2466 92.1974C61.9988 89.1374 57.847 76.8304 64.435 60.1785C64.435 60.1785 74.588 56.9254 97.7016 72.582C107.35 69.8934 117.703 68.5565 127.99 68.5045C138.269 68.5565 148.615 69.8934 158.278 72.582C181.377 56.9254 191.515 60.1785 191.515 60.1785C198.118 76.8304 193.966 89.1374 192.726 92.1974C200.48 100.65 205.159 111.456 205.159 124.662C205.159 171.142 176.869 181.369 149.923 184.362C154.26 188.098 158.13 195.481 158.13 206.77C158.13 222.939 157.981 235.989 157.981 239.955C157.981 243.193 160.165 246.959 166.3 245.778C214.339 229.743 248.973 184.429 248.973 130.99C248.973 64.167 194.798 10 127.975 10Z"></path></svg></a></div></div></span><div class="flex w-full flex-row justify-between gap-4 py-2"><span class="block">Дата створення<!-- -->:<span class="ml-2 text-neutral">2025-04-18</span></span><span class="block">Останнє оновлення<!-- -->:<span class="ml-2 text-neutral">2026-05-31</span></span></div></header><div class="text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/70 p-0 border-text sticky top-10 z-10 mx-auto mt-5 flex max-w-3xl flex-col gap-2 px-4 py-2 max-md:overflow-x-auto"><div class="flex w-full flex-row justify-between gap-4"><div class="flex w-full shrink flex-row items-center justify-start gap-4"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-mcp" aria-haspopup="true"><a aria-label="Переглянути шаблон додатку" rel="noopener noreferrer" href="https://github.dev/aymericzip/intlayer-vite-svelte-template" target="_blank" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex p-2"><svg role="img" aria-label="GitHub logo" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="size-4"><path d="M127.975 10C61.1744 10 7 64.167 7 130.99C7 184.444 41.663 229.787 89.7396 245.786C95.7928 246.9 97.9987 243.164 97.9987 239.955C97.9987 237.088 97.8947 229.475 97.8353 219.382C64.1824 226.69 57.082 203.161 57.082 203.161C51.5784 189.182 43.6461 185.461 43.6461 185.461C32.6612 177.96 44.4779 178.108 44.4779 178.108C56.6215 178.963 63.0089 190.579 63.0089 190.579C73.8007 209.065 91.329 203.725 98.2215 200.628C99.3208 192.814 102.448 187.482 105.901 184.459C79.0369 181.406 50.7911 171.023 50.7911 124.662C50.7911 111.456 55.5074 100.65 63.2466 92.1974C61.9988 89.1374 57.847 76.8304 64.435 60.1785C64.435 60.1785 74.588 56.9254 97.7016 72.582C107.35 69.8934 117.703 68.5565 127.99 68.5045C138.269 68.5565 148.615 69.8934 158.278 72.582C181.377 56.9254 191.515 60.1785 191.515 60.1785C198.118 76.8304 193.966 89.1374 192.726 92.1974C200.48 100.65 205.159 111.456 205.159 124.662C205.159 171.142 176.869 181.369 149.923 184.362C154.26 188.098 158.13 195.481 158.13 206.77C158.13 222.939 157.981 235.989 157.981 239.955C157.981 243.193 160.165 246.959 166.3 245.778C214.339 229.743 248.973 184.429 248.973 130.99C248.973 64.167 194.798 10 127.975 10Z"></path></svg></a><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral left-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:left-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-mcp" id="unrollable-panel-mcp"><strong>Переглянути шаблон додатку на GitHub</strong><p class="text-neutral">На цій сторінці доступний шаблон додатку.</p></div></div><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-application-showcase" aria-haspopup="true"><a aria-label="Демо-додаток" rel="noopener noreferrer" href="https://intlayer-vite-svelte-template.vercel.app" target="_blank" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex p-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-globe size-4" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg></a><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral left-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:left-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-application-showcase" id="unrollable-panel-application-showcase"><strong>Переглянути демонстраційний додаток</strong><p class="text-neutral">Ця сторінка веде на живу демонстрацію шаблону.</p></div></div><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-summarize" aria-haspopup="true"><a href="https://chatgpt.com/?q=Підсумуйте наступний документ: https://intlayer.org/uk/doc/environment/vite-and-svelte.md" aria-label="Підсумувати за допомогою ChatGPT" rel="noopener noreferrer nofollow" target="_blank" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex p-2"><!--$--><svg role="img" aria-label="ChatGPT logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 320" fill="currentColor" class="size-4"><path d="m297.06 130.97c7.26-21.79 4.76-45.66-6.85-65.48-17.46-30.4-52.56-46.04-86.84-38.68-15.25-17.18-37.16-26.95-60.13-26.81-35.04-.08-66.13 22.48-76.91 55.82-22.51 4.61-41.94 18.7-53.31 38.67-17.59 30.32-13.58 68.54 9.92 94.54-7.26 21.79-4.76 45.66 6.85 65.48 17.46 30.4 52.56 46.04 86.84 38.68 15.24 17.18 37.16 26.95 60.13 26.8 35.06.09 66.16-22.49 76.94-55.86 22.51-4.61 41.94-18.7 53.31-38.67 17.57-30.32 13.55-68.51-9.94-94.51zm-120.28 168.11c-14.03.02-27.62-4.89-38.39-13.88.49-.26 1.34-.73 1.89-1.07l63.72-36.8c3.26-1.85 5.26-5.32 5.24-9.07v-89.83l26.93 15.55c.29.14.48.42.52.74v74.39c-.04 33.08-26.83 59.9-59.91 59.97zm-128.84-55.03c-7.03-12.14-9.56-26.37-7.15-40.18.47.28 1.3.79 1.89 1.13l63.72 36.8c3.23 1.89 7.23 1.89 10.47 0l77.79-44.92v31.1c.02.32-.13.63-.38.83l-64.41 37.19c-28.69 16.52-65.33 6.7-81.92-21.95zm-16.77-139.09c7-12.16 18.05-21.46 31.21-26.29 0 .55-.03 1.52-.03 2.2v73.61c-.02 3.74 1.98 7.21 5.23 9.06l77.79 44.91-26.93 15.55c-.27.18-.61.21-.91.08l-64.42-37.22c-28.63-16.58-38.45-53.21-21.95-81.89zm221.26 51.49-77.79-44.92 26.93-15.54c.27-.18.61-.21.91-.08l64.42 37.19c28.68 16.57 38.51 53.26 21.94 81.94-7.01 12.14-18.05 21.44-31.2 26.28v-75.81c.03-3.74-1.96-7.2-5.2-9.06zm26.8-40.34c-.47-.29-1.3-.79-1.89-1.13l-63.72-36.8c-3.23-1.89-7.23-1.89-10.47 0l-77.79 44.92v-31.1c-.02-.32.13-.63.38-.83l64.41-37.16c28.69-16.55 65.37-6.7 81.91 22 6.99 12.12 9.52 26.31 7.15 40.1zm-168.51 55.43-26.94-15.55c-.29-.14-.48-.42-.52-.74v-74.39c.02-33.12 26.89-59.96 60.01-59.94 14.01 0 27.57 4.92 38.34 13.88-.49.26-1.33.73-1.89 1.07l-63.72 36.8c-3.26 1.85-5.26 5.31-5.24 9.06l-.04 89.79zm14.63-31.54 34.65-20.01 34.65 20v40.01l-34.65 20-34.65-20z"></path></svg><!--/$--></a><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral left-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:left-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-50 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-summarize" id="unrollable-panel-summarize"><strong>Надішліть цей документ вашому улюбленому AI-асистенту</strong><a href="https://chatgpt.com/?q=Підсумуйте наступний документ: https://intlayer.org/uk/doc/environment/vite-and-svelte.md" aria-label="Підсумувати за допомогою ChatGPT" rel="noopener noreferrer nofollow" target="_blank" class="duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex flex-row items-center gap-4 p-3"><!--$--><svg role="img" aria-label="ChatGPT logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 320" fill="currentColor" class="size-4"><path d="m297.06 130.97c7.26-21.79 4.76-45.66-6.85-65.48-17.46-30.4-52.56-46.04-86.84-38.68-15.25-17.18-37.16-26.95-60.13-26.81-35.04-.08-66.13 22.48-76.91 55.82-22.51 4.61-41.94 18.7-53.31 38.67-17.59 30.32-13.58 68.54 9.92 94.54-7.26 21.79-4.76 45.66 6.85 65.48 17.46 30.4 52.56 46.04 86.84 38.68 15.24 17.18 37.16 26.95 60.13 26.8 35.06.09 66.16-22.49 76.94-55.86 22.51-4.61 41.94-18.7 53.31-38.67 17.57-30.32 13.55-68.51-9.94-94.51zm-120.28 168.11c-14.03.02-27.62-4.89-38.39-13.88.49-.26 1.34-.73 1.89-1.07l63.72-36.8c3.26-1.85 5.26-5.32 5.24-9.07v-89.83l26.93 15.55c.29.14.48.42.52.74v74.39c-.04 33.08-26.83 59.9-59.91 59.97zm-128.84-55.03c-7.03-12.14-9.56-26.37-7.15-40.18.47.28 1.3.79 1.89 1.13l63.72 36.8c3.23 1.89 7.23 1.89 10.47 0l77.79-44.92v31.1c.02.32-.13.63-.38.83l-64.41 37.19c-28.69 16.52-65.33 6.7-81.92-21.95zm-16.77-139.09c7-12.16 18.05-21.46 31.21-26.29 0 .55-.03 1.52-.03 2.2v73.61c-.02 3.74 1.98 7.21 5.23 9.06l77.79 44.91-26.93 15.55c-.27.18-.61.21-.91.08l-64.42-37.22c-28.63-16.58-38.45-53.21-21.95-81.89zm221.26 51.49-77.79-44.92 26.93-15.54c.27-.18.61-.21.91-.08l64.42 37.19c28.68 16.57 38.51 53.26 21.94 81.94-7.01 12.14-18.05 21.44-31.2 26.28v-75.81c.03-3.74-1.96-7.2-5.2-9.06zm26.8-40.34c-.47-.29-1.3-.79-1.89-1.13l-63.72-36.8c-3.23-1.89-7.23-1.89-10.47 0l-77.79 44.92v-31.1c-.02-.32.13-.63.38-.83l64.41-37.16c28.69-16.55 65.37-6.7 81.91 22 6.99 12.12 9.52 26.31 7.15 40.1zm-168.51 55.43-26.94-15.55c-.29-.14-.48-.42-.52-.74v-74.39c.02-33.12 26.89-59.96 60.01-59.94 14.01 0 27.57 4.92 38.34 13.88-.49.26-1.33.73-1.89 1.07l-63.72 36.8c-3.26 1.85-5.26 5.31-5.24 9.06l-.04 89.79zm14.63-31.54 34.65-20.01 34.65 20v40.01l-34.65 20-34.65-20z"></path></svg><!--/$-->ChatGPT</a><a href="https://claude.ai/new?q=Підсумуйте наступний документ: https://intlayer.org/uk/doc/environment/vite-and-svelte.md" aria-label="Підсумувати за допомогою Claude" rel="noopener noreferrer nofollow" target="_blank" class="duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex flex-row items-center gap-4 p-3"><!--$--><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Anthropic logo" fill="none" viewBox="0 0 24 24" height="24" width="24" class="size-4"><path fill="currentColor" d="m13.788825 3.932 6.43325 16.136075h3.5279L17.316725 3.932H13.788825Z" stroke-width="0.25"></path><path fill="currentColor" d="m6.325375 13.682775 2.20125 -5.67065 2.201275 5.67065H6.325375ZM6.68225 3.932 0.25 20.068075h3.596525l1.3155 -3.3886h6.729425l1.315275 3.3886h3.59655L10.371 3.932H6.68225Z" stroke-width="0.25"></path></svg><!--/$-->Claude</a><a href="https://chat.deepseek.com/?q=Підсумуйте наступний документ: https://intlayer.org/uk/doc/environment/vite-and-svelte.md" aria-label="Підсумувати за допомогою DeepSeek" rel="noopener noreferrer nofollow" target="_blank" class="duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex flex-row items-center gap-4 p-3"><!--$--><svg role="img" aria-label="DeepSeek logo" fill="currentColor" fill-rule="evenodd" height="1em" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg" class="size-4"><path d="M23.748 4.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526 5.526 0 01-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365 11.365 0 00-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055 3.055 0 01-.465.137 9.597 9.597 0 00-2.883-.102c-1.885.21-3.39 1.102-4.497 2.623C.082 8.606-.231 10.684.152 12.85c.403 2.284 1.569 4.175 3.36 5.653 1.858 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.133-.284 4.994-1.86.47.234.962.327 1.78.397.63.059 1.236-.03 1.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926 1.096-1.296 2.746-2.642 3.392-7.003.05-.347.007-.565 0-.845-.004-.17.035-.237.23-.256a4.173 4.173 0 001.545-.475c1.396-.763 1.96-2.015 2.093-3.517.02-.23-.004-.467-.247-.588zM11.581 18c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696 4.696 0 011.529-.039c2.132.312 3.946 1.265 5.468 2.774.868.86 1.525 1.887 2.202 2.891.72 1.066 1.494 2.082 2.48 2.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306 0 01.415-.287.302.302 0 01.2.288.306.306 0 01-.31.307.303.303 0 01-.304-.308zm3.11 1.596c-.2.081-.399.151-.59.16a1.245 1.245 0 01-.798-.254c-.274-.23-.47-.358-.552-.758a1.73 1.73 0 01.016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559 0 01-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z"></path></svg><!--/$-->DeepSeek</a><a href="https://www.google.com/search?udm=50&aep=11&q=Підсумуйте наступний документ: https://intlayer.org/uk/doc/environment/vite-and-svelte.md" aria-label="Підсумувати за допомогою Google AI mode" rel="noopener noreferrer nofollow" target="_blank" class="duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex flex-row items-center gap-4 p-3"><!--$--><svg role="img" aria-label="Google AI logo" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="size-4"><path d="M915.2 448l-4.2-17.8H524V594h231.2c-24 114-135.4 174-226.4 174-66.2 0-136-27.8-182.2-72.6-47.4-46-77.6-113.8-77.6-183.6 0-69 31-138 76.2-183.4 45-45.2 113.2-70.8 181-70.8 77.6 0 133.2 41.2 154 60l116.4-115.8c-34.2-30-128-105.6-274.2-105.6-112.8 0-221 43.2-300 122C144.4 295.8 104 408 104 512s38.2 210.8 113.8 289c80.8 83.4 195.2 127 313 127 107.2 0 208.8-42 281.2-118.2 71.2-75 108-178.8 108-287.6 0-45.8-4.6-73-4.8-74.2z"></path></svg><!--/$-->Google AI mode</a><a href="https://gemini.google.com/?q=Підсумуйте наступний документ: https://intlayer.org/uk/doc/environment/vite-and-svelte.md" aria-label="Підсумувати за допомогою Gemini" rel="noopener noreferrer nofollow" target="_blank" class="duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex flex-row items-center gap-4 p-3"><!--$--><svg role="img" aria-label="Gemini logo" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="size-4"><path d="M16 8.016A8.522 8.522 0 008.016 16h-.032A8.521 8.521 0 000 8.016v-.032A8.521 8.521 0 007.984 0h.032A8.522 8.522 0 0016 7.984v.032z" fill="currentColor"></path></svg><!--/$-->Gemini</a><a href="https://www.perplexity.ai/search/new?q=Підсумуйте наступний документ: https://intlayer.org/uk/doc/environment/vite-and-svelte.md" aria-label="Підсумувати за допомогою Perplexity" rel="noopener noreferrer nofollow" target="_blank" class="duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex flex-row items-center gap-4 p-3"><!--$--><svg width="400" role="img" aria-label="Perplexity logo" height="400" viewBox="0 0 400 400" fill="none" xmlns="http://www.w3.org/2000/svg" class="size-4"><path fill-rule="evenodd" clip-rule="evenodd" d="M101.008 42L190.99 124.905L190.99 124.886L190.99 42.1913H208.506L208.506 125.276L298.891 42V136.524L336 136.524V272.866H299.005V357.035L208.506 277.525L208.506 357.948H190.99L190.99 278.836L101.11 358V272.866H64V136.524H101.008V42ZM177.785 153.826H81.5159V255.564H101.088V223.472L177.785 153.826ZM118.625 231.149V319.392L190.99 255.655L190.99 165.421L118.625 231.149ZM209.01 254.812V165.336L281.396 231.068V272.866H281.489V318.491L209.01 254.812ZM299.005 255.564H318.484V153.826L222.932 153.826L299.005 222.751V255.564ZM281.375 136.524V81.7983L221.977 136.524L281.375 136.524ZM177.921 136.524H118.524V81.7983L177.921 136.524Z" fill="currentColor"></path></svg><!--/$-->Perplexity</a><a href="https://chat.mistral.ai/chat/?q=Підсумуйте наступний документ: https://intlayer.org/uk/doc/environment/vite-and-svelte.md" aria-label="Підсумувати за допомогою Mistral" rel="noopener noreferrer nofollow" target="_blank" class="duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex flex-row items-center gap-4 p-3"><!--$--><svg fill="currentColor" role="img" aria-label="Mistral logo" fill-rule="evenodd" height="1em" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg" class="size-4"><path clip-rule="evenodd" d="M3.428 3.4h3.429v3.428h3.429v3.429h-.002 3.431V6.828h3.427V3.4h3.43v13.714H24v3.429H13.714v-3.428h-3.428v-3.429h-3.43v3.428h3.43v3.429H0v-3.429h3.428V3.4zm10.286 13.715h3.428v-3.429h-3.427v3.429z"></path></svg><!--/$-->Mistral</a><a href=" https://x.com/i/grok?text=Підсумуйте наступний документ: https://intlayer.org/uk/doc/environment/vite-and-svelte.md" aria-label="Підсумувати за допомогою Grok" target="_self" class="duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex flex-row items-center gap-4 p-3"><!--$--><svg role="img" aria-label="Grok logo" fill="currentColor" fill-rule="evenodd" height="1em" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg" class="size-4"><path d="M9.27 15.29l7.978-5.897c.391-.29.95-.177 1.137.272.98 2.369.542 5.215-1.41 7.169-1.951 1.954-4.667 2.382-7.149 1.406l-2.711 1.257c3.889 2.661 8.611 2.003 11.562-.953 2.341-2.344 3.066-5.539 2.388-8.42l.006.007c-.983-4.232.242-5.924 2.75-9.383.06-.082.12-.164.179-.248l-3.301 3.305v-.01L9.267 15.292M7.623 16.723c-2.792-2.67-2.31-6.801.071-9.184 1.761-1.763 4.647-2.483 7.166-1.425l2.705-1.25a7.808 7.808 0 00-1.829-1A8.975 8.975 0 005.984 5.83c-2.533 2.536-3.33 6.436-1.962 9.764 1.022 2.487-.653 4.246-2.34 6.022-.599.63-1.199 1.259-1.682 1.925l7.62-6.815"></path></svg><!--/$-->Grok</a><p class="text-neutral">Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту</p></div></div><div class="flex size-5 h-8 flex-1 flex-row items-center justify-between gap-5 p-2"><svg role="progressbar" viewBox="0 0 10 10" aria-valuenow="0" aria-valuemin="0" aria-valuemax="1" class="block h-full shrink-0"><circle cx="5" cy="5" r="4" fill="none" stroke-width="1" class="stroke-current/25"></circle><circle cx="5" cy="5" r="4" fill="none" stroke-width="1" stroke="currentColor" stroke-dasharray="25.132741228718345" stroke-dashoffset="25.132741228718345" stroke-linecap="round" transform="rotate(-90 5 5)" class="transition-all"></circle></svg><span class="w-full flex-1 truncate text-neutral text-xs"></span></div></div><div class="flex shrink-0 flex-row items-center justify-end gap-4"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-outdated-translation" aria-haspopup="true"><div class="flex p-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock size-4" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 6v6l4 2"></path></svg></div><div class="backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-1 flex-col gap-2 p-3 text-neutral text-sm" role="group" aria-labelledby="unrollable-panel-button-outdated-translation" id="unrollable-panel-outdated-translation"><div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 p-0 divide-y divide-dashed divide-text/20 border-text gap-0 mt-3 max-h-[60vh] min-w-64" role="list" aria-label="Document history"><h4 class="mb-2 pb-4 font-medium text-sm text-text">Історія версій</h4><ol class="divide-y divide-dashed divide-text/20 overflow-y-auto p-1"><li class="flex flex-row items-center justify-between gap-3 px-2 py-1 pr-1.5"><span class="mt-1 text-text text-xs">"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей"</span><div class="flex flex-col items-end justify-between gap-1 px-2 py-1 text-neutral text-sm"><span class="text-nowrap">v<!-- -->8.9.0</span><span class="text-nowrap">04.05.2026</span></div></li><li class="flex flex-row items-center justify-between gap-3 px-2 py-1 pr-1.5"><span class="mt-1 text-text text-xs">"Додано команду init"</span><div class="flex flex-col items-end justify-between gap-1 px-2 py-1 text-neutral text-sm"><span class="text-nowrap">v<!-- -->7.5.9</span><span class="text-nowrap">30.12.2025</span></div></li><li class="flex flex-row items-center justify-between gap-3 px-2 py-1 pr-1.5"><span class="mt-1 text-text text-xs">"Оновлено документацію"</span><div class="flex flex-col items-end justify-between gap-1 px-2 py-1 text-neutral text-sm"><span class="text-nowrap">v<!-- -->5.5.11</span><span class="text-nowrap">19.11.2025</span></div></li><li class="flex flex-row items-center justify-between gap-3 px-2 py-1 pr-1.5"><span class="mt-1 text-text text-xs">"Ініціалізовано історію"</span><div class="flex flex-col items-end justify-between gap-1 px-2 py-1 text-neutral text-sm"><span class="text-nowrap">v<!-- -->5.5.10</span><span class="text-nowrap">29.06.2025</span></div></li></ol></div></div></div><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-language" aria-haspopup="true"><div class="flex p-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages size-4" aria-hidden="true"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg></div><div class="backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-1 flex-col gap-2 p-3 text-neutral text-sm" role="group" aria-labelledby="unrollable-panel-button-language" id="unrollable-panel-language"><p>Вміст цієї сторінки перекладено за допомогою штучного інтелекту.</p><a aria-label="Натисніть, щоб змінити мову на англійську" href="/doc/environment/vite-and-svelte" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text">Переглянути останню версію оригінального вмісту англійською</a></div></div><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-contribute" aria-haspopup="true"><a aria-label="Натисніть тут, щоб зробити внесок" rel="noopener noreferrer" href="https://github.com/aymericzip/intlayer/edit/main/docs/docs/uk/intlayer_with_vite+svelte.md" target="_blank" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex p-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-pen size-4" aria-hidden="true"><path d="M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z"></path></svg></a><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-1 flex-col gap-2 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-contribute" id="unrollable-panel-contribute"><strong>Редагувати цей документ</strong><p class="text-neutral">Якщо у вас є ідея щодо покращення цієї документації, будь ласка, долучіться, надіславши pull request на GitHub.</p><a aria-label="Натисніть тут, щоб зробити внесок" rel="noopener noreferrer" href="https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_vite+svelte.md" target="_blank" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text">Посилання на документацію на GitHub<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 inline-block size-4" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a></div></div><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center p-2" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-4" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати</strong><p class="text-neutral">Скопіювати документацію у форматі Markdown в буфер обміну</p></div></div></div></div></div><div class="m-auto flex max-w-2xl flex-col gap-8 p-4 text-text/90 max-md:px-0"><div class="flex flex-col gap-8 py-10"><h1 class="text-3xl mb-8 text-text" id="----vite--svelte---intlayer---i18n">Перекладіть ваш вебсайт на Vite та Svelte за допомогою Intlayer | Інтернаціоналізація (i18n)</h1><div class="relative w-full rounded-xl border border-card"><div class="flex shrink-0 gap-3 p-3 sticky rounded-xl top-24 z-5 bg-background/70 backdrop-blur overflow-x-auto"><div class="relative z-0 flex size-full flex-row items-center gap-2 border-text text-text" aria-orientation="horizontal" aria-multiselectable="false" role="tablist"><button class="cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none" data-active="true" role="tab" aria-selected="true" aria-controls="tabpanel-code" id="tab-code" type="button" tabindex="0">Код</button><button class="cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none text-neutral/70" data-active="false" role="tab" aria-selected="false" aria-controls="tabpanel-demo" id="tab-demo" type="button" tabindex="-1">Демо</button></div></div><div class="relative w-full min-w-0 overflow-x-clip [-webkit-clip-path:inset(0)] [clip-path:inset(0)]" style="touch-action:pan-y"><div role="tablist" aria-orientation="horizontal" class="grid w-full min-w-0 transition-transform duration-300 ease-in-out" style="grid-template-columns:repeat(2, 100%);transform:translateX(-0%)"><div role="tabpanel" aria-labelledby="tab-code" id="tabpanel-code" aria-hidden="false" tabindex="0" data-active="true" class="w-full min-w-0 p-3 opacity-100 transition-opacity duration-300 ease-in-out"><div class="flex w-full min-w-0 flex-col items-stretch gap-6"> <div class="flex flex-col text-text backdrop-blur rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl bg-card/70 border-[1.3px] border-neutral/20 gap-0 overflow-hidden p-0"><iframe sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts" loading="lazy" src="https://ide.intlayer.org/aymericzip/intlayer-vite-svelte-template?file=intlayer.config.ts" title="Demo CodeSandbox - Intlayer" class="block max-h-[80vh] min-h-[12rem] w-full m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"></iframe><div class="flex items-center justify-between gap-3 px-3 py-1"><a href="https://ide.intlayer.org/aymericzip/intlayer-vite-svelte-template?file=intlayer.config.ts" aria-label="" rel="noopener noreferrer" target="_blank" class="transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] hover:bg-current/0 hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl inline-flex min-w-0 max-w-[calc(100%-3rem)] items-center gap-2 text-neutral text-xs underline-offset-2 hover:text-text hover:underline">ide.intlayer.org<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 inline-block size-4" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Open embedded page in fullscreen" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-move-diagonal flex-none shrink-0 size-4" aria-hidden="true"><path d="M11 19H5v-6"></path><path d="M13 5h6v6"></path><path d="M19 5 5 19"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Open embedded page in fullscreen</span></button></div></div></div></div><div role="tabpanel" aria-labelledby="tab-demo" id="tabpanel-demo" aria-hidden="true" tabindex="-1" data-active="false" class="w-full min-w-0 p-3 transition-opacity duration-300 ease-in-out pointer-events-none opacity-0"><div class="flex w-full min-w-0 flex-col items-stretch gap-6"> <div class="flex flex-col text-text backdrop-blur rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl bg-card/70 border-[1.3px] border-neutral/20 gap-0 overflow-hidden p-0"><iframe sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts" loading="lazy" src="https://intlayer-vite-svelte-template.vercel.app" title="Демо - intlayer-vite-svelte-template" class="block max-h-[80vh] min-h-[12rem] w-full m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"></iframe><div class="flex items-center justify-between gap-3 px-3 py-1"><a href="https://intlayer-vite-svelte-template.vercel.app/" aria-label="" rel="noopener noreferrer" target="_blank" class="transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] hover:bg-current/0 hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl inline-flex min-w-0 max-w-[calc(100%-3rem)] items-center gap-2 text-neutral text-xs underline-offset-2 hover:text-text hover:underline">intlayer-vite-svelte-template.vercel.app<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 inline-block size-4" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Open embedded page in fullscreen" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-move-diagonal flex-none shrink-0 size-4" aria-hidden="true"><path d="M11 19H5v-6"></path><path d="M13 5h6v6"></path><path d="M19 5 5 19"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Open embedded page in fullscreen</span></button></div></div></div></div></div></div></div><h2 class="mb-2 text-2xl relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-16 text-text" id="" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Зміст</h2><h2 class="mb-2 text-2xl relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-16 text-text" id="---intlayer---" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Чому варто обрати Intlayer, а не альтернативи?</h2><p>Порівняно з основними рішеннями, такими як <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">svelte-i18n</code> або <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">i18next</code>, Intlayer — це рішення, яке має такі інтегровані оптимізації, як:</p> <div class="text-text rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl px-3 py-2 border-[1.3px] border-neutral/20 backdrop-blur-none bg-transparent flex flex-col gap-1 overflow-hidden"> <div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full flex items-center justify-between gap-2 text-lg!" aria-expanded="false" aria-busy="false" aria-disabled="false" aria-controls="_R_1259j9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap">Повна підтримка Svelte</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out divide-y divide-neutral" id="_R_1259j9bcq_-accordion-content" aria-labelledby="_R_1259j9bcq_-accordion-content"><div style="min-height:0px" class="divide-y divide-neutral"><div class="mb-8 flex flex-col gap-6 px-4 pt-6 text-sm text-text/80"> <p>Intlayer оптимізовано для ідеальної роботи зі Svelte, пропонуючи <strong class="text-text">визначення вмісту на рівні компонентів</strong>, <strong class="text-text">реактивні переклади</strong> та всі функції, необхідні для масштабування інтернаціоналізації (i18n).</p> </div></div></div></div><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full flex items-center justify-between gap-2 text-lg!" aria-expanded="false" aria-busy="false" aria-disabled="false" aria-controls="_R_1i59j9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap">Розмір бандлу</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out divide-y divide-neutral" id="_R_1i59j9bcq_-accordion-content" aria-labelledby="_R_1i59j9bcq_-accordion-content"><div style="min-height:0px" class="divide-y divide-neutral"><div class="mb-8 flex flex-col gap-6 px-4 pt-6 text-sm text-text/80"> <p>Замість того, щоб завантажувати великі файли JSON на свої сторінки, завантажуйте лише необхідний вміст. Intlayer допомагає <strong class="text-text">зменшити розмір бандлу і сторінок до 50%</strong>.</p> </div></div></div></div><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full flex items-center justify-between gap-2 text-lg!" aria-expanded="false" aria-busy="false" aria-disabled="false" aria-controls="_R_2259j9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap">Підтримуваність</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out divide-y divide-neutral" id="_R_2259j9bcq_-accordion-content" aria-labelledby="_R_2259j9bcq_-accordion-content"><div style="min-height:0px" class="divide-y divide-neutral"><div class="mb-8 flex flex-col gap-6 px-4 pt-6 text-sm text-text/80"> <p>Організація вмісту за окремими областями (scoping) <strong class="text-text">полегшує технічне обслуговування</strong> великомасштабних програм. Ви можете скопіювати або видалити окрему папку функцій без розумового навантаження перегляду всієї кодової бази вмісту. Крім того, Intlayer <strong class="text-text">повністю типізований (fully typed)</strong>, щоб забезпечити точність вашого вмісту.</p> </div></div></div></div><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full flex items-center justify-between gap-2 text-lg!" aria-expanded="false" aria-busy="false" aria-disabled="false" aria-controls="_R_2i59j9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap">Агент AI</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out divide-y divide-neutral" id="_R_2i59j9bcq_-accordion-content" aria-labelledby="_R_2i59j9bcq_-accordion-content"><div style="min-height:0px" class="divide-y divide-neutral"><div class="mb-8 flex flex-col gap-6 px-4 pt-6 text-sm text-text/80"> <p>Спільне розміщення вмісту <strong class="text-text">зменшує контекст, необхідний</strong> для великих мовних моделей (LLM). Intlayer також постачається з набором інструментів, наприклад <strong class="text-text">CLI</strong> для перевірки відсутніх перекладів,<strong class="text-text"><a href="/uk/doc/lsp" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">LSP</a></strong>, <strong class="text-text"><a href="/uk/doc/mcp-server" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">MCP</a></strong> і <strong class="text-text"><a href="/uk/doc/agent_skills" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">навички агента</a></strong>, щоб зробити роботу розробника (DX) ще зручнішою для агентів ШІ.</p> </div></div></div></div><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full flex items-center justify-between gap-2 text-lg!" aria-expanded="false" aria-busy="false" aria-disabled="false" aria-controls="_R_3259j9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap">Автоматизація</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out divide-y divide-neutral" id="_R_3259j9bcq_-accordion-content" aria-labelledby="_R_3259j9bcq_-accordion-content"><div style="min-height:0px" class="divide-y divide-neutral"><div class="mb-8 flex flex-col gap-6 px-4 pt-6 text-sm text-text/80"> <p>Використовуйте автоматизацію для перекладу в конвеєрі CI/CD за допомогою LLM за вашим вибором за рахунок вашого постачальника штучного інтелекту. Intlayer також пропонує <strong class="text-text">компілятор</strong> для автоматизації екстракція вмісту, а також <a href="/uk/doc/concept/cms" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">веб-платформу</a>, щоб допомогти <strong class="text-text">перекладати у фоновому режимі</strong>.</p> </div></div></div></div><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full flex items-center justify-between gap-2 text-lg!" aria-expanded="false" aria-busy="false" aria-disabled="false" aria-controls="_R_3i59j9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap">Продуктивність</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out divide-y divide-neutral" id="_R_3i59j9bcq_-accordion-content" aria-labelledby="_R_3i59j9bcq_-accordion-content"><div style="min-height:0px" class="divide-y divide-neutral"><div class="mb-8 flex flex-col gap-6 px-4 pt-6 text-sm text-text/80"> <p>Підключення великих файлів JSON до компонентів може призвести до проблем з продуктивністю та реакцією. Intlayer оптимізує завантаження вмісту під час збірки (build time).</p> </div></div></div></div><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full flex items-center justify-between gap-2 text-lg!" aria-expanded="false" aria-busy="false" aria-disabled="false" aria-controls="_R_4259j9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap">Співпраця з не-розробниками</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out divide-y divide-neutral" id="_R_4259j9bcq_-accordion-content" aria-labelledby="_R_4259j9bcq_-accordion-content"><div style="min-height:0px" class="divide-y divide-neutral"><div class="mb-8 flex flex-col gap-6 px-4 pt-6 text-sm text-text/80"> <p>Більше ніж просто рішення i18n, Intlayer пропонує <strong class="text-text">власний <a href="/uk/doc/concept/editor" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">візуальний редактор</a></strong> і <strong class="text-text"><a href="/uk/doc/concept/cms" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">повний CMS</a></strong>, щоб допомогти вам керувати своїм багатомовним вмістом у <strong class="text-text">реальному часі</strong>, спрощуючи співпрацю з перекладачами, копірайтерами та іншими членами команди. Контент можна зберігати локально та/або віддалено.</p> </div></div></div></div></div><hr class="mx-6 mt-16 border-dashed text-neutral"/><h2 class="mb-2 text-2xl relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-16 text-text" id="----intlayer--vite--svelte-" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Покрокове керівництво зі встановлення Intlayer у Vite та Svelte додаток</h2><div class="flex flex-col text-text backdrop-blur rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl bg-card/70 border-[1.3px] border-neutral/20 gap-0 overflow-hidden p-0"><iframe sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts" loading="lazy" src="https://ide.intlayer.org/aymericzip/intlayer-vite-react-template?file=intlayer.config.ts" title="Demo CodeSandbox - How to Internationalize your application using Intlayer" class="block max-h-[80vh] min-h-[12rem] w-full m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"></iframe><div class="flex items-center justify-between gap-3 px-3 py-1"><a href="https://ide.intlayer.org/aymericzip/intlayer-vite-react-template?file=intlayer.config.ts" aria-label="" rel="noopener noreferrer" target="_blank" class="transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] hover:bg-current/0 hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl inline-flex min-w-0 max-w-[calc(100%-3rem)] items-center gap-2 text-neutral text-xs underline-offset-2 hover:text-text hover:underline">ide.intlayer.org<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 inline-block size-4" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Open embedded page in fullscreen" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-move-diagonal flex-none shrink-0 size-4" aria-hidden="true"><path d="M11 19H5v-6"></path><path d="M13 5h6v6"></path><path d="M19 5 5 19"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Open embedded page in fullscreen</span></button></div></div><p>Перегляньте <a rel="noopener noreferrer" href="https://github.com/aymericzip/intlayer-vite-svelte-template" target="_blank" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">Application Template<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 inline-block size-4" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a> на GitHub.</p> <ol class="list-none"> <li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">1</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-1-встановлення-залежностеи" aria-label="Крок 1: Встановлення залежностей">Встановлення залежностей</h3></div> <p>Встановіть необхідні пакети за допомогою npm:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">bash</span><div class="flex items-center gap-2"><button type="button" role="combobox" aria-expanded="false" aria-autocomplete="none" dir="ltr" data-state="closed" class="flex w-full cursor-pointer items-center justify-between whitespace-nowrap select-text text-base shadow-none outline-none md:text-sm rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl px-2 py-3 md:py-2 bg-neutral-50 dark:bg-neutral-950 text-text ring-0 focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-neutral-200 dark:focus-visible:ring-neutral-500 focus-visible:ring-offset-white dark:focus-visible:ring-offset-neutral-500 [box-shadow:none] focus:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-error [&>span]:line-clamp-1 py-1!" aria-label="Виберіть менеджер пакетів"><span style="pointer-events:none"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down size-4 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></button><select aria-hidden="true" tabindex="-1" style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></select></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex items-center h-11"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">npm install intlayer svelte-intlayer</span><span class="line block w-full">npm install vite-intlayer --save-dev</span><span class="line block w-full">npx intlayer init</span></code></pre></div></div><!--/$--></div></div></div> <!-- --> <!-- --> <!-- --> <ul class="mt-5 flex list-disc flex-col gap-3 pl-5 marker:text-neutral/80"><li><p><strong class="text-text">intlayer</strong></p> <p>Основний пакет, який надає інструменти для інтернаціоналізації: управління конфігурацією, переклади, <a href="/uk/doc/concept/content" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">оголошення контенту</a>, транспіляцію та <a href="/uk/doc/concept/cli" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">CLI-команди</a>.</p> </li><li><p><strong class="text-text">svelte-intlayer</strong> Пакет, який інтегрує Intlayer у Svelte-додаток. Він надає провайдери контексту та хуки для інтернаціоналізації у Svelte.</p> </li><li><p><strong class="text-text">vite-intlayer</strong> Містить плагін Vite для інтеграції Intlayer з <a rel="noopener noreferrer" href="https://vite.dev/guide/why.html#why-bundle-for-production" target="_blank" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">Vite bundler<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 inline-block size-4" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a>, а також middleware для виявлення переважної мови користувача, керування cookies та обробки перенаправлень URL.</p> </li></ul></div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">2</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-2-конфігурація-вашого-проєкту" aria-label="Крок 2: Конфігурація вашого проєкту">Конфігурація вашого проєкту</h3></div> <p>Створіть конфігураційний файл для налаштування мов вашого застосунку:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">intlayer.config.ts</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">import { Locales, type IntlayerConfig } from "intlayer";</span><span class="line block w-full"></span><span class="line block w-full">const config: IntlayerConfig = {</span><span class="line block w-full"> internationalization: {</span><span class="line block w-full"> locales: [</span><span class="line block w-full"> Locales.ENGLISH,</span><span class="line block w-full"> Locales.FRENCH,</span><span class="line block w-full"> Locales.SPANISH,</span><span class="line block w-full"> // Your other locales</span><span class="line block w-full"> ],</span><span class="line block w-full"> defaultLocale: Locales.ENGLISH,</span><span class="line block w-full"> },</span><span class="line block w-full">};</span><span class="line block w-full"></span><span class="line block w-full">export default config;</span></code></pre></div></div><!--/$--></div></div></div> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Через цей конфігураційний файл ви можете налаштувати локалізовані URL-адреси, перенаправлення в middleware, назви cookie, розташування та розширення ваших декларацій контенту, вимкнути логи Intlayer у консолі та інше. Для повного списку доступних параметрів зверніться до <a href="/uk/doc/concept/configuration" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">документації з конфігурації</a>.</blockquote> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">3</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-3-інтеграція-intlayer-у-конфігурацію-vite" aria-label="Крок 3: Інтеграція Intlayer у конфігурацію Vite">Інтеграція Intlayer у конфігурацію Vite</h3></div> <p>Додайте плагін intlayer до вашої конфігурації.</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">vite.config.ts</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">import { defineConfig } from "vite";</span><span class="line block w-full">import { svelte } from "@sveltejs/vite-plugin-svelte";</span><span class="line block w-full">import { intlayer } from "vite-intlayer";</span><span class="line block w-full"></span><span class="line block w-full">// Документація конфігурації: https://vitejs.dev/config/</span><span class="line block w-full">export default defineConfig({</span><span class="line block w-full"> plugins: [svelte(), intlayer()],</span><span class="line block w-full">});</span></code></pre></div></div><!--/$--></div></div></div> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Плагін Vite <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">intlayer()</code> використовується для інтеграції Intlayer з Vite. Він забезпечує побудову файлів декларацій контенту та відстежує їх у режимі розробки. Він визначає змінні середовища Intlayer у Vite-додатку. Додатково він надаєаліаси (aliases) для оптимізації продуктивності.</blockquote> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">4</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-4-оголосіть-свіи-контент" aria-label="Крок 4: Оголосіть свій контент">Оголосіть свій контент</h3></div> <p>Створюйте та керуйте деклараціями контенту для зберігання перекладів:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">src/app.content.tsx</span><div class="flex items-center gap-2"><button type="button" role="combobox" aria-expanded="false" aria-autocomplete="none" dir="ltr" data-state="closed" class="flex w-full cursor-pointer items-center justify-between whitespace-nowrap select-text text-base shadow-none outline-none md:text-sm rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl px-2 py-3 md:py-2 bg-neutral-50 dark:bg-neutral-950 text-text ring-0 focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-neutral-200 dark:focus-visible:ring-neutral-500 focus-visible:ring-offset-white dark:focus-visible:ring-offset-neutral-500 [box-shadow:none] focus:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-error [&>span]:line-clamp-1 py-1!" aria-label="Виберіть формат словника"><span style="pointer-events:none"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down size-4 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></button><select aria-hidden="true" tabindex="-1" style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></select></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex items-center h-11"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><pre class="min-w-0 max-w-full overflow-x-auto"><code>import { t, type Dictionary } from "intlayer"; const appContent = { key: "app", content: { title: t({ uk: "Привіт, світ", en: "Hello World", fr: "Bonjour le monde", es: "Hola mundo", }), }, } satisfies Dictionary; export default appContent;</code></pre></div></div> <!-- --> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Ваші декларації контенту можуть бути визначені будь-де у вашому додатку, за умови, що вони знаходяться в директорії <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">contentDir</code> (за замовчуванням <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">./src</code>). І вони повинні відповідати розширенню файлу декларації контенту (за замовчуванням <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}</code>).</blockquote> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Для докладнішої інформації зверніться до <a href="/uk/doc/concept/content" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">документації щодо декларації контенту</a>.</blockquote> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">5</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-5-використання-intlayer-у-вашому-коді" aria-label="Крок 5: Використання Intlayer у вашому коді">Використання Intlayer у вашому коді</h3></div> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">src/App.svelte</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full"><script></span><span class="line block w-full"> import { useIntlayer } from "svelte-intlayer";</span><span class="line block w-full"></span><span class="line block w-full"> const content = useIntlayer("app");</span><span class="line block w-full"></script></span><span class="line block w-full"></span><span class="line block w-full"><div></span><span class="line block w-full"></span><span class="line block w-full"></span><span class="line block w-full"><!-- Відобразити вміст як простий контент --></span><span class="line block w-full"><h1>{$content.title}</h1></span><span class="line block w-full"><!-- Зробити вміст редагованим за допомогою редактора --></span><span class="line block w-full"><h1>{@const Title = $content.title}<Title /></h1></span><span class="line block w-full"><!-- Відобразити вміст як рядок --></span><span class="line block w-full"><div aria-label={$content.title.value}></div></span><span class="line block w-full"><div aria-label={$content.title.toString()}></div></span><span class="line block w-full"><div aria-label={String($content.title)}></div></span><span class="line block w-full"></span><span class="line block w-full">> Якщо ваш застосунок уже існує, ви можете скористатися [Intlayer Compiler](/uk/doc/compiler) у поєднанні з [командой extract](/uk/doc/concept/cli/extract), щоб перетворити тисячі компонентів за одну секунду.</span></code></pre></div></div><!--/$--></div></div></div> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">6</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-6-змініть-мову-вашого-вмісту" aria-label="Крок 6: Змініть мову вашого вмісту">Змініть мову вашого вмісту</h3><span class="mb-2 ml-4 rounded-full bg-neutral/15 px-3 py-1 text-text/90 text-xs">Необов'язково</span></div> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">src/App.svelte</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full"><script lang="ts"></span><span class="line block w-full">import { getLocaleName } from 'intlayer';</span><span class="line block w-full">import { useLocale } from "svelte-intlayer";</span><span class="line block w-full"></span><span class="line block w-full">// Отримати інформацію про локаль та функцію setLocale</span><span class="line block w-full">const { locale, availableLocales, setLocale } = useLocale();</span><span class="line block w-full"></span><span class="line block w-full">// Обробка зміни локалі</span><span class="line block w-full">const changeLocale = (event: Event) => {</span><span class="line block w-full"> const target = event.target as HTMLSelectElement;</span><span class="line block w-full"> const newLocale = target.value;</span><span class="line block w-full"> setLocale(newLocale);</span><span class="line block w-full">};</span><span class="line block w-full"></script></span><span class="line block w-full"></span><span class="line block w-full"><div></span><span class="line block w-full"> <select value={$locale} on:change={changeLocale}></span><span class="line block w-full"> {#each availableLocales ?? [] as loc}</span><span class="line block w-full"> <option value={loc}></span><span class="line block w-full"> {getLocaleName(loc)}</span><span class="line block w-full"> </option></span><span class="line block w-full"> {/each}</span><span class="line block w-full"> </select></span><span class="line block w-full"></div></span></code></pre></div></div><!--/$--></div></div></div> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">7</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-7-відображення-markdown" aria-label="Крок 7: Відображення Markdown">Відображення Markdown</h3><span class="mb-2 ml-4 rounded-full bg-neutral/15 px-3 py-1 text-text/90 text-xs">Необов'язково</span></div> <p>Intlayer підтримує рендеринг вмісту в Markdown безпосередньо у вашому Svelte-застосунку. За замовчуванням Markdown розглядається як звичайний текст. Щоб перетворити Markdown у багате HTML-представлення, ви можете інтегрувати <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">@humanspeak/svelte-markdown</code> або інший Markdown-парсер.</p> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Щоб дізнатися, як оголосити markdown-контент за допомогою пакета <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">intlayer</code>, див. <a rel="noopener noreferrer" href="https://github.com/aymericzip/intlayer/tree/main/docs/uk/dictionary/markdown.md" target="_blank" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">документацію з markdown<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 inline-block size-4" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a>.</blockquote> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">src/App.svelte</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full"><script></span><span class="line block w-full"> import { setIntlayerMarkdown } from "svelte-intlayer";</span><span class="line block w-full"></span><span class="line block w-full"> setIntlayerMarkdown((markdown) =></span><span class="line block w-full"> // відобразити вміст markdown як рядок</span><span class="line block w-full"> return markdown;</span><span class="line block w-full"> );</span><span class="line block w-full"></script></span><span class="line block w-full"></span><span class="line block w-full"><h1>{$content.markdownContent}</h1></span></code></pre></div></div><!--/$--></div></div></div> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Ви також можете отримати доступ до даних front-matter вашого markdown за допомогою властивості <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">content.markdownContent.metadata.xxx</code>.</blockquote> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">8</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-8-налаштування-intlayer-editor-/-cms" aria-label="Крок 8: Налаштування intlayer editor / CMS">Налаштування intlayer editor / CMS</h3><span class="mb-2 ml-4 rounded-full bg-neutral/15 px-3 py-1 text-text/90 text-xs">Необов'язково</span></div> <p>Щоб налаштувати intlayer editor, дотримуйтесь <a href="/uk/doc/concept/editor" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">документації intlayer editor</a>.</p> <p>Щоб налаштувати intlayer CMS, дотримуйтесь <a href="/uk/doc/concept/cms" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">документації intlayer CMS</a>.</p> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">7</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-7-додаите-локалізовании-routing-у-ваш-застосунок" aria-label="Крок 7: Додайте локалізований Routing у ваш застосунок">Додайте локалізований Routing у ваш застосунок</h3><span class="mb-2 ml-4 rounded-full bg-neutral/15 px-3 py-1 text-text/90 text-xs">Необов'язково</span></div> <p>Щоб обробляти локалізовану маршрутизацію в Svelte-застосунку, ви можете використовувати <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">svelte-spa-router</code> разом з <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">localeFlatMap</code> від Intlayer для генерації маршрутів для кожної локалі.</p> <p>Спочатку встановіть <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">svelte-spa-router</code>:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">bash</span><div class="flex items-center gap-2"><button type="button" role="combobox" aria-expanded="false" aria-autocomplete="none" dir="ltr" data-state="closed" class="flex w-full cursor-pointer items-center justify-between whitespace-nowrap select-text text-base shadow-none outline-none md:text-sm rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl px-2 py-3 md:py-2 bg-neutral-50 dark:bg-neutral-950 text-text ring-0 focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-neutral-200 dark:focus-visible:ring-neutral-500 focus-visible:ring-offset-white dark:focus-visible:ring-offset-neutral-500 [box-shadow:none] focus:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-error [&>span]:line-clamp-1 py-1!" aria-label="Виберіть менеджер пакетів"><span style="pointer-events:none"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down size-4 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></button><select aria-hidden="true" tabindex="-1" style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></select></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex items-center h-11"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">npm install svelte-spa-router</span><span class="line block w-full">npx intlayer init</span></code></pre></div></div><!--/$--></div></div></div> <!-- --> <!-- --> <!-- --> <p>Then, create a <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">Router.svelte</code> file to define your routes:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">src/Router.svelte</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full"><script lang="ts"></span><span class="line block w-full">import { localeFlatMap } from "intlayer";</span><span class="line block w-full">import Router from "svelte-spa-router";</span><span class="line block w-full">import { wrap } from "svelte-spa-router/wrap";</span><span class="line block w-full">import App from "./App.svelte";</span><span class="line block w-full"></span><span class="line block w-full">const routes = Object.fromEntries(</span><span class="line block w-full"> localeFlatMap(({locale, urlPrefix}) => [</span><span class="line block w-full"> [</span><span class="line block w-full"> urlPrefix || '/',</span><span class="line block w-full"> wrap({</span><span class="line block w-full"> component: App as any,</span><span class="line block w-full"> props: {</span><span class="line block w-full"> locale,</span><span class="line block w-full"> },</span><span class="line block w-full"> }),</span><span class="line block w-full"> ],</span><span class="line block w-full"> ])</span><span class="line block w-full">);</span><span class="line block w-full"></script></span><span class="line block w-full"></span><span class="line block w-full"><Router {routes} /></span></code></pre></div></div><!--/$--></div></div></div> <p>Update your <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">main.ts</code> to mount the <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">Router</code> component instead of <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">App</code>:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">src/main.ts</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">import { mount } from "svelte";</span><span class="line block w-full">import Router from "./Router.svelte";</span><span class="line block w-full"></span><span class="line block w-full">const app = mount(Router, {</span><span class="line block w-full"> target: document.getElementById("app")!,</span><span class="line block w-full">});</span><span class="line block w-full"></span><span class="line block w-full">export default app;</span></code></pre></div></div><!--/$--></div></div></div> <p>Нарешті, оновіть ваш <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">App.svelte</code>, щоб приймати проп <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">locale</code> і використовувати його з <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">useIntlayer</code>:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">src/App.svelte</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full"><script lang="ts"></span><span class="line block w-full">import type { Locale } from 'intlayer';</span><span class="line block w-full">import { useIntlayer } from "svelte-intlayer";</span><span class="line block w-full">import Counter from './lib/Counter.svelte';</span><span class="line block w-full">import LocaleSwitcher from './lib/LocaleSwitcher.svelte';</span><span class="line block w-full"></span><span class="line block w-full">export let locale: Locale;</span><span class="line block w-full"></span><span class="line block w-full">$: content = useIntlayer('app', locale);</span><span class="line block w-full"></script></span><span class="line block w-full"></span><span class="line block w-full"><main></span><span class="line block w-full"> <div class="locale-switcher-container"></span><span class="line block w-full"> <LocaleSwitcher currentLocale={locale} /></span><span class="line block w-full"> </div></span><span class="line block w-full"></span><span class="line block w-full"> <!-- ... решта вашого додатка ... --></span><span class="line block w-full"></main></span></code></pre></div></div><!--/$--></div></div></div> <h4 class="text-lg relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-3 text-text" id="-----" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Налаштування маршрутизації на стороні сервера (необов'язково)</h4><p>Паралельно ви також можете використати <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">intlayerProxy</code> для додавання маршрутизації на стороні сервера до вашого застосунку. Цей плагін автоматично визначатиме поточну локаль на основі URL і встановлюватиме відповідний cookie для локалі. Якщо локаль не вказана, плагін обере найвідповіднішу локаль на основі налаштувань мови браузера користувача. Якщо локаль не буде виявлена, плагін виконає перенаправлення на локаль за замовчуванням.</p> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Зауважте, що для використання <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">intlayerProxy</code> в production потрібно перемістити пакет <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">vite-intlayer</code> з <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">devDependencies</code> до <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">dependencies</code>.</blockquote> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">vite.config.ts</span><div class="flex items-center gap-2"><button type="button" role="combobox" aria-expanded="false" aria-autocomplete="none" dir="ltr" data-state="closed" class="flex w-full cursor-pointer items-center justify-between whitespace-nowrap select-text text-base shadow-none outline-none md:text-sm rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl px-2 py-3 md:py-2 bg-neutral-50 dark:bg-neutral-950 text-text ring-0 focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-neutral-200 dark:focus-visible:ring-neutral-500 focus-visible:ring-offset-white dark:focus-visible:ring-offset-neutral-500 [box-shadow:none] focus:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-error [&>span]:line-clamp-1 py-1!" aria-label="Виберіть формат коду"><span style="pointer-events:none"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down size-4 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></button><select aria-hidden="true" tabindex="-1" style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></select></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex items-center h-11"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><pre class="min-w-0 max-w-full overflow-x-auto"><code>import { defineConfig } from "vite"; import { svelte } from "@sveltejs/vite-plugin-svelte"; import { intlayer, intlayerProxy } from "vite-intlayer"; // https://vitejs.dev/config/ - конфігурація Vite export default defineConfig({ plugins: [ intlayerProxy(), // should be placed first svelte(), intlayer(), ], });</code></pre></div></div> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">8</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-8-зміна-url-при-зміні-локалі" aria-label="Крок 8: Зміна URL при зміні локалі">Зміна URL при зміні локалі</h3><span class="mb-2 ml-4 rounded-full bg-neutral/15 px-3 py-1 text-text/90 text-xs">Необов'язково</span></div> <p>Щоб дозволити користувачам змінювати мову й відповідно оновлювати URL, ви можете створити компонент <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">LocaleSwitcher</code>. Цей компонент використовуватиме <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">getLocalizedUrl</code> з <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">intlayer</code> та <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">push</code> із <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">svelte-spa-router</code>.</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">src/lib/LocaleSwitcher.svelte</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full"><script lang="ts"></span><span class="line block w-full">import { getLocaleName, getLocalizedUrl } from "intlayer";</span><span class="line block w-full">import { useLocale } from "svelte-intlayer";</span><span class="line block w-full">import { push } from "svelte-spa-router";</span><span class="line block w-full"></span><span class="line block w-full">export let currentLocale: string | undefined = undefined;</span><span class="line block w-full"></span><span class="line block w-full">// Отримати інформацію про локаль</span><span class="line block w-full">const { locale, availableLocales } = useLocale();</span><span class="line block w-full"></span><span class="line block w-full">// Обробка зміни локалі</span><span class="line block w-full">const changeLocale = (event: Event) => {</span><span class="line block w-full"> const target = event.target as HTMLSelectElement;</span><span class="line block w-full"> const newLocale = target.value;</span><span class="line block w-full"> const currentUrl = window.location.pathname;</span><span class="line block w-full"> const url = getLocalizedUrl( currentUrl, newLocale);</span><span class="line block w-full"> push(url);</span><span class="line block w-full">};</span><span class="line block w-full"></script></span><span class="line block w-full"></span><span class="line block w-full"><div class="locale-switcher"></span><span class="line block w-full"> <select value={currentLocale ?? $locale} onchange={changeLocale}></span><span class="line block w-full"> {#each availableLocales ?? [] as loc}</span><span class="line block w-full"> <option value={loc}></span><span class="line block w-full"> {getLocaleName(loc)}</span><span class="line block w-full"> </option></span><span class="line block w-full"> {/each}</span><span class="line block w-full"> </select></span><span class="line block w-full"></div></span></code></pre></div></div><!--/$--></div></div></div> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">9</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-9-інтернаціоналізовані-посилання" aria-label="Крок 9: Інтернаціоналізовані посилання">Інтернаціоналізовані посилання</h3><span class="mb-2 ml-4 rounded-full bg-neutral/15 px-3 py-1 text-text/90 text-xs">Необов'язково</span></div> <p>Для SEO рекомендується додавати префікс локалі до ваших маршрутів (наприклад, <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">/about</code>, <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">/fr/about</code>).</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">src/lib/components/Link.svelte</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full"><script lang="ts"></span><span class="line block w-full"> import { getLocalizedUrl } from "intlayer";</span><span class="line block w-full"> import { useLocale } from "svelte-intlayer";</span><span class="line block w-full"></span><span class="line block w-full"> export let href = "";</span><span class="line block w-full"> const { locale } = useLocale();</span><span class="line block w-full"></span><span class="line block w-full"> // Helper to prefix URL</span><span class="line block w-full"> $: localizedHref = getLocalizedUrl(href, $locale);</span><span class="line block w-full"></script></span><span class="line block w-full"></span><span class="line block w-full"><a href={localizedHref}></span><span class="line block w-full"> <slot /></span><span class="line block w-full"></a></span></code></pre></div></div><!--/$--></div></div></div> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">1</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-1-витягніть-вміст-ваших-компонентів" aria-label="Крок 1: Витягніть вміст ваших компонентів">Витягніть вміст ваших компонентів</h3><span class="mb-2 ml-4 rounded-full bg-neutral/15 px-3 py-1 text-text/90 text-xs">Необов'язково</span></div> <p>Якщо у вас є існуюча кодова база, перетворення тисяч файлів може зайняти багато часу.</p> <p>Щоб спростити цей процес, Intlayer пропонує <a href="/uk/doc/compiler" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">компілятор</a> / <a href="/uk/doc/concept/cli/extract" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">екстрактор</a> для перетворення ваших компонентів і витягування вмісту.</p> <p>Щоб налаштувати його, ви можете додати розділ <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">compiler</code> у свій файл <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">intlayer.config.ts</code>:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">intlayer.config.ts</span><div class="flex items-center gap-2"><button type="button" role="combobox" aria-expanded="false" aria-autocomplete="none" dir="ltr" data-state="closed" class="flex w-full cursor-pointer items-center justify-between whitespace-nowrap select-text text-base shadow-none outline-none md:text-sm rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl px-2 py-3 md:py-2 bg-neutral-50 dark:bg-neutral-950 text-text ring-0 focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-neutral-200 dark:focus-visible:ring-neutral-500 focus-visible:ring-offset-white dark:focus-visible:ring-offset-neutral-500 [box-shadow:none] focus:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-error [&>span]:line-clamp-1 py-1!" aria-label="Виберіть формат коду"><span style="pointer-events:none"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down size-4 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></button><select aria-hidden="true" tabindex="-1" style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></select></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex items-center h-11"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><pre class="min-w-0 max-w-full overflow-x-auto"><code>import { type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { // ... Інша частина вашої конфігурації compiler: { /** * Вказує, чи повинен бути включений компілятор. */ enabled: true, /** * Визначає шлях до вихідних файлів */ output: ({ fileName, extension }) => `./${fileName}${extension}`, /** * Вказує, чи повинні компоненти зберігатися після перетворення. Таким чином, компілятор можна запустити лише один раз для перетворення програми, а потім видалити. */ saveComponents: false, /** * Префікс ключа словника */ dictionaryKeyPrefix: "", }, }; export default config;</code></pre></div></div> <div class="relative w-full rounded-xl border border-card"><div class="flex shrink-0 gap-3 p-3 sticky rounded-xl top-24 z-5 bg-background/70 backdrop-blur overflow-x-auto"><div class="relative z-0 flex size-full flex-row items-center gap-2 border-text text-text" aria-orientation="horizontal" aria-multiselectable="false" role="tablist"><button class="cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none" data-active="true" role="tab" aria-selected="true" aria-controls="tabpanel-Команда витягування" id="tab-Команда витягування" type="button" tabindex="0">Команда витягування</button><button class="cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none text-neutral/70" data-active="false" role="tab" aria-selected="false" aria-controls="tabpanel-Компілятор Babel" id="tab-Компілятор Babel" type="button" tabindex="-1">Компілятор Babel</button></div></div><div class="relative w-full min-w-0 overflow-x-clip [-webkit-clip-path:inset(0)] [clip-path:inset(0)]" style="touch-action:pan-y"><div role="tablist" aria-orientation="horizontal" class="grid w-full min-w-0 transition-transform duration-300 ease-in-out" style="grid-template-columns:repeat(2, 100%);transform:translateX(-0%)"><div role="tabpanel" aria-labelledby="tab-Команда витягування" id="tabpanel-Команда витягування" aria-hidden="false" tabindex="0" data-active="true" class="w-full min-w-0 p-3 opacity-100 transition-opacity duration-300 ease-in-out"><div class="flex w-full min-w-0 flex-col items-stretch gap-6"> <p>Запустіть екстрактор для перетворення компонентів і витягування вмісту</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">bash</span><div class="flex items-center gap-2"><button type="button" role="combobox" aria-expanded="false" aria-autocomplete="none" dir="ltr" data-state="closed" class="flex w-full cursor-pointer items-center justify-between whitespace-nowrap select-text text-base shadow-none outline-none md:text-sm rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl px-2 py-3 md:py-2 bg-neutral-50 dark:bg-neutral-950 text-text ring-0 focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-neutral-200 dark:focus-visible:ring-neutral-500 focus-visible:ring-offset-white dark:focus-visible:ring-offset-neutral-500 [box-shadow:none] focus:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-error [&>span]:line-clamp-1 py-1!" aria-label="Виберіть менеджер пакетів"><span style="pointer-events:none"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down size-4 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></button><select aria-hidden="true" tabindex="-1" style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></select></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex items-center h-11"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">npx intlayer extract</span></code></pre></div></div><!--/$--></div></div></div> <!-- --> <!-- --> <!-- --> </div></div><div role="tabpanel" aria-labelledby="tab-Компілятор Babel" id="tabpanel-Компілятор Babel" aria-hidden="true" tabindex="-1" data-active="false" class="w-full min-w-0 p-3 transition-opacity duration-300 ease-in-out pointer-events-none opacity-0"><div class="flex w-full min-w-0 flex-col items-stretch gap-6"> <p>Оновіть свій <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">vite.config.ts</code>, щоб включити плагін <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">intlayerCompiler</code>:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">vite.config.ts</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">import { defineConfig } from "vite";</span><span class="line block w-full">import { intlayer, intlayerCompiler } from "vite-intlayer";</span><span class="line block w-full"></span><span class="line block w-full">export default defineConfig({</span><span class="line block w-full"> plugins: [</span><span class="line block w-full"> intlayer(),</span><span class="line block w-full"> intlayerCompiler(), // Додає плагін компілятора</span><span class="line block w-full"> ],</span><span class="line block w-full">});</span></code></pre></div></div><!--/$--></div></div></div> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">bash</span><div class="flex items-center gap-2"><button type="button" role="combobox" aria-expanded="false" aria-autocomplete="none" dir="ltr" data-state="closed" class="flex w-full cursor-pointer items-center justify-between whitespace-nowrap select-text text-base shadow-none outline-none md:text-sm rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl px-2 py-3 md:py-2 bg-neutral-50 dark:bg-neutral-950 text-text ring-0 focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-neutral-200 dark:focus-visible:ring-neutral-500 focus-visible:ring-offset-white dark:focus-visible:ring-offset-neutral-500 [box-shadow:none] focus:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-error [&>span]:line-clamp-1 py-1!" aria-label="Виберіть менеджер пакетів"><span style="pointer-events:none"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down size-4 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></button><select aria-hidden="true" tabindex="-1" style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></select></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex items-center h-11"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">npm run build # Або npm run dev</span></code></pre></div></div><!--/$--></div></div></div> <!-- --> <!-- --> <!-- --> </div></div></div></div></div></div></li></ol><h3 class="mb-2 text-xl relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-5 text-text" id="-git" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Конфігурація Git</h3><p>Рекомендується ігнорувати файли, згенеровані Intlayer. Це дозволяє уникнути їх коміту до вашого Git-репозиторію.</p> <p>Для цього можна додати наступні інструкції до файлу <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">.gitignore</code>:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">bash</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full"># Ігнорувати файли, згенеровані Intlayer</span><span class="line block w-full">.intlayer</span></code></pre></div></div><!--/$--></div></div></div> <h3 class="mb-2 text-xl relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-5 text-text" id="-vs-code" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Розширення VS Code</h3><p>Щоб покращити ваш досвід розробки з Intlayer, ви можете встановити офіційне <strong class="text-text">Intlayer VS Code Extension</strong>.</p> <p><a rel="noopener noreferrer" href="https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension" target="_blank" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">Встановити з VS Code Marketplace<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 inline-block size-4" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a></p> <p>Це розширення надає:</p> <ul class="mt-5 flex list-disc flex-col gap-3 pl-5 marker:text-neutral/80"><li><strong class="text-text">Автозаповнення</strong> для ключів перекладу.</li><li><strong class="text-text">Виявлення помилок у реальному часі</strong> для відсутніх перекладів.</li><li><strong class="text-text">Вбудовані попередні перегляди</strong> перекладеного контенту.</li><li><strong class="text-text">Швидкі дії</strong> для швидкого створення й оновлення перекладів.</li></ul><p>Для детальнішої інформації про використання розширення зверніться до документації <a href="/uk/doc/vs-code-extension" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">розширення Intlayer для VS Code</a>.</p> <hr class="mx-6 mt-16 border-dashed text-neutral"/><h3 class="mb-2 text-xl relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-5 text-text" id="-sitemap--robotstxt----" aria-label="Click to scroll to section undefined and copy the link to the clipboard">(Опційно) Sitemap і robots.txt (генерація під час збірки)</h3><p>Intlayer надає <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">generateSitemap</code> і <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">getMultilingualUrls</code> - утиліти для формування багатомовних <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">sitemap.xml</code> і <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">robots.txt</code> для краулерів та автоматичного запису в <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">public/</code>. Зазвичай запускають невеликий Node-скрипт <strong class="text-text">перед</strong> Vite (наприклад, npm-хуки <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">predev</code> / <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">prebuild</code>).</p> <h4 class="text-lg relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-3 text-text" id="sitemap" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Sitemap</h4><p>Генератор sitemap враховує локалі й додає метадані для краулерів.</p> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Підтримується простір імен <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">xhtml:link</code> (hreflang). Замість плоского списку URL Intlayer пов’язує всі мовні версії сторінки в обидва боки (наприклад <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">/about</code>, <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">/fr/about</code> або <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">/about?lang=fr</code> залежно від режиму маршрутизації).</blockquote> <h4 class="text-lg relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-3 text-text" id="robotstxt" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Robots.txt</h4><p>Використовуйте <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">getMultilingualUrls</code>, щоб правила <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">Disallow</code> покривали всі локалізовані варіанти шляхів.</p> <h4 class="text-lg relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-3 text-text" id="1--generate-seomjs---" aria-label="Click to scroll to section undefined and copy the link to the clipboard">1. Файл <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">generate-seo.mjs</code> у корені проєкту</h4><div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">generate-seo.mjs</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">import fs from "fs";</span><span class="line block w-full">import path from "path";</span><span class="line block w-full">import { fileURLToPath } from "url";</span><span class="line block w-full">import { generateSitemap, getMultilingualUrls } from "intlayer";</span><span class="line block w-full"></span><span class="line block w-full">const __dirname = path.dirname(fileURLToPath(import.meta.url));</span><span class="line block w-full"></span><span class="line block w-full">const SITE_URL = (process.env.SITE_URL || "http://localhost:5173").replace(</span><span class="line block w-full"> /\/$/,</span><span class="line block w-full"> ""</span><span class="line block w-full">);</span><span class="line block w-full"></span><span class="line block w-full">const pathList = [</span><span class="line block w-full"> { path: "/", changefreq: "daily", priority: 1.0 },</span><span class="line block w-full"> { path: "/about", changefreq: "monthly", priority: 0.7 },</span><span class="line block w-full">];</span><span class="line block w-full"></span><span class="line block w-full">const sitemapXml = generateSitemap(pathList, { siteUrl: SITE_URL });</span><span class="line block w-full">fs.writeFileSync(path.join(__dirname, "public", "sitemap.xml"), sitemapXml);</span><span class="line block w-full"></span><span class="line block w-full">const getAllMultilingualUrls = (urls) =></span><span class="line block w-full"> urls.flatMap((url) => Object.values(getMultilingualUrls(url)));</span><span class="line block w-full"></span><span class="line block w-full">const disallowedPaths = getAllMultilingualUrls(["/admin", "/private"]);</span><span class="line block w-full"></span><span class="line block w-full">const robotsTxt = [</span><span class="line block w-full"> "User-agent: *",</span><span class="line block w-full"> "Allow: /",</span><span class="line block w-full"> ...disallowedPaths.map((path) => `Disallow: ${path}`),</span><span class="line block w-full"> "",</span><span class="line block w-full"> `Sitemap: ${SITE_URL}/sitemap.xml`,</span><span class="line block w-full">].join("\n");</span><span class="line block w-full"></span><span class="line block w-full">fs.writeFileSync(path.join(__dirname, "public", "robots.txt"), robotsTxt);</span><span class="line block w-full"></span><span class="line block w-full">console.log("SEO files generated successfully.");</span></code></pre></div></div><!--/$--></div></div></div> <p>Пакет <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">intlayer</code> має бути встановлений. У продакшені задайте <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">SITE_URL</code> у середовищі (наприклад у CI).</p> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Для Node ESM краще <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">generate-seo.mjs</code>. Для <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">generate-seo.js</code> додайте <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">"type": "module"</code> у <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">package.json</code> або ввімкніть ESM інакше.</blockquote> <h4 class="text-lg relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-3 text-text" id="2----vite" aria-label="Click to scroll to section undefined and copy the link to the clipboard">2. Запуск скрипта перед Vite</h4><div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">package.json</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Копіювати вміст" aria-busy="false" aria-disabled="false" tabindex="0" title="Копіювати вміст"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Копіювати вміст</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Копіювати код</strong><p class="text-neutral">Скопіюйте код у буфер обміну</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">{</span><span class="line block w-full"> "scripts": {</span><span class="line block w-full"> "dev": "vite",</span><span class="line block w-full"> "prebuild": "node generate-seo.mjs",</span><span class="line block w-full"> "build": "vite build",</span><span class="line block w-full"> "preview": "vite preview"</span><span class="line block w-full"> }</span><span class="line block w-full">}</span></code></pre></div></div><!--/$--></div></div></div> <p>Підлаштуйте команди для pnpm або yarn. Можна викликати скрипт із CI.</p> <h3 class="mb-2 text-xl relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-5 text-text" id="-" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Розширені можливості</h3><p>Щоб рухатися далі, ви можете реалізувати <a href="/uk/doc/concept/editor" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">візуальний редактор</a> або винести свій контент у зовнішню систему за допомогою <a href="/uk/doc/concept/cms" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">CMS</a>.</p></div></div><div class="my-3 flex flex-row flex-wrap justify-between gap-3 px-10 text-sm"><a aria-label="Перейти до попереднього розділу" target="_self" class="transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 relative cursor-pointer border-[1.3px] border-current text-center font-medium ring-0 *:text-text hover:bg-current/20 hover:ring-5 aria-selected:ring-5 aria-[current]:ring-5 [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-neutral min-h-8 text-sm max-md:py-2 ring-neutral/20 wrap-break-words ml-auto flex h-auto w-full max-w-1/2 flex-1 flex-row items-center justify-start gap-2 whitespace-normal text-nowrap rounded-lg px-2 py-5" to="/uk/doc/environment/vite-and-solid"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-left size-5" aria-hidden="true"><path d="m15 18-6-6 6-6"></path></svg><span class="text-text">Vite та Solid</span></a><a aria-label="Перейти до наступного розділу" target="_self" class="transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 relative cursor-pointer border-[1.3px] border-current text-center font-medium ring-0 *:text-text hover:bg-current/20 hover:ring-5 aria-selected:ring-5 aria-[current]:ring-5 [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-neutral min-h-8 text-sm max-md:py-2 ring-neutral/20 wrap-break-words ml-auto flex h-auto w-full max-w-1/2 flex-1 flex-row items-center justify-end gap-2 whitespace-normal text-nowrap rounded-lg px-2 py-5" to="/uk/doc/environment/sveltekit"><span class="text-text">SvelteKit</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right size-5" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></a></div></div></article><aside aria-label="На цій сторінці" class="flex flex-none flex-row max-lg:hidden"><div class="relative flex min-h-0 w-70 flex-1 flex-col"><div class="relative z-10 mt-10 flex w-full flex-row items-center pt-2"><h2 class="ml-3 text-nowrap text-neutral/80 text-sm uppercase">На цій сторінці</h2><div class="absolute bottom-0 left-0 h-8 w-full translate-y-full bg-linear-to-b from-background/90 backdrop-blur"></div></div><div class="relative flex min-h-0 w-full flex-1 overflow-hidden rounded-2xl md:pt-0"><div class="mt-4 flex pl-3"><nav class="flex h-full min-h-0 flex-col"><ul class="flex min-h-0 flex-1 flex-col gap-3 overflow-auto pt-8 pr-3 pb-20"></ul></nav></div><div class="border-dashed transition max-h-[80%] cursor-ns-resize border-neutral-200 border-t-[1px] dark:border-neutral-950 before:absolute before:top-0 before:left-1/2 before:z-10 before:block before:h-1 before:w-10 before:-translate-x-1/2 before:-translate-y-1/2 before:transform before:cursor-ns-resize before:rounded-full before:bg-neutral-200 before:transition before:content-[""] dark:before:bg-neutral-950 active:border-neutral-400 active:before:bg-neutral-400 dark:active:border-neutral-600 active:dark:before:bg-neutral-600 absolute bottom-0 left-0 size-full bg-background/70 backdrop-blur" style="height:250px;min-height:0px" aria-valuemin="0" aria-valuenow="250" aria-label="Resizable component - drag the handle to adjust height" role="slider" tabindex="0"><div role="presentation" class="absolute top-0 left-0 size-full cursor-default overflow-hidden"><div class="justify-bottom size-full text-sm"><div class="flex size-full flex-col items-center justify-between overflow-auto"><div class="relative flex size-full flex-auto"><div class="absolute inset-0 size-full"><div data-testid="virtuoso-scroller" data-virtuoso-scroller="true" style="height:100%;outline:none;overflow-y:auto;position:relative;-webkit-overflow-scrolling:touch" tabindex="0"><div data-viewport-type="element" style="height:100%;position:absolute;top:0;width:100%"><div data-testid="virtuoso-item-list" style="box-sizing:border-box;margin-top:0;padding-bottom:0;padding-top:0"></div><div></div></div></div></div></div><div class="w-full flex-1"><form class="item-end flex h-auto flex-col items-end justify-center gap-3 px-4 py-3" autoComplete="off" noValidate=""><div class="flex w-full flex-col flex-wrap gap-2 px-1 py-2" id="_R_ukqj9bcq_"><textarea class="w-full select-text text-base shadow-none outline-none transition-all duration-300 md:text-sm ring-0 disabled:opacity-50 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text bg-neutral-50 dark:bg-neutral-950 ring-text/20 disabled:ring-0 hover:ring-3 focus-within:ring-4 focus-visible:outline-none focus-visible:ring-4 [box-shadow:none] focus:[box-shadow:none] aria-invalid:border-error px-2 py-3 md:py-2 overflow-y-auto resize-none" data-testid="question" id="question" name="question" rows="2" placeholder="Запитайте мене про що завгодно..." aria-label="Задайте своє запитання нашій інтелектуальній документації на базі ШІ" aria-describedby="_R_ukqj9bcq_-form-item-description" aria-invalid="false"></textarea></div><div class="ml-auto flex items-center justify-end gap-2 max-md:w-full"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-chat-info" aria-haspopup="true"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-info z-50 mr-3 text-neutral" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg><div class="flex flex-col text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 p-0 border-text gap-0 absolute z-60 min-w-full rounded-md ring-1 ring-neutral left-1/2 -translate-x-1/2 bottom-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:left-1/2 before:-translate-x-1/2 before:-bottom-2.5 before:border-t-[10px] before:border-t-neutral before:border-r-[10px] before:border-r-transparent before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800" role="group" aria-labelledby="unrollable-panel-button-chat-info" id="unrollable-panel-chat-info"><p class="min-w-60 max-w-60 p-4 text-neutral text-xs">Обговорення анонімні та регулярно переглядаються для вирішення поширених проблем. Не соромтеся ділитися ідеями функцій, відгуками про документацію або будь-чим, що стосується Intlayer, ми використовуємо цю інформацію для формування нашої дорожньої карти та покращення продукту.</p></div></div><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-2xl border-[1.3px] border-current bg-current/0 *:text-current! hover:bg-current/20 focus-visible:bg-current/20 hover:ring-5 focus-visible:ring-5 aria-selected:ring-5 justify-center text-center" aria-label="Натисніть, щоб відкрити чат-бота" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-move-diagonal flex-none shrink-0 size-4" aria-hidden="true"><path d="M11 19H5v-6"></path><path d="M13 5h6v6"></path><path d="M19 5 5 19"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Натисніть, щоб відкрити чат-бота</span></button><button disabled="" role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-2xl border-[1.3px] border-current bg-current/0 *:text-current! hover:bg-current/20 focus-visible:bg-current/20 hover:ring-5 focus-visible:ring-5 aria-selected:ring-5 justify-center text-center opacity-0" aria-label="Натисніть, щоб очистити" aria-busy="false" aria-disabled="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-eraser flex-none shrink-0 size-4" aria-hidden="true"><path d="M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21"></path><path d="m5.082 11.09 8.828 8.828"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Натисніть, щоб очистити</span></button><button role="button" type="submit" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl bg-current hover:bg-current/90 hover:ring-5 aria-selected:ring-5 justify-center text-center" aria-label="Натисніть, щоб надіслати запит" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up flex-none shrink-0 size-4" aria-hidden="true"><path d="m5 12 7-7 7 7"></path><path d="M12 19V5"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Натисніть, щоб надіслати запит</span></button></div></form></div></div></div></div></div></div></div></aside></div></div></main><div class="flex w-full flex-0 flex-col"></div><script>(function(a,f){let l;try{l=JSON.parse(sessionStorage.getItem(a)||"{}")}catch{return}const n=l?.[f||history.state?.__TSR_key];let c=!1;for(const t in n){const e=n[t],o=e?.scrollX,s=e?.scrollY;if(Number.isFinite(o)&&Number.isFinite(s)){if(t==="window")scrollTo(o,s),c=!0;else if(t)try{const r=document.querySelector(t);r&&(r.scrollLeft=o,r.scrollTop=s)}catch{}}}if(c)return;const i=location.hash.slice(1);if(i){const t=history.state?.__hashScrollIntoViewOptions??!0;if(t){const e=document.getElementById(i);e&&e.scrollIntoView(t)}return}scrollTo(0,0)})("tsr-scroll-restoration-v1_3");document.currentScript.remove()</script><!--/$--><script class="$tsr" id="$tsr-stream-barrier">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-Bw9yQaJj.js","/assets/chunk-Cyuzqnbw.js","/assets/preload-helper-B8fFrdxC.js","/assets/contributors-hwMJZD2h.js","/assets/frequent-questions-ColnmfP0.js","/assets/buildOrganizationJsonLd-CDgipqaX.js","/assets/_-XYNRneuJ.js","/assets/buildWebsiteJsonLd-C0N39csk.js","/assets/esm-3MTWDjoQ.js","/assets/package_mock-BDluuYi_.js","/assets/NotFoundComponent-Bgr-e0gL.js","/assets/_-C4167Raf.js","/assets/blog-BzPtT7kP.js","/assets/chat-D_eebsPv.js","/assets/search-CiZlrVdG.js","/assets/_-PkJ9jxsi.js","/assets/privacy-notice-gc0H7wqY.js","/assets/terms-of-service-B15yrD0Q.js","/assets/seo-6taQxeNF.js","/assets/dist-BB4NsXlo.js","/assets/dist-ClM9H4W8.js","/assets/scroll-restoration-Ds11_EjL.js","/assets/IsRestoringProvider-DPTyBt-E.js","/assets/mutation-Bsa9tKKh.js","/assets/Match-DiNoTNTM.js","/assets/useStore-DlCoWsDY.js","/assets/matchContext-IegwGVKo.js","/assets/defer-BLyZxUjE.js","/assets/createServerFn-CXa74b5t.js","/assets/dist-BlKQxgFq.js","/assets/cn-SXa2TCS8.js","/assets/features-animation-Du4JOzyU.js","/assets/Link-aa68EiCJ.js","/assets/x-DL_kax-t.js","/assets/react-dom-BJD-Lcob.js","/assets/compiler-runtime-CQOss3SY.js","/assets/jsx-runtime-CXk3X59i.js","/assets/react-Bi8cP4Js.js","/assets/getHTMLTextDir-C8-9aPEx.js","/assets/usePersistedStore-BzkChKRN.js","/assets/routes-Cre-4Fxz.js","/assets/esm-DRNfMHzC.js"],scripts:$R[5]=[$R[6]={attrs:$R[7]={type:"module",async:!0,src:"/assets/index-Bw9yQaJj.js"}}]},"/{-$locale}":$R[8]={preloads:$R[9]=["/assets/route-CQW21vXM.js"]},"/{-$locale}/_docs":$R[10]={preloads:$R[11]=["/assets/route-DnecKG0E.js","/assets/PageLayout-U6A7rpHn.js"]},"/{-$locale}/_docs/doc/$":$R[12]={preloads:$R[13]=["/assets/_-BJyRGMQ_.js","/assets/DocPageNavigation-Cjem7A8P.js","/assets/DocumentationRender-BDCy3TqB.js","/assets/DocPageLayout-5Kt9kfLJ.js"]}}},matches:$R[14]=[$R[15]={i:"__root__�",u:1785032692043,s:"success",ssr:!0},$R[16]={i:"�{-$locale}�uk",u:1785032692043,s:"success",ssr:!0},$R[17]={i:"�{-$locale}�_docs�uk",u:1785032692043,s:"success",ssr:!0},$R[18]={i:"�{-$locale}�_docs�doc�$�uk�doc�environment�vite-and-svelte",u:1785032692235,s:"success",l:$R[19]={locale:"uk",slugs:$R[20]=["environment","vite-and-svelte"],docData:$R[21]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Vite + Svelte i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Vite + Svelte. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[22]=["Інтернаціоналізація","Документація","Intlayer","Vite","Svelte","JavaScript"],slugs:$R[23]=["doc","environment","vite-and-svelte"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-svelte-template",applicationShowcase:"https://intlayer-vite-svelte-template.vercel.app",history:$R[24]=[$R[25]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[26]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[27]={version:"5.5.11",date:"2025-11-19",changes:"\"Оновлено документацію\""},$R[28]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізовано історію\""}],author:$R[29]={name:"Aymeric PINEAU",title:"Founder of Intlayer, open-source multilingual CMS for Next.js and React",url:"https://github.com/aymericzip",image:"https://avatars.githubusercontent.com/u/62554073?v=4&size=124",socialMedias:$R[30]=["https://www.linkedin.com/in/aymericpineau/","https://x.com/aymericzip","https://github.com/aymericzip"],knowsAbout:$R[31]=["Expert in technical internationalization","Senior software engineer","Multilingual SEO","AI translation automation"],github:"aymericzip"},docKey:"./docs/en/intlayer_with_vite+svelte.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_vite+svelte.md",relativeUrl:"/uk/doc/environment/vite-and-svelte",url:"https://intlayer.org/uk/doc/environment/vite-and-svelte"},defaultDocData:$R[32]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Vite + Svelte i18n - Complete guide to translate your app",description:"No more i18next. The 2026 guide to building a multilingual (i18n) Vite + Svelte app. Translate with AI agents and optimize bundle size, SEO and performances.",keywords:$R[33]=["Internationalization","Documentation","Intlayer","Vite","Svelte","JavaScript"],slugs:$R[34]=["doc","environment","vite-and-svelte"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-svelte-template",applicationShowcase:"https://intlayer-vite-svelte-template.vercel.app",history:$R[35]=[$R[36]={version:"8.9.0",date:"2026-05-04",changes:"\"Update Solid useIntlayer API usage to direct property access\""},$R[37]={version:"7.5.9",date:"2025-12-30",changes:"\"Add init command\""},$R[38]={version:"5.5.11",date:"2025-11-19",changes:"\"Update documentation\""},$R[39]={version:"5.5.10",date:"2025-06-29",changes:"\"Initial history\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+svelte.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_with_vite+svelte.md",relativeUrl:"/doc/environment/vite-and-svelte",url:"https://intlayer.org/doc/environment/vite-and-svelte"},docContent:"---\ncreatedAt: 2025-04-18\nupdatedAt: 2026-05-31\ntitle: \"Vite + Svelte i18n - Повний посібник з перекладу вашого застосунку\"\ndescription: \"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Vite + Svelte. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.\"\nkeywords:\n - Інтернаціоналізація\n - Документація\n - Intlayer\n - Vite\n - Svelte\n - JavaScript\nslugs:\n - doc\n - environment\n - vite-and-svelte\napplicationTemplate: https://github.com/aymericzip/intlayer-vite-svelte-template\napplicationShowcase: https://intlayer-vite-svelte-template.vercel.app\nhistory:\n - version: 8.9.0\n date: 2026-05-04\n changes: \"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\"\n - version: 7.5.9\n date: 2025-12-30\n changes: \"Додано команду init\"\n - version: 5.5.11\n date: 2025-11-19\n changes: \"Оновлено документацію\"\n - version: 5.5.10\n date: 2025-06-29\n changes: \"Ініціалізовано історію\"\nauthor: aymericzip\n---\n\n# Перекладіть ваш вебсайт на Vite та Svelte за допомогою Intlayer | Інтернаціоналізація (i18n)\n\n\x3CTabs defaultTab=\"code\">\n \x3CTab label=\"Код\" value=\"code\">\n\n\x3Ciframe\n src=\"https://ide.intlayer.org/aymericzip/intlayer-vite-svelte-template?file=intlayer.config.ts\"\n className=\"m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full\"\n title=\"Demo CodeSandbox - Intlayer\"\n sandbox=\"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts\"\n loading=\"lazy\"\n/>\n\n \x3C/Tab>\n \x3CTab label=\"Демо\" value=\"demo\">\n\n\x3Ciframe\n src=\"https://intlayer-vite-svelte-template.vercel.app\"\n className=\"m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full\"\n title=\"Демо - intlayer-vite-svelte-template\"\n sandbox=\"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts\"\n loading=\"lazy\"\n/>\n\n \x3C/Tab>\n\x3C/Tabs>\n\n## Зміст\n\n\x3CTOC/>\n\n## Чому варто обрати Intlayer, а не альтернативи?\n\nПорівняно з основними рішеннями, такими як `svelte-i18n` або `i18next`, Intlayer — це рішення, яке має такі інтегровані оптимізації, як:\n\n\x3CAccordionGroup>\n\n\x3CAccordion header=\"Повна підтримка Svelte\">\n\nIntlayer оптимізовано для ідеальної роботи зі Svelte, пропонуючи **визначення вмісту на рівні компонентів**, **реактивні переклади** та всі функції, необхідні для масштабування інтернаціоналізації (i18n).\n\n\x3C/Accordion>\n\n\x3CAccordion header=\"Розмір бандлу\">\n\nЗамість того, щоб завантажувати великі файли JSON на свої сторінки, завантажуйте лише необхідний вміст. Intlayer допомагає **зменшити розмір бандлу і сторінок до 50%**.\n\n\x3C/Accordion>\n\n\x3CAccordion header=\"Підтримуваність\">\n\nОрганізація вмісту за окремими областями (scoping) **полегшує технічне обслуговування** великомасштабних програм. Ви можете скопіювати або видалити окрему папку функцій без розумового навантаження перегляду всієї кодової бази вмісту. Крім того, Intlayer **повністю типізований (fully typed)**, щоб забезпечити точність вашого вмісту.\n\n\x3C/Accordion>\n\n\x3CAccordion header=\"Агент AI\">\n\nСпільне розміщення вмісту **зменшує контекст, необхідний** для великих мовних моделей (LLM). Intlayer також постачається з набором інструментів, наприклад **CLI** для перевірки відсутніх перекладів,**[LSP](/uk/doc/lsp)**, **[MCP](/uk/doc/mcp-server)** і **[навички агента](/uk/doc/agent_skills)**, щоб зробити роботу розробника (DX) ще зручнішою для агентів ШІ.\n\n\x3C/Accordion>\n\n\x3CAccordion header=\"Автоматизація\">\n\nВикористовуйте автоматизацію для перекладу в конвеєрі CI/CD за допомогою LLM за вашим вибором за рахунок вашого постачальника штучного інтелекту. Intlayer також пропонує **компілятор** для автоматизації екстракція вмісту, а також [веб-платформу](/uk/doc/concept/cms), щоб допомогти **перекладати у фоновому режимі**.\n\n\x3C/Accordion>\n\n\x3CAccordion header=\"Продуктивність\">\n\nПідключення великих файлів JSON до компонентів може призвести до проблем з продуктивністю та реакцією. Intlayer оптимізує завантаження вмісту під час збірки (build time).\n\n\x3C/Accordion>\n\n\x3CAccordion header=\"Співпраця з не-розробниками\">\n\nБільше ніж просто рішення i18n, Intlayer пропонує **власний [візуальний редактор](/uk/doc/concept/editor)** і **[повний CMS](/uk/doc/concept/cms)**, щоб допомогти вам керувати своїм багатомовним вмістом у **реальному часі**, спрощуючи співпрацю з перекладачами, копірайтерами та іншими членами команди. Контент можна зберігати локально та/або віддалено.\n\n\x3C/Accordion>\n\x3C/AccordionGroup>\n\n---\n\n## Покрокове керівництво зі встановлення Intlayer у Vite та Svelte додаток\n\n\x3Ciframe\n src=\"https://ide.intlayer.org/aymericzip/intlayer-vite-react-template?file=intlayer.config.ts\"\n className=\"m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full\"\n title=\"Demo CodeSandbox - How to Internationalize your application using Intlayer\"\n sandbox=\"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts\"\n loading=\"lazy\"\n/>\n\nПерегляньте [Application Template](https://github.com/aymericzip/intlayer-vite-svelte-template) на GitHub.\n\n\x3CSteps>\n\n\x3CStep number={1} title=\"Встановлення залежностей\">\n\nВстановіть необхідні пакети за допомогою npm:\n\n```bash packageManager=\"npm\"\nnpm install intlayer svelte-intlayer\nnpm install vite-intlayer --save-dev\nnpx intlayer init\n```\n\n```bash packageManager=\"pnpm\"\npnpm add intlayer svelte-intlayer\npnpm add vite-intlayer --save-dev\npnpm intlayer init\n```\n\n```bash packageManager=\"yarn\"\nyarn add intlayer svelte-intlayer\nyarn add vite-intlayer --save-dev\nyarn intlayer init\n```\n\n```bash packageManager=\"bun\"\nbun add intlayer svelte-intlayer\nbun add vite-intlayer --save-dev\nbun x intlayer init\n```\n\n- **intlayer**\n\n Основний пакет, який надає інструменти для інтернаціоналізації: управління конфігурацією, переклади, [оголошення контенту](/uk/doc/concept/content), транспіляцію та [CLI-команди](/uk/doc/concept/cli).\n\n- **svelte-intlayer**\n Пакет, який інтегрує Intlayer у Svelte-додаток. Він надає провайдери контексту та хуки для інтернаціоналізації у Svelte.\n\n- **vite-intlayer**\n Містить плагін Vite для інтеграції Intlayer з [Vite bundler](https://vite.dev/guide/why.html#why-bundle-for-production), а також middleware для виявлення переважної мови користувача, керування cookies та обробки перенаправлень URL.\n\n\x3C/Step>\n\n\x3CStep number={2} title=\"Конфігурація вашого проєкту\">\n\nСтворіть конфігураційний файл для налаштування мов вашого застосунку:\n\n```typescript fileName=\"intlayer.config.ts\"\nimport { Locales, type IntlayerConfig } from \"intlayer\";\n\nconst config: IntlayerConfig = {\n internationalization: {\n locales: [\n Locales.ENGLISH,\n Locales.FRENCH,\n Locales.SPANISH,\n // Your other locales\n ],\n defaultLocale: Locales.ENGLISH,\n },\n};\n\nexport default config;\n```\n\n> Через цей конфігураційний файл ви можете налаштувати локалізовані URL-адреси, перенаправлення в middleware, назви cookie, розташування та розширення ваших декларацій контенту, вимкнути логи Intlayer у консолі та інше. Для повного списку доступних параметрів зверніться до [документації з конфігурації](/uk/doc/concept/configuration).\n\n\x3C/Step>\n\n\x3CStep number={3} title=\"Інтеграція Intlayer у конфігурацію Vite\">\n\nДодайте плагін intlayer до вашої конфігурації.\n\n```typescript fileName=\"vite.config.ts\"\nimport { defineConfig } from \"vite\";\nimport { svelte } from \"@sveltejs/vite-plugin-svelte\";\nimport { intlayer } from \"vite-intlayer\";\n\n// Документація конфігурації: https://vitejs.dev/config/\nexport default defineConfig({\n plugins: [svelte(), intlayer()],\n});\n```\n\n> Плагін Vite `intlayer()` використовується для інтеграції Intlayer з Vite. Він забезпечує побудову файлів декларацій контенту та відстежує їх у режимі розробки. Він визначає змінні середовища Intlayer у Vite-додатку. Додатково він надаєаліаси (aliases) для оптимізації продуктивності.\n\n\x3C/Step>\n\n\x3CStep number={4} title=\"Оголосіть свій контент\">\n\nСтворюйте та керуйте деклараціями контенту для зберігання перекладів:\n\n```tsx fileName=\"src/app.content.tsx\" contentDeclarationFormat={[\"typescript\", \"esm\", \"commonjs\"]}\nimport { t, type Dictionary } from \"intlayer\";\n\nconst appContent = {\n key: \"app\",\n content: {\n title: t({\n uk: \"Привіт, світ\",\n en: \"Hello World\",\n fr: \"Bonjour le monde\",\n es: \"Hola mundo\",\n }),\n },\n} satisfies Dictionary;\n\nexport default appContent;\n```\n\n```json fileName=\"src/app.content.json\" contentDeclarationFormat=\"json\"\n{\n \"$schema\": \"https://intlayer.org/schema.json\",\n \"key\": \"app\",\n \"content\": {\n \"title\": {\n \"nodeType\": \"translation\",\n \"translation\": {\n \"uk\": \"Привіт, світ\",\n \"en\": \"Hello World\",\n \"fr\": \"Bonjour le monde\",\n \"es\": \"Hola mundo\"\n }\n }\n }\n}\n```\n\n> Ваші декларації контенту можуть бути визначені будь-де у вашому додатку, за умови, що вони знаходяться в директорії `contentDir` (за замовчуванням `./src`). І вони повинні відповідати розширенню файлу декларації контенту (за замовчуванням `.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}`).\n\n> Для докладнішої інформації зверніться до [документації щодо декларації контенту](/uk/doc/concept/content).\n\n\x3C/Step>\n\n\x3CStep number={5} title=\"Використання Intlayer у вашому коді\">\n\n```svelte fileName=\"src/App.svelte\"\n\x3Cscript>\n import { useIntlayer } from \"svelte-intlayer\";\n\n const content = useIntlayer(\"app\");\n\x3C/script>\n\n\x3Cdiv>\n\n\n\x3C!-- Відобразити вміст як простий контент -->\n\x3Ch1>{$content.title}\x3C/h1>\n\x3C!-- Зробити вміст редагованим за допомогою редактора -->\n\x3Ch1>{@const Title = $content.title}\x3CTitle />\x3C/h1>\n\x3C!-- Відобразити вміст як рядок -->\n\x3Cdiv aria-label={$content.title.value}>\x3C/div>\n\x3Cdiv aria-label={$content.title.toString()}>\x3C/div>\n\x3Cdiv aria-label={String($content.title)}>\x3C/div>\n\n> Якщо ваш застосунок уже існує, ви можете скористатися [Intlayer Compiler](/uk/doc/compiler) у поєднанні з [командой extract](/uk/doc/concept/cli/extract), щоб перетворити тисячі компонентів за одну секунду.\n```\n\n\x3C/Step>\n\n\x3CStep number={6} title=\"Змініть мову вашого вмісту\" isOptional={true}>\n\n```svelte fileName=\"src/App.svelte\"\n\x3Cscript lang=\"ts\">\nimport { getLocaleName } from 'intlayer';\nimport { useLocale } from \"svelte-intlayer\";\n\n// Отримати інформацію про локаль та функцію setLocale\nconst { locale, availableLocales, setLocale } = useLocale();\n\n// Обробка зміни локалі\nconst changeLocale = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n const newLocale = target.value;\n setLocale(newLocale);\n};\n\x3C/script>\n\n\x3Cdiv>\n \x3Cselect value={$locale} on:change={changeLocale}>\n {#each availableLocales ?? [] as loc}\n \x3Coption value={loc}>\n {getLocaleName(loc)}\n \x3C/option>\n {/each}\n \x3C/select>\n\x3C/div>\n```\n\n\x3C/Step>\n\n\x3CStep number={7} title=\"Відображення Markdown\" isOptional={true}>\n\nIntlayer підтримує рендеринг вмісту в Markdown безпосередньо у вашому Svelte-застосунку. За замовчуванням Markdown розглядається як звичайний текст. Щоб перетворити Markdown у багате HTML-представлення, ви можете інтегрувати `@humanspeak/svelte-markdown` або інший Markdown-парсер.\n\n> Щоб дізнатися, як оголосити markdown-контент за допомогою пакета `intlayer`, див. [документацію з markdown](https://github.com/aymericzip/intlayer/tree/main/docs/uk/dictionary/markdown.md).\n\n```svelte fileName=\"src/App.svelte\"\n\x3Cscript>\n import { setIntlayerMarkdown } from \"svelte-intlayer\";\n\n setIntlayerMarkdown((markdown) =>\n // відобразити вміст markdown як рядок\n return markdown;\n );\n\x3C/script>\n\n\x3Ch1>{$content.markdownContent}\x3C/h1>\n```\n\n> Ви також можете отримати доступ до даних front-matter вашого markdown за допомогою властивості `content.markdownContent.metadata.xxx`.\n\n\x3C/Step>\n\n\x3CStep number={8} title=\"Налаштування intlayer editor / CMS\" isOptional={true}>\n\nЩоб налаштувати intlayer editor, дотримуйтесь [документації intlayer editor](/uk/doc/concept/editor).\n\nЩоб налаштувати intlayer CMS, дотримуйтесь [документації intlayer CMS](/uk/doc/concept/cms).\n\n\x3C/Step>\n\n\x3CStep number={7} title=\"Додайте локалізований Routing у ваш застосунок\" isOptional={true}>\n\nЩоб обробляти локалізовану маршрутизацію в Svelte-застосунку, ви можете використовувати `svelte-spa-router` разом з `localeFlatMap` від Intlayer для генерації маршрутів для кожної локалі.\n\nСпочатку встановіть `svelte-spa-router`:\n\n```bash packageManager=\"npm\"\nnpm install svelte-spa-router\nnpx intlayer init\n```\n\n```bash packageManager=\"pnpm\"\npnpm add svelte-spa-router\npnpm intlayer init\n```\n\n```bash packageManager=\"yarn\"\nyarn add svelte-spa-router\nyarn intlayer init\n```\n\n```bash packageManager=\"bun\"\nbun add svelte-spa-router\n```\n\nThen, create a `Router.svelte` file to define your routes:\n\n```svelte fileName=\"src/Router.svelte\"\n\x3Cscript lang=\"ts\">\nimport { localeFlatMap } from \"intlayer\";\nimport Router from \"svelte-spa-router\";\nimport { wrap } from \"svelte-spa-router/wrap\";\nimport App from \"./App.svelte\";\n\nconst routes = Object.fromEntries(\n localeFlatMap(({locale, urlPrefix}) => [\n [\n urlPrefix || '/',\n wrap({\n component: App as any,\n props: {\n locale,\n },\n }),\n ],\n ])\n);\n\x3C/script>\n\n\x3CRouter {routes} />\n```\n\nUpdate your `main.ts` to mount the `Router` component instead of `App`:\n\n```typescript fileName=\"src/main.ts\"\nimport { mount } from \"svelte\";\nimport Router from \"./Router.svelte\";\n\nconst app = mount(Router, {\n target: document.getElementById(\"app\")!,\n});\n\nexport default app;\n```\n\nНарешті, оновіть ваш `App.svelte`, щоб приймати проп `locale` і використовувати його з `useIntlayer`:\n\n```svelte fileName=\"src/App.svelte\"\n\x3Cscript lang=\"ts\">\nimport type { Locale } from 'intlayer';\nimport { useIntlayer } from \"svelte-intlayer\";\nimport Counter from './lib/Counter.svelte';\nimport LocaleSwitcher from './lib/LocaleSwitcher.svelte';\n\nexport let locale: Locale;\n\n$: content = useIntlayer('app', locale);\n\x3C/script>\n\n\x3Cmain>\n \x3Cdiv class=\"locale-switcher-container\">\n \x3CLocaleSwitcher currentLocale={locale} />\n \x3C/div>\n\n \x3C!-- ... решта вашого додатка ... -->\n\x3C/main>\n```\n\n#### Налаштування маршрутизації на стороні сервера (необов'язково)\n\nПаралельно ви також можете використати `intlayerProxy` для додавання маршрутизації на стороні сервера до вашого застосунку. Цей плагін автоматично визначатиме поточну локаль на основі URL і встановлюватиме відповідний cookie для локалі. Якщо локаль не вказана, плагін обере найвідповіднішу локаль на основі налаштувань мови браузера користувача. Якщо локаль не буде виявлена, плагін виконає перенаправлення на локаль за замовчуванням.\n\n> Зауважте, що для використання `intlayerProxy` в production потрібно перемістити пакет `vite-intlayer` з `devDependencies` до `dependencies`.\n\n```typescript {3,7} fileName=\"vite.config.ts\" codeFormat={[\"typescript\", \"esm\", \"commonjs\"]}\nimport { defineConfig } from \"vite\";\nimport { svelte } from \"@sveltejs/vite-plugin-svelte\";\nimport { intlayer, intlayerProxy } from \"vite-intlayer\";\n\n// https://vitejs.dev/config/ - конфігурація Vite\nexport default defineConfig({\n plugins: [\n intlayerProxy(), // should be placed first\n svelte(),\n intlayer(),\n ],\n});\n```\n\n\x3C/Step>\n\n\x3CStep number={8} title=\"Зміна URL при зміні локалі\" isOptional={true}>\n\nЩоб дозволити користувачам змінювати мову й відповідно оновлювати URL, ви можете створити компонент `LocaleSwitcher`. Цей компонент використовуватиме `getLocalizedUrl` з `intlayer` та `push` із `svelte-spa-router`.\n\n```svelte fileName=\"src/lib/LocaleSwitcher.svelte\"\n\x3Cscript lang=\"ts\">\nimport { getLocaleName, getLocalizedUrl } from \"intlayer\";\nimport { useLocale } from \"svelte-intlayer\";\nimport { push } from \"svelte-spa-router\";\n\nexport let currentLocale: string | undefined = undefined;\n\n// Отримати інформацію про локаль\nconst { locale, availableLocales } = useLocale();\n\n// Обробка зміни локалі\nconst changeLocale = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n const newLocale = target.value;\n const currentUrl = window.location.pathname;\n const url = getLocalizedUrl( currentUrl, newLocale);\n push(url);\n};\n\x3C/script>\n\n\x3Cdiv class=\"locale-switcher\">\n \x3Cselect value={currentLocale ?? $locale} onchange={changeLocale}>\n {#each availableLocales ?? [] as loc}\n \x3Coption value={loc}>\n {getLocaleName(loc)}\n \x3C/option>\n {/each}\n \x3C/select>\n\x3C/div>\n```\n\n\x3C/Step>\n\n\x3CStep number={9} title=\"Інтернаціоналізовані посилання\" isOptional={true}>\n\nДля SEO рекомендується додавати префікс локалі до ваших маршрутів (наприклад, `/about`, `/fr/about`).\n\n```svelte fileName=\"src/lib/components/Link.svelte\"\n\x3Cscript lang=\"ts\">\n import { getLocalizedUrl } from \"intlayer\";\n import { useLocale } from \"svelte-intlayer\";\n\n export let href = \"\";\n const { locale } = useLocale();\n\n // Helper to prefix URL\n $: localizedHref = getLocalizedUrl(href, $locale);\n\x3C/script>\n\n\x3Ca href={localizedHref}>\n \x3Cslot />\n\x3C/a>\n```\n\n\x3C/Step>\n\n\x3CStep number={1} title=\"Витягніть вміст ваших компонентів\" isOptional={true}>\n\nЯкщо у вас є існуюча кодова база, перетворення тисяч файлів може зайняти багато часу.\n\nЩоб спростити цей процес, Intlayer пропонує [компілятор](/uk/doc/compiler) / [екстрактор](/uk/doc/concept/cli/extract) для перетворення ваших компонентів і витягування вмісту.\n\nЩоб налаштувати його, ви можете додати розділ `compiler` у свій файл `intlayer.config.ts`:\n\n```typescript fileName=\"intlayer.config.ts\" codeFormat={[\"typescript\", \"esm\", \"commonjs\"]}\nimport { type IntlayerConfig } from \"intlayer\";\n\nconst config: IntlayerConfig = {\n // ... Інша частина вашої конфігурації\n compiler: {\n /**\n * Вказує, чи повинен бути включений компілятор.\n */\n enabled: true,\n\n /**\n * Визначає шлях до вихідних файлів\n */\n output: ({ fileName, extension }) => `./${fileName}${extension}`,\n\n /**\n * Вказує, чи повинні компоненти зберігатися після перетворення. Таким чином, компілятор можна запустити лише один раз для перетворення програми, а потім видалити.\n */\n saveComponents: false,\n\n /**\n * Префікс ключа словника\n */\n dictionaryKeyPrefix: \"\",\n },\n};\n\nexport default config;\n```\n\n\x3CTabs>\n \x3CTab value='Команда витягування'>\n\nЗапустіть екстрактор для перетворення компонентів і витягування вмісту\n\n```bash packageManager=\"npm\"\nnpx intlayer extract\n```\n\n```bash packageManager=\"pnpm\"\npnpm intlayer extract\n```\n\n```bash packageManager=\"yarn\"\nyarn intlayer extract\n```\n\n```bash packageManager=\"bun\"\nbun x intlayer extract\n```\n\n \x3C/Tab>\n \x3CTab value='Компілятор Babel'>\n\nОновіть свій `vite.config.ts`, щоб включити плагін `intlayerCompiler`:\n\n```ts fileName=\"vite.config.ts\"\nimport { defineConfig } from \"vite\";\nimport { intlayer, intlayerCompiler } from \"vite-intlayer\";\n\nexport default defineConfig({\n plugins: [\n intlayer(),\n intlayerCompiler(), // Додає плагін компілятора\n ],\n});\n```\n\n```bash packageManager=\"npm\"\nnpm run build # Або npm run dev\n```\n\n```bash packageManager=\"pnpm\"\npnpm run build # Or pnpm run dev\n```\n\n```bash packageManager=\"yarn\"\nyarn build # Or yarn dev\n```\n\n```bash packageManager=\"bun\"\nbun run build # Or bun run dev\n```\n\n \x3C/Tab>\n\x3C/Tabs>\n\x3C/Step>\n\n\x3C/Steps>\n\n### Конфігурація Git\n\nРекомендується ігнорувати файли, згенеровані Intlayer. Це дозволяє уникнути їх коміту до вашого Git-репозиторію.\n\nДля цього можна додати наступні інструкції до файлу `.gitignore`:\n\n```bash\n# Ігнорувати файли, згенеровані Intlayer\n.intlayer\n```\n\n### Розширення VS Code\n\nЩоб покращити ваш досвід розробки з Intlayer, ви можете встановити офіційне **Intlayer VS Code Extension**.\n\n[Встановити з VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)\n\nЦе розширення надає:\n\n- **Автозаповнення** для ключів перекладу.\n- **Виявлення помилок у реальному часі** для відсутніх перекладів.\n- **Вбудовані попередні перегляди** перекладеного контенту.\n- **Швидкі дії** для швидкого створення й оновлення перекладів.\n\nДля детальнішої інформації про використання розширення зверніться до документації [розширення Intlayer для VS Code](https://intlayer.org/doc/vs-code-extension).\n\n---\n\n### (Опційно) Sitemap і robots.txt (генерація під час збірки)\n\nIntlayer надає `generateSitemap` і `getMultilingualUrls` - утиліти для формування багатомовних `sitemap.xml` і `robots.txt` для краулерів та автоматичного запису в `public/`. Зазвичай запускають невеликий Node-скрипт **перед** Vite (наприклад, npm-хуки `predev` / `prebuild`).\n\n#### Sitemap\n\nГенератор sitemap враховує локалі й додає метадані для краулерів.\n\n> Підтримується простір імен `xhtml:link` (hreflang). Замість плоского списку URL Intlayer пов’язує всі мовні версії сторінки в обидва боки (наприклад `/about`, `/fr/about` або `/about?lang=fr` залежно від режиму маршрутизації).\n\n#### Robots.txt\n\nВикористовуйте `getMultilingualUrls`, щоб правила `Disallow` покривали всі локалізовані варіанти шляхів.\n\n#### 1. Файл `generate-seo.mjs` у корені проєкту\n\n```javascript fileName=\"generate-seo.mjs\"\nimport fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { generateSitemap, getMultilingualUrls } from \"intlayer\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst SITE_URL = (process.env.SITE_URL || \"http://localhost:5173\").replace(\n /\\/$/,\n \"\"\n);\n\nconst pathList = [\n { path: \"/\", changefreq: \"daily\", priority: 1.0 },\n { path: \"/about\", changefreq: \"monthly\", priority: 0.7 },\n];\n\nconst sitemapXml = generateSitemap(pathList, { siteUrl: SITE_URL });\nfs.writeFileSync(path.join(__dirname, \"public\", \"sitemap.xml\"), sitemapXml);\n\nconst getAllMultilingualUrls = (urls) =>\n urls.flatMap((url) => Object.values(getMultilingualUrls(url)));\n\nconst disallowedPaths = getAllMultilingualUrls([\"/admin\", \"/private\"]);\n\nconst robotsTxt = [\n \"User-agent: *\",\n \"Allow: /\",\n ...disallowedPaths.map((path) => `Disallow: ${path}`),\n \"\",\n `Sitemap: ${SITE_URL}/sitemap.xml`,\n].join(\"\\n\");\n\nfs.writeFileSync(path.join(__dirname, \"public\", \"robots.txt\"), robotsTxt);\n\nconsole.log(\"SEO files generated successfully.\");\n```\n\nПакет `intlayer` має бути встановлений. У продакшені задайте `SITE_URL` у середовищі (наприклад у CI).\n\n> Для Node ESM краще `generate-seo.mjs`. Для `generate-seo.js` додайте `\"type\": \"module\"` у `package.json` або ввімкніть ESM інакше.\n\n#### 2. Запуск скрипта перед Vite\n\n```json fileName=\"package.json\"\n{\n \"scripts\": {\n \"dev\": \"vite\",\n \"prebuild\": \"node generate-seo.mjs\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n }\n}\n```\n\nПідлаштуйте команди для pnpm або yarn. Можна викликати скрипт із CI.\n\n### Розширені можливості\n\nЩоб рухатися далі, ви можете реалізувати [візуальний редактор](/uk/doc/concept/editor) або винести свій контент у зовнішню систему за допомогою [CMS](/uk/doc/concept/cms).\n",docParsed:$R[40]={ast:$R[41]=[$R[42]={children:$R[43]=[$R[44]={text:"Перекладіть ваш вебсайт на Vite та Svelte за допомогою Intlayer | Інтернаціоналізація (i18n)",type:"27"}],id:"----vite--svelte---intlayer---i18n",level:1,type:"9"},$R[45]={attrs:$R[46]={defaultTab:"code"},noInnerParse:!1,tag:"Tabs",children:$R[47]=[$R[48]={attrs:$R[49]={label:"Код",value:"code"},noInnerParse:!1,tag:"Tab",children:$R[50]=[$R[51]={type:"19"},$R[52]={attrs:$R[53]={src:"https://ide.intlayer.org/aymericzip/intlayer-vite-svelte-template?file=intlayer.config.ts",className:"m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full",title:"Demo CodeSandbox - Intlayer",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts",loading:"lazy"},tag:"iframe",type:"13"}],type:"34"},$R[54]={attrs:$R[55]={label:"Демо",value:"demo"},noInnerParse:!1,tag:"Tab",children:$R[56]=[$R[57]={type:"19"},$R[58]={attrs:$R[59]={src:"https://intlayer-vite-svelte-template.vercel.app",className:"m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full",title:"Демо - intlayer-vite-svelte-template",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts",loading:"lazy"},tag:"iframe",type:"13"}],type:"34"}],type:"34"},$R[60]={children:$R[61]=[$R[62]={text:"Зміст",type:"27"}],id:"",level:2,type:"9"},$R[63]={attrs:null,tag:"TOC",type:"13"},$R[64]={children:$R[65]=[$R[66]={text:"Чому варто обрати Intlayer, а не альтернативи?",type:"27"}],id:"---intlayer---",level:2,type:"9"},$R[67]={children:$R[68]=[$R[69]={text:"Порівняно з основними рішеннями, такими як ",type:"27"},$R[70]={text:"svelte-i18n",type:"5"},$R[71]={text:" або ",type:"27"},$R[72]={text:"i18next",type:"5"},$R[73]={text:", Intlayer — це рішення, яке має такі інтегровані оптимізації, як",type:"27"},$R[74]={text:":",type:"27"}],type:"21"},$R[75]={type:"19"},$R[76]={attrs:null,noInnerParse:!1,tag:"AccordionGroup",children:$R[77]=[$R[78]={type:"19"},$R[79]={attrs:$R[80]={header:"Повна підтримка Svelte"},noInnerParse:!1,tag:"Accordion",children:$R[81]=[$R[82]={type:"19"},$R[83]={children:$R[84]=[$R[85]={text:"Intlayer оптимізовано для ідеальної роботи зі Svelte, пропонуючи ",type:"27"},$R[86]={children:$R[87]=[$R[88]={text:"визначення вмісту на рівні компонентів",type:"27"}],type:"28"},$R[89]={text:", ",type:"27"},$R[90]={children:$R[91]=[$R[92]={text:"реактивні переклади",type:"27"}],type:"28"},$R[93]={text:" та всі функції, необхідні для масштабування інтернаціоналізації (i18n).",type:"27"}],type:"21"},$R[94]={type:"19"}],type:"34"},$R[95]={attrs:$R[96]={header:"Розмір бандлу"},noInnerParse:!1,tag:"Accordion",children:$R[97]=[$R[98]={type:"19"},$R[99]={children:$R[100]=[$R[101]={text:"Замість того, щоб завантажувати великі файли JSON на свої сторінки, завантажуйте лише необхідний вміст. Intlayer допомагає ",type:"27"},$R[102]={children:$R[103]=[$R[104]={text:"зменшити розмір бандлу і сторінок до 50%",type:"27"}],type:"28"},$R[105]={text:".",type:"27"}],type:"21"},$R[106]={type:"19"}],type:"34"},$R[107]={attrs:$R[108]={header:"Підтримуваність"},noInnerParse:!1,tag:"Accordion",children:$R[109]=[$R[110]={type:"19"},$R[111]={children:$R[112]=[$R[113]={text:"Організація вмісту за окремими областями (scoping) ",type:"27"},$R[114]={children:$R[115]=[$R[116]={text:"полегшує технічне обслуговування",type:"27"}],type:"28"},$R[117]={text:" великомасштабних програм. Ви можете скопіювати або видалити окрему папку функцій без розумового навантаження перегляду всієї кодової бази вмісту. Крім того, Intlayer ",type:"27"},$R[118]={children:$R[119]=[$R[120]={text:"повністю типізований (fully typed)",type:"27"}],type:"28"},$R[121]={text:", щоб забезпечити точність вашого вмісту.",type:"27"}],type:"21"},$R[122]={type:"19"}],type:"34"},$R[123]={attrs:$R[124]={header:"Агент AI"},noInnerParse:!1,tag:"Accordion",children:$R[125]=[$R[126]={type:"19"},$R[127]={children:$R[128]=[$R[129]={text:"Спільне розміщення вмісту ",type:"27"},$R[130]={children:$R[131]=[$R[132]={text:"зменшує контекст, необхідний",type:"27"}],type:"28"},$R[133]={text:" для великих мовних моделей (LLM). Intlayer також постачається з набором інструментів, наприклад ",type:"27"},$R[134]={children:$R[135]=[$R[136]={text:"CLI",type:"27"}],type:"28"},$R[137]={text:" для перевірки відсутніх перекладів,",type:"27"},$R[138]={children:$R[139]=[$R[140]={children:$R[141]=[$R[142]={text:"LSP",type:"27"}],target:"/uk/doc/lsp",title:void 0,type:"15"}],type:"28"},$R[143]={text:", ",type:"27"},$R[144]={children:$R[145]=[$R[146]={children:$R[147]=[$R[148]={text:"MCP",type:"27"}],target:"/uk/doc/mcp-server",title:void 0,type:"15"}],type:"28"},$R[149]={text:" і ",type:"27"},$R[150]={children:$R[151]=[$R[152]={children:$R[153]=[$R[154]={text:"навички агента",type:"27"}],target:"/uk/doc/agent_skills",title:void 0,type:"15"}],type:"28"},$R[155]={text:", щоб зробити роботу розробника (DX) ще зручнішою для агентів ШІ.",type:"27"}],type:"21"},$R[156]={type:"19"}],type:"34"},$R[157]={attrs:$R[158]={header:"Автоматизація"},noInnerParse:!1,tag:"Accordion",children:$R[159]=[$R[160]={type:"19"},$R[161]={children:$R[162]=[$R[163]={text:"Використовуйте автоматизацію для перекладу в конвеєрі CI/CD за допомогою LLM за вашим вибором за рахунок вашого постачальника штучного інтелекту. Intlayer також пропонує ",type:"27"},$R[164]={children:$R[165]=[$R[166]={text:"компілятор",type:"27"}],type:"28"},$R[167]={text:" для автоматизації екстракція вмісту, а також ",type:"27"},$R[168]={children:$R[169]=[$R[170]={text:"веб",type:"27"},$R[171]={text:"-платформу",type:"27"}],target:"/uk/doc/concept/cms",title:void 0,type:"15"},$R[172]={text:", щоб допомогти ",type:"27"},$R[173]={children:$R[174]=[$R[175]={text:"перекладати у фоновому режимі",type:"27"}],type:"28"},$R[176]={text:".",type:"27"}],type:"21"},$R[177]={type:"19"}],type:"34"},$R[178]={attrs:$R[179]={header:"Продуктивність"},noInnerParse:!1,tag:"Accordion",children:$R[180]=[$R[181]={type:"19"},$R[182]={children:$R[183]=[$R[184]={text:"Підключення великих файлів JSON до компонентів може призвести до проблем з продуктивністю та реакцією. Intlayer оптимізує завантаження вмісту під час збірки (build time).",type:"27"}],type:"21"},$R[185]={type:"19"}],type:"34"},$R[186]={attrs:$R[187]={header:"Співпраця з не-розробниками"},noInnerParse:!1,tag:"Accordion",children:$R[188]=[$R[189]={type:"19"},$R[190]={children:$R[191]=[$R[192]={text:"Більше ніж просто рішення i18n, Intlayer пропонує ",type:"27"},$R[193]={children:$R[194]=[$R[195]={text:"власний ",type:"27"},$R[196]={children:$R[197]=[$R[198]={text:"візуальний редактор",type:"27"}],target:"/uk/doc/concept/editor",title:void 0,type:"15"}],type:"28"},$R[199]={text:" і ",type:"27"},$R[200]={children:$R[201]=[$R[202]={children:$R[203]=[$R[204]={text:"повний CMS",type:"27"}],target:"/uk/doc/concept/cms",title:void 0,type:"15"}],type:"28"},$R[205]={text:", щоб допомогти вам керувати своїм багатомовним вмістом у ",type:"27"},$R[206]={children:$R[207]=[$R[208]={text:"реальному часі",type:"27"}],type:"28"},$R[209]={text:", спрощуючи співпрацю з перекладачами, копірайтерами та іншими членами команди. Контент можна зберігати локально та/або віддалено.",type:"27"}],type:"21"},$R[210]={type:"19"}],type:"34"}],type:"34"},$R[211]={type:"2"},$R[212]={children:$R[213]=[$R[214]={text:"Покрокове керівництво зі встановлення Intlayer у Vite та Svelte додаток",type:"27"}],id:"----intlayer--vite--svelte-",level:2,type:"9"},$R[215]={attrs:$R[216]={src:"https://ide.intlayer.org/aymericzip/intlayer-vite-react-template?file=intlayer.config.ts",className:"m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full",title:"Demo CodeSandbox - How to Internationalize your application using Intlayer",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts",loading:"lazy"},tag:"iframe",type:"13"},$R[217]={children:$R[218]=[$R[219]={text:"Перегляньте ",type:"27"},$R[220]={children:$R[221]=[$R[222]={text:"Application Template",type:"27"}],target:"https://github.com/aymericzip/intlayer-vite-svelte-template",title:void 0,type:"15"},$R[223]={text:" на GitHub.",type:"27"}],type:"21"},$R[224]={type:"19"},$R[225]={attrs:null,noInnerParse:!1,tag:"Steps",children:$R[226]=[$R[227]={type:"19"},$R[228]={attrs:$R[229]={number:"1",title:"Встановлення залежностей"},noInnerParse:!1,tag:"Step",children:$R[230]=[$R[231]={type:"19"},$R[232]={children:$R[233]=[$R[234]={text:"Встановіть необхідні пакети за допомогою npm",type:"27"},$R[235]={text:":",type:"27"}],type:"21"},$R[236]={type:"19"},$R[237]={attrs:$R[238]={packageManager:"npm"},lang:"bash",text:"npm install intlayer svelte-intlayer\nnpm install vite-intlayer --save-dev\nnpx intlayer init\n",type:"3"},$R[239]={type:"19"},$R[240]={attrs:$R[241]={packageManager:"pnpm"},lang:"bash",text:"pnpm add intlayer svelte-intlayer\npnpm add vite-intlayer --save-dev\npnpm intlayer init\n",type:"3"},$R[242]={type:"19"},$R[243]={attrs:$R[244]={packageManager:"yarn"},lang:"bash",text:"yarn add intlayer svelte-intlayer\nyarn add vite-intlayer --save-dev\nyarn intlayer init\n",type:"3"},$R[245]={type:"19"},$R[246]={attrs:$R[247]={packageManager:"bun"},lang:"bash",text:"bun add intlayer svelte-intlayer\nbun add vite-intlayer --save-dev\nbun x intlayer init\n",type:"3"},$R[248]={type:"19"},$R[249]={items:$R[250]=[$R[251]=[$R[252]={children:$R[253]=[$R[254]={children:$R[255]=[$R[256]={text:"intlayer",type:"27"}],type:"28"}],type:"21"},$R[257]={type:"19"},$R[258]={children:$R[259]=[$R[260]={text:"Основний пакет, який надає інструменти для інтернаціоналізації",type:"27"},$R[261]={text:": управління конфігурацією, переклади, ",type:"27"},$R[262]={children:$R[263]=[$R[264]={text:"оголошення контенту",type:"27"}],target:"/uk/doc/concept/content",title:void 0,type:"15"},$R[265]={text:", транспіляцію та ",type:"27"},$R[266]={children:$R[267]=[$R[268]={text:"CLI",type:"27"},$R[269]={text:"-команди",type:"27"}],target:"/uk/doc/concept/cli",title:void 0,type:"15"},$R[270]={text:".",type:"27"}],type:"21"},$R[271]={type:"19"}],$R[272]=[$R[273]={children:$R[274]=[$R[275]={children:$R[276]=[$R[277]={text:"svelte",type:"27"},$R[278]={text:"-intlayer",type:"27"}],type:"28"},$R[279]={text:"\nПакет, який інтегрує Intlayer у Svelte",type:"27"},$R[280]={text:"-додаток. Він надає провайдери контексту та хуки для інтернаціоналізації у Svelte.",type:"27"}],type:"21"},$R[281]={type:"19"}],$R[282]=[$R[283]={children:$R[284]=[$R[285]={children:$R[286]=[$R[287]={text:"vite",type:"27"},$R[288]={text:"-intlayer",type:"27"}],type:"28"},$R[289]={text:"\nМістить плагін Vite для інтеграції Intlayer з ",type:"27"},$R[290]={children:$R[291]=[$R[292]={text:"Vite bundler",type:"27"}],target:"https://vite.dev/guide/why.html#why-bundle-for-production",title:void 0,type:"15"},$R[293]={text:", а також middleware для виявлення переважної мови користувача, керування cookies та обробки перенаправлень URL.",type:"27"}],type:"21"},$R[294]={type:"19"}]],ordered:!1,start:void 0,type:"33"}],type:"34"},$R[295]={attrs:$R[296]={number:"2",title:"Конфігурація вашого проєкту"},noInnerParse:!1,tag:"Step",children:$R[297]=[$R[298]={type:"19"},$R[299]={children:$R[300]=[$R[301]={text:"Створіть конфігураційний файл для налаштування мов вашого застосунку",type:"27"},$R[302]={text:":",type:"27"}],type:"21"},$R[303]={type:"19"},$R[304]={attrs:$R[305]={fileName:"intlayer.config.ts"},lang:"typescript",text:"import { Locales, type IntlayerConfig } from \"intlayer\";\n\nconst config: IntlayerConfig = {\n internationalization: {\n locales: [\n Locales.ENGLISH,\n Locales.FRENCH,\n Locales.SPANISH,\n // Your other locales\n ],\n defaultLocale: Locales.ENGLISH,\n },\n};\n\nexport default config;\n",type:"3"},$R[306]={type:"19"},$R[307]={alert:void 0,children:$R[308]=[$R[309]={text:"Через цей конфігураційний файл ви можете налаштувати локалізовані URL",type:"27"},$R[310]={text:"-адреси, перенаправлення в middleware, назви cookie, розташування та розширення ваших декларацій контенту, вимкнути логи Intlayer у консолі та інше. Для повного списку доступних параметрів зверніться до ",type:"27"},$R[311]={children:$R[312]=[$R[313]={text:"документації з конфігурації",type:"27"}],target:"/uk/doc/concept/configuration",title:void 0,type:"15"},$R[314]={text:".",type:"27"}],type:"0"},$R[315]={type:"19"}],type:"34"},$R[316]={attrs:$R[317]={number:"3",title:"Інтеграція Intlayer у конфігурацію Vite"},noInnerParse:!1,tag:"Step",children:$R[318]=[$R[319]={type:"19"},$R[320]={children:$R[321]=[$R[322]={text:"Додайте плагін intlayer до вашої конфігурації.",type:"27"}],type:"21"},$R[323]={type:"19"},$R[324]={attrs:$R[325]={fileName:"vite.config.ts"},lang:"typescript",text:"import { defineConfig } from \"vite\";\nimport { svelte } from \"@sveltejs/vite-plugin-svelte\";\nimport { intlayer } from \"vite-intlayer\";\n\n// Документація конфігурації: https://vitejs.dev/config/\nexport default defineConfig({\n plugins: [svelte(), intlayer()],\n});\n",type:"3"},$R[326]={type:"19"},$R[327]={alert:void 0,children:$R[328]=[$R[329]={text:"Плагін Vite ",type:"27"},$R[330]={text:"intlayer()",type:"5"},$R[331]={text:" використовується для інтеграції Intlayer з Vite. Він забезпечує побудову файлів декларацій контенту та відстежує їх у режимі розробки. Він визначає змінні середовища Intlayer у Vite",type:"27"},$R[332]={text:"-додатку. Додатково він надаєаліаси (aliases) для оптимізації продуктивності.",type:"27"}],type:"0"},$R[333]={type:"19"}],type:"34"},$R[334]={attrs:$R[335]={number:"4",title:"Оголосіть свій контент"},noInnerParse:!1,tag:"Step",children:$R[336]=[$R[337]={type:"19"},$R[338]={children:$R[339]=[$R[340]={text:"Створюйте та керуйте деклараціями контенту для зберігання перекладів",type:"27"},$R[341]={text:":",type:"27"}],type:"21"},$R[342]={type:"19"},$R[343]={attrs:$R[344]={fileName:"src/app.content.tsx",contentDeclarationFormat:"[\"typescript\", \"esm\", \"commonjs\"]"},lang:"tsx",text:"import { t, type Dictionary } from \"intlayer\";\n\nconst appContent = {\n key: \"app\",\n content: {\n title: t({\n uk: \"Привіт, світ\",\n en: \"Hello World\",\n fr: \"Bonjour le monde\",\n es: \"Hola mundo\",\n }),\n },\n} satisfies Dictionary;\n\nexport default appContent;\n",type:"3"},$R[345]={type:"19"},$R[346]={attrs:$R[347]={fileName:"src/app.content.json",contentDeclarationFormat:"json"},lang:"json",text:"{\n \"$schema\": \"https://intlayer.org/schema.json\",\n \"key\": \"app\",\n \"content\": {\n \"title\": {\n \"nodeType\": \"translation\",\n \"translation\": {\n \"uk\": \"Привіт, світ\",\n \"en\": \"Hello World\",\n \"fr\": \"Bonjour le monde\",\n \"es\": \"Hola mundo\"\n }\n }\n }\n}\n",type:"3"},$R[348]={type:"19"},$R[349]={alert:void 0,children:$R[350]=[$R[351]={text:"Ваші декларації контенту можуть бути визначені будь",type:"27"},$R[352]={text:"-де у вашому додатку, за умови, що вони знаходяться в директорії ",type:"27"},$R[353]={text:"contentDir",type:"5"},$R[354]={text:" (за замовчуванням ",type:"27"},$R[355]={text:"./src",type:"5"},$R[356]={text:"). І вони повинні відповідати розширенню файлу декларації контенту (за замовчуванням ",type:"27"},$R[357]={text:".content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}",type:"5"},$R[358]={text:").",type:"27"}],type:"0"},$R[359]={type:"19"},$R[360]={alert:void 0,children:$R[361]=[$R[362]={text:"Для докладнішої інформації зверніться до ",type:"27"},$R[363]={children:$R[364]=[$R[365]={text:"документації щодо декларації контенту",type:"27"}],target:"/uk/doc/concept/content",title:void 0,type:"15"},$R[366]={text:".",type:"27"}],type:"0"},$R[367]={type:"19"}],type:"34"},$R[368]={attrs:$R[369]={number:"5",title:"Використання Intlayer у вашому коді"},noInnerParse:!1,tag:"Step",children:$R[370]=[$R[371]={type:"19"},$R[372]={attrs:$R[373]={fileName:"src/App.svelte"},lang:"svelte",text:"\x3Cscript>\n import { useIntlayer } from \"svelte-intlayer\";\n\n const content = useIntlayer(\"app\");\n\x3C/script>\n\n\x3Cdiv>\n\n\n\x3C!-- Відобразити вміст як простий контент -->\n\x3Ch1>{$content.title}\x3C/h1>\n\x3C!-- Зробити вміст редагованим за допомогою редактора -->\n\x3Ch1>{@const Title = $content.title}\x3CTitle />\x3C/h1>\n\x3C!-- Відобразити вміст як рядок -->\n\x3Cdiv aria-label={$content.title.value}>\x3C/div>\n\x3Cdiv aria-label={$content.title.toString()}>\x3C/div>\n\x3Cdiv aria-label={String($content.title)}>\x3C/div>\n\n> Якщо ваш застосунок уже існує, ви можете скористатися [Intlayer Compiler](/uk/doc/compiler) у поєднанні з [командой extract](/uk/doc/concept/cli/extract), щоб перетворити тисячі компонентів за одну секунду.\n",type:"3"},$R[374]={type:"19"}],type:"34"},$R[375]={attrs:$R[376]={number:"6",title:"Змініть мову вашого вмісту",isOptional:!0},noInnerParse:!1,tag:"Step",children:$R[377]=[$R[378]={type:"19"},$R[379]={attrs:$R[380]={fileName:"src/App.svelte"},lang:"svelte",text:"\x3Cscript lang=\"ts\">\nimport { getLocaleName } from 'intlayer';\nimport { useLocale } from \"svelte-intlayer\";\n\n// Отримати інформацію про локаль та функцію setLocale\nconst { locale, availableLocales, setLocale } = useLocale();\n\n// Обробка зміни локалі\nconst changeLocale = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n const newLocale = target.value;\n setLocale(newLocale);\n};\n\x3C/script>\n\n\x3Cdiv>\n \x3Cselect value={$locale} on:change={changeLocale}>\n {#each availableLocales ?? [] as loc}\n \x3Coption value={loc}>\n {getLocaleName(loc)}\n \x3C/option>\n {/each}\n \x3C/select>\n\x3C/div>\n",type:"3"},$R[381]={type:"19"}],type:"34"},$R[382]={attrs:$R[383]={number:"7",title:"Відображення Markdown",isOptional:!0},noInnerParse:!1,tag:"Step",children:$R[384]=[$R[385]={type:"19"},$R[386]={children:$R[387]=[$R[388]={text:"Intlayer підтримує рендеринг вмісту в Markdown безпосередньо у вашому Svelte",type:"27"},$R[389]={text:"-застосунку. За замовчуванням Markdown розглядається як звичайний текст. Щоб перетворити Markdown у багате HTML",type:"27"},$R[390]={text:"-представлення, ви можете інтегрувати ",type:"27"},$R[391]={text:"@humanspeak/svelte-markdown",type:"5"},$R[392]={text:" або інший Markdown",type:"27"},$R[393]={text:"-парсер.",type:"27"}],type:"21"},$R[394]={type:"19"},$R[395]={alert:void 0,children:$R[396]=[$R[397]={text:"Щоб дізнатися, як оголосити markdown",type:"27"},$R[398]={text:"-контент за допомогою пакета ",type:"27"},$R[399]={text:"intlayer",type:"5"},$R[400]={text:", див. ",type:"27"},$R[401]={children:$R[402]=[$R[403]={text:"документацію з markdown",type:"27"}],target:"https://github.com/aymericzip/intlayer/tree/main/docs/uk/dictionary/markdown.md",title:void 0,type:"15"},$R[404]={text:".",type:"27"}],type:"0"},$R[405]={type:"19"},$R[406]={attrs:$R[407]={fileName:"src/App.svelte"},lang:"svelte",text:"\x3Cscript>\n import { setIntlayerMarkdown } from \"svelte-intlayer\";\n\n setIntlayerMarkdown((markdown) =>\n // відобразити вміст markdown як рядок\n return markdown;\n );\n\x3C/script>\n\n\x3Ch1>{$content.markdownContent}\x3C/h1>\n",type:"3"},$R[408]={type:"19"},$R[409]={alert:void 0,children:$R[410]=[$R[411]={text:"Ви також можете отримати доступ до даних front",type:"27"},$R[412]={text:"-matter вашого markdown за допомогою властивості ",type:"27"},$R[413]={text:"content.markdownContent.metadata.xxx",type:"5"},$R[414]={text:".",type:"27"}],type:"0"},$R[415]={type:"19"}],type:"34"},$R[416]={attrs:$R[417]={number:"8",title:"Налаштування intlayer editor / CMS",isOptional:!0},noInnerParse:!1,tag:"Step",children:$R[418]=[$R[419]={type:"19"},$R[420]={children:$R[421]=[$R[422]={text:"Щоб налаштувати intlayer editor, дотримуйтесь ",type:"27"},$R[423]={children:$R[424]=[$R[425]={text:"документації intlayer editor",type:"27"}],target:"/uk/doc/concept/editor",title:void 0,type:"15"},$R[426]={text:".",type:"27"}],type:"21"},$R[427]={type:"19"},$R[428]={children:$R[429]=[$R[430]={text:"Щоб налаштувати intlayer CMS, дотримуйтесь ",type:"27"},$R[431]={children:$R[432]=[$R[433]={text:"документації intlayer CMS",type:"27"}],target:"/uk/doc/concept/cms",title:void 0,type:"15"},$R[434]={text:".",type:"27"}],type:"21"},$R[435]={type:"19"}],type:"34"},$R[436]={attrs:$R[437]={number:"7",title:"Додайте локалізований Routing у ваш застосунок",isOptional:!0},noInnerParse:!1,tag:"Step",children:$R[438]=[$R[439]={type:"19"},$R[440]={children:$R[441]=[$R[442]={text:"Щоб обробляти локалізовану маршрутизацію в Svelte",type:"27"},$R[443]={text:"-застосунку, ви можете використовувати ",type:"27"},$R[444]={text:"svelte-spa-router",type:"5"},$R[445]={text:" разом з ",type:"27"},$R[446]={text:"localeFlatMap",type:"5"},$R[447]={text:" від Intlayer для генерації маршрутів для кожної локалі.",type:"27"}],type:"21"},$R[448]={type:"19"},$R[449]={children:$R[450]=[$R[451]={text:"Спочатку встановіть ",type:"27"},$R[452]={text:"svelte-spa-router",type:"5"},$R[453]={text:":",type:"27"}],type:"21"},$R[454]={type:"19"},$R[455]={attrs:$R[456]={packageManager:"npm"},lang:"bash",text:"npm install svelte-spa-router\nnpx intlayer init\n",type:"3"},$R[457]={type:"19"},$R[458]={attrs:$R[459]={packageManager:"pnpm"},lang:"bash",text:"pnpm add svelte-spa-router\npnpm intlayer init\n",type:"3"},$R[460]={type:"19"},$R[461]={attrs:$R[462]={packageManager:"yarn"},lang:"bash",text:"yarn add svelte-spa-router\nyarn intlayer init\n",type:"3"},$R[463]={type:"19"},$R[464]={attrs:$R[465]={packageManager:"bun"},lang:"bash",text:"bun add svelte-spa-router\n",type:"3"},$R[466]={type:"19"},$R[467]={children:$R[468]=[$R[469]={text:"Then, create a ",type:"27"},$R[470]={text:"Router.svelte",type:"5"},$R[471]={text:" file to define your routes",type:"27"},$R[472]={text:":",type:"27"}],type:"21"},$R[473]={type:"19"},$R[474]={attrs:$R[475]={fileName:"src/Router.svelte"},lang:"svelte",text:"\x3Cscript lang=\"ts\">\nimport { localeFlatMap } from \"intlayer\";\nimport Router from \"svelte-spa-router\";\nimport { wrap } from \"svelte-spa-router/wrap\";\nimport App from \"./App.svelte\";\n\nconst routes = Object.fromEntries(\n localeFlatMap(({locale, urlPrefix}) => [\n [\n urlPrefix || '/',\n wrap({\n component: App as any,\n props: {\n locale,\n },\n }),\n ],\n ])\n);\n\x3C/script>\n\n\x3CRouter {routes} />\n",type:"3"},$R[476]={type:"19"},$R[477]={children:$R[478]=[$R[479]={text:"Update your ",type:"27"},$R[480]={text:"main.ts",type:"5"},$R[481]={text:" to mount the ",type:"27"},$R[482]={text:"Router",type:"5"},$R[483]={text:" component instead of ",type:"27"},$R[484]={text:"App",type:"5"},$R[485]={text:":",type:"27"}],type:"21"},$R[486]={type:"19"},$R[487]={attrs:$R[488]={fileName:"src/main.ts"},lang:"typescript",text:"import { mount } from \"svelte\";\nimport Router from \"./Router.svelte\";\n\nconst app = mount(Router, {\n target: document.getElementById(\"app\")!,\n});\n\nexport default app;\n",type:"3"},$R[489]={type:"19"},$R[490]={children:$R[491]=[$R[492]={text:"Нарешті, оновіть ваш ",type:"27"},$R[493]={text:"App.svelte",type:"5"},$R[494]={text:", щоб приймати проп ",type:"27"},$R[495]={text:"locale",type:"5"},$R[496]={text:" і використовувати його з ",type:"27"},$R[497]={text:"useIntlayer",type:"5"},$R[498]={text:":",type:"27"}],type:"21"},$R[499]={type:"19"},$R[500]={attrs:$R[501]={fileName:"src/App.svelte"},lang:"svelte",text:"\x3Cscript lang=\"ts\">\nimport type { Locale } from 'intlayer';\nimport { useIntlayer } from \"svelte-intlayer\";\nimport Counter from './lib/Counter.svelte';\nimport LocaleSwitcher from './lib/LocaleSwitcher.svelte';\n\nexport let locale: Locale;\n\n$: content = useIntlayer('app', locale);\n\x3C/script>\n\n\x3Cmain>\n \x3Cdiv class=\"locale-switcher-container\">\n \x3CLocaleSwitcher currentLocale={locale} />\n \x3C/div>\n\n \x3C!-- ... решта вашого додатка ... -->\n\x3C/main>\n",type:"3"},$R[502]={type:"19"},$R[503]={children:$R[504]=[$R[505]={text:"Налаштування маршрутизації на стороні сервера (необов'язково)",type:"27"}],id:"-----",level:4,type:"9"},$R[506]={children:$R[507]=[$R[508]={text:"Паралельно ви також можете використати ",type:"27"},$R[509]={text:"intlayerProxy",type:"5"},$R[510]={text:" для додавання маршрутизації на стороні сервера до вашого застосунку. Цей плагін автоматично визначатиме поточну локаль на основі URL і встановлюватиме відповідний cookie для локалі. Якщо локаль не вказана, плагін обере найвідповіднішу локаль на основі налаштувань мови браузера користувача. Якщо локаль не буде виявлена, плагін виконає перенаправлення на локаль за замовчуванням.",type:"27"}],type:"21"},$R[511]={type:"19"},$R[512]={alert:void 0,children:$R[513]=[$R[514]={text:"Зауважте, що для використання ",type:"27"},$R[515]={text:"intlayerProxy",type:"5"},$R[516]={text:" в production потрібно перемістити пакет ",type:"27"},$R[517]={text:"vite-intlayer",type:"5"},$R[518]={text:" з ",type:"27"},$R[519]={text:"devDependencies",type:"5"},$R[520]={text:" до ",type:"27"},$R[521]={text:"dependencies",type:"5"},$R[522]={text:".",type:"27"}],type:"0"},$R[523]={type:"19"},$R[524]={attrs:$R[525]={3:!0,7:!0,fileName:"vite.config.ts",codeFormat:"[\"typescript\", \"esm\", \"commonjs\"]"},lang:"typescript",text:"import { defineConfig } from \"vite\";\nimport { svelte } from \"@sveltejs/vite-plugin-svelte\";\nimport { intlayer, intlayerProxy } from \"vite-intlayer\";\n\n// https://vitejs.dev/config/ - конфігурація Vite\nexport default defineConfig({\n plugins: [\n intlayerProxy(), // should be placed first\n svelte(),\n intlayer(),\n ],\n});\n",type:"3"},$R[526]={type:"19"}],type:"34"},$R[527]={attrs:$R[528]={number:"8",title:"Зміна URL при зміні локалі",isOptional:!0},noInnerParse:!1,tag:"Step",children:$R[529]=[$R[530]={type:"19"},$R[531]={children:$R[532]=[$R[533]={text:"Щоб дозволити користувачам змінювати мову й відповідно оновлювати URL, ви можете створити компонент ",type:"27"},$R[534]={text:"LocaleSwitcher",type:"5"},$R[535]={text:". Цей компонент використовуватиме ",type:"27"},$R[536]={text:"getLocalizedUrl",type:"5"},$R[537]={text:" з ",type:"27"},$R[538]={text:"intlayer",type:"5"},$R[539]={text:" та ",type:"27"},$R[540]={text:"push",type:"5"},$R[541]={text:" із ",type:"27"},$R[542]={text:"svelte-spa-router",type:"5"},$R[543]={text:".",type:"27"}],type:"21"},$R[544]={type:"19"},$R[545]={attrs:$R[546]={fileName:"src/lib/LocaleSwitcher.svelte"},lang:"svelte",text:"\x3Cscript lang=\"ts\">\nimport { getLocaleName, getLocalizedUrl } from \"intlayer\";\nimport { useLocale } from \"svelte-intlayer\";\nimport { push } from \"svelte-spa-router\";\n\nexport let currentLocale: string | undefined = undefined;\n\n// Отримати інформацію про локаль\nconst { locale, availableLocales } = useLocale();\n\n// Обробка зміни локалі\nconst changeLocale = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n const newLocale = target.value;\n const currentUrl = window.location.pathname;\n const url = getLocalizedUrl( currentUrl, newLocale);\n push(url);\n};\n\x3C/script>\n\n\x3Cdiv class=\"locale-switcher\">\n \x3Cselect value={currentLocale ?? $locale} onchange={changeLocale}>\n {#each availableLocales ?? [] as loc}\n \x3Coption value={loc}>\n {getLocaleName(loc)}\n \x3C/option>\n {/each}\n \x3C/select>\n\x3C/div>\n",type:"3"},$R[547]={type:"19"}],type:"34"},$R[548]={attrs:$R[549]={number:"9",title:"Інтернаціоналізовані посилання",isOptional:!0},noInnerParse:!1,tag:"Step",children:$R[550]=[$R[551]={type:"19"},$R[552]={children:$R[553]=[$R[554]={text:"Для SEO рекомендується додавати префікс локалі до ваших маршрутів (наприклад, ",type:"27"},$R[555]={text:"/about",type:"5"},$R[556]={text:", ",type:"27"},$R[557]={text:"/fr/about",type:"5"},$R[558]={text:").",type:"27"}],type:"21"},$R[559]={type:"19"},$R[560]={attrs:$R[561]={fileName:"src/lib/components/Link.svelte"},lang:"svelte",text:"\x3Cscript lang=\"ts\">\n import { getLocalizedUrl } from \"intlayer\";\n import { useLocale } from \"svelte-intlayer\";\n\n export let href = \"\";\n const { locale } = useLocale();\n\n // Helper to prefix URL\n $: localizedHref = getLocalizedUrl(href, $locale);\n\x3C/script>\n\n\x3Ca href={localizedHref}>\n \x3Cslot />\n\x3C/a>\n",type:"3"},$R[562]={type:"19"}],type:"34"},$R[563]={attrs:$R[564]={number:"1",title:"Витягніть вміст ваших компонентів",isOptional:!0},noInnerParse:!1,tag:"Step",children:$R[565]=[$R[566]={type:"19"},$R[567]={children:$R[568]=[$R[569]={text:"Якщо у вас є існуюча кодова база, перетворення тисяч файлів може зайняти багато часу.",type:"27"}],type:"21"},$R[570]={type:"19"},$R[571]={children:$R[572]=[$R[573]={text:"Щоб спростити цей процес, Intlayer пропонує ",type:"27"},$R[574]={children:$R[575]=[$R[576]={text:"компілятор",type:"27"}],target:"/uk/doc/compiler",title:void 0,type:"15"},$R[577]={text:" / ",type:"27"},$R[578]={children:$R[579]=[$R[580]={text:"екстрактор",type:"27"}],target:"/uk/doc/concept/cli/extract",title:void 0,type:"15"},$R[581]={text:" для перетворення ваших компонентів і витягування вмісту.",type:"27"}],type:"21"},$R[582]={type:"19"},$R[583]={children:$R[584]=[$R[585]={text:"Щоб налаштувати його, ви можете додати розділ ",type:"27"},$R[586]={text:"compiler",type:"5"},$R[587]={text:" у свій файл ",type:"27"},$R[588]={text:"intlayer.config.ts",type:"5"},$R[589]={text:":",type:"27"}],type:"21"},$R[590]={type:"19"},$R[591]={attrs:$R[592]={fileName:"intlayer.config.ts",codeFormat:"[\"typescript\", \"esm\", \"commonjs\"]"},lang:"typescript",text:"import { type IntlayerConfig } from \"intlayer\";\n\nconst config: IntlayerConfig = {\n // ... Інша частина вашої конфігурації\n compiler: {\n /**\n * Вказує, чи повинен бути включений компілятор.\n */\n enabled: true,\n\n /**\n * Визначає шлях до вихідних файлів\n */\n output: ({ fileName, extension }) => `./${fileName}${extension}`,\n\n /**\n * Вказує, чи повинні компоненти зберігатися після перетворення. Таким чином, компілятор можна запустити лише один раз для перетворення програми, а потім видалити.\n */\n saveComponents: false,\n\n /**\n * Префікс ключа словника\n */\n dictionaryKeyPrefix: \"\",\n },\n};\n\nexport default config;\n",type:"3"},$R[593]={type:"19"},$R[594]={attrs:null,noInnerParse:!1,tag:"Tabs",children:$R[595]=[$R[596]={attrs:$R[597]={value:"Команда витягування"},noInnerParse:!1,tag:"Tab",children:$R[598]=[$R[599]={type:"19"},$R[600]={children:$R[601]=[$R[602]={text:"Запустіть екстрактор для перетворення компонентів і витягування вмісту",type:"27"}],type:"21"},$R[603]={type:"19"},$R[604]={attrs:$R[605]={packageManager:"npm"},lang:"bash",text:"npx intlayer extract\n",type:"3"},$R[606]={type:"19"},$R[607]={attrs:$R[608]={packageManager:"pnpm"},lang:"bash",text:"pnpm intlayer extract\n",type:"3"},$R[609]={type:"19"},$R[610]={attrs:$R[611]={packageManager:"yarn"},lang:"bash",text:"yarn intlayer extract\n",type:"3"},$R[612]={type:"19"},$R[613]={attrs:$R[614]={packageManager:"bun"},lang:"bash",text:"bun x intlayer extract\n",type:"3"},$R[615]={type:"19"}],type:"34"},$R[616]={attrs:$R[617]={value:"Компілятор Babel"},noInnerParse:!1,tag:"Tab",children:$R[618]=[$R[619]={type:"19"},$R[620]={children:$R[621]=[$R[622]={text:"Оновіть свій ",type:"27"},$R[623]={text:"vite.config.ts",type:"5"},$R[624]={text:", щоб включити плагін ",type:"27"},$R[625]={text:"intlayerCompiler",type:"5"},$R[626]={text:":",type:"27"}],type:"21"},$R[627]={type:"19"},$R[628]={attrs:$R[629]={fileName:"vite.config.ts"},lang:"ts",text:"import { defineConfig } from \"vite\";\nimport { intlayer, intlayerCompiler } from \"vite-intlayer\";\n\nexport default defineConfig({\n plugins: [\n intlayer(),\n intlayerCompiler(), // Додає плагін компілятора\n ],\n});\n",type:"3"},$R[630]={type:"19"},$R[631]={attrs:$R[632]={packageManager:"npm"},lang:"bash",text:"npm run build # Або npm run dev\n",type:"3"},$R[633]={type:"19"},$R[634]={attrs:$R[635]={packageManager:"pnpm"},lang:"bash",text:"pnpm run build # Or pnpm run dev\n",type:"3"},$R[636]={type:"19"},$R[637]={attrs:$R[638]={packageManager:"yarn"},lang:"bash",text:"yarn build # Or yarn dev\n",type:"3"},$R[639]={type:"19"},$R[640]={attrs:$R[641]={packageManager:"bun"},lang:"bash",text:"bun run build # Or bun run dev\n",type:"3"},$R[642]={type:"19"}],type:"34"}],type:"34"}],type:"34"}],type:"34"},$R[643]={children:$R[644]=[$R[645]={text:"Конфігурація Git",type:"27"}],id:"-git",level:3,type:"9"},$R[646]={children:$R[647]=[$R[648]={text:"Рекомендується ігнорувати файли, згенеровані Intlayer. Це дозволяє уникнути їх коміту до вашого Git",type:"27"},$R[649]={text:"-репозиторію.",type:"27"}],type:"21"},$R[650]={type:"19"},$R[651]={children:$R[652]=[$R[653]={text:"Для цього можна додати наступні інструкції до файлу ",type:"27"},$R[654]={text:".gitignore",type:"5"},$R[655]={text:":",type:"27"}],type:"21"},$R[656]={type:"19"},$R[657]={attrs:null,lang:"bash",text:"# Ігнорувати файли, згенеровані Intlayer\n.intlayer\n",type:"3"},$R[658]={type:"19"},$R[659]={children:$R[660]=[$R[661]={text:"Розширення VS Code",type:"27"}],id:"-vs-code",level:3,type:"9"},$R[662]={children:$R[663]=[$R[664]={text:"Щоб покращити ваш досвід розробки з Intlayer, ви можете встановити офіційне ",type:"27"},$R[665]={children:$R[666]=[$R[667]={text:"Intlayer VS Code Extension",type:"27"}],type:"28"},$R[668]={text:".",type:"27"}],type:"21"},$R[669]={type:"19"},$R[670]={children:$R[671]=[$R[672]={children:$R[673]=[$R[674]={text:"Встановити з VS Code Marketplace",type:"27"}],target:"https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension",title:void 0,type:"15"}],type:"21"},$R[675]={type:"19"},$R[676]={children:$R[677]=[$R[678]={text:"Це розширення надає",type:"27"},$R[679]={text:":",type:"27"}],type:"21"},$R[680]={type:"19"},$R[681]={items:$R[682]=[$R[683]=[$R[684]={children:$R[685]=[$R[686]={text:"Автозаповнення",type:"27"}],type:"28"},$R[687]={text:" для ключів перекладу.",type:"27"}],$R[688]=[$R[689]={children:$R[690]=[$R[691]={text:"Виявлення помилок у реальному часі",type:"27"}],type:"28"},$R[692]={text:" для відсутніх перекладів.",type:"27"}],$R[693]=[$R[694]={children:$R[695]=[$R[696]={text:"Вбудовані попередні перегляди",type:"27"}],type:"28"},$R[697]={text:" перекладеного контенту.",type:"27"}],$R[698]=[$R[699]={children:$R[700]=[$R[701]={text:"Швидкі дії",type:"27"}],type:"28"},$R[702]={text:" для швидкого створення й оновлення перекладів.",type:"27"}]],ordered:!1,start:void 0,type:"33"},$R[703]={children:$R[704]=[$R[705]={text:"Для детальнішої інформації про використання розширення зверніться до документації ",type:"27"},$R[706]={children:$R[707]=[$R[708]={text:"розширення Intlayer для VS Code",type:"27"}],target:"https://intlayer.org/doc/vs-code-extension",title:void 0,type:"15"},$R[709]={text:".",type:"27"}],type:"21"},$R[710]={type:"19"},$R[711]={type:"2"},$R[712]={children:$R[713]=[$R[714]={text:"(Опційно) Sitemap і robots.txt (генерація під час збірки)",type:"27"}],id:"-sitemap--robotstxt----",level:3,type:"9"},$R[715]={children:$R[716]=[$R[717]={text:"Intlayer надає ",type:"27"},$R[718]={text:"generateSitemap",type:"5"},$R[719]={text:" і ",type:"27"},$R[720]={text:"getMultilingualUrls",type:"5"},$R[721]={text:" ",type:"27"},$R[722]={text:"- утиліти для формування багатомовних ",type:"27"},$R[723]={text:"sitemap.xml",type:"5"},$R[724]={text:" і ",type:"27"},$R[725]={text:"robots.txt",type:"5"},$R[726]={text:" для краулерів та автоматичного запису в ",type:"27"},$R[727]={text:"public/",type:"5"},$R[728]={text:". Зазвичай запускають невеликий Node",type:"27"},$R[729]={text:"-скрипт ",type:"27"},$R[730]={children:$R[731]=[$R[732]={text:"перед",type:"27"}],type:"28"},$R[733]={text:" Vite (наприклад, npm",type:"27"},$R[734]={text:"-хуки ",type:"27"},$R[735]={text:"predev",type:"5"},$R[736]={text:" / ",type:"27"},$R[737]={text:"prebuild",type:"5"},$R[738]={text:").",type:"27"}],type:"21"},$R[739]={type:"19"},$R[740]={children:$R[741]=[$R[742]={text:"Sitemap",type:"27"}],id:"sitemap",level:4,type:"9"},$R[743]={children:$R[744]=[$R[745]={text:"Генератор sitemap враховує локалі й додає метадані для краулерів.",type:"27"}],type:"21"},$R[746]={type:"19"},$R[747]={alert:void 0,children:$R[748]=[$R[749]={text:"Підтримується простір імен ",type:"27"},$R[750]={text:"xhtml:link",type:"5"},$R[751]={text:" (hreflang). Замість плоского списку URL Intlayer пов’язує всі мовні версії сторінки в обидва боки (наприклад ",type:"27"},$R[752]={text:"/about",type:"5"},$R[753]={text:", ",type:"27"},$R[754]={text:"/fr/about",type:"5"},$R[755]={text:" або ",type:"27"},$R[756]={text:"/about?lang=fr",type:"5"},$R[757]={text:" залежно від режиму маршрутизації).",type:"27"}],type:"0"},$R[758]={type:"19"},$R[759]={children:$R[760]=[$R[761]={text:"Robots.txt",type:"27"}],id:"robotstxt",level:4,type:"9"},$R[762]={children:$R[763]=[$R[764]={text:"Використовуйте ",type:"27"},$R[765]={text:"getMultilingualUrls",type:"5"},$R[766]={text:", щоб правила ",type:"27"},$R[767]={text:"Disallow",type:"5"},$R[768]={text:" покривали всі локалізовані варіанти шляхів.",type:"27"}],type:"21"},$R[769]={type:"19"},$R[770]={children:$R[771]=[$R[772]={text:"1. Файл ",type:"27"},$R[773]={text:"generate-seo.mjs",type:"5"},$R[774]={text:" у корені проєкту",type:"27"}],id:"1--generate-seomjs---",level:4,type:"9"},$R[775]={attrs:$R[776]={fileName:"generate-seo.mjs"},lang:"javascript",text:"import fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { generateSitemap, getMultilingualUrls } from \"intlayer\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst SITE_URL = (process.env.SITE_URL || \"http://localhost:5173\").replace(\n /\\/$/,\n \"\"\n);\n\nconst pathList = [\n { path: \"/\", changefreq: \"daily\", priority: 1.0 },\n { path: \"/about\", changefreq: \"monthly\", priority: 0.7 },\n];\n\nconst sitemapXml = generateSitemap(pathList, { siteUrl: SITE_URL });\nfs.writeFileSync(path.join(__dirname, \"public\", \"sitemap.xml\"), sitemapXml);\n\nconst getAllMultilingualUrls = (urls) =>\n urls.flatMap((url) => Object.values(getMultilingualUrls(url)));\n\nconst disallowedPaths = getAllMultilingualUrls([\"/admin\", \"/private\"]);\n\nconst robotsTxt = [\n \"User-agent: *\",\n \"Allow: /\",\n ...disallowedPaths.map((path) => `Disallow: ${path}`),\n \"\",\n `Sitemap: ${SITE_URL}/sitemap.xml`,\n].join(\"\\n\");\n\nfs.writeFileSync(path.join(__dirname, \"public\", \"robots.txt\"), robotsTxt);\n\nconsole.log(\"SEO files generated successfully.\");\n",type:"3"},$R[777]={type:"19"},$R[778]={children:$R[779]=[$R[780]={text:"Пакет ",type:"27"},$R[781]={text:"intlayer",type:"5"},$R[782]={text:" має бути встановлений. У продакшені задайте ",type:"27"},$R[783]={text:"SITE_URL",type:"5"},$R[784]={text:" у середовищі (наприклад у CI).",type:"27"}],type:"21"},$R[785]={type:"19"},$R[786]={alert:void 0,children:$R[787]=[$R[788]={text:"Для Node ESM краще ",type:"27"},$R[789]={text:"generate-seo.mjs",type:"5"},$R[790]={text:". Для ",type:"27"},$R[791]={text:"generate-seo.js",type:"5"},$R[792]={text:" додайте ",type:"27"},$R[793]={text:"\"type\": \"module\"",type:"5"},$R[794]={text:" у ",type:"27"},$R[795]={text:"package.json",type:"5"},$R[796]={text:" або ввімкніть ESM інакше.",type:"27"}],type:"0"},$R[797]={type:"19"},$R[798]={children:$R[799]=[$R[800]={text:"2. Запуск скрипта перед Vite",type:"27"}],id:"2----vite",level:4,type:"9"},$R[801]={attrs:$R[802]={fileName:"package.json"},lang:"json",text:"{\n \"scripts\": {\n \"dev\": \"vite\",\n \"prebuild\": \"node generate-seo.mjs\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n }\n}\n",type:"3"},$R[803]={type:"19"},$R[804]={children:$R[805]=[$R[806]={text:"Підлаштуйте команди для pnpm або yarn. Можна викликати скрипт із CI.",type:"27"}],type:"21"},$R[807]={type:"19"},$R[808]={children:$R[809]=[$R[810]={text:"Розширені можливості",type:"27"}],id:"-",level:3,type:"9"},$R[811]={children:$R[812]=[$R[813]={text:"Щоб рухатися далі, ви можете реалізувати ",type:"27"},$R[814]={children:$R[815]=[$R[816]={text:"візуальний редактор",type:"27"}],target:"/uk/doc/concept/editor",title:void 0,type:"15"},$R[817]={text:" або винести свій контент у зовнішню систему за допомогою ",type:"27"},$R[818]={children:$R[819]=[$R[820]={text:"CMS",type:"27"}],target:"/uk/doc/concept/cms",title:void 0,type:"15"},$R[821]={text:".",type:"27"}],type:"21"},$R[822]={type:"19"}],footnotes:$R[823]=[],inline:!1},nextDoc:$R[824]={title:"SvelteKit",url:"/uk/doc/environment/sveltekit"},prevDoc:$R[825]={title:"Vite та Solid",url:"/uk/doc/environment/vite-and-solid"},navData:$R[826]={why:$R[827]={title:"Чому Intlayer?",default:$R[828]={createdAt:"2024-08-14",updatedAt:"2026-05-31",title:"Переваги Intlayer",description:"Відкрийте для себе переваги та користь використання Intlayer у ваших проектах. Зрозумійте, чому Intlayer виділяється серед інших фреймворків.",keywords:$R[829]=["Переваги","Користь","Intlayer","Фреймворк","Порівняння"],slugs:$R[830]=["doc","why"],history:$R[831]=[$R[832]={version:"8.11.2",date:"2026-05-31",changes:"\"Додайте чому Intlayer поверх альтернативного розділу\""},$R[833]={version:"7.3.1",date:"2025-11-27",changes:"\"Випуск Компілятора\""},$R[834]={version:"5.8.0",date:"2025-08-19",changes:"\"Оновлення порівняльної таблиці\""},$R[835]={version:"5.5.10",date:"2025-06-29",changes:"\"Початкова історія\""}],author:"aymericzip",docKey:"./docs/en/interest_of_intlayer.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/interest_of_intlayer.md",relativeUrl:"/uk/doc/why",url:"https://intlayer.org/uk/doc/why"}},"get-started":$R[836]={title:"Почати",default:$R[837]={createdAt:"2025-08-23",updatedAt:"2025-08-23",title:"Вступ",description:"Дізнайтеся, як працює Intlayer. Ознайомтеся з кроками, які Intlayer використовує у вашому додатку. Дізнайтеся, для чого призначені різні пакети.",keywords:$R[838]=["Вступ","Початок роботи","Intlayer","Додаток","Пакети"],slugs:$R[839]=["doc","get-started"],history:$R[840]=[$R[841]={version:"5.5.10",date:"2025-06-29",changes:"\"Init history\""}],author:"aymericzip",docKey:"./docs/en/introduction.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/introduction.md",relativeUrl:"/uk/doc/get-started",url:"https://intlayer.org/uk/doc/get-started"}},concept:$R[842]={title:"Концепція",subSections:$R[843]={"how-works-intlayer":$R[844]={title:"Як працює Intlayer",default:$R[845]={createdAt:"2024-08-12",updatedAt:"2025-06-29",title:"Як працює Intlayer",description:"Дізнайтеся, як Intlayer працює всередині. Зрозумійте архітектуру та компоненти, що роблять Intlayer потужним.",keywords:$R[846]=["Intlayer","Як це працює","Архітектура","Компоненти","Внутрішні механізми"],slugs:$R[847]=["doc","concept","how-works-intlayer"],history:$R[848]=[$R[849]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/how_works_intlayer.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/how_works_intlayer.md",relativeUrl:"/uk/doc/concept/how-works-intlayer",url:"https://intlayer.org/uk/doc/concept/how-works-intlayer"}},configuration:$R[850]={title:"Конфігурація",default:$R[851]={createdAt:"2024-08-13",updatedAt:"2026-05-12",title:"Конфігурація",description:"Дізнайтеся, як налаштувати Intlayer для вашого додатка. Зрозумійте різні налаштування та параметри, доступні для адаптації Intlayer під ваші потреби.",keywords:$R[852]=["конфігурація","налаштування","кастомізація","Intlayer","параметри"],slugs:$R[853]=["doc","concept","configuration"],history:$R[854]=[$R[855]={version:"8.9.4",date:"2026-05-12",changes:"\"Додано підтримку провайдера LM Studio\""},$R[856]={version:"8.7.0",date:"2026-04-07",changes:"\"Додано параметри `minify` та `prune` до конфігурації збірки\""},$R[857]={version:"8.7.0",date:"2026-04-03",changes:"\"Додано параметр `currentDomain`\""},$R[858]={version:"8.4.0",date:"2026-03-20",changes:"\"Додано підтримку визначення шляхів для кожної локалі для 'compiler.output' та 'dictionary.fill'\""},$R[859]={version:"8.3.0",date:"2026-03-11",changes:"\"Перенесено 'baseDir' з конфігурації 'content' до конфігурації 'system'\""},$R[860]={version:"8.2.0",date:"2026-03-09",changes:"\"Оновлено параметри компілятора, додано підтримку для 'output' та 'noMetadata'\""},$R[861]={version:"8.1.7",date:"2026-02-25",changes:"\"Оновлено параметри компілятора\""},$R[862]={version:"8.1.5",date:"2026-02-23",changes:"\"Додано параметр компілятора 'build-only' та префікс ключа словника\""},$R[863]={version:"8.0.6",date:"2026-02-12",changes:"\"Додано підтримку провайдерів Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face та Together AI\""},$R[864]={version:"8.0.5",date:"2026-02-06",changes:"\"Додано `dataSerialization` до конфігурації AI\""},$R[865]={version:"8.0.0",date:"2026-01-24",changes:"\"Перейменовано режим імпорту `live` на `fetch` для кращого опису механізму.\""},$R[866]={version:"8.0.0",date:"2026-01-22",changes:"\"Перенесено конфігурацію збірки `importMode` до конфігурації `dictionary`.\""},$R[867]={version:"8.0.0",date:"2026-01-22",changes:"\"Додано параметр `rewrite` до конфігурації маршрутизації\""},$R[868]={version:"8.0.0",date:"2026-01-18",changes:"\"Відокремлено системну конфігурацію від конфігурації контенту. Перенесено внутрішні шляхи до властивості `system`. Додано `codeDir` для відокремлення файлів контенту від перетворень коду.\""},$R[869]={version:"8.0.0",date:"2026-01-18",changes:"\"Додано параметри словника `location` та `schema`\""},$R[870]={version:"7.5.1",date:"2026-01-10",changes:"\"Додано підтримку форматів файлів JSON5 та JSONC\""},$R[871]={version:"7.5.0",date:"2025-12-17",changes:"\"Додано параметр `buildMode`\""},$R[872]={version:"7.0.0",date:"2025-10-25",changes:"\"Додано конфігурацію `dictionary`\""},$R[873]={version:"7.0.0",date:"2025-10-21",changes:"\"Замінено `middleware` на конфігурацію `routing`\""},$R[874]={version:"7.0.0",date:"2025-10-12",changes:"\"Додано параметр `formatCommand`\""},$R[875]={version:"6.2.0",date:"2025-10-12",changes:"\"Оновлено параметр `excludedPath`\""},$R[876]={version:"6.0.2",date:"2025-09-23",changes:"\"Додано параметр `outputFormat`\""},$R[877]={version:"6.0.0",date:"2025-09-21",changes:"\"Вилучено поля `dictionaryOutput` та `i18nextResourcesDir`\""},$R[878]={version:"6.0.0",date:"2025-09-16",changes:"\"Додано режим імпорту `live`\""},$R[879]={version:"6.0.0",date:"2025-09-04",changes:"\"Замінено поле `hotReload` на `liveSync` та додано поля `liveSyncPort`, `liveSyncURL`\""},$R[880]={version:"5.6.1",date:"2025-07-25",changes:"\"Замінено параметр `activateDynamicImport` на параметр `importMode`\""},$R[881]={version:"5.6.0",date:"2025-07-13",changes:"\"Змінено стандартний `contentDir` з `['src']` на `['.']`\""},$R[882]={version:"5.5.11",date:"2025-06-29",changes:"\"Додано команди `docs`\""}],author:"aymericzip",docKey:"./docs/en/configuration.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md",relativeUrl:"/uk/doc/concept/configuration",url:"https://intlayer.org/uk/doc/concept/configuration"}},cli:$R[883]={title:"CLI",default:$R[884]={createdAt:"2024-08-11",updatedAt:"2026-03-31",title:"CLI - Усі команди Intlayer CLI для вашого багатомовного вебсайту",description:"Дізнайтеся, як використовувати Intlayer CLI для керування вашим багатомовним вебсайтом. Дотримуйтесь кроків у цій онлайн-документації, щоб налаштувати свій проєкт за лічені хвилини.",keywords:$R[885]=["CLI","Інтерфейс командного рядка","Інтернаціоналізація","Документація","Intlayer","Next.js","JavaScript","React"],slugs:$R[886]=["doc","concept","cli"],history:$R[887]=[$R[888]={version:"9.0.0",date:"2026-06-11",changes:"\"Додано вміст команди scan\""},$R[889]={version:"8.6.4",date:"2026-03-31",changes:"\"Додано вміст команди standalone\""},$R[890]={version:"7.5.11",date:"2026-01-06",changes:"\"Додано вміст команди CI\""},$R[891]={version:"7.5.11",date:"2026-01-06",changes:"\"Додано вміст команди list projects\""},$R[892]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано вміст команди init\""},$R[893]={version:"7.2.3",date:"2025-11-22",changes:"\"Додано вміст команди extract\""},$R[894]={version:"7.1.0",date:"2025-11-05",changes:"\"Додано опцію skipIfExists до команди translate\""},$R[895]={version:"6.1.4",date:"2025-01-27",changes:"\"Додано аліаси для аргументів та команд CLI\""},$R[896]={version:"6.1.3",date:"2025-10-05",changes:"\"Додано опцію build до команд\""},$R[897]={version:"6.1.2",date:"2025-09-26",changes:"\"Додано вміст команди version\""},$R[898]={version:"6.1.0",date:"2025-09-26",changes:"\"Встановлено опцію verbose в true за замовчуванням через CLI\""},$R[899]={version:"6.1.0",date:"2025-09-23",changes:"\"Додано команду watch та опцію with\""},$R[900]={version:"6.0.1",date:"2025-09-23",changes:"\"Додано вміст команди editor\""},$R[901]={version:"6.0.0",date:"2025-09-17",changes:"\"Додано команди content test та list\""},$R[902]={version:"5.5.11",date:"2025-07-11",changes:"\"Оновлено документацію параметрів команд CLI\""},$R[903]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/cli/index.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/index.md",relativeUrl:"/uk/doc/concept/cli",url:"https://intlayer.org/uk/doc/concept/cli"},subSections:$R[904]={test:$R[905]={title:"Test",default:$R[906]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Перевірка відсутніх перекладів",description:"Дізнайтеся, як перевіряти та виявляти відсутні переклади у ваших словниках.",keywords:$R[907]=["Тест","Відсутні переклади","CLI","Intlayer"],slugs:$R[908]=["doc","concept","cli","test"],author:"aymericzip",docKey:"./docs/en/cli/test.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/test.md",relativeUrl:"/uk/doc/concept/cli/test",url:"https://intlayer.org/uk/doc/concept/cli/test"}},fill:$R[909]={title:"Fill",default:$R[910]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Заповнення словників",description:"Дізнайтеся, як заповнювати, перевіряти та перекладати ваші словники за допомогою AI.",keywords:$R[911]=["Заповнення","Аудит","Переклад","Словники","CLI","Intlayer","AI"],slugs:$R[912]=["doc","concept","cli","fill"],author:"aymericzip",docKey:"./docs/en/cli/fill.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/fill.md",relativeUrl:"/uk/doc/concept/cli/fill",url:"https://intlayer.org/uk/doc/concept/cli/fill"}},build:$R[913]={title:"Build",default:$R[914]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Побудова словників",description:"Дізнайтеся, як побудувати словники Intlayer зі файлів декларації контенту.",keywords:$R[915]=["Build","Dictionaries","CLI","Intlayer"],slugs:$R[916]=["doc","concept","cli","build"],history:$R[917]=[$R[918]={version:"8.1.5",date:"2026-02-23",changes:"\"Додати опцію checkTypes\""}],author:"aymericzip",docKey:"./docs/en/cli/build.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/build.md",relativeUrl:"/uk/doc/concept/cli/build",url:"https://intlayer.org/uk/doc/concept/cli/build"}},watch:$R[919]={title:"Watch",default:$R[920]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Відстеження словників",description:"Дізнайтеся, як відстежувати зміни у ваших файлах декларації контенту та автоматично створювати словники.",keywords:$R[921]=["Відстеження","Словники","CLI","Intlayer"],slugs:$R[922]=["doc","concept","cli","watch"],author:"aymericzip",docKey:"./docs/en/cli/watch.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/watch.md",relativeUrl:"/uk/doc/concept/cli/watch",url:"https://intlayer.org/uk/doc/concept/cli/watch"}},extract:$R[923]={title:"Extract",default:$R[924]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Витягнення рядків",description:"Дізнайтеся, як витягувати рядки з ваших компонентів у файл .content поруч із компонентом.",keywords:$R[925]=["Витягнення","Компоненти","Міграція","CLI","Intlayer"],slugs:$R[926]=["doc","concept","cli","extract"],author:"aymericzip",docKey:"./docs/en/cli/extract.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/extract.md",relativeUrl:"/uk/doc/concept/cli/extract",url:"https://intlayer.org/uk/doc/concept/cli/extract"}},login:$R[927]={title:"Login",default:$R[928]={createdAt:"2025-12-16",updatedAt:"2025-12-16",title:"CLI, команда login",description:"Дізнайтеся, як використовувати команду login Intlayer CLI для автентифікації в Intlayer CMS та отримання облікових даних доступу.",keywords:$R[929]=["CLI","Login","Authentication","CMS","Intlayer","Credentials"],slugs:$R[930]=["doc","concept","cli","login"],author:"aymericzip",docKey:"./docs/en/cli/login.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/login.md",relativeUrl:"/uk/doc/concept/cli/login",url:"https://intlayer.org/uk/doc/concept/cli/login"}},push:$R[931]={title:"Push",default:$R[932]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Push словників",description:"Дізнайтеся, як передати ваші словники до редактора Intlayer та CMS.",keywords:$R[933]=["Push","Словники","CLI","Intlayer","Editor","CMS"],slugs:$R[934]=["doc","concept","cli","push"],author:"aymericzip",docKey:"./docs/en/cli/push.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/push.md",relativeUrl:"/uk/doc/concept/cli/push",url:"https://intlayer.org/uk/doc/concept/cli/push"}},pull:$R[935]={title:"Pull",default:$R[936]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Отримати словники",description:"Дізнайтеся, як витягувати словники з редактора Intlayer та CMS.",keywords:$R[937]=["Витягування","Словники","CLI","Intlayer","Редактор","CMS"],slugs:$R[938]=["doc","concept","cli","pull"],author:"aymericzip",docKey:"./docs/en/cli/pull.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/pull.md",relativeUrl:"/uk/doc/concept/cli/pull",url:"https://intlayer.org/uk/doc/concept/cli/pull"}},configuration:$R[939]={title:"Configuration",default:$R[940]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Керування конфігурацією",description:"Дізнайтеся, як отримувати та завантажувати вашу конфігурацію Intlayer у CMS.",keywords:$R[941]=["Конфігурація","Налаштування","CLI","Intlayer","CMS"],slugs:$R[942]=["doc","concept","cli","configuration"],author:"aymericzip",docKey:"./docs/en/cli/configuration.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/configuration.md",relativeUrl:"/uk/doc/concept/cli/configuration",url:"https://intlayer.org/uk/doc/concept/cli/configuration"}},list:$R[943]={title:"List",default:$R[944]={createdAt:"2024-08-11",updatedAt:"2026-01-06",title:"Перелік файлів декларації контенту",description:"Дізнайтеся, як перерахувати всі файли декларацій контенту у вашому проєкті.",keywords:$R[945]=["Перелік","Декларація контенту","CLI","Intlayer"],slugs:$R[946]=["doc","concept","cli","list"],history:$R[947]=[$R[948]={version:"7.5.12",date:"2026-01-06",changes:"\"Додано опцію виводу абсолютних шляхів для команди list\""},$R[949]={version:"7.5.11",date:"2026-01-06",changes:"\"Додано опцію виводу у форматі JSON для команди list\""}],author:"aymericzip",docKey:"./docs/en/cli/list.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/list.md",relativeUrl:"/uk/doc/concept/cli/list",url:"https://intlayer.org/uk/doc/concept/cli/list"}},version:$R[950]={title:"Version",default:$R[951]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Перевірка версії CLI",description:"Дізнайтеся, як перевірити встановлену версію Intlayer CLI.",keywords:$R[952]=["Версія","CLI","Intlayer"],slugs:$R[953]=["doc","concept","cli","version"],author:"aymericzip",docKey:"./docs/en/cli/version.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/version.md",relativeUrl:"/uk/doc/concept/cli/version",url:"https://intlayer.org/uk/doc/concept/cli/version"}},editor:$R[954]={title:"Editor",default:$R[955]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Команди редактора",description:"Дізнайтеся, як використовувати команди редактора Intlayer.",keywords:$R[956]=["Editor","Visual Editor","CLI","Intlayer"],slugs:$R[957]=["doc","concept","cli","editor"],author:"aymericzip",docKey:"./docs/en/cli/editor.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/editor.md",relativeUrl:"/uk/doc/concept/cli/editor",url:"https://intlayer.org/uk/doc/concept/cli/editor"}},live:$R[958]={title:"Live",default:$R[959]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Команди Live Sync",description:"Дізнайтеся, як використовувати Live Sync для відображення змін контенту CMS під час виконання.",keywords:$R[960]=["Live Sync","CMS","Runtime","CLI","Intlayer"],slugs:$R[961]=["doc","concept","cli","live"],author:"aymericzip",docKey:"./docs/en/cli/live.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/live.md",relativeUrl:"/uk/doc/concept/cli/live",url:"https://intlayer.org/uk/doc/concept/cli/live"}},debug:$R[962]={title:"Debug",default:$R[963]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Налагодження команди Intlayer",description:"Дізнайтеся, як налагоджувати та усувати неполадки в Intlayer CLI.",keywords:$R[964]=["Налагодження","Усунення неполадок","CLI","Intlayer"],slugs:$R[965]=["doc","concept","cli","debug"],author:"aymericzip",docKey:"./docs/en/cli/debug.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/debug.md",relativeUrl:"/uk/doc/concept/cli/debug",url:"https://intlayer.org/uk/doc/concept/cli/debug"}},"doc-review":$R[966]={title:"Doc Review",default:$R[967]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Перевірка документа",description:"Дізнайтеся, як перевіряти файли документації на предмет якості, узгодженості та повноти для різних локалей.",keywords:$R[968]=["Перевірка","Документ","Документація","AI","CLI","Intlayer"],slugs:$R[969]=["doc","concept","cli","doc-review"],author:"aymericzip",docKey:"./docs/en/cli/doc-review.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/doc-review.md",relativeUrl:"/uk/doc/concept/cli/doc-review",url:"https://intlayer.org/uk/doc/concept/cli/doc-review"}},"doc-translate":$R[970]={title:"Doc Translate",default:$R[971]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Переклад документа",description:"Дізнайтеся, як автоматично перекладати файли документації за допомогою AI-сервісів перекладу.",keywords:$R[972]=["Переклад","Документ","Документація","AI","CLI","Intlayer"],slugs:$R[973]=["doc","concept","cli","doc-translate"],author:"aymericzip",docKey:"./docs/en/cli/doc-translate.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/doc-translate.md",relativeUrl:"/uk/doc/concept/cli/doc-translate",url:"https://intlayer.org/uk/doc/concept/cli/doc-translate"}},sdk:$R[974]={title:"SDK",default:$R[975]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"SDK для CLI",description:"Дізнайтеся, як використовувати Intlayer CLI SDK у власному коді.",keywords:$R[976]=["SDK","CLI","Intlayer","Програмне"],slugs:$R[977]=["doc","concept","cli","sdk"],author:"aymericzip",docKey:"./docs/en/cli/sdk.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/sdk.md",relativeUrl:"/uk/doc/concept/cli/sdk",url:"https://intlayer.org/uk/doc/concept/cli/sdk"}},scan:$R[978]={title:"Scan",default:$R[979]={createdAt:"2026-06-11",updatedAt:"2026-06-11",title:"Scan Website",description:"Дізнайтеся, як використовувати команду scan в Intlayer CLI для вимірювання розміру сторінки та аудиту стану i18n/SEO будь-якого вебсайту.",keywords:$R[980]=["Scan","SEO","i18n","Аудит","CLI","Intlayer","Розмір сторінки","Збірка"],slugs:$R[981]=["doc","concept","cli","scan"],history:$R[982]=[$R[983]={version:"9.0.0",date:"2026-06-11",changes:"\"Додано вміст команди scan\""}],author:"aymericzip",docKey:"./docs/en/cli/scan.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/scan.md",relativeUrl:"/uk/doc/concept/cli/scan",url:"https://intlayer.org/uk/doc/concept/cli/scan"}}}},editor:$R[984]={title:"Візуальний редактор",default:$R[985]={createdAt:"2025-08-23",updatedAt:"2025-09-23",title:"Intlayer Visual Editor | Редагуйте ваш контент за допомогою візуального редактора",description:"Дізнайтеся, як використовувати Intlayer Editor для керування вашим багатомовним вебсайтом. Дотримуйтеся кроків цієї онлайн-документації, щоб налаштувати проєкт за кілька хвилин.",keywords:$R[986]=["Редактор","Інтернаціоналізація","Документація","Intlayer","Next.js","JavaScript","React"],slugs:$R[987]=["doc","concept","editor"],youtubeVideo:"https://www.youtube.com/watch?v=UDDTnirwi_4",history:$R[988]=[$R[989]={version:"6.1.0",date:"2025-09-23",changes:"\"Додано опцію 'with' у CLI\""},$R[990]={version:"6.0.1",date:"2025-09-22",changes:"\"Змінено поведінку редактора, коли розширення файлу не `.json`\""},$R[991]={version:"6.0.0",date:"2025-09-21",changes:"\"Додано команду reexported\""},$R[992]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/intlayer_visual_editor.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_visual_editor.md",relativeUrl:"/uk/doc/concept/editor",url:"https://intlayer.org/uk/doc/concept/editor"}},cms:$R[993]={title:"CMS",default:$R[994]={createdAt:"2025-08-23",updatedAt:"2025-08-23",title:"Intlayer CMS | Виносьте свій контент у Intlayer CMS",description:"Виносьте свій контент у Intlayer CMS, щоб делегувати керування ним вашій команді.",keywords:$R[995]=["CMS","Visual Editor","Internationalization","Documentation","Intlayer","Next.js","JavaScript","React"],slugs:$R[996]=["doc","concept","cms"],youtubeVideo:"https://www.youtube.com/watch?v=UDDTnirwi_4",history:$R[997]=[$R[998]={version:"6.0.1",date:"2025-09-22",changes:"\"Додано документацію `liveSync`\""},$R[999]={version:"6.0.0",date:"2025-09-04",changes:"\"Замінено поле `hotReload` на `liveSync`\""},$R[1000]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізовано історію\""}],author:"aymericzip",docKey:"./docs/en/intlayer_CMS.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_CMS.md",relativeUrl:"/uk/doc/concept/cms",url:"https://intlayer.org/uk/doc/concept/cms"}},"ci-cd":$R[1001]={title:"Інтеграція CI/CD",default:$R[1002]={createdAt:"2025-05-20",updatedAt:"2025-08-13",title:"Інтеграція CI/CD",description:"Дізнайтеся, як інтегрувати Intlayer у ваш CI/CD конвеєр для автоматизованого керування контентом та розгортання.",keywords:$R[1003]=["CI/CD","Безперервна інтеграція","Безперервне розгортання","Автоматизація","Інтернаціоналізація","Документація","Intlayer"],slugs:$R[1004]=["doc","concept","ci-cd"],history:$R[1005]=[$R[1006]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/CI_CD.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/CI_CD.md",relativeUrl:"/uk/doc/concept/ci-cd",url:"https://intlayer.org/uk/doc/concept/ci-cd"}},content:$R[1007]={title:"Оголошення контенту",default:$R[1008]={createdAt:"2025-02-07",updatedAt:"2026-05-12",title:"Файл контенту",description:"Дізнайтеся, як налаштувати розширення для файлів декларації контенту. Дотримуйтесь цієї документації, щоб ефективно реалізувати умови у вашому проєкті.",keywords:$R[1009]=["Файл контенту","Документація","Intlayer"],slugs:$R[1010]=["doc","concept","content"],history:$R[1011]=[$R[1012]={version:"8.10.0",date:"2026-05-19",changes:"\"Додано підтримку форматів файлів YAML та Markdown\""},$R[1013]={version:"8.9.0",date:"2026-05-12",changes:"\"Add `plural` content node type\""},$R[1014]={version:"8.0.0",date:"2026-01-28",changes:"\"Додано тип вузла контенту `html`\""},$R[1015]={version:"8.0.0",date:"2026-01-24",changes:"\"Rename `live` import mode to `fetch` to better describe the underlying mechanism.\""},$R[1016]={version:"8.0.0",date:"2026-01-18",changes:"\"Додано опції словника `location` та `schema`\""},$R[1017]={version:"7.5.13",date:"2026-01-10",changes:"\"Додано підтримку форматів файлів JSON5 та JSONC\""},$R[1018]={version:"7.5.0",date:"2025-12-13",changes:"\"Додано підтримку форматів ICU та i18next\""},$R[1019]={version:"7.0.0",date:"2025-10-23",changes:"\"Перейменовано `autoFill` на `fill`\""},$R[1020]={version:"6.0.0",date:"2025-09-20",changes:"\"Додано документацію для полів\""},$R[1021]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізовано історію\""}],author:"aymericzip",docKey:"./docs/en/dictionary/content_file.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/content_file.md",relativeUrl:"/uk/doc/concept/content",url:"https://intlayer.org/uk/doc/concept/content"},subSections:$R[1022]={translation:$R[1023]={title:"Переклад",default:$R[1024]={createdAt:"2025-08-23",updatedAt:"2025-08-23",title:"Переклад",description:"Дізнайтеся, як оголошувати та використовувати переклади на вашому багатомовному сайті. Дотримуйтесь кроків цієї онлайн-документації, щоб налаштувати проект за кілька хвилин.",keywords:$R[1025]=["Переклад","Інтернаціоналізація","Документація","Intlayer","Next.js","JavaScript","React"],slugs:$R[1026]=["doc","concept","content","translation"],history:$R[1027]=[$R[1028]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/dictionary/translation.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/translation.md",relativeUrl:"/uk/doc/concept/content/translation",url:"https://intlayer.org/uk/doc/concept/content/translation"}},plural:$R[1029]={title:"Множина",default:$R[1030]={createdAt:"2026-05-04",updatedAt:"2026-05-04",title:"Множина",description:"Дізнайтеся, як оголошувати та використовувати контент з урахуванням множини (на основі CLDR) на вашому багатомовному веб-сайті. Дотримуйтесь інструкцій у цій онлайн-документації, щоб налаштувати свій проект за кілька хвилин.",keywords:$R[1031]=["Множина","Плюралізація","CLDR","Інтернаціоналізація","Документація","Intlayer","Next.js","JavaScript","React"],slugs:$R[1032]=["doc","concept","content","plural"],history:$R[1033]=[$R[1034]={version:"8.8.0",date:"2026-05-04",changes:"\"Init history\""}],author:"aymericzip",docKey:"./docs/en/dictionary/plurial.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/plurial.md",relativeUrl:"/uk/doc/concept/content/plural",url:"https://intlayer.org/uk/doc/concept/content/plural"}},enumeration:$R[1035]={title:"Перелік",default:$R[1036]={createdAt:"2025-08-23",updatedAt:"2025-08-23",title:"Перелічення",description:"Дізнайтеся, як оголошувати та використовувати перелічення на вашому багатомовному сайті. Дотримуйтеся кроків у цій онлайн-документації, щоб налаштувати проект за кілька хвилин.",keywords:$R[1037]=["Перелічення","Інтернаціоналізація","Документація","Intlayer","Next.js","JavaScript","React"],slugs:$R[1038]=["doc","concept","content","enumeration"],history:$R[1039]=[$R[1040]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/dictionary/enumeration.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/enumeration.md",relativeUrl:"/uk/doc/concept/content/enumeration",url:"https://intlayer.org/uk/doc/concept/content/enumeration"}},condition:$R[1041]={title:"Умова",default:$R[1042]={createdAt:"2025-02-07",updatedAt:"2025-06-29",title:"Умовний вміст",description:"Дізнайтеся, як використовувати умовний вміст в Intlayer для динамічного відображення контенту на основі певних умов. Дотримуйтесь цієї документації, щоб ефективно реалізувати умови у вашому проєкті.",keywords:$R[1043]=["Умовний вміст","Динамічне відображення","Документація","Intlayer","Next.js","JavaScript","React"],slugs:$R[1044]=["doc","concept","content","condition"],history:$R[1045]=[$R[1046]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/dictionary/condition.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/condition.md",relativeUrl:"/uk/doc/concept/content/condition",url:"https://intlayer.org/uk/doc/concept/content/condition"}},gender:$R[1047]={title:"Рід",default:$R[1048]={createdAt:"2025-07-27",updatedAt:"2025-07-27",title:"Гендерно-орієнтований контент",description:"Дізнайтеся, як використовувати гендерно-орієнтований контент в Intlayer для динамічного відображення вмісту залежно від гендеру. Слідуйте цій документації, щоб ефективно реалізувати гендерно-специфічний контент у вашому проєкті.",keywords:$R[1049]=["Гендерно-орієнтований контент","Динамічний рендеринг","Документація","Intlayer","Next.js","JavaScript","React"],slugs:$R[1050]=["doc","concept","content","gender"],history:$R[1051]=[$R[1052]={version:"5.7.2",date:"2025-07-27",changes:"\"Додано підтримку гендерно-залежного контенту\""}],author:"aymericzip",docKey:"./docs/en/dictionary/gender.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/gender.md",relativeUrl:"/uk/doc/concept/content/gender",url:"https://intlayer.org/uk/doc/concept/content/gender"}},insertion:$R[1053]={title:"Вставка",default:$R[1054]={createdAt:"2025-03-13",updatedAt:"2025-06-29",title:"Вставлення",description:"Дізнайтеся, як оголошувати та використовувати заповнювачі (placeholders) для вставлення вмісту. Ця документація проведе вас крок за кроком по процесу динамічного вставлення значень у заздалегідь визначені структури вмісту.",keywords:$R[1055]=["Вставлення","Динамічний вміст","Заповнювачі","Intlayer","Next.js","JavaScript","React"],slugs:$R[1056]=["doc","concept","content","insertion"],history:$R[1057]=[$R[1058]={version:"8.0.0",date:"2026-01-18",changes:"\"Автоматичне оформлення вмісту вставки\""},$R[1059]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/dictionary/insertion.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/insertion.md",relativeUrl:"/uk/doc/concept/content/insertion",url:"https://intlayer.org/uk/doc/concept/content/insertion"}},file:$R[1060]={title:"Файл",default:$R[1061]={createdAt:"2025-03-13",updatedAt:"2025-06-29",title:"Файл",description:"Дізнайтеся, як вбудовувати зовнішні файли у ваш content dictionary за допомогою функції `file`. Ця документація пояснює, як Intlayer пов’язує та динамічно керує вмістом файлів.",keywords:$R[1062]=["Файл","Інтернаціоналізація","Документація","Intlayer","Next.js","JavaScript","React"],slugs:$R[1063]=["doc","concept","content","file"],history:$R[1064]=[$R[1065]={version:"5.5.10",date:"2025-06-29",changes:"\"Init history\""}],author:"aymericzip",docKey:"./docs/en/dictionary/file.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/file.md",relativeUrl:"/uk/doc/concept/content/file",url:"https://intlayer.org/uk/doc/concept/content/file"}},nesting:$R[1066]={title:"Вкладеність",default:$R[1067]={createdAt:"2025-02-07",updatedAt:"2025-06-29",title:"Вкладення словника",description:"Дізнайтесь, як використовувати вкладення контенту в Intlayer, щоб ефективно повторно використовувати та структурувати багатомовний контент. Дотримуйтесь цієї документації, щоб безшовно реалізувати вкладення у вашому проєкті.",keywords:$R[1068]=["Вкладення","Повторне використання контенту","Документація","Intlayer","Next.js","JavaScript","React"],slugs:$R[1069]=["doc","concept","content","nesting"],history:$R[1070]=[$R[1071]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/dictionary/nesting.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/nesting.md",relativeUrl:"/uk/doc/concept/content/nesting",url:"https://intlayer.org/uk/doc/concept/content/nesting"}},markdown:$R[1072]={title:"Markdown",default:$R[1073]={createdAt:"2025-02-07",updatedAt:"2026-05-19",title:"Markdown",description:"Дізнайтеся, як оголошувати та використовувати вміст Markdown на вашому багатомовному веб-сайті за допомогою Intlayer. Дотримуйтесь інструкцій у цій онлайн-документації, щоб безперешкодно інтегрувати Markdown у ваш проект.",keywords:$R[1074]=["Markdown","Інтернаціоналізація","Документація","Intlayer","Next.js","JavaScript","React"],slugs:$R[1075]=["doc","concept","content","markdown"],history:$R[1076]=[$R[1077]={version:"8.11.0",date:"2026-05-28",changes:"\"Дозволити попередній синтаксичний аналіз AST Markdown для SSR / гідратації\""},$R[1078]={version:"8.10.0",date:"2026-05-19",changes:"\"Додано підтримку файлів `.content.md`\""},$R[1079]={version:"8.5.0",date:"2026-03-24",changes:"\"Додано об'єкт плагіна `intlayerMarkdown`; використовуйте `app.use(intlayerMarkdown)` замість `app.use(installIntlayerMarkdown)`\""},$R[1080]={version:"8.5.0",date:"2026-03-24",changes:"\"Імпорт переміщено з `{{framework}}-intlayer` до `{{framework}}-intlayer/markdown`\""},$R[1081]={version:"8.0.0",date:"2026-01-22",changes:"\"Додано утиліту MarkdownRenderer / useMarkdownRenderer / renderMarkdown та опцію forceInline\""},$R[1082]={version:"8.0.0",date:"2026-01-18",changes:"\"Автоматичне оформлення вмісту markdown, підтримка MDX та SSR\""},$R[1083]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/dictionary/markdown.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/markdown.md",relativeUrl:"/uk/doc/concept/content/markdown",url:"https://intlayer.org/uk/doc/concept/content/markdown"}},html:$R[1084]={title:"HTML",default:$R[1085]={createdAt:"2026-01-20",updatedAt:"2026-01-22",title:"Вміст HTML",description:"Дізнайтеся, як оголошувати та використовувати HTML-контент із користувацькими компонентами в Intlayer. Дотримуйтесь цієї документації, щоб вбудувати багатий вміст, схожий на HTML, з динамічною заміною компонентів у вашому інтернаціоналізованому проєкті.",keywords:$R[1086]=["HTML","Користувацькі компоненти","Багатий вміст","Intlayer","Next.js","JavaScript","React","Vue","Svelte"],slugs:$R[1087]=["doc","concept","content","html"],history:$R[1088]=[$R[1089]={version:"8.5.0",date:"2026-03-24",changes:"\"Add `intlayerHTML` plugin object; use `app.use(intlayerHTML)` instead of `app.use(installIntlayerHTML)`\""},$R[1090]={version:"8.5.0",date:"2026-03-24",changes:"\"move import from `{{framework}}-intlayer` to `{{framework}}-intlayer/html`\""},$R[1091]={version:"8.0.0",date:"2026-01-22",changes:"\"Додано HTMLRenderer / useHTMLRenderer / утиліту renderHTML\""},$R[1092]={version:"8.0.0",date:"2026-01-20",changes:"\"Додано підтримку парсингу HTML\""}],author:"aymericzip",docKey:"./docs/en/dictionary/html.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/html.md",relativeUrl:"/uk/doc/concept/content/html",url:"https://intlayer.org/uk/doc/concept/content/html"}},"function-fetching":$R[1093]={title:"Отримання функції",default:$R[1094]={createdAt:"2025-08-23",updatedAt:"2025-08-23",title:"Отримання через функції",description:"Дізнайтеся, як оголосити та використовувати отримання через функції у вашому мультимовному вебсайті. Дотримуйтесь кроків у цій онлайн-документації, щоб налаштувати проєкт за кілька хвилин.",keywords:$R[1095]=["Отримання через функції","Інтернаціоналізація","Документація","Intlayer","Next.js","JavaScript","React"],slugs:$R[1096]=["doc","concept","content","function-fetching"],history:$R[1097]=[$R[1098]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/dictionary/function_fetching.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/function_fetching.md",relativeUrl:"/uk/doc/concept/content/function-fetching",url:"https://intlayer.org/uk/doc/concept/content/function-fetching"}}}},"dynamic-dyctionary":$R[1099]={title:"Файл для кожної локалі",default:$R[1100]={createdAt:"2026-06-12",updatedAt:"2026-06-12",title:"Динамічні Словники",description:"Огляд трьох функцій динамічних словників Intlayer — колекцій, варіантів та динамічних записів — для створення гнучкого вмісту i18n, керованого під час виконання.",keywords:$R[1101]=["Динамічні Словники","Колекції","Варіанти","Динамічні Записи","Intlayer","Інтернаціоналізація"],slugs:$R[1102]=["doc","concept","dynamic-dictionaries"],history:$R[1103]=[$R[1104]={version:"9.0.0",date:"2026-06-12",changes:"\"Випуск функції динамічних словників\""}],author:"aymericzip",docKey:"./docs/en/dynamic_dictionaries/index.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dynamic_dictionaries/index.md",relativeUrl:"/uk/doc/concept/dynamic-dictionaries",url:"https://intlayer.org/uk/doc/concept/dynamic-dictionaries"},subSections:$R[1105]={collections:$R[1106]={title:"Колекції",default:$R[1107]={createdAt:"2026-06-12",updatedAt:"2026-06-12",title:"Колекції",description:"Використовуйте поле метаданих item у файлах вмісту Intlayer для створення впорядкованих колекцій локалізованих елементів, які можна вибирати за індексом під час виконання.",keywords:$R[1108]=["Колекції","Список Вмісту","Динамічний Вміст","Intlayer","Інтернаціоналізація"],slugs:$R[1109]=["doc","concept","collections"],history:$R[1110]=[$R[1111]={version:"9.0.0",date:"2026-06-12",changes:"\"Випуск функції словників колекцій\""}],author:"aymericzip",docKey:"./docs/en/dynamic_dictionaries/collections.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dynamic_dictionaries/collections.md",relativeUrl:"/uk/doc/concept/collections",url:"https://intlayer.org/uk/doc/concept/collections"}},variants:$R[1112]={title:"Варіанти",default:$R[1113]={createdAt:"2026-06-12",updatedAt:"2026-06-12",title:"Варіанти",description:"Використовуйте поле метаданих variant у файлах вмісту Intlayer для оголошення іменованих альтернатив вмісту (A/B-тести, сезонні банери, тексти з прапорцями функцій) і перемикання між ними під час виконання без зміни коду.",keywords:$R[1114]=["Варіанти","A/B Тестування","Прапорці Функцій","Динамічний Вміст","Intlayer","Інтернаціоналізація"],slugs:$R[1115]=["doc","concept","variants"],history:$R[1116]=[$R[1117]={version:"9.0.0",date:"2026-06-12",changes:"\"Випуск функції варіантів словників\""}],author:"aymericzip",docKey:"./docs/en/dynamic_dictionaries/variants.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dynamic_dictionaries/variants.md",relativeUrl:"/uk/doc/concept/variants",url:"https://intlayer.org/uk/doc/concept/variants"}},"dynamic-content":$R[1118]={title:"Динамічні записи",default:$R[1119]={createdAt:"2026-06-12",updatedAt:"2026-06-12",title:"Динамічні Записи",description:"Використовуйте поле meta у файлах вмісту Intlayer для оголошення записів, керованих CMS, що отримуються під час виконання за непрозорим ідентифікатором ID, що дозволяє створювати строго типізований динамічний вміст без перерахування під час складання.",keywords:$R[1120]=["Динамічні Записи","Динамічний Вміст","CMS","Вміст під Час Виконання","Intlayer","Інтернаціоналізація"],slugs:$R[1121]=["doc","concept","dynamic-records"],history:$R[1122]=[$R[1123]={version:"9.0.0",date:"2026-06-12",changes:"\"Випуск функції динамічного контенту\""}],author:"aymericzip",docKey:"./docs/en/dynamic_dictionaries/dynamic_content.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dynamic_dictionaries/dynamic_content.md",relativeUrl:"/uk/doc/concept/dynamic-records",url:"https://intlayer.org/uk/doc/concept/dynamic-records"}}}},"per-locale-file":$R[1124]={title:"Файл для кожної локалі",default:$R[1125]={createdAt:"2025-04-18",updatedAt:"2025-06-29",title:"Оголошення декларації вмісту `Per-Locale` в Intlayer",description:"Дізнайтеся, як оголошувати вміст за локалями в Intlayer. Ознайомтеся з документацією, щоб зрозуміти різні формати та сценарії використання.",keywords:$R[1126]=["Інтернаціоналізація","Документація","Intlayer","Per-Locale","TypeScript","JavaScript"],slugs:$R[1127]=["doc","concept","per-locale-file"],history:$R[1128]=[$R[1129]={version:"7.3.1",date:"2025-11-29",changes:"\"Додано глобальну конфігурацію для файлів per-locale\""},$R[1130]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/per_locale_file.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/per_locale_file.md",relativeUrl:"/uk/doc/concept/per-locale-file",url:"https://intlayer.org/uk/doc/concept/per-locale-file"}},compiler:$R[1131]={title:"Компілятор",default:$R[1132]={createdAt:"2025-09-09",updatedAt:"2026-03-12",title:"Intlayer Compiler | Автоматизоване витягування контенту для i18n",description:"Автоматизуйте процес інтернаціоналізації за допомогою Intlayer Compiler. Витягуйте контент безпосередньо з ваших компонентів для швидшого та ефективнішого i18n у Vite, Next.js та інших.",keywords:$R[1133]=["Intlayer","Compiler","Інтернаціоналізація","i18n","Автоматизація","Екстракція","Швидкість","Vite","Next.js","React","Vue","Svelte"],slugs:$R[1134]=["doc","compiler"],history:$R[1135]=[$R[1136]={version:"8.2.0",date:"2026-03-09",changes:"\"Оновлення опцій компілятора, додана підтримка FilePathPattern\""},$R[1137]={version:"8.1.7",date:"2026-02-25",changes:"\"Оновлення опцій компілятора\""},$R[1138]={version:"7.3.1",date:"2025-11-27",changes:"\"Випуск компілятора\""}],author:"aymericzip",docKey:"./docs/en/compiler.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/compiler.md",relativeUrl:"/uk/doc/compiler",url:"https://intlayer.org/uk/doc/compiler"}},"auto-fill":$R[1139]={title:"Автозаповнення",default:$R[1140]={createdAt:"2025-03-13",updatedAt:"2025-09-20",title:"Автозаповнення",description:"Дізнайтеся, як використовувати функцію автозаповнення в Intlayer для автоматичного заповнення контенту на основі заздалегідь визначених шаблонів. Дотримуйтесь цієї документації, щоб ефективно реалізувати можливості автозаповнення у вашому проєкті.",keywords:$R[1141]=["Автозаповнення","Автоматизація контенту","Динамічний контент","Intlayer","Next.js","JavaScript","React"],slugs:$R[1142]=["doc","concept","auto-fill"],history:$R[1143]=[$R[1144]={version:"7.0.0",date:"2025-10-23",changes:"\"Перейменовано `autoFill` на `fill` та оновлено поведінку\""},$R[1145]={version:"6.0.0",date:"2025-09-20",changes:"\"Додано глобальну конфігурацію\""},$R[1146]={version:"6.0.0",date:"2025-09-17",changes:"\"Додано змінну `{{fileName}}`\""},$R[1147]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізовано історію\""}],author:"aymericzip",docKey:"./docs/en/autoFill.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/autoFill.md",relativeUrl:"/uk/doc/concept/auto-fill",url:"https://intlayer.org/uk/doc/concept/auto-fill"}},testing:$R[1148]={title:"Тестування",default:$R[1149]={createdAt:"2025-03-01",updatedAt:"2025-10-05",title:"Тестування вашого контенту",description:"Дізнайтеся, як тестувати ваш контент за допомогою Intlayer.",keywords:$R[1150]=["Тестування","Intlayer","Інтернаціоналізація","CMS","Система управління контентом","Візуальний редактор"],slugs:$R[1151]=["doc","testing"],history:$R[1152]=[$R[1153]={version:"6.0.1",date:"2025-10-05",changes:"\"Зробити тест асинхронним і додати опцію build\""},$R[1154]={version:"6.0.0",date:"2025-09-20",changes:"\"Впровадження тестування\""}],author:"aymericzip",docKey:"./docs/en/testing.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/testing.md",relativeUrl:"/uk/doc/testing",url:"https://intlayer.org/uk/doc/testing"}},bundle_optimization:$R[1155]={title:"Оптимізація пакета",default:$R[1156]={createdAt:"2025-11-25",updatedAt:"2026-06-07",title:"Оптимізація розміру бандлу та продуктивності i18n",description:"Зменште розмір бандлу вашого застосунку завдяки оптимізації контенту інтернаціоналізації (i18n). Дізнайтеся, як використовувати tree shaking та ліниве завантаження (lazy loading) для словників за допомогою Intlayer.",keywords:$R[1157]=["Bundle Optimisation","Content Automation","Dynamic Content","Intlayer","Next.js","JavaScript","React"],slugs:$R[1158]=["doc","concept","bundle-optimization"],history:$R[1159]=[$R[1160]={version:"8.12.0",date:"2026-06-07",changes:"\"Додано `intlayerPurgeBabelPlugin` та `intlayerMinifyBabelPlugin` для Babel/Webpack; уточнено порядок конвеєра плагінів\""},$R[1161]={version:"8.7.0",date:"2026-04-08",changes:"\"Додано опції `minify` та `purge` до конфігурації збірки\""}],author:"aymericzip",docKey:"./docs/en/bundle_optimization.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/bundle_optimization.md",relativeUrl:"/uk/doc/concept/bundle-optimization",url:"https://intlayer.org/uk/doc/concept/bundle-optimization"}}},routing:$R[1162]={title:"Маршрутизація",subSections:$R[1163]={custom_url_rewrites:$R[1164]={title:"Спеціальні перетворення URL-адрес",default:$R[1165]={createdAt:"2024-08-13",updatedAt:"2026-01-26",title:"Користувацькі правила переписування URL",description:"Дізнайтеся, як налаштувати та використовувати користувацькі правила переписування URL в Intlayer для визначення шляхів, специфічних для локалі.",keywords:$R[1166]=["Користувацькі переписування URL","Маршрутизація","Інтернаціоналізація","i18n"],slugs:$R[1167]=["doc","concept","custom_url_rewrites"],history:$R[1168]=[$R[1169]={version:"8.0.0",date:"2026-01-25",changes:"\"Implement centralized URL rewrites with framework-specific formatters and the useRewriteURL hook.\""}],author:"aymericzip",docKey:"./docs/en/custom_url_rewrites.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/custom_url_rewrites.md",relativeUrl:"/uk/doc/concept/custom_url_rewrites",url:"https://intlayer.org/uk/doc/concept/custom_url_rewrites"}},"domains-i18n":$R[1170]={title:"Домени i18n",default:$R[1171]={createdAt:"2026-04-02",updatedAt:"2026-04-02",title:"Власні домени",description:"Дізнайтеся, як налаштувати маршрутизацію локалей на основі доменів в Intlayer для обслуговування різних локалей з виділених імен хостів.",keywords:$R[1172]=["Власні домени","Доменна маршрутизація","Маршрутизація","Інтернаціоналізація","i18n"],slugs:$R[1173]=["doc","concept","custom_domains"],history:$R[1174]=[$R[1175]={version:"8.5.0",date:"2026-04-02",changes:"\"Додано маршрутизацію локалей на основі доменів через конфігурацію routing.domains.\""}],author:"aymericzip",docKey:"./docs/en/custom_domains.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/custom_domains.md",relativeUrl:"/uk/doc/concept/custom_domains",url:"https://intlayer.org/uk/doc/concept/custom_domains"}}}}},environment:$R[1176]={title:"Середовище",subSections:$R[1177]={nextjs:$R[1178]={title:"Next.js",default:$R[1179]={createdAt:"2024-12-06",updatedAt:"2026-05-31",title:"Next.js 16 i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Next.js 16. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1180]=["Інтернаціоналізація","Документація","Intlayer","Next.js 16","JavaScript","React"],slugs:$R[1181]=["doc","environment","nextjs"],applicationTemplate:"https://github.com/aymericzip/intlayer-next-16-template",applicationShowcase:"https://intlayer-next-16-template.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=e_PPG7PTqGU",history:$R[1182]=[$R[1183]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1184]={version:"7.5.9",date:"2025-12-30",changes:"\"Додати команду init\""},$R[1185]={version:"7.0.6",date:"2025-11-01",changes:"\"Додано згадку про `x-default` в об'єкті `alternates`\""},$R[1186]={version:"7.0.0",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_nextjs_16.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_nextjs_16.md",relativeUrl:"/uk/doc/environment/nextjs",url:"https://intlayer.org/uk/doc/environment/nextjs"},subSections:$R[1187]={14:$R[1188]={title:"Next.js 14 та App Router",default:$R[1189]={createdAt:"2024-12-06",updatedAt:"2026-05-31",title:"Next.js 14 i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Next.js 14. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1190]=["Інтернаціоналізація","Документація","Intlayer","Next.js 14","JavaScript","React"],slugs:$R[1191]=["doc","environment","nextjs","14"],applicationTemplate:"https://github.com/aymericzip/intlayer-next-14-template",applicationShowcase:"https://intlayer-next-14-template.vercel.app",history:$R[1192]=[$R[1193]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1194]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду `init`\""},$R[1195]={version:"6.2.0",date:"2025-10-09",changes:"\"Додано документацію для хука `useLocale` з опцією `onLocaleChange`\""},$R[1196]={version:"5.6.6",date:"2025-10-02",changes:"\"Додано документацію для функції `getLocale` у server actions\""},$R[1197]={version:"5.6.2",date:"2025-09-22",changes:"\"Додано документацію для хелпера `multipleMiddlewares`\""},$R[1198]={version:"5.6.0",date:"2025-07-06",changes:"\"Перетворено функцію `withIntlayer()` на функцію, що повертає Promise\""},$R[1199]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізовано історію\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_nextjs_14.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_nextjs_14.md",relativeUrl:"/uk/doc/environment/nextjs/14",url:"https://intlayer.org/uk/doc/environment/nextjs/14"},frameworks:$R[1200]=["nextjs","react"]},15:$R[1201]={title:"Next.js 15",default:$R[1202]={createdAt:"2025-10-25",updatedAt:"2026-05-31",title:"Next.js 15 i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Next.js 15. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1203]=["Інтернаціоналізація","Документація","Intlayer","Next.js 15","JavaScript","React"],slugs:$R[1204]=["doc","environment","nextjs","15"],applicationTemplate:"https://github.com/aymericzip/intlayer-next-15-template",applicationShowcase:"https://next-15-intlayer-template-xt83.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=e_PPG7PTqGU",history:$R[1205]=[$R[1206]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1207]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1208]={version:"7.0.6",date:"2025-11-01",changes:"\"Додано згадку про `x-default` в об'єкті `alternates`\""},$R[1209]={version:"7.0.0",date:"2025-10-25",changes:"\"Додано згадку про функцію `withIntlayerSync()`\""},$R[1210]={version:"6.2.0",date:"2025-10-09",changes:"\"Додано документацію для хука `useLocale` з опцією `onLocaleChange`\""},$R[1211]={version:"5.6.6",date:"2025-10-02",changes:"\"Додано документацію для функції `getLocale` у server actions\""},$R[1212]={version:"5.6.2",date:"2025-09-23",changes:"\"Додано документацію щодо відстеження змін словників у Turbopack\""},$R[1213]={version:"5.6.2",date:"2025-09-22",changes:"\"Додано документацію для хелпера `multipleMiddlewares`\""},$R[1214]={version:"5.6.0",date:"2025-07-06",changes:"\"Трансформовано функцію `withIntlayer()` на promise-based функцію\""},$R[1215]={version:"5.5.10",date:"2025-06-29",changes:"\"Додано згадку про функцію `withIntlayerSync()`\""},$R[1216]={version:"6.2.0",date:"2025-10-09",changes:"\"Додано документацію для хука `useLocale` з опцією `onLocaleChange`\""},$R[1217]={version:"5.6.6",date:"2025-10-02",changes:"\"Додано документацію для функції `getLocale` у server actions\""},$R[1218]={version:"5.6.2",date:"2025-09-23",changes:"\"Додано документацію щодо відстеження змін словників у Turbopack\""},$R[1219]={version:"5.6.2",date:"2025-09-22",changes:"\"Додано документацію для хелпера `multipleMiddlewares`\""},$R[1220]={version:"5.6.0",date:"2025-07-06",changes:"\"Перетворено функцію `withIntlayer()` на функцію, яка повертає Promise\""},$R[1221]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_nextjs_15.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_nextjs_15.md",relativeUrl:"/uk/doc/environment/nextjs/15",url:"https://intlayer.org/uk/doc/environment/nextjs/15"},frameworks:$R[1222]=["nextjs","react"]},"no-locale-path":$R[1223]={title:"Next.js без locale URL",default:$R[1224]={createdAt:"2026-01-10",updatedAt:"2026-05-31",title:"Next.js 16 i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Next.js 16. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1225]=["Internationalization","Documentation","Intlayer","Next.js 16","JavaScript","React"],slugs:$R[1226]=["doc","environment","nextjs","no-locale-path"],applicationTemplate:"https://github.com/aymericzip/intlayer-next-no-lolale-path-template",youtubeVideo:"https://www.youtube.com/watch?v=e_PPG7PTqGU",history:$R[1227]=[$R[1228]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1229]={version:"8.0.0",date:"2026-01-10",changes:"\"Початковий випуск\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_nextjs_no_locale_path.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_nextjs_no_locale_path.md",relativeUrl:"/uk/doc/environment/nextjs/no-locale-path",url:"https://intlayer.org/uk/doc/environment/nextjs/no-locale-path"},frameworks:$R[1230]=["nextjs","react"]},"next-with-Page-Router":$R[1231]={title:"Next.js та Page Router",default:$R[1232]={createdAt:"2024-12-07",updatedAt:"2026-05-31",title:"Next.js Page Router i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Next.js Page Router. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1233]=["Інтернаціоналізація","Документація","Intlayer","Page Router","Next.js","JavaScript","React"],slugs:$R[1234]=["doc","environment","nextjs","next-with-page-router"],applicationTemplate:"https://github.com/aymericzip/intlayer-next-14-template",applicationShowcase:"https://intlayer-next-14-template.vercel.app",history:$R[1235]=[$R[1236]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1237]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1238]={version:"5.6.0",date:"2025-07-06",changes:"\"Перетворено функцію `withIntlayer()` на функцію на основі промісів\""},$R[1239]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізовано історію\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_nextjs_page_router.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_nextjs_page_router.md",relativeUrl:"/uk/doc/environment/nextjs/next-with-page-router",url:"https://intlayer.org/uk/doc/environment/nextjs/next-with-page-router"},frameworks:$R[1240]=["nextjs","react"]},"next-with-compiler":$R[1241]={title:"Compiler",default:$R[1242]={createdAt:"2026-01-10",updatedAt:"2026-05-31",title:"Next.js i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Next.js. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1243]=["Інтернаціоналізація","Документація","Intlayer","Next.js","JavaScript","React","Компілятор","ШІ"],slugs:$R[1244]=["doc","environment","nextjs","compiler"],applicationTemplate:"https://github.com/aymericzip/intlayer-next-no-lolale-path-template",youtubeVideo:"https://www.youtube.com/watch?v=e_PPG7PTqGU",history:$R[1245]=[$R[1246]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1247]={version:"8.2.0",date:"2026-03-09",changes:"\"Update compiler options, add FilePathPattern support\""},$R[1248]={version:"8.1.6",date:"2026-02-23",changes:"\"Перший випуск\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_nextjs_compiler.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_nextjs_compiler.md",relativeUrl:"/uk/doc/environment/nextjs/compiler",url:"https://intlayer.org/uk/doc/environment/nextjs/compiler"},frameworks:$R[1249]=["nextjs","react"]}},frameworks:$R[1250]=["nextjs","react"]},"tanstack-start":$R[1251]={title:"Tanstack Start",default:$R[1252]={createdAt:"2025-09-09",updatedAt:"2026-05-31",title:"TanStack Start i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку TanStack Start. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1253]=["Інтернаціоналізація","Документація","Intlayer","Tanstack Start","React","i18n","TypeScript","Локалізована маршрутизація"],slugs:$R[1254]=["doc","environment","tanstack-start"],applicationTemplate:"https://github.com/aymericzip/intlayer-tanstack-start-template",applicationShowcase:"https://intlayer-tanstack-start-template.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=_XTdKVWaeqg",history:$R[1255]=[$R[1256]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1257]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1258]={version:"7.4.0",date:"2025-12-11",changes:"\"Представлено validatePrefix та додано крок 14: Обробка сторінок 404 з локалізованими маршрутами.\""},$R[1259]={version:"7.3.9",date:"2025-12-05",changes:"\"Додано крок 13: Отримання локалі у server actions (необов'язково)\""},$R[1260]={version:"7.2.3",date:"2025-11-18",changes:"\"Додано крок 13: Адаптувати Nitro\""},$R[1261]={version:"7.1.0",date:"2025-11-17",changes:"\"Виправлено значення префікса за замовчуванням, додавши функцію getPrefix, useLocalizedNavigate, LocaleSwitcher та LocalizedLink.\""},$R[1262]={version:"6.5.2",date:"2025-10-03",changes:"\"Оновлено документацію\""},$R[1263]={version:"5.8.1",date:"2025-09-09",changes:"\"Додано для Tanstack Start\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_tanstack.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_tanstack.md",relativeUrl:"/uk/doc/environment/tanstack-start",url:"https://intlayer.org/uk/doc/environment/tanstack-start"},frameworks:$R[1264]=["tanstack","react","vite"],subSections:$R[1265]={"tanstack-start-solid":$R[1266]={title:"Tanstack Start Solid",default:$R[1267]={createdAt:"2025-03-25",updatedAt:"2026-05-31",title:"TanStack Start + Solid i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку TanStack Start + Solid. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1268]=["Інтернаціоналізація","Документація","Intlayer","Tanstack Start","Solid","i18n","TypeScript","Маршрутизація мов"],slugs:$R[1269]=["doc","environment","tanstack-start","solid"],applicationTemplate:"https://github.com/aymericzip/intlayer-tanstack-start-solid-template",applicationShowcase:"https://intlayer-tanstack-start-solid.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=_XTdKVWaeqg",history:$R[1270]=[$R[1271]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1272]={version:"8.5.1",date:"2026-03-25",changes:"\"Додано для Tanstack Start Solid.js\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_tanstack+solid.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_tanstack+solid.md",relativeUrl:"/uk/doc/environment/tanstack-start/solid",url:"https://intlayer.org/uk/doc/environment/tanstack-start/solid"},frameworks:$R[1273]=["solid","tanstack","vite"]}}},astro:$R[1274]={title:"Astro",default:$R[1275]={createdAt:"2024-03-07",updatedAt:"2026-05-31",title:"Astro i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Astro. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1276]=["інтернаціоналізація","документація","Intlayer","Vite","React","i18n","JavaScript"],slugs:$R[1277]=["doc","environment","astro"],applicationTemplate:"https://github.com/aymericzip/intlayer-astro-template",applicationShowcase:"https://intlayer-astro-template.vercel.app",history:$R[1278]=[$R[1279]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1280]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1281]={version:"6.2.0",date:"2025-10-03",changes:"\"Оновлення інтеграції Astro, конфігурації та використання\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_astro.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_astro.md",relativeUrl:"/uk/doc/environment/astro",url:"https://intlayer.org/uk/doc/environment/astro"},frameworks:$R[1282]=["astro","vite"],subSections:$R[1283]={"astro-and-react":$R[1284]={title:"Astro та React",default:$R[1285]={createdAt:"2024-03-07",updatedAt:"2026-05-31",title:"Astro + React i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Astro + React. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1286]=["інтернаціоналізація","документація","Intlayer","Astro","React","i18n","JavaScript"],slugs:$R[1287]=["doc","environment","astro","react"],applicationTemplate:"https://github.com/aymericzip/intlayer-astro-template",applicationShowcase:"https://intlayer-astro-template.vercel.app",history:$R[1288]=[$R[1289]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1290]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1291]={version:"6.2.0",date:"2025-10-03",changes:"\"Оновлення інтеграції Astro, конфігурації та використання\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_astro_react.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_astro_react.md",relativeUrl:"/uk/doc/environment/astro/react",url:"https://intlayer.org/uk/doc/environment/astro/react"},frameworks:$R[1292]=["react","astro","vite"]},"astro-and-svelte":$R[1293]={title:"Astro та Svelte",default:$R[1294]={createdAt:"2026-04-24",updatedAt:"2026-05-31",title:"Astro + Svelte i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Astro + Svelte. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1295]=["інтернаціоналізація","документація","Intlayer","Astro","Svelte","i18n","JavaScript"],slugs:$R[1296]=["doc","environment","astro","svelte"],applicationTemplate:"https://github.com/aymericzip/intlayer-astro-template",applicationShowcase:"https://intlayer-astro-template.vercel.app",history:$R[1297]=[$R[1298]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1299]={version:"8.7.7",date:"2026-04-24",changes:"\"Початкова документація для Astro + Svelte\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_astro_svelte.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_astro_svelte.md",relativeUrl:"/uk/doc/environment/astro/svelte",url:"https://intlayer.org/uk/doc/environment/astro/svelte"},frameworks:$R[1300]=["svelte","astro","vite"]},"astro-and-vue":$R[1301]={title:"Astro та Vue",default:$R[1302]={createdAt:"2026-04-24",updatedAt:"2026-05-31",title:"Astro + Vue i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Astro + Vue. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1303]=["інтернаціоналізація","документація","Intlayer","Astro","Vue","i18n","JavaScript"],slugs:$R[1304]=["doc","environment","astro","vue"],applicationTemplate:"https://github.com/aymericzip/intlayer-astro-template",applicationShowcase:"https://intlayer-astro-template.vercel.app",history:$R[1305]=[$R[1306]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1307]={version:"8.7.7",date:"2026-04-24",changes:"\"Початкова документація для Astro + Vue\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_astro_vue.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_astro_vue.md",relativeUrl:"/uk/doc/environment/astro/vue",url:"https://intlayer.org/uk/doc/environment/astro/vue"},frameworks:$R[1308]=["vue","astro","vite"]},"astro-and-solid":$R[1309]={title:"Astro та Solid",default:$R[1310]={createdAt:"2026-04-24",updatedAt:"2026-05-31",title:"Astro + Solid i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Astro + Solid. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1311]=["інтернаціоналізація","документація","Intlayer","Astro","Solid","i18n","JavaScript"],slugs:$R[1312]=["doc","environment","astro","solid"],applicationTemplate:"https://github.com/aymericzip/intlayer-astro-template",applicationShowcase:"https://intlayer-astro-template.vercel.app",history:$R[1313]=[$R[1314]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1315]={version:"8.7.7",date:"2026-04-24",changes:"\"Початкова документація для Astro + Solid\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_astro_solid.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_astro_solid.md",relativeUrl:"/uk/doc/environment/astro/solid",url:"https://intlayer.org/uk/doc/environment/astro/solid"},frameworks:$R[1316]=["solid","astro","vite"]},"astro-and-preact":$R[1317]={title:"Astro та Preact",default:$R[1318]={createdAt:"2026-04-24",updatedAt:"2026-05-31",title:"Astro + Preact i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Astro + Preact. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1319]=["інтернаціоналізація","документація","Intlayer","Astro","Preact","i18n","JavaScript"],slugs:$R[1320]=["doc","environment","astro","preact"],applicationTemplate:"https://github.com/aymericzip/intlayer-astro-template",applicationShowcase:"https://intlayer-astro-template.vercel.app",history:$R[1321]=[$R[1322]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1323]={version:"8.7.7",date:"2026-04-24",changes:"\"Початкова документація для Astro + Preact\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_astro_preact.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_astro_preact.md",relativeUrl:"/uk/doc/environment/astro/preact",url:"https://intlayer.org/uk/doc/environment/astro/preact"},frameworks:$R[1324]=["preact","astro","vite"]},"astro-and-lit":$R[1325]={title:"Astro та Lit",default:$R[1326]={createdAt:"2026-04-24",updatedAt:"2026-05-31",title:"Astro + Lit i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Astro + Lit. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1327]=["інтернаціоналізація","документація","Intlayer","Astro","Lit","Web Components","i18n","JavaScript"],slugs:$R[1328]=["doc","environment","astro","lit"],applicationTemplate:"https://github.com/aymericzip/intlayer-astro-template",applicationShowcase:"https://intlayer-astro-template.vercel.app",history:$R[1329]=[$R[1330]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1331]={version:"8.7.7",date:"2026-04-24",changes:"\"Початкова документація для Astro + Lit\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_astro_lit.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_astro_lit.md",relativeUrl:"/uk/doc/environment/astro/lit",url:"https://intlayer.org/uk/doc/environment/astro/lit"},frameworks:$R[1332]=["lit","astro","vite"]},"astro-and-vanilla-js":$R[1333]={title:"Astro та Vanilla JS",default:$R[1334]={createdAt:"2026-04-24",updatedAt:"2026-05-31",title:"Astro + Vanilla JS i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Astro + Vanilla JS. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1335]=["інтернаціоналізація","документація","Intlayer","Astro","Vanilla JS","JavaScript","TypeScript"],slugs:$R[1336]=["doc","environment","astro","vanilla"],applicationTemplate:"https://github.com/aymericzip/intlayer-astro-template",applicationShowcase:"https://intlayer-astro-template.vercel.app",history:$R[1337]=[$R[1338]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1339]={version:"8.7.7",date:"2026-04-24",changes:"\"Початкова документація для Astro + Vanilla JS\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_astro_vanilla.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_astro_vanilla.md",relativeUrl:"/uk/doc/environment/astro/vanilla",url:"https://intlayer.org/uk/doc/environment/astro/vanilla"},frameworks:$R[1340]=["vanilla","astro","vite"]}}},"vite-and-react":$R[1341]={title:"Vite та React",default:$R[1342]={createdAt:"2024-03-07",updatedAt:"2026-05-31",title:"Vite + React i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Vite + React. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1343]=["Інтернаціоналізація","Документація","Intlayer","Vite","React","i18n","JavaScript"],slugs:$R[1344]=["doc","environment","vite-and-react"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-react-template",applicationShowcase:"https://intlayer-vite-react-template.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=dS9L7uJeak4",history:$R[1345]=[$R[1346]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1347]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1348]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізовано історію\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+react.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_vite+react.md",relativeUrl:"/uk/doc/environment/vite-and-react",url:"https://intlayer.org/uk/doc/environment/vite-and-react"},subSections:$R[1349]={"react-router-v7":$R[1350]={title:"React Router v7",default:$R[1351]={createdAt:"2025-09-04",updatedAt:"2026-05-31",title:"React Router v7 i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку React Router v7. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1352]=["Інтернаціоналізація","Документація","Intlayer","React Router v7","React","i18n","TypeScript","Locale Routing"],slugs:$R[1353]=["doc","environment","vite-and-react","react-router-v7"],applicationTemplate:"https://github.com/aymericzip/intlayer-react-router-v7-template",applicationShowcase:"https://intlayer-react-router-v7.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=dS9L7uJeak4",history:$R[1354]=[$R[1355]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1356]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1357]={version:"7.5.6",date:"2025-12-27",changes:"\"Оновлено Layout і обробку 404\""},$R[1358]={version:"6.1.5",date:"2025-10-03",changes:"\"Оновлено документацію\""},$R[1359]={version:"5.8.2",date:"2025-09-04",changes:"\"Додано для React Router v7\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_react_router_v7.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_react_router_v7.md",relativeUrl:"/uk/doc/environment/vite-and-react/react-router-v7",url:"https://intlayer.org/uk/doc/environment/vite-and-react/react-router-v7"},frameworks:$R[1360]=["react","vite"]},"react-router-v7-fs-routes":$R[1361]={title:"React Router v7 (fs-routes)",default:$R[1362]={createdAt:"2025-12-07",updatedAt:"2026-05-31",title:"React Router v7 i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку React Router v7. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1363]=["Інтернаціоналізація","Документація","Intlayer","React Router v7","fs-routes","Маршрути файлової системи","React","i18n","TypeScript","Локалізована маршрутизація"],slugs:$R[1364]=["doc","environment","vite-and-react","react-router-v7-fs-routes"],applicationTemplate:"https://github.com/aymericzip/intlayer-react-router-v7-fs-routes-template",applicationShowcase:"https://intlayer-react-router-v7-fs-routes.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=dS9L7uJeak4",history:$R[1365]=[$R[1366]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1367]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1368]={version:"7.5.6",date:"2025-12-27",changes:"\"Оновлено Layout та додано обробку 404\""},$R[1369]={version:"7.3.4",date:"2025-12-08",changes:"\"Ініціалізовано history\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_react_router_v7_fs_routes.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_react_router_v7_fs_routes.md",relativeUrl:"/uk/doc/environment/vite-and-react/react-router-v7-fs-routes",url:"https://intlayer.org/uk/doc/environment/vite-and-react/react-router-v7-fs-routes"},frameworks:$R[1370]=["react","vite"]},compiler:$R[1371]={title:"Compiler",default:$R[1372]={createdAt:"2024-03-07",updatedAt:"2026-05-31",title:"Vite + React i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Vite + React. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1373]=["Інтернаціоналізація","Документація","Intlayer","Vite","React","Компілятор","ШІ"],slugs:$R[1374]=["doc","environment","vite-and-react","compiler"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-react-template",applicationShowcase:"https://intlayer-vite-react-template.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=dS9L7uJeak4",history:$R[1375]=[$R[1376]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1377]={version:"8.2.0",date:"2026-03-09",changes:"\"Update compiler options, add FilePathPattern support\""},$R[1378]={version:"8.1.6",date:"2026-02-23",changes:"\"Початковий реліз\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+react_compiler.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_vite+react_compiler.md",relativeUrl:"/uk/doc/environment/vite-and-react/compiler",url:"https://intlayer.org/uk/doc/environment/vite-and-react/compiler"},frameworks:$R[1379]=["react","vite"]}},frameworks:$R[1380]=["react","vite"]},"vite-and-vue":$R[1381]={title:"Vite та Vue",default:$R[1382]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Vite + Vue i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Vite + Vue. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1383]=["Інтернаціоналізація (i18n)","Документація","Intlayer","Vite","Vue","JavaScript"],slugs:$R[1384]=["doc","environment","vite-and-vue"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-vue-template",applicationShowcase:"https://intlayer-vite-vue-template.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=IE3XWkZ6a5U",history:$R[1385]=[$R[1386]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1387]={version:"7.5.9",date:"2025-12-30",changes:"\"Додати команду init\""},$R[1388]={version:"5.5.10",date:"2025-06-29",changes:"\"Початкова історія\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+vue.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_vite+vue.md",relativeUrl:"/uk/doc/environment/vite-and-vue",url:"https://intlayer.org/uk/doc/environment/vite-and-vue"},frameworks:$R[1389]=["vue","vite"],subSections:$R[1390]={"nuxt-and-vue":$R[1391]={title:"Nuxt та Vue",default:$R[1392]={createdAt:"2025-06-18",updatedAt:"2026-05-31",title:"Nuxt i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Nuxt. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1393]=["Інтернаціоналізація","Документація","Intlayer","Nuxt","Vue","JavaScript"],slugs:$R[1394]=["doc","environment","nuxt-and-vue"],applicationTemplate:"https://github.com/aymericzip/intlayer-nuxt-4-template",applicationShowcase:"https://intlayer-nuxt-4-template.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=nhUcUAVQ6eQ",history:$R[1395]=[$R[1396]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1397]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1398]={version:"7.3.13",date:"2025-12-08",changes:"\"Непотрібна конфігурація TypeScript\""},$R[1399]={version:"7.3.11",date:"2025-12-07",changes:"\"Оновлено LocaleSwitcher, SEO, метадані\""},$R[1400]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_nuxt.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_nuxt.md",relativeUrl:"/uk/doc/environment/nuxt-and-vue",url:"https://intlayer.org/uk/doc/environment/nuxt-and-vue"},frameworks:$R[1401]=["nuxt","vue","vite"]}}},"vite-and-solid":$R[1402]={title:"Vite та Solid",default:$R[1403]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Vite + Solid i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Vite + Solid. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1404]=["Інтернаціоналізація","Документація","Intlayer","Vite","Solid","JavaScript"],slugs:$R[1405]=["doc","environment","vite-and-solid"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-solid-template",history:$R[1406]=[$R[1407]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1408]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1409]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізовано історію\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+solid.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_vite+solid.md",relativeUrl:"/uk/doc/environment/vite-and-solid",url:"https://intlayer.org/uk/doc/environment/vite-and-solid"},frameworks:$R[1410]=["solid","vite"]},"vite-and-svelte":$R[1411]={title:"Vite та Svelte",default:$R[1412]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Vite + Svelte i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Vite + Svelte. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1413]=["Інтернаціоналізація","Документація","Intlayer","Vite","Svelte","JavaScript"],slugs:$R[1414]=["doc","environment","vite-and-svelte"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-svelte-template",applicationShowcase:"https://intlayer-vite-svelte-template.vercel.app",history:$R[1415]=[$R[1416]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1417]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1418]={version:"5.5.11",date:"2025-11-19",changes:"\"Оновлено документацію\""},$R[1419]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізовано історію\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+svelte.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_vite+svelte.md",relativeUrl:"/uk/doc/environment/vite-and-svelte",url:"https://intlayer.org/uk/doc/environment/vite-and-svelte"},subSections:$R[1420]={"vite-and-svelte-kit":$R[1421]={title:"SvelteKit",default:$R[1422]={createdAt:"2025-11-20",updatedAt:"2026-05-31",title:"SvelteKit i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку SvelteKit. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1423]=["Інтернаціоналізація (i18n)","Документація","Intlayer","SvelteKit","JavaScript","SSR"],slugs:$R[1424]=["doc","environment","sveltekit"],applicationTemplate:"https://github.com/aymericzip/intlayer-sveltekit-template",applicationShowcase:"https://intlayer-sveltekit-template.vercel.app",history:$R[1425]=[$R[1426]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1427]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1428]={version:"7.1.10",date:"2025-11-20",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_svelte_kit.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_svelte_kit.md",relativeUrl:"/uk/doc/environment/sveltekit",url:"https://intlayer.org/uk/doc/environment/sveltekit"},frameworks:$R[1429]=["svelte","vite"]}},frameworks:$R[1430]=["svelte","vite"]},"vite-and-preact":$R[1431]={title:"Vite та Preact",default:$R[1432]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Vite + Preact i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Vite + Preact. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1433]=["Інтернаціоналізація","Документація","Intlayer","Vite","Preact","JavaScript"],slugs:$R[1434]=["doc","environment","vite-and-preact"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-preact-template",applicationShowcase:"https://intlayer-vite-preact-template.vercel.app",history:$R[1435]=[$R[1436]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1437]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1438]={version:"7.0.0",date:"2025-10-28",changes:"\"Оновлено компонент LocaleRouter для використання нової конфігурації маршрутів\""},$R[1439]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+preact.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_vite+preact.md",relativeUrl:"/uk/doc/environment/vite-and-preact",url:"https://intlayer.org/uk/doc/environment/vite-and-preact"},frameworks:$R[1440]=["preact","vite"]},"vite-and-vanilla-js":$R[1441]={title:"Vite та Vanilla JS",default:$R[1442]={createdAt:"2026-03-23",updatedAt:"2026-05-31",title:"Vite + Vanilla JS i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Vite + Vanilla JS. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1443]=["Інтернаціоналізація","Документація","Intlayer","Vite","Vanilla JS","JavaScript","TypeScript","HTML"],slugs:$R[1444]=["doc","environment","vite-and-vanilla"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-vanilla-template",applicationShowcase:"https://intlayer-vite-vanilla.vercel.app",history:$R[1445]=[$R[1446]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1447]={version:"8.4.10",date:"2026-03-23",changes:"\"Початкова історія\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+vanilla.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_vite+vanilla.md",relativeUrl:"/uk/doc/environment/vite-and-vanilla",url:"https://intlayer.org/uk/doc/environment/vite-and-vanilla"},frameworks:$R[1448]=["vanilla","vite"],subSections:$R[1449]={"vanilla-js":$R[1450]={title:"Vanilla JS (без бандлера)",default:$R[1451]={createdAt:"2026-03-31",updatedAt:"2026-05-31",title:"Vanilla JS i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Vanilla JS. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1452]=["Інтернаціоналізація","Документація","Intlayer","Vanilla JS","JavaScript","TypeScript","HTML"],slugs:$R[1453]=["doc","environment","vanilla"],applicationTemplate:"https://github.com/aymericzip/intlayer-vanilla-template",applicationShowcase:"https://intlayer-vanilla-template.vercel.app",history:$R[1454]=[$R[1455]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1456]={version:"8.4.10",date:"2026-03-31",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vanilla.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_vanilla.md",relativeUrl:"/uk/doc/environment/vanilla",url:"https://intlayer.org/uk/doc/environment/vanilla"},frameworks:$R[1457]=["vanilla"]}}},"vite-and-lit":$R[1458]={title:"Vite та Lit",default:$R[1459]={createdAt:"2026-03-23",updatedAt:"2026-05-31",title:"Vite + Lit i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Vite + Lit. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1460]=["Інтернаціоналізація","Документація","Intlayer","Vite","Lit","Веб-компоненти","JavaScript"],slugs:$R[1461]=["doc","environment","vite-and-lit"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-lit-template",applicationShowcase:"https://intlayer-vite-lit-template.vercel.app",history:$R[1462]=[$R[1463]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1464]={version:"8.4.10",date:"2026-03-23",changes:"\"Початкова історія\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+lit.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_vite+lit.md",relativeUrl:"/uk/doc/environment/vite-and-lit",url:"https://intlayer.org/uk/doc/environment/vite-and-lit"},frameworks:$R[1465]=["lit","vite"]},angular:$R[1466]={title:"Angular 21",default:$R[1467]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Angular 21 i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Angular 21. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1468]=["Інтернаціоналізація","Документація","Intlayer","Angular","JavaScript"],slugs:$R[1469]=["doc","environment","angular"],applicationTemplate:"https://github.com/aymericzip/intlayer-angular-21-template",applicationShowcase:"https://intlayer-angular-21-template.vercel.app/",history:$R[1470]=[$R[1471]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлено використання API Solid useIntlayer для прямого доступу до властивостей\""},$R[1472]={version:"8.0.0",date:"2026-01-26",changes:"\"Реліз стабільної версії\""},$R[1473]={version:"8.0.0",date:"2025-12-30",changes:"\"Додана команда init\""},$R[1474]={version:"5.5.10",date:"2025-06-29",changes:"\"Початкова історія\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_angular_21.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_angular_21.md",relativeUrl:"/uk/doc/environment/angular",url:"https://intlayer.org/uk/doc/environment/angular"},subSections:$R[1475]={19:$R[1476]={title:"Angular 19 (Webpack)",default:$R[1477]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Angular 19 i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Angular 19. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1478]=["Інтернаціоналізація","Документація","Intlayer","Angular","JavaScript"],slugs:$R[1479]=["doc","environment","angular","19"],applicationTemplate:"https://github.com/aymericzip/intlayer-angular-19-template",applicationShowcase:"https://intlayer-angular-19-template.vercel.app",history:$R[1480]=[$R[1481]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1482]={version:"8.0.0",date:"2025-12-30",changes:"\"Додати команду init\""},$R[1483]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_angular_19.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_angular_19.md",relativeUrl:"/uk/doc/environment/angular/19",url:"https://intlayer.org/uk/doc/environment/angular/19"},frameworks:$R[1484]=["angular","webpack"]},analog:$R[1485]={title:"Analog",default:$R[1486]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Analog i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Analog. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1487]=["Інтернаціоналізація","Документація","Intlayer","Analog","Angular","JavaScript"],slugs:$R[1488]=["doc","environment","analog"],applicationTemplate:"https://github.com/aymericzip/intlayer-analog-template",applicationShowcase:"https://intlayer-analog-template.vercel.app",history:$R[1489]=[$R[1490]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1491]={version:"8.0.4",date:"2026-01-26",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_analog.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_analog.md",relativeUrl:"/uk/doc/environment/analog",url:"https://intlayer.org/uk/doc/environment/analog"},frameworks:$R[1492]=["angular","vite"]}},frameworks:$R[1493]=["angular","vite"]},"create-react-app":$R[1494]={title:"React CRA",default:$R[1495]={createdAt:"2025-08-23",updatedAt:"2026-05-31",title:"Create React App i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Create React App. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1496]=["Інтернаціоналізація","Документація","Intlayer","Create React App","CRA","JavaScript","React"],slugs:$R[1497]=["doc","environment","create-react-app"],applicationTemplate:"https://github.com/aymericzip/intlayer-react-cra-template",history:$R[1498]=[$R[1499]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1500]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1501]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізовано історію\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_create_react_app.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_create_react_app.md",relativeUrl:"/uk/doc/environment/create-react-app",url:"https://intlayer.org/uk/doc/environment/create-react-app"},frameworks:$R[1502]=["react","vite"]},"react-native-and-expo":$R[1503]={title:"React Native та Expo",default:$R[1504]={createdAt:"2025-06-18",updatedAt:"2026-05-31",title:"Expo + React Native i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Expo + React Native. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1505]=["Інтернаціоналізація","Документація","Intlayer","React Native","Expo","JavaScript"],slugs:$R[1506]=["doc","environment","react-native-and-expo"],applicationTemplate:"https://github.com/aymericzip/intlayer-react-native-template",applicationShowcase:"https://intlayer-react-native.vercel.app",history:$R[1507]=[$R[1508]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1509]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1510]={version:"6.1.6",date:"2025-10-02",changes:"\"Додано розділ debug\""},$R[1511]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_react_native+expo.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_react_native+expo.md",relativeUrl:"/uk/doc/environment/react-native-and-expo",url:"https://intlayer.org/uk/doc/environment/react-native-and-expo"},frameworks:$R[1512]=["react","react-native","expo"]},node:$R[1513]={title:"Node & Backend",subSections:$R[1514]={express:$R[1515]={title:"Express.js",default:$R[1516]={createdAt:"2025-08-23",updatedAt:"2026-05-31",title:"Express i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Express. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1517]=["Інтернаціоналізація","Документація","Intlayer","Express","JavaScript","Бекенд"],slugs:$R[1518]=["doc","environment","express"],applicationTemplate:"https://github.com/aymericzip/intlayer-express-template",history:$R[1519]=[$R[1520]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1521]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1522]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_express.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_express.md",relativeUrl:"/uk/doc/environment/express",url:"https://intlayer.org/uk/doc/environment/express"},frameworks:$R[1523]=["express","node"]},nest:$R[1524]={title:"NestJS",default:$R[1525]={createdAt:"2025-09-09",updatedAt:"2026-05-31",title:"NestJS i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку NestJS. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1526]=["Інтернаціоналізація","Документація","Intlayer","NestJS","JavaScript","Бекенд"],slugs:$R[1527]=["doc","environment","nest"],applicationTemplate:"https://github.com/AydinTheFirst/nestjs-intlayer",history:$R[1528]=[$R[1529]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1530]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1531]={version:"5.8.0",date:"2025-09-09",changes:"\"Початкова документація\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_nestjs.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_nestjs.md",relativeUrl:"/uk/doc/environment/nest",url:"https://intlayer.org/uk/doc/environment/nest"},frameworks:$R[1532]=["nest","node"]},fastify:$R[1533]={title:"Fastify",default:$R[1534]={createdAt:"2025-12-30",updatedAt:"2026-05-31",title:"Fastify i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Fastify. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1535]=["Інтернаціоналізація","Документація","Intlayer","Fastify","JavaScript","Бекенд"],slugs:$R[1536]=["doc","environment","fastify"],applicationTemplate:"https://github.com/aymericzip/intlayer-fastify-template",history:$R[1537]=[$R[1538]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1539]={version:"7.6.0",date:"2025-12-31",changes:"\"Додано команду init\""},$R[1540]={version:"7.6.0",date:"2025-12-31",changes:"\"Ініціалізовано історію\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_fastify.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_fastify.md",relativeUrl:"/uk/doc/environment/fastify",url:"https://intlayer.org/uk/doc/environment/fastify"},frameworks:$R[1541]=["fastify","node"]},hono:$R[1542]={title:"Hono",default:$R[1543]={createdAt:"2025-08-23",updatedAt:"2026-05-31",title:"Hono i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Hono. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1544]=["інтернаціоналізація","документація","Intlayer","Hono","JavaScript","бекенд"],slugs:$R[1545]=["doc","environment","hono"],applicationTemplate:"https://github.com/aymericzip/intlayer-hono-template",history:$R[1546]=[$R[1547]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1548]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1549]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_hono.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_hono.md",relativeUrl:"/uk/doc/environment/hono",url:"https://intlayer.org/uk/doc/environment/hono"},frameworks:$R[1550]=["hono","node"]},adonis:$R[1551]={title:"Adonis",default:$R[1552]={createdAt:"2025-08-23",updatedAt:"2026-05-31",title:"AdonisJS i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку AdonisJS. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1553]=["Інтернаціоналізація","Документація","Intlayer","AdonisJS","JavaScript","Бекенд"],slugs:$R[1554]=["doc","environment","adonisjs"],applicationTemplate:"https://github.com/aymericzip/intlayer-adonis-template",history:$R[1555]=[$R[1556]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1557]={version:"8.0.0",date:"2025-12-30",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_adonisjs.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_adonisjs.md",relativeUrl:"/uk/doc/environment/adonisjs",url:"https://intlayer.org/uk/doc/environment/adonisjs"},frameworks:$R[1558]=["adonis","node"]}}},other:$R[1559]={title:"Інше",subSections:$R[1560]={"lynx-and-react":$R[1561]={title:"Lynx та React",default:$R[1562]={createdAt:"2025-03-09",updatedAt:"2026-05-31",title:"Lynx + React i18n - Повний посібник з перекладу вашого застосунку",description:"Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Lynx + React. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність.",keywords:$R[1563]=["Інтернаціоналізація","Документація","Intlayer","Vite","React","Lynx","JavaScript"],slugs:$R[1564]=["doc","environment","lynx-and-react"],applicationTemplate:"https://github.com/aymericzip/intlayer-lynx-template",history:$R[1565]=[$R[1566]={version:"8.9.0",date:"2026-05-04",changes:"\"Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей\""},$R[1567]={version:"7.5.9",date:"2025-12-30",changes:"\"Додано команду init\""},$R[1568]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_lynx+react.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_lynx+react.md",relativeUrl:"/uk/doc/environment/lynx-and-react",url:"https://intlayer.org/uk/doc/environment/lynx-and-react"},frameworks:$R[1569]=["lynx","react"]}}}}},plugins:$R[1570]={title:"Plugins",subSections:$R[1571]={syncJSON:$R[1572]={title:"JSON",default:$R[1573]={createdAt:"2025-03-13",updatedAt:"2025-12-13",title:"Плагін Sync JSON",description:"Синхронізуйте словники Intlayer із зовнішніми i18n JSON-файлами (i18next, next-intl, react-intl, vue-i18n та ін.). Залишайте ваш існуючий i18n-стек і використовуйте Intlayer для керування, перекладу та тестування повідомлень.",keywords:$R[1574]=["Intlayer","Sync JSON","i18next","next-intl","react-intl","vue-i18n","next-translate","nuxt-i18n","LinguiJS","Polyglot.js","Solid-i18next","svelte-i18n","i18n","переклади"],slugs:$R[1575]=["doc","plugin","sync-json"],youtubeVideo:"https://www.youtube.com/watch?v=MpGMxniDHNg",history:$R[1576]=[$R[1577]={version:"7.5.0",date:"2025-12-13",changes:"\"Додано підтримку форматів ICU та i18next\""},$R[1578]={version:"6.1.6",date:"2025-10-05",changes:"\"Початкова документація плагіна Sync JSON\""}],author:"aymericzip",docKey:"./docs/en/plugins/sync-json.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/plugins/sync-json.md",relativeUrl:"/uk/doc/plugin/sync-json",url:"https://intlayer.org/uk/doc/plugin/sync-json"}},syncPO:$R[1579]={title:"gettext (.po)",default:$R[1580]={createdAt:"2026-05-10",updatedAt:"2026-05-10",title:"Плагін Sync PO",description:"Синхронізуйте словники Intlayer з файлами Gettext PO. Зберігайте існуючу i18n, використовуючи Intlayer для керування, перекладу та тестування ваших повідомлень.",keywords:$R[1581]=["Intlayer","Sync PO","Gettext","i18n","переклади"],slugs:$R[1582]=["doc","plugin","sync-po"],youtubeVideo:"https://www.youtube.com/watch?v=MpGMxniDHNg",history:$R[1583]=[$R[1584]={version:"8.9.4",date:"2026-05-10",changes:"\"Початкова документація плагіна Sync PO\""}],author:"aymericzip",docKey:"./docs/en/plugins/sync-po.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/plugins/sync-po.md",relativeUrl:"/uk/doc/plugin/sync-po",url:"https://intlayer.org/uk/doc/plugin/sync-po"}}}},"dev-tools":$R[1585]={title:"Інструменти розробника",subSections:$R[1586]={"vs-code-extension":$R[1587]={title:"Розширення VS Code",default:$R[1588]={createdAt:"2025-03-17",updatedAt:"2025-09-30",title:"Офіційне розширення VS Code",description:"Дізнайтеся, як використовувати розширення Intlayer у VS Code для покращення робочого процесу розробки. Швидко переходьте між локалізованим контентом і ефективно керуйте своїми словниками.",keywords:$R[1589]=["Розширення VS Code","Intlayer","Локалізація","Інструменти розробки","React","Next.js","JavaScript","TypeScript"],slugs:$R[1590]=["doc","vs-code-extension"],history:$R[1591]=[$R[1592]={version:"7.3.0",date:"2025-11-25",changes:"\"Додано команду Extract Content\""},$R[1593]={version:"6.1.5",date:"2025-09-30",changes:"\"Додано демонстраційний GIF\""},$R[1594]={version:"6.1.0",date:"2025-09-24",changes:"\"Додано розділ вибору середовища\""},$R[1595]={version:"6.0.0",date:"2025-09-22",changes:"\"Вкладка Intlayer / команди Fill & Test\""},$R[1596]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізація історії\""}],author:"aymericzip",docKey:"./docs/en/vs_code_extension.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/vs_code_extension.md",relativeUrl:"/uk/doc/vs-code-extension",url:"https://intlayer.org/uk/doc/vs-code-extension"}},"mcp-server":$R[1597]={title:"Сервер MCP",default:$R[1598]={createdAt:"2025-06-07",updatedAt:"2026-03-03",title:"Документація MCP Server",description:"Дослідіть функції та налаштування MCP Server, щоб оптимізувати управління сервером і операції.",keywords:$R[1599]=["MCP Server","Управління сервером","Оптимізація","Intlayer","Документація","Налаштування","Функції"],slugs:$R[1600]=["doc","mcp-server"],history:$R[1601]=[$R[1602]={version:"5.5.12",date:"2025-07-11",changes:"\"Додано налаштування ChatGPT\""},$R[1603]={version:"5.5.12",date:"2025-07-10",changes:"\"Додано налаштування Claude Desktop\""},$R[1604]={version:"5.5.12",date:"2025-07-10",changes:"\"Додано SSE-транспорт і віддалений сервер\""},$R[1605]={version:"5.5.10",date:"2025-06-29",changes:"\"Ініціалізовано історію\""}],author:"aymericzip",docKey:"./docs/en/mcp_server.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/mcp_server.md",relativeUrl:"/uk/doc/mcp-server",url:"https://intlayer.org/uk/doc/mcp-server"}},"agent-skills":$R[1606]={title:"Навички агента",default:$R[1607]={createdAt:"2026-02-09",updatedAt:"2026-03-03",title:"Навички агента",description:"Дізнайтеся, як використовувати Intlayer Agent Skills, щоб покращити розуміння вашого проєкту вашим AI-агентом, включаючи вичерпні посібники з налаштування метаданих, карт сайту та серверних дій.",keywords:$R[1608]=["Intlayer","Agent Skills","AI-агент","Інтернаціоналізація","Документація"],slugs:$R[1609]=["doc","agent_skills"],history:$R[1610]=[$R[1611]={version:"8.1.0",date:"2026-02-09",changes:"\"Ініціалізація\""}],author:"aymericzip",docKey:"./docs/en/agent_skills.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/agent_skills.md",relativeUrl:"/uk/doc/agent_skills",url:"https://intlayer.org/uk/doc/agent_skills"}},lsp:$R[1612]={title:"Language Server Protocol",default:$R[1613]={createdAt:"2025-06-07",updatedAt:"2026-05-31",title:"LSP-сервер Intlayer",description:"Дізнайтеся, як мовний сервер Intlayer надає функцію «Перейти до визначення» та інші можливості IDE для useIntlayer, getIntlayer та пов'язаних викликів у всіх підтримуваних редакторах.",keywords:$R[1614]=["LSP","Мовний сервер","Перейти до визначення","IDE","Intlayer","VS Code","Neovim","TypeScript"],slugs:$R[1615]=["doc","lsp"],history:$R[1616]=[$R[1617]={version:"8.12.0",date:"2026-06-01",changes:"\"Release LSP\""}],author:"aymericzip",docKey:"./docs/en/lsp.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/lsp.md",relativeUrl:"/uk/doc/lsp",url:"https://intlayer.org/uk/doc/lsp"}}}},releases:$R[1618]={title:"Релізи",subSections:$R[1619]={v9:$R[1620]={title:"v9",default:$R[1621]={createdAt:"2026-06-14",updatedAt:"2026-06-14",title:"Новий Intlayer v9 - Що нового?",description:"Дізнайтеся, що нового в Intlayer v9. Представляємо сумісні пакети швидкої заміни (drop-in) для популярних бібліотек i18n та підтримку Collections, Variants та Dynamic Records.",keywords:$R[1622]=["Intlayer","Сумісність","Міграція","Колекції","Варіанти","Динамічні записи","i18next","next-intl","vue-i18n"],slugs:$R[1623]=["doc","releases","v9"],author:"aymericzip",docKey:"./docs/en/releases/v9.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/releases/v9.md",relativeUrl:"/uk/doc/releases/v9",url:"https://intlayer.org/uk/doc/releases/v9"}},v8:$R[1624]={title:"v8",default:$R[1625]={createdAt:"2025-09-22",updatedAt:"2026-06-14",title:"Новий Intlayer v8 - Що нового?",description:"Дізнайтеся, що нового в Intlayer v8. Значні покращення досвіду розробника, валідації контенту та управління словниками.",keywords:$R[1626]=["Intlayer","CMS","Developer Experience","Features","React","Next.js","JavaScript","TypeScript"],youtubeVideo:"https://www.youtube.com/watch?v=ia6JmVf-kkU",slugs:$R[1627]=["doc","releases","v8"],author:"aymericzip",docKey:"./docs/en/releases/v8.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/releases/v8.md",relativeUrl:"/uk/doc/релізи/v8",url:"https://intlayer.org/uk/doc/релізи/v8"}},v7:$R[1628]={title:"v7",default:$R[1629]={createdAt:"2025-09-22",updatedAt:"2025-09-23",title:"Що нового в Intlayer v7?",description:"Дізнайтесь, що нового в Intlayer v7. Значні покращення продуктивності, developer experience та нові функції для покращення вашого internationalization workflow.",keywords:$R[1630]=["Intlayer","Локалізація","Розробка","Продуктивність","Досвід розробника","Функції","React","Next.js","JavaScript","TypeScript"],slugs:$R[1631]=["doc","releases","v7"],author:"aymericzip",docKey:"./docs/en/releases/v7.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/releases/v7.md",relativeUrl:"/uk/doc/releases/v7",url:"https://intlayer.org/uk/doc/releases/v7"}},v6:$R[1632]={title:"v6",default:$R[1633]={createdAt:"2025-09-22",updatedAt:"2025-09-23",title:"Новий Intlayer v6. Що нового?",description:"Дізнайтеся про новинки Intlayer v6. Значні покращення продуктивності, developer experience та нові функції для вдосконалення вашого робочого процесу інтернаціоналізації.",keywords:$R[1634]=["Intlayer","Локалізація","Розробка","Продуктивність","Developer Experience","Функції","React","Next.js","JavaScript","TypeScript"],slugs:$R[1635]=["doc","releases","v6"],author:"aymericzip",docKey:"./docs/en/releases/v6.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/releases/v6.md",relativeUrl:"/uk/doc/releases/v6",url:"https://intlayer.org/uk/doc/releases/v6"}}}},benchmark:$R[1636]={title:"Бенчмарк",default:$R[1637]={createdAt:"2026-04-20",updatedAt:"2026-04-20",title:"Порівняння (Benchmark) бібліотек i18n",description:"Дізнайтеся, як Intlayer порівнюється з іншими бібліотеками i18n за продуктивністю та розміром бандла.",keywords:$R[1638]=["benchmark","i18n","intl","nextjs","tanstack","intlayer"],slugs:$R[1639]=["doc","benchmark"],history:$R[1640]=[$R[1641]={version:"8.7.5",date:"2026-01-06",changes:"\"Ініціалізація бенчмарку\""}],author:"aymericzip",docKey:"./docs/en/benchmark/index.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/benchmark/index.md",relativeUrl:"/uk/doc/benchmark",url:"https://intlayer.org/uk/doc/benchmark"},subSections:$R[1642]={nextjs:$R[1643]={title:"Next.js",default:$R[1644]={createdAt:"2026-04-20",updatedAt:"2026-05-18",title:"Найкраще i18n рішення для Next.js у 2026 році - Звіт бенчмарку",description:"Порівняйте бібліотеки інтернаціоналізації (i18n) для Next.js, такі як next-intl, next-i18next та Intlayer. Детальний звіт про продуктивність за розміром бандла, витоком та реактивністю.",keywords:$R[1645]=["benchmark","i18n","intl","nextjs","продуктивність","intlayer"],slugs:$R[1646]=["doc","benchmark","nextjs"],author:"aymericzip",applicationTemplate:"https://github.com/intlayer-org/benchmark-i18n",history:$R[1647]=[$R[1648]={version:"8.9.8",date:"2026-05-18",changes:"\"Додати порівняння зірок GitHub\""},$R[1649]={version:"8.7.5",date:"2026-01-06",changes:"\"Ініціалізація бенчмарку\""}],docKey:"./docs/en/benchmark/nextjs.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/benchmark/nextjs.md",relativeUrl:"/uk/doc/benchmark/nextjs",url:"https://intlayer.org/uk/doc/benchmark/nextjs"},frameworks:$R[1650]=["nextjs","react"]},tanstack:$R[1651]={title:"TanStack",default:$R[1652]={createdAt:"2026-04-20",updatedAt:"2026-05-18",title:"Найкраще i18n рішення для TanStack Start у 2026 році - Звіт бенчмарку",description:"Порівняйте бібліотеки інтернаціоналізації для TanStack Start, такі як react-i18next, use-intl та Intlayer. Детальний звіт про продуктивність за розміром бандла, витоком та реактивністю.",keywords:$R[1653]=["benchmark","i18n","intl","tanstack","продуктивність","intlayer"],slugs:$R[1654]=["doc","benchmark","tanstack"],author:"aymericzip",applicationTemplate:"https://github.com/intlayer-org/benchmark-i18n-tanstack-start-template",history:$R[1655]=[$R[1656]={version:"8.9.8",date:"2026-05-18",changes:"\"Додати порівняння зірок GitHub\""},$R[1657]={version:"8.7.5",date:"2026-01-06",changes:"\"Ініціалізація бенчмарку\""}],docKey:"./docs/en/benchmark/tanstack.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/benchmark/tanstack.md",relativeUrl:"/uk/doc/benchmark/tanstack",url:"https://intlayer.org/uk/doc/benchmark/tanstack"},frameworks:$R[1658]=["tanstack","react"]},vue:$R[1659]={title:"Vue",default:$R[1660]={createdAt:"2026-04-20",updatedAt:"2026-05-18",title:"Найкраще i18n рішення для Vue у 2026 році - Звіт про бенчмарк",description:"Порівняйте бібліотеки інтернаціоналізації (i18n) для Vue, такі як vue-i18n, fluent-vue та Intlayer. Детальний звіт про продуктивність щодо розміру бандла, витоків та реактивності.",keywords:$R[1661]=["benchmark","i18n","intl","vue","продуктивність","intlayer"],slugs:$R[1662]=["doc","benchmark","vue"],author:"aymericzip",applicationTemplate:"https://github.com/intlayer-org/benchmark-i18n-vue-template",history:$R[1663]=[$R[1664]={version:"8.9.8",date:"2026-05-18",changes:"\"Додати порівняння зірок GitHub\""},$R[1665]={version:"8.7.12",date:"2026-01-06",changes:"\"Ініціалізація бенчмарку\""}],docKey:"./docs/en/benchmark/vue.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/benchmark/vue.md",relativeUrl:"/uk/doc/benchmark/vue",url:"https://intlayer.org/uk/doc/benchmark/vue"},frameworks:$R[1666]=["vue"]},solid:$R[1667]={title:"Solid",default:$R[1668]={createdAt:"2026-04-20",updatedAt:"2026-05-18",title:"Найкраще i18n рішення для Solid у 2026 році - Звіт про бенчмарк",description:"Порівняйте бібліотеки інтернаціоналізації (i18n) для Solid, такі як solid-primitives, solid-i18next та Intlayer. Детальний звіт про продуктивність щодо розміру бандла, витоків та реактивності.",keywords:$R[1669]=["benchmark","i18n","intl","solid","продуктивність","intlayer"],slugs:$R[1670]=["doc","benchmark","solid"],author:"aymericzip",applicationTemplate:"https://github.com/intlayer-org/benchmark-i18n-solid-template",history:$R[1671]=[$R[1672]={version:"8.9.8",date:"2026-05-18",changes:"\"Додати порівняння зірок GitHub\""},$R[1673]={version:"8.7.12",date:"2026-01-06",changes:"\"Ініціалізація бенчмарку\""}],docKey:"./docs/en/benchmark/solid.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/benchmark/solid.md",relativeUrl:"/uk/doc/benchmark/solid",url:"https://intlayer.org/uk/doc/benchmark/solid"},frameworks:$R[1674]=["solid"]},svelte:$R[1675]={title:"Svelte",default:$R[1676]={createdAt:"2026-04-20",updatedAt:"2026-05-18",title:"Найкраще i18n рішення для Svelte у 2026 році - Звіт про бенчмарк",description:"Порівняйте бібліотеки інтернаціоналізації (i18n) для Svelte, такі як svelte-i18n, Paraglide та Intlayer. Детальний звіт про продуктивність щодо розміру бандла, витоків та реактивності.",keywords:$R[1677]=["benchmark","i18n","intl","svelte","продуктивність","intlayer"],slugs:$R[1678]=["doc","benchmark","svelte"],author:"aymericzip",applicationTemplate:"https://github.com/intlayer-org/benchmark-i18n-svelte-template",history:$R[1679]=[$R[1680]={version:"8.9.8",date:"2026-05-18",changes:"\"Додати порівняння зірок GitHub\""},$R[1681]={version:"8.7.12",date:"2026-01-06",changes:"\"Ініціалізація бенчмарку\""}],docKey:"./docs/en/benchmark/svelte.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/benchmark/svelte.md",relativeUrl:"/uk/doc/benchmark/svelte",url:"https://intlayer.org/uk/doc/benchmark/svelte"},frameworks:$R[1682]=["svelte"]}}}}},ssr:!0}],lastMatchId:"�{-$locale}�_docs�doc�$�uk�doc�environment�vite-and-svelte"})($R["tsr"]);$_TSR.e();document.currentScript.remove()</script><script type="module" async="" src="/assets/index-Bw9yQaJj.js"></script></body></html>