@intlayer/docs 9.2.0 → 9.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -24
- package/blog/ar/index.md +1 -1
- package/blog/ar/rag_powered_documentation_assistant.md +1 -1
- package/blog/de/index.md +1 -1
- package/blog/en/index.md +1 -1
- package/blog/en-GB/index.md +1 -1
- package/blog/es/index.md +1 -1
- package/blog/fr/index.md +1 -1
- package/blog/hi/index.md +1 -1
- package/blog/id/index.md +1 -1
- package/blog/it/index.md +1 -1
- package/blog/ja/index.md +1 -1
- package/blog/ko/index.md +1 -1
- package/blog/pl/index.md +1 -1
- package/blog/pl/rag_powered_documentation_assistant.md +1 -1
- package/blog/pt/index.md +1 -1
- package/blog/ru/index.md +1 -1
- package/blog/uk/index.md +1 -1
- package/blog/vi/index.md +1 -1
- package/blog/zh/index.md +1 -1
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -2
- package/dist/cjs/authors2.cjs +0 -1
- package/dist/cjs/common.cjs +24 -1
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +35 -6
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +35 -6
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +35 -6
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +35 -6
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/common.mjs +24 -1
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +35 -6
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +35 -6
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +35 -6
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +35 -6
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
- package/dist/types/generated/legal.entry.d.ts.map +1 -1
- package/docs/ar/bundle_optimization.md +58 -25
- package/docs/ar/configuration.md +10 -10
- package/docs/ar/interest_of_intlayer.md +24 -22
- package/docs/ar/intlayer_with_express.md +1 -1
- package/docs/ar/intlayer_with_svelte_kit.md +1 -1
- package/docs/ar/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ar/intlayer_with_tanstack.md +5 -3
- package/docs/ar/live-sync.md +4 -0
- package/docs/ar/lsp.md +114 -175
- package/docs/ar/readme.md +25 -25
- package/docs/bn/bundle_optimization.md +58 -25
- package/docs/bn/configuration.md +10 -10
- package/docs/bn/interest_of_intlayer.md +24 -22
- package/docs/cs/bundle_optimization.md +58 -25
- package/docs/cs/configuration.md +10 -10
- package/docs/cs/interest_of_intlayer.md +24 -22
- package/docs/de/bundle_optimization.md +58 -25
- package/docs/de/configuration.md +10 -10
- package/docs/de/interest_of_intlayer.md +24 -22
- package/docs/de/intlayer_with_svelte_kit.md +1 -1
- package/docs/de/intlayer_with_tanstack+solid.md +5 -3
- package/docs/de/intlayer_with_tanstack.md +5 -3
- package/docs/de/live-sync.md +4 -0
- package/docs/de/lsp.md +111 -172
- package/docs/de/readme.md +24 -24
- package/docs/en/bundle_optimization.md +51 -23
- package/docs/en/configuration.md +10 -10
- package/docs/en/interest_of_intlayer.md +24 -22
- package/docs/en/intlayer_with_svelte_kit.md +1 -1
- package/docs/en/intlayer_with_tanstack+solid.md +5 -3
- package/docs/en/intlayer_with_tanstack.md +5 -3
- package/docs/en/live-sync.md +4 -0
- package/docs/en/lsp.md +109 -170
- package/docs/en/readme.md +24 -24
- package/docs/en-GB/bundle_optimization.md +58 -25
- package/docs/en-GB/configuration.md +10 -10
- package/docs/en-GB/interest_of_intlayer.md +24 -22
- package/docs/en-GB/intlayer_with_svelte_kit.md +1 -1
- package/docs/en-GB/intlayer_with_tanstack+solid.md +5 -3
- package/docs/en-GB/intlayer_with_tanstack.md +5 -3
- package/docs/en-GB/live-sync.md +4 -0
- package/docs/en-GB/lsp.md +109 -170
- package/docs/en-GB/readme.md +24 -24
- package/docs/es/bundle_optimization.md +58 -25
- package/docs/es/configuration.md +10 -10
- package/docs/es/interest_of_intlayer.md +24 -22
- package/docs/es/intlayer_with_svelte_kit.md +1 -1
- package/docs/es/intlayer_with_tanstack+solid.md +5 -3
- package/docs/es/intlayer_with_tanstack.md +5 -3
- package/docs/es/live-sync.md +4 -0
- package/docs/es/lsp.md +114 -175
- package/docs/es/readme.md +24 -24
- package/docs/fr/bundle_optimization.md +58 -25
- package/docs/fr/configuration.md +10 -10
- package/docs/fr/interest_of_intlayer.md +24 -22
- package/docs/fr/intlayer_with_svelte_kit.md +1 -1
- package/docs/fr/intlayer_with_tanstack+solid.md +5 -3
- package/docs/fr/intlayer_with_tanstack.md +5 -3
- package/docs/fr/live-sync.md +4 -0
- package/docs/fr/lsp.md +110 -171
- package/docs/fr/readme.md +24 -24
- package/docs/hi/bundle_optimization.md +58 -25
- package/docs/hi/configuration.md +10 -10
- package/docs/hi/interest_of_intlayer.md +24 -22
- package/docs/hi/intlayer_with_express.md +1 -1
- package/docs/hi/intlayer_with_svelte_kit.md +1 -1
- package/docs/hi/intlayer_with_tanstack+solid.md +5 -3
- package/docs/hi/intlayer_with_tanstack.md +5 -3
- package/docs/hi/live-sync.md +4 -0
- package/docs/hi/lsp.md +113 -174
- package/docs/hi/readme.md +24 -24
- package/docs/id/bundle_optimization.md +58 -25
- package/docs/id/configuration.md +10 -10
- package/docs/id/interest_of_intlayer.md +24 -22
- package/docs/id/intlayer_with_svelte_kit.md +1 -1
- package/docs/id/intlayer_with_tanstack+solid.md +5 -3
- package/docs/id/intlayer_with_tanstack.md +5 -3
- package/docs/id/live-sync.md +4 -0
- package/docs/id/lsp.md +113 -174
- package/docs/id/readme.md +24 -24
- package/docs/it/bundle_optimization.md +58 -25
- package/docs/it/configuration.md +10 -10
- package/docs/it/interest_of_intlayer.md +24 -22
- package/docs/it/intlayer_with_svelte_kit.md +1 -1
- package/docs/it/intlayer_with_tanstack+solid.md +5 -3
- package/docs/it/intlayer_with_tanstack.md +5 -3
- package/docs/it/live-sync.md +4 -0
- package/docs/it/lsp.md +115 -176
- package/docs/it/readme.md +24 -24
- package/docs/ja/bundle_optimization.md +58 -25
- package/docs/ja/configuration.md +10 -10
- package/docs/ja/interest_of_intlayer.md +24 -22
- package/docs/ja/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ja/intlayer_with_tanstack.md +5 -3
- package/docs/ja/live-sync.md +4 -0
- package/docs/ja/lsp.md +113 -174
- package/docs/ja/readme.md +24 -24
- package/docs/ko/bundle_optimization.md +58 -25
- package/docs/ko/configuration.md +10 -10
- package/docs/ko/interest_of_intlayer.md +24 -22
- package/docs/ko/intlayer_with_svelte_kit.md +1 -1
- package/docs/ko/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ko/intlayer_with_tanstack.md +5 -3
- package/docs/ko/live-sync.md +4 -0
- package/docs/ko/lsp.md +112 -173
- package/docs/ko/readme.md +24 -24
- package/docs/nl/bundle_optimization.md +58 -25
- package/docs/nl/configuration.md +10 -10
- package/docs/nl/interest_of_intlayer.md +24 -22
- package/docs/pl/bundle_optimization.md +58 -25
- package/docs/pl/configuration.md +10 -10
- package/docs/pl/interest_of_intlayer.md +4 -2
- package/docs/pl/intlayer_with_svelte_kit.md +1 -1
- package/docs/pl/intlayer_with_tanstack+solid.md +5 -3
- package/docs/pl/intlayer_with_tanstack.md +5 -3
- package/docs/pl/live-sync.md +4 -0
- package/docs/pl/lsp.md +115 -176
- package/docs/pl/readme.md +24 -24
- package/docs/pt/bundle_optimization.md +58 -24
- package/docs/pt/configuration.md +10 -10
- package/docs/pt/interest_of_intlayer.md +24 -22
- package/docs/pt/intlayer_with_svelte_kit.md +1 -1
- package/docs/pt/intlayer_with_tanstack+solid.md +5 -3
- package/docs/pt/intlayer_with_tanstack.md +5 -3
- package/docs/pt/live-sync.md +4 -0
- package/docs/pt/lsp.md +113 -174
- package/docs/pt/readme.md +24 -24
- package/docs/ru/bundle_optimization.md +58 -25
- package/docs/ru/configuration.md +10 -10
- package/docs/ru/interest_of_intlayer.md +24 -22
- package/docs/ru/intlayer_with_nextjs_14.md +1 -1
- package/docs/ru/intlayer_with_nextjs_15.md +1 -1
- package/docs/ru/intlayer_with_svelte_kit.md +1 -1
- package/docs/ru/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ru/intlayer_with_tanstack.md +5 -3
- package/docs/ru/live-sync.md +4 -0
- package/docs/ru/lsp.md +112 -173
- package/docs/ru/readme.md +24 -24
- package/docs/tr/bundle_optimization.md +58 -25
- package/docs/tr/configuration.md +10 -10
- package/docs/tr/interest_of_intlayer.md +24 -22
- package/docs/tr/intlayer_with_svelte_kit.md +1 -1
- package/docs/tr/intlayer_with_tanstack+solid.md +5 -3
- package/docs/tr/intlayer_with_tanstack.md +5 -3
- package/docs/tr/live-sync.md +4 -0
- package/docs/tr/lsp.md +113 -174
- package/docs/tr/readme.md +24 -24
- package/docs/uk/bundle_optimization.md +58 -25
- package/docs/uk/configuration.md +10 -10
- package/docs/uk/interest_of_intlayer.md +4 -2
- package/docs/uk/intlayer_with_svelte_kit.md +1 -1
- package/docs/uk/intlayer_with_tanstack+solid.md +5 -3
- package/docs/uk/intlayer_with_tanstack.md +5 -3
- package/docs/uk/live-sync.md +4 -0
- package/docs/uk/lsp.md +113 -174
- package/docs/uk/per_locale_file.md +1 -1
- package/docs/uk/readme.md +24 -24
- package/docs/ur/bundle_optimization.md +58 -25
- package/docs/ur/configuration.md +10 -10
- package/docs/ur/interest_of_intlayer.md +24 -22
- package/docs/vi/bundle_optimization.md +58 -25
- package/docs/vi/configuration.md +10 -10
- package/docs/vi/interest_of_intlayer.md +24 -22
- package/docs/vi/intlayer_with_svelte_kit.md +1 -1
- package/docs/vi/intlayer_with_tanstack+solid.md +5 -3
- package/docs/vi/intlayer_with_tanstack.md +5 -3
- package/docs/vi/live-sync.md +4 -0
- package/docs/vi/lsp.md +115 -176
- package/docs/vi/readme.md +24 -24
- package/docs/zh/bundle_optimization.md +58 -25
- package/docs/zh/configuration.md +10 -10
- package/docs/zh/interest_of_intlayer.md +24 -22
- package/docs/zh/intlayer_with_svelte_kit.md +1 -1
- package/docs/zh/intlayer_with_tanstack+solid.md +5 -3
- package/docs/zh/intlayer_with_tanstack.md +5 -3
- package/docs/zh/live-sync.md +4 -0
- package/docs/zh/lsp.md +113 -174
- package/docs/zh/readme.md +21 -21
- package/docs/zh-TW/bundle_optimization.md +58 -25
- package/docs/zh-TW/interest_of_intlayer.md +24 -22
- package/package.json +7 -7
- package/src/common.ts +39 -2
- package/src/generated/blog.entry.ts +39 -7
- package/src/generated/docs.entry.ts +39 -7
- package/src/generated/frequentQuestions.entry.ts +39 -7
- package/src/generated/legal.entry.ts +39 -7
package/docs/uk/lsp.md
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-06-07
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-08-10
|
|
4
4
|
title: LSP-сервер Intlayer
|
|
5
|
-
description: Дізнайтеся, як мовний сервер Intlayer
|
|
5
|
+
description: Дізнайтеся, як мовний сервер Intlayer додає перехід до визначення, пошук посилань, спливаючі підказки, автодоповнення ключів і діагностику до вашої IDE та вашого ШІ-агента.
|
|
6
6
|
keywords:
|
|
7
7
|
- LSP
|
|
8
8
|
- Мовний сервер
|
|
9
|
-
-
|
|
9
|
+
- Go to Definition
|
|
10
|
+
- Автодоповнення
|
|
11
|
+
- Діагностика
|
|
10
12
|
- IDE
|
|
11
13
|
- Intlayer
|
|
12
14
|
- VS Code
|
|
@@ -16,6 +18,9 @@ slugs:
|
|
|
16
18
|
- doc
|
|
17
19
|
- lsp
|
|
18
20
|
history:
|
|
21
|
+
- version: 9.1.3
|
|
22
|
+
date: 2026-08-10
|
|
23
|
+
changes: "Додано пошук посилань, спливаючі підказки, автодоповнення та діагностику"
|
|
19
24
|
- version: 8.12.0
|
|
20
25
|
date: 2026-06-01
|
|
21
26
|
changes: "Release LSP"
|
|
@@ -24,48 +29,47 @@ author: aymericzip
|
|
|
24
29
|
|
|
25
30
|
# LSP-сервер Intlayer
|
|
26
31
|
|
|
27
|
-
**Мовний сервер Intlayer
|
|
32
|
+
**Мовний сервер Intlayer** — це реалізація [Language Server Protocol (LSP)](https://microsoft.github.io/language-server-protocol/), яка робить вашу IDE — і вашого ШІ-агента — обізнаними про Intlayer. Він пов’язує виклик на кшталт `useIntlayer("home")` із файлом `.content.ts`, який його оголошує, в обидва боки.
|
|
28
33
|
|
|
29
34
|
---
|
|
30
35
|
|
|
31
|
-
##
|
|
36
|
+
## Можливості
|
|
32
37
|
|
|
33
|
-
|
|
38
|
+
| Можливість | Комбінація клавіш | Що робить |
|
|
39
|
+
| ------------------------- | ------------------- | -------------------------------------------------------------------------------------------------------------- |
|
|
40
|
+
| **Перейти до визначення** | `F12` / `Cmd+Клік` | Перейти від ключа словника або використання поля до його оголошення у файлі контенту |
|
|
41
|
+
| **Знайти всі посилання** | `Shift+F12` | З файлу контенту показати всі місця виклику, що використовують цей ключ або поле |
|
|
42
|
+
| **Спливаюча підказка** | навести курсор | Переглянути поля словника або перекладене значення поля, не залишаючи файл |
|
|
43
|
+
| **Автодоповнення** | `"` `'` `` ` `` `.` | Пропонувати оголошені ключі словників усередині ґетера та поля контенту після `.` або під час деструктуризації |
|
|
44
|
+
| **Діагностика** | автоматично | Попереджати, коли ключ не оголошено в жодному файлі контенту |
|
|
34
45
|
|
|
35
|
-
|
|
46
|
+
Варто знати ще про дві особливості:
|
|
36
47
|
|
|
37
|
-
|
|
48
|
+
- **Об’єднані словники** — ключ, розділений між кількома файлами контенту, повертає по одному результату на файл, тож ви можете перейти до кожного оголошення.
|
|
49
|
+
- **Підтримка монорепозиторіїв** — сервер знаходить _найближчий_ до кожного файлу `intlayer.config.*`, тож кілька проєктів в одному робочому просторі отримують власні словники.
|
|
38
50
|
|
|
39
|
-
|
|
51
|
+
### Підтримувані виклики
|
|
40
52
|
|
|
41
|
-
|
|
53
|
+
Ключ зчитується або з позиційного рядкового аргументу, або з об’єкта опцій (`{ namespace }`, `{ id }`).
|
|
42
54
|
|
|
43
|
-
|
|
55
|
+
| Бібліотека | Виклики |
|
|
56
|
+
| --------------------------- | -------------------------------------------------------- |
|
|
57
|
+
| **Intlayer** | `useIntlayer`, `getIntlayer` |
|
|
58
|
+
| **i18next / react-i18next** | `useTranslation`, `getFixedT`, `t`, `Trans` |
|
|
59
|
+
| **next-intl / use-intl** | `useTranslations`, `getTranslations`, `createTranslator` |
|
|
60
|
+
| **react-intl** | `formatMessage`, `FormattedMessage` |
|
|
61
|
+
| **Lingui** | `useLingui`, `t`, `Trans`, `_` |
|
|
62
|
+
| **vue-i18n** | `useI18n` |
|
|
44
63
|
|
|
45
|
-
|
|
64
|
+
Це працює для кожного пакета `*-intlayer` (`next-intlayer`, `react-intlayer`, `vue-intlayer`, `svelte-intlayer`, `solid-intlayer`, `preact-intlayer`, `angular-intlayer`, `lit-intlayer`, `express-intlayer`, `hono-intlayer`, `fastify-intlayer`, `intlayer`), а також для пакетів-адаптерів сумісності, які дозволяють зберегти наявний синтаксис i18n.
|
|
46
65
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
Підтримує всі пакети `*-intlayer` (`next-intlayer`, `react-intlayer`, `vue-intlayer`, `svelte-intlayer`, `solid-intlayer`, `preact-intlayer`, `angular-intlayer`, `lit-intlayer`, `express-intlayer`, `hono-intlayer`, `fastify-intlayer`, `adonis-intlayer`, `intlayer`).
|
|
50
|
-
|
|
51
|
-
### Підтримувані виклики геттерів
|
|
52
|
-
|
|
53
|
-
Сервер виявляє наступні виклики функцій та витягує перший строковий літерал як ключ словника:
|
|
54
|
-
|
|
55
|
-
| Функція | Приклад |
|
|
56
|
-
| ------------- | ----------------------------- |
|
|
57
|
-
| `useIntlayer` | `useIntlayer("hero")` |
|
|
58
|
-
| `getIntlayer` | `getIntlayer("hero", locale)` |
|
|
59
|
-
|
|
60
|
-
Дженерики TypeScript та додаткові аргументи ігноруються — важливий лише ключ.
|
|
61
|
-
|
|
62
|
-
> `useDictionary` та `getDictionary` приймають уже імпортований об'єкт `Dictionary` як перший аргумент замість строкового ключа, тому вони не підтримують функцію «Перейти до визначення» та не відстежуються сервером.
|
|
66
|
+
> Словники читаються з результату збірки, тож виконайте `npx intlayer build` — або тримайте dev-сервер запущеним — щоб серверу було що розв’язувати.
|
|
63
67
|
|
|
64
68
|
---
|
|
65
69
|
|
|
66
70
|
## Встановлення
|
|
67
71
|
|
|
68
|
-
|
|
72
|
+
Сервер постачається як бінарний файл `intlayer-lsp` у складі `@intlayer/lsp`:
|
|
69
73
|
|
|
70
74
|
```bash packageManager="npm"
|
|
71
75
|
npm install --save-dev @intlayer/lsp
|
|
@@ -83,43 +87,43 @@ pnpm add --save-dev @intlayer/lsp
|
|
|
83
87
|
bun add --dev @intlayer/lsp
|
|
84
88
|
```
|
|
85
89
|
|
|
86
|
-
|
|
90
|
+
Встановіть його глобально (`npm install -g @intlayer/lsp`), якщо вашому редактору потрібен `intlayer-lsp` у `PATH` — це стосується плагіна Claude Code та будь-якої конфігурації нижче, що викликає бінарний файл напряму.
|
|
87
91
|
|
|
88
92
|
---
|
|
89
93
|
|
|
90
|
-
## Налаштування
|
|
94
|
+
## Налаштування
|
|
91
95
|
|
|
92
|
-
|
|
96
|
+
<Tabs defaultTab="vscode">
|
|
97
|
+
<Tab label="VS Code" value="vscode">
|
|
93
98
|
|
|
94
|
-
|
|
99
|
+
Встановіть [розширення Intlayer для VS Code](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension). Мовний сервер входить до нього починаючи з v8.12.0 і запускається автоматично — **налаштування не потрібне**.
|
|
95
100
|
|
|
96
|
-
|
|
97
|
-
npm install -g @intlayer/lsp
|
|
98
|
-
```
|
|
101
|
+
Інші можливості описано в [документації розширення VS Code](https://intlayer.org/doc/vs-code-extension).
|
|
99
102
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
```
|
|
103
|
+
</Tab>
|
|
104
|
+
<Tab label="Cursor / Windsurf" value="cursor">
|
|
103
105
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
106
|
+
[Cursor](https://www.cursor.com/) і [Windsurf](https://windsurf.com/) — форки VS Code, що використовують ту саму екосистему розширень. Встановіть [розширення Intlayer для VS Code](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension) один раз, і сервер активується автоматично — **налаштування не потрібне**.
|
|
107
|
+
|
|
108
|
+
</Tab>
|
|
109
|
+
<Tab label="Claude Code" value="claude-code">
|
|
107
110
|
|
|
108
|
-
|
|
111
|
+
Intlayer постачає **плагін для Claude Code**, розміщений у репозиторії Intlayer. Він дає Claude Code справжнє розв’язання символів для ваших ключів словників замість відкоту до `grep`.
|
|
109
112
|
|
|
110
|
-
|
|
113
|
+
Помістіть бінарний файл у `PATH`, потім зареєструйте маркетплейс і встановіть плагін:
|
|
111
114
|
|
|
112
115
|
```bash
|
|
116
|
+
npm install -g @intlayer/lsp
|
|
117
|
+
|
|
113
118
|
claude plugin marketplace add intlayer@github:aymericzip/intlayer
|
|
114
119
|
claude plugin install intlayer-lsp@intlayer
|
|
115
|
-
claude plugin enable intlayer-lsp@intlayer
|
|
116
120
|
```
|
|
117
121
|
|
|
118
|
-
|
|
122
|
+
`install` також вмикає плагін. **Перезапустіть Claude Code** — мовні сервери завантажуються під час старту, тож до перезапуску плагін не діє.
|
|
119
123
|
|
|
120
|
-
|
|
124
|
+
Після цього Claude Code запускає сервер для файлів `.ts`, `.tsx`, `.js`, `.jsx`, `.vue`, `.astro` та `.svelte` і використовує `goToDefinition`, `findReferences` та `hover` під час навігації кодом.
|
|
121
125
|
|
|
122
|
-
|
|
126
|
+
Якщо перехід до визначення досі не працює, ваша версія Claude Code може приховувати інструмент LSP за прапорцем:
|
|
123
127
|
|
|
124
128
|
```json fileName="~/.claude/settings.json"
|
|
125
129
|
{
|
|
@@ -129,61 +133,10 @@ Claude Code додасть `"intlayer-lsp@intlayer": true` до списку в
|
|
|
129
133
|
}
|
|
130
134
|
```
|
|
131
135
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## Налаштування у VS Code (через розширення — рекомендується)
|
|
137
|
-
|
|
138
|
-
Якщо у вас встановлено [розширення Intlayer для VS Code](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension), мовний сервер запускається автоматично. Ніякого додаткового налаштування не потрібно. LSP безпосередньо інтегровано в розширення VSCode, починаючи з версії 8.12.0.
|
|
139
|
-
|
|
140
|
-
> Інструкції зі встановлення та опис інших функцій див. у [документації розширення VS Code](https://intlayer.org/doc/vs-code-extension).
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
## Ручне налаштування у VS Code
|
|
145
|
-
|
|
146
|
-
Якщо ви не використовуєте розширення Intlayer, ви можете підключити мовний сервер вручну, використовуючи універсальне розширення клієнта LSP, таке як [**vscode-glspc**](https://marketplace.visualstudio.com/items?itemName=sibiraj-s.vscode-scss-formatter), або написавши власне невелике розширення. Рекомендований підхід — використовувати розширення Intlayer.
|
|
147
|
-
|
|
148
|
-
Для довідки, сервер запускається через бінарний файл `intlayer-lsp` через stdio:
|
|
149
|
-
|
|
150
|
-
```json fileName=".vscode/settings.json"
|
|
151
|
-
{
|
|
152
|
-
"intlayer.languageServer.command": "npx",
|
|
153
|
-
"intlayer.languageServer.args": ["@intlayer/lsp"]
|
|
154
|
-
}
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
Розширення Intlayer зчитує ці налаштування для запуску сервера. Якщо ви використовуєте лише розширення, ручні налаштування не потрібні.
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
## Налаштування в Cursor
|
|
162
|
-
|
|
163
|
-
[Cursor](https://www.cursor.com/) — це форк VS Code з вбудованими функціями ШІ. Він використовує ту саму екосистему розширень, тому **розширення Intlayer для VS Code** працює без додаткового налаштування — встановіть його один раз, і Cursor підхопить його автоматично.
|
|
164
|
-
|
|
165
|
-
Якщо ви віддаєте перевагу ручному налаштуванню, Cursor також зчитує файл `.vscode/settings.json` з кореня робочої області, тому наведений вище фрагмент коду для VS Code застосовується безпосередньо.
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
## Налаштування в Windsurf
|
|
170
|
-
|
|
171
|
-
[Windsurf](https://windsurf.com/) (від Codeium) — ще один редактор на базі VS Code. Встановіть розширення Intlayer з VS Code Marketplace, і мовний сервер активується автоматично, точно так само, як у VS Code та Cursor.
|
|
172
|
-
|
|
173
|
-
Для ручного налаштування створіть файл `.vscode/settings.json` у корені проекту:
|
|
174
|
-
|
|
175
|
-
```json fileName=".vscode/settings.json"
|
|
176
|
-
{
|
|
177
|
-
"intlayer.languageServer.command": "npx",
|
|
178
|
-
"intlayer.languageServer.args": ["@intlayer/lsp"]
|
|
179
|
-
}
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
---
|
|
183
|
-
|
|
184
|
-
## Налаштування в Zed
|
|
136
|
+
</Tab>
|
|
137
|
+
<Tab label="Zed" value="zed">
|
|
185
138
|
|
|
186
|
-
|
|
139
|
+
Zed має вбудовану підтримку LSP. Додайте сервер до користувацьких налаштувань:
|
|
187
140
|
|
|
188
141
|
```json fileName="~/.config/zed/settings.json"
|
|
189
142
|
{
|
|
@@ -196,47 +149,21 @@ Claude Code додасть `"intlayer-lsp@intlayer": true` до списку в
|
|
|
196
149
|
}
|
|
197
150
|
},
|
|
198
151
|
"languages": {
|
|
199
|
-
"TypeScript": {
|
|
200
|
-
|
|
201
|
-
},
|
|
202
|
-
"
|
|
203
|
-
|
|
204
|
-
},
|
|
205
|
-
"JavaScript": {
|
|
206
|
-
"language_servers": ["intlayer-lsp", "..."]
|
|
207
|
-
},
|
|
208
|
-
"Vue.js": {
|
|
209
|
-
"language_servers": ["intlayer-lsp", "..."]
|
|
210
|
-
},
|
|
211
|
-
"Svelte": {
|
|
212
|
-
"language_servers": ["intlayer-lsp", "..."]
|
|
213
|
-
}
|
|
152
|
+
"TypeScript": { "language_servers": ["intlayer-lsp", "..."] },
|
|
153
|
+
"TSX": { "language_servers": ["intlayer-lsp", "..."] },
|
|
154
|
+
"JavaScript": { "language_servers": ["intlayer-lsp", "..."] },
|
|
155
|
+
"Vue.js": { "language_servers": ["intlayer-lsp", "..."] },
|
|
156
|
+
"Svelte": { "language_servers": ["intlayer-lsp", "..."] }
|
|
214
157
|
}
|
|
215
158
|
}
|
|
216
159
|
```
|
|
217
160
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
---
|
|
221
|
-
|
|
222
|
-
## Налаштування для інтерфейсів командного рядка ШІ-агентів (Claude Code, Codex тощо)
|
|
223
|
-
|
|
224
|
-
**Claude Code** має першокласну підтримку плагінів LSP — дотримуйтесь інструкцій з [налаштування плагіна Claude Code](#налаштування-як-плагіна-claude-code) вище, щоб отримати повноцінну функцію «Перейти до визначення» прямо в сесіях термінала.
|
|
161
|
+
Заповнювач `"..."` зберігає стандартні мовні сервери Zed поряд із сервером Intlayer.
|
|
225
162
|
|
|
226
|
-
|
|
163
|
+
</Tab>
|
|
164
|
+
<Tab label="Neovim" value="neovim">
|
|
227
165
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
```bash
|
|
231
|
-
# Підтримувати сервер активним у фоновому режимі
|
|
232
|
-
npx @intlayer/lsp &
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
---
|
|
236
|
-
|
|
237
|
-
## Ручне налаштування в Neovim
|
|
238
|
-
|
|
239
|
-
Використовуючи [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig), зареєструйте користувацьку конфігурацію сервера:
|
|
166
|
+
За допомогою [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) зареєструйте власну конфігурацію сервера:
|
|
240
167
|
|
|
241
168
|
```lua fileName="~/.config/nvim/init.lua"
|
|
242
169
|
local lspconfig = require('lspconfig')
|
|
@@ -245,7 +172,7 @@ local configs = require('lspconfig.configs')
|
|
|
245
172
|
if not configs.intlayer_lsp then
|
|
246
173
|
configs.intlayer_lsp = {
|
|
247
174
|
default_config = {
|
|
248
|
-
--
|
|
175
|
+
-- Запускати сервер через npx, щоб не потребувати глобального встановлення
|
|
249
176
|
cmd = { 'npx', '--yes', '@intlayer/lsp' },
|
|
250
177
|
filetypes = {
|
|
251
178
|
'typescript',
|
|
@@ -267,21 +194,10 @@ end
|
|
|
267
194
|
lspconfig.intlayer_lsp.setup({})
|
|
268
195
|
```
|
|
269
196
|
|
|
270
|
-
Після перезапуску Neovim
|
|
271
|
-
|
|
272
|
-
---
|
|
273
|
-
|
|
274
|
-
## Ручне налаштування в інших редакторах
|
|
275
|
-
|
|
276
|
-
Будь-який редактор із підтримкою Language Server Protocol може використовувати `@intlayer/lsp`. Характеристики сервера:
|
|
197
|
+
Після перезапуску Neovim `gd` на ключі словника виконує перехід до визначення, а `gr` — пошук посилань.
|
|
277
198
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
- **Можливості** – `definitionProvider: true`, `textDocumentSync: Incremental`
|
|
281
|
-
|
|
282
|
-
Формат конфігурації для вашого редактора (наприклад, `languageserver.json` для [coc.nvim](https://github.com/neoclide/coc.nvim) або налаштування клієнта LSP в [Helix](https://helix-editor.com)) дивіться в його документації.
|
|
283
|
-
|
|
284
|
-
### Приклад: coc.nvim
|
|
199
|
+
</Tab>
|
|
200
|
+
<Tab label="coc.nvim" value="coc">
|
|
285
201
|
|
|
286
202
|
```json fileName="~/.config/nvim/coc-settings.json"
|
|
287
203
|
{
|
|
@@ -307,9 +223,14 @@ lspconfig.intlayer_lsp.setup({})
|
|
|
307
223
|
}
|
|
308
224
|
```
|
|
309
225
|
|
|
310
|
-
|
|
226
|
+
</Tab>
|
|
227
|
+
<Tab label="Helix" value="helix">
|
|
311
228
|
|
|
312
229
|
```toml fileName="~/.config/helix/languages.toml"
|
|
230
|
+
[language-server.intlayer-lsp]
|
|
231
|
+
command = "npx"
|
|
232
|
+
args = ["@intlayer/lsp"]
|
|
233
|
+
|
|
313
234
|
[[language]]
|
|
314
235
|
name = "typescript"
|
|
315
236
|
language-servers = ["intlayer-lsp", "typescript-language-server"]
|
|
@@ -317,36 +238,54 @@ language-servers = ["intlayer-lsp", "typescript-language-server"]
|
|
|
317
238
|
[[language]]
|
|
318
239
|
name = "tsx"
|
|
319
240
|
language-servers = ["intlayer-lsp", "typescript-language-server"]
|
|
320
|
-
|
|
321
|
-
[language-server.intlayer-lsp]
|
|
322
|
-
command = "npx"
|
|
323
|
-
args = ["@intlayer/lsp"]
|
|
324
241
|
```
|
|
325
242
|
|
|
243
|
+
</Tab>
|
|
244
|
+
<Tab label="Інші редактори" value="other">
|
|
245
|
+
|
|
246
|
+
Будь-який редактор із підтримкою LSP може запускати `@intlayer/lsp`. Укажіть йому:
|
|
247
|
+
|
|
248
|
+
- **Виконуваний файл** — `npx @intlayer/lsp` або бінарний файл `intlayer-lsp`
|
|
249
|
+
- **Транспорт** — stdio (стандартний)
|
|
250
|
+
- **Можливості** — `definitionProvider`, `referencesProvider`, `hoverProvider`, `completionProvider` (символи-тригери `"` `'` `` ` `` `.`), push-діагностика, `textDocumentSync: Incremental`
|
|
251
|
+
- **Шаблони кореня** — `intlayer.config.ts`, `intlayer.config.js`, `package.json`
|
|
252
|
+
|
|
253
|
+
Точний формат конфігурації дивіться в документації LSP вашого редактора.
|
|
254
|
+
|
|
255
|
+
</Tab>
|
|
256
|
+
</Tabs>
|
|
257
|
+
|
|
326
258
|
---
|
|
327
259
|
|
|
328
|
-
##
|
|
260
|
+
## Примітка про ШІ-агентів у терміналі
|
|
329
261
|
|
|
330
|
-
|
|
262
|
+
**Claude Code** працює як повноцінний LSP-клієнт — див. вкладку вище.
|
|
331
263
|
|
|
332
|
-
|
|
264
|
+
**OpenAI Codex** і більшість інших термінальних інструментів не є LSP-клієнтами: вони читають і пишуть файли напряму. Запуск сервера сам по собі їм не допоможе; користь з’являється, коли він активний у супутньому редакторі, чий індекс агент може запитувати (Cursor Composer, Windsurf Cascade, Copilot Chat).
|
|
333
265
|
|
|
334
|
-
|
|
335
|
-
2. Він сканує виклики геттерів (`useIntlayer`, `getIntlayer` тощо) за допомогою регулярного вираження.
|
|
336
|
-
3. Він перевіряє, чи потрапляє позиція курсора всередину одного з цих викликів.
|
|
337
|
-
4. Якщо потрапляє, він витягує ключ словника (група захоплення 3 регулярного вираження) і викликає `getUnmergedDictionaries()` для пошуку кожного файлу контенту, який оголошує цей ключ.
|
|
338
|
-
5. Він зчитує кожен відповідний файл і знаходить точний рядок із `key: "<key>"`, щоб точно позиціонувати курсор.
|
|
339
|
-
6. Він повертає масив об'єктів `Location` — по одному на кожен вихідний файл.
|
|
266
|
+
---
|
|
340
267
|
|
|
341
|
-
|
|
268
|
+
## Як це працює
|
|
269
|
+
|
|
270
|
+
Для кожного файлу сервер знаходить найближчий `intlayer.config.*` і завантажує конфігурацію цього проєкту, щоб знайти скомпільовані словники. Конфігурація, словники та список вихідних файлів кешуються з коротким TTL і скидаються при зміні відстежуваного файлу контенту.
|
|
271
|
+
|
|
272
|
+
На запит сервер розбирає документ (через [oxc](https://oxc.rs/)) і аналізує позицію курсора:
|
|
273
|
+
|
|
274
|
+
1. **На рядку ключа** (`useIntlayer("home")`) → повертає кожен файл контенту, що оголошує цей ключ, із позицією на рядку `key:`.
|
|
275
|
+
2. **На використанні поля** (`content.title`, деструктуризована властивість, `t('path.to.field')`, `<Trans>`, …) → зводить змінну назад до її словника й повертає відповідне поле у файлах контенту.
|
|
276
|
+
3. **З файлу контенту** → виконує зворотний пошук, переглядаючи джерела проєкту в пошуках місць виклику цього ключа або поля.
|
|
342
277
|
|
|
343
278
|
---
|
|
344
279
|
|
|
345
|
-
## Усунення
|
|
280
|
+
## Усунення несправностей
|
|
281
|
+
|
|
282
|
+
| Симптом | Ймовірна причина | Рішення |
|
|
283
|
+
| ------------------------------------------- | -------------------------------- | -------------------------------------------------------------------------- |
|
|
284
|
+
| Нічого не відбувається | Сервер не запущено | Переконайтеся, що `@intlayer/lsp` встановлено і редактор його запускає |
|
|
285
|
+
| Працює в редакторі, але не в Claude Code | Плагін встановлено під час сесії | Перезапустіть Claude Code — мовні сервери завантажуються під час старту |
|
|
286
|
+
| Визначення для ключа не знайдено | Словники не зібрано | Виконайте `npx intlayer build` або запустіть dev-сервер |
|
|
287
|
+
| Усі ключі позначені як неоголошені | Конфігурацію не розв’язано | Перевірте, що `intlayer.config.ts` (або `.js`) є в корені проєкту |
|
|
288
|
+
| У монорепозиторії використано не той проєкт | Немає конфігурації в пакеті | Додайте `intlayer.config.*` до кожного пакета, що оголошує власний контент |
|
|
289
|
+
| Сервер падає при запуску | Застара версія Node.js | Потрібен Node.js ≥ 14.18 |
|
|
346
290
|
|
|
347
|
-
|
|
348
|
-
| ----------------------------------------- | ---------------------------- | --------------------------------------------------------------------------------- |
|
|
349
|
-
| Перейти до визначення нічого не робить | Сервер не запущений | Переконайтеся, що `@intlayer/lsp` встановлений і редактор запускає його |
|
|
350
|
-
| Невірний корінь робочої області | Кілька папок робочої області | Переконайтеся, що папка з `intlayer.config.ts` є першою папкою робочої області |
|
|
351
|
-
| Визначення не знайдено для ключа | Конфігурація не вчинена | Переконайтеся, що `intlayer.config.ts` (або `.js`) існує в корені робочої області |
|
|
352
|
-
| Сервер аварійно завершує роботу на старті | Занадто стара версія Node.js | Потрібен Node.js ≥ 14.18 |
|
|
291
|
+
У VS Code сервер пише логи у **Вигляд → Вивід → «Intlayer LSP»** — це допомагає з’ясувати, яку конфігурацію було розв’язано і скільки словників знайдено.
|
|
@@ -112,7 +112,7 @@ const config: IntlayerConfig = {
|
|
|
112
112
|
export default config;
|
|
113
113
|
```
|
|
114
114
|
|
|
115
|
-
Використовуючи цю конфігурацію, усі файли для кожної локалі будуть згенеровані з мовою за замовчуванням, встановленою на English. Вона також включає генерацію `.content` файлів за допомогою команди `transform` та компілятора. (Див. [Компілятор](https://intlayer.org/doc/compiler) або [Transform](https://intlayer.org/doc/concept/cli/
|
|
115
|
+
Використовуючи цю конфігурацію, усі файли для кожної локалі будуть згенеровані з мовою за замовчуванням, встановленою на English. Вона також включає генерацію `.content` файлів за допомогою команди `transform` та компілятора. (Див. [Компілятор](https://intlayer.org/doc/compiler) або [Transform](https://intlayer.org/doc/concept/cli/extract) для докладнішої інформації.)
|
|
116
116
|
|
|
117
117
|
## Один файл з кількома перекладами
|
|
118
118
|
|
package/docs/uk/readme.md
CHANGED
|
@@ -46,27 +46,27 @@ Intlayer, це **сучасне рішення для i18n** для веб- та
|
|
|
46
46
|
|
|
47
47
|
## Ключові переваги Intlayer:
|
|
48
48
|
|
|
49
|
-
| Особливість | Опис
|
|
50
|
-
| ------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
51
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Підтримка" width="700"> | **Підтримка кількох фреймворків**<br><br>Intlayer сумісний з усіма основними фреймворками та бібліотеками, включно з Next.js, React, Vite, Vue.js, Nuxt, Preact, Express та іншими.
|
|
52
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="JavaScript" width="700"> | **Керування контентом за допомогою JavaScript**<br><br>Використовуйте гнучкість JavaScript, щоб ефективно визначати та керувати своїм контентом. <br><br> - [Оголошення контенту](https://intlayer.org/doc/concept/content)
|
|
53
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true" alt="Файли" width="700"> | **Файл декларації контенту для кожної локалі**<br><br>Прискорте розробку, задекларувавши ваш контент лише один раз перед автоматичною генерацією.<br><br> - [Файл декларації контенту для кожної локалі](https://intlayer.org/doc/concept/per-locale-file)
|
|
54
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Compiler" width="700"> | **Компілятор**<br><br>Компілятор Intlayer автоматично витягує вміст із компонентів і генерує файли словників.<br><br> - [Компілятор](https://intlayer.org/doc/compiler)
|
|
55
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true" alt="TypeScript" width="700"> | **Типобезпечне середовище**<br><br>Використовуйте TypeScript, щоб гарантувати, що ваші визначення контенту та код позбавлені помилок, а також отримувати автозаповнення в IDE.<br><br> - [Налаштування TypeScript](https://intlayer.org/doc/environment/vite-and-react#configure-typescript)
|
|
56
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true" alt="Конфігурація" width="700"> | **Спрощене налаштування**<br><br>Швидко запустіть проект з мінімальною конфігурацією. Легко налаштовуйте параметри інтернаціоналізації, маршрутизації, AI, збірки та обробки контенту. <br><br> - [Дізнайтеся про інтеграцію Next.js](https://intlayer.org/doc/environment/nextjs)
|
|
57
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true" alt="Отримання контенту" width="700"> | **Спрощене отримання контенту**<br><br>Не потрібно викликати вашу функцію `t` для кожного фрагмента контенту. Отримуйте весь контент безпосередньо за допомогою одного hook.<br><br> - [Інтеграція з React](https://intlayer.org/doc/environment/create-react-app)
|
|
58
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true" alt="Серверні компоненти" width="700"> | **Послідовна реалізація серверних компонентів**<br><br>Ідеально підходить для серверних компонентів Next.js: використовуйте одну й ту саму реалізацію як для клієнтських, так і для серверних компонентів, немає потреби передавати вашу функцію `t` через кожний серверний компонент. <br><br> - [Серверні компоненти](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code)
|
|
59
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true" alt="Організація" width="700"> | **Організована codebase**<br><br>Тримайте свій codebase більш організованим: 1 компонент = 1 словник у тій самій папці. Переклади поруч із відповідними компонентами підвищують підтримуваність і зрозумілість. <br><br> - [Як працює Intlayer](https://intlayer.org/doc/concept/how-works-intlayer)
|
|
60
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true" alt="Маршрутизація" width="700"> | **Покращена маршрутизація**<br><br>Повна підтримка маршрутизації застосунків, що безшовно адаптується до складних структур додатків для Next.js, React, Vite, Vue.js тощо.<br><br> - [Дізнатися про інтеграцію з Next.js](https://intlayer.org/doc/environment/nextjs)
|
|
61
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true" alt="Markdown" width="700"> | **Підтримка Markdown**<br><br>Імпортуйте та інтерпретуйте локалізовані файли і віддалений Markdown для багатомовного контенту, такого як політики конфіденційності, документація тощо. Інтерпретуйте та робіть метадані Markdown доступними у вашому коді.<br><br> - [Файли контенту](https://intlayer.org/doc/concept/content/file)
|
|
62
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true" alt="Візуальний редактор" width="700"> | **Безкоштовний візуальний редактор та CMS**<br><br>Для авторів контенту доступні безкоштовний візуальний редактор та CMS, що усуває потребу в окремій платформі локалізації. Підтримуйте синхронізацію контенту за допомогою Git або зовнішньо розміщуйте його повністю чи частково через CMS.<br><br> - [Intlayer Editor](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms)
|
|
63
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true" alt="Bundle" width="700"> | **Tree-shakable контент**<br><br>Tree-shakable контент, що зменшує розмір фінального бандла. Завантажує контент на рівні компонента, виключаючи будь-який невикористаний контент із вашого бандла. Підтримує lazy loading для підвищення ефективності завантаження застосунку. <br><br> - [Оптимізація збірки додатка](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization)
|
|
64
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true" alt="Static Rendering" width="700"> | **Статичний рендеринг**<br><br>Не блокує статичний рендеринг. <br><br> - [Інтеграція з Next.js](https://intlayer.org/doc/environment/nextjs)
|
|
65
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true" alt="AI" width="700"> | **Переклад на основі AI**<br><br>Перетворіть свій вебсайт на 231 мову всього за один клік, використовуючи розширені AI-інструменти перекладу Intlayer з вашим власним постачальником AI / ключем API. <br><br> - [Інтеграція CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [Автозаповнення](https://intlayer.org/doc/concept/auto-fill)
|
|
66
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true" alt="MCP" width="700"> | **Інтеграція сервера MCP**<br><br>Надає сервер MCP (Model Context Protocol) для автоматизації IDE, що дозволяє безперешкодне керування контентом та i18n-робочі процеси безпосередньо у вашому середовищі розробки. <br><br> - [Сервер MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/mcp_server.md)
|
|
67
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true" alt="Extension" width="700"> | **Розширення для VSCode**<br><br>Intlayer надає розширення для VSCode, яке допомагає керувати вашим контентом та перекладами, створювати словники, перекладати ваш контент та інше. <br><br> - [Розширення для VSCode](https://intlayer.org/doc/vs-code-extension)
|
|
68
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true" alt="Interoperability" width="700"> | **Сумісність**<br><br>Забезпечує сумісність з react-i18next, next-i18next, next-intl, react-intl, vue-i18n. <br><br> - [Intlayer і react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer і next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer і next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer і vue-i18n](https://intlayer.org/blog/intlayer-with-vue-i18n) |
|
|
69
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/benchmark.png?raw=true" alt="Benchmark" width="700"> | **Продуктивність та бенчмарк**<br><br>Використовує вдосконалене розділення коду (tree-shaking) та динамічне завантаження для підвищення продуктивності та збереження максимальної легкості рішення. <br><br> - [Продуктивність та бенчмарк](https://intlayer.org/doc/benchmark)
|
|
49
|
+
| Особливість | Опис |
|
|
50
|
+
| ------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
51
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Підтримка" width="700"> | **Підтримка кількох фреймворків**<br><br>Intlayer сумісний з усіма основними фреймворками та бібліотеками, включно з Next.js, React, Vite, Vue.js, Nuxt, Preact, Express та іншими. |
|
|
52
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="JavaScript" width="700"> | **Керування контентом за допомогою JavaScript**<br><br>Використовуйте гнучкість JavaScript, щоб ефективно визначати та керувати своїм контентом. <br><br> - [Оголошення контенту](https://intlayer.org/doc/concept/content) |
|
|
53
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true" alt="Файли" width="700"> | **Файл декларації контенту для кожної локалі**<br><br>Прискорте розробку, задекларувавши ваш контент лише один раз перед автоматичною генерацією.<br><br> - [Файл декларації контенту для кожної локалі](https://intlayer.org/doc/concept/per-locale-file) |
|
|
54
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Compiler" width="700"> | **Компілятор**<br><br>Компілятор Intlayer автоматично витягує вміст із компонентів і генерує файли словників.<br><br> - [Компілятор](https://intlayer.org/doc/compiler) |
|
|
55
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true" alt="TypeScript" width="700"> | **Типобезпечне середовище**<br><br>Використовуйте TypeScript, щоб гарантувати, що ваші визначення контенту та код позбавлені помилок, а також отримувати автозаповнення в IDE.<br><br> - [Налаштування TypeScript](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
|
|
56
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true" alt="Конфігурація" width="700"> | **Спрощене налаштування**<br><br>Швидко запустіть проект з мінімальною конфігурацією. Легко налаштовуйте параметри інтернаціоналізації, маршрутизації, AI, збірки та обробки контенту. <br><br> - [Дізнайтеся про інтеграцію Next.js](https://intlayer.org/doc/environment/nextjs) |
|
|
57
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true" alt="Отримання контенту" width="700"> | **Спрощене отримання контенту**<br><br>Не потрібно викликати вашу функцію `t` для кожного фрагмента контенту. Отримуйте весь контент безпосередньо за допомогою одного hook.<br><br> - [Інтеграція з React](https://intlayer.org/doc/environment/create-react-app) |
|
|
58
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true" alt="Серверні компоненти" width="700"> | **Послідовна реалізація серверних компонентів**<br><br>Ідеально підходить для серверних компонентів Next.js: використовуйте одну й ту саму реалізацію як для клієнтських, так і для серверних компонентів, немає потреби передавати вашу функцію `t` через кожний серверний компонент. <br><br> - [Серверні компоненти](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
|
|
59
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true" alt="Організація" width="700"> | **Організована codebase**<br><br>Тримайте свій codebase більш організованим: 1 компонент = 1 словник у тій самій папці. Переклади поруч із відповідними компонентами підвищують підтримуваність і зрозумілість. <br><br> - [Як працює Intlayer](https://intlayer.org/doc/concept/how-works-intlayer) |
|
|
60
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true" alt="Маршрутизація" width="700"> | **Покращена маршрутизація**<br><br>Повна підтримка маршрутизації застосунків, що безшовно адаптується до складних структур додатків для Next.js, React, Vite, Vue.js тощо.<br><br> - [Дізнатися про інтеграцію з Next.js](https://intlayer.org/doc/environment/nextjs) |
|
|
61
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true" alt="Markdown" width="700"> | **Підтримка Markdown**<br><br>Імпортуйте та інтерпретуйте локалізовані файли і віддалений Markdown для багатомовного контенту, такого як політики конфіденційності, документація тощо. Інтерпретуйте та робіть метадані Markdown доступними у вашому коді.<br><br> - [Файли контенту](https://intlayer.org/doc/concept/content/file) |
|
|
62
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true" alt="Візуальний редактор" width="700"> | **Безкоштовний візуальний редактор та CMS**<br><br>Для авторів контенту доступні безкоштовний візуальний редактор та CMS, що усуває потребу в окремій платформі локалізації. Підтримуйте синхронізацію контенту за допомогою Git або зовнішньо розміщуйте його повністю чи частково через CMS.<br><br> - [Intlayer Editor](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms) |
|
|
63
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true" alt="Bundle" width="700"> | **Tree-shakable контент**<br><br>Tree-shakable контент, що зменшує розмір фінального бандла. Завантажує контент на рівні компонента, виключаючи будь-який невикористаний контент із вашого бандла. Підтримує lazy loading для підвищення ефективності завантаження застосунку. <br><br> - [Оптимізація збірки додатка](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
|
|
64
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true" alt="Static Rendering" width="700"> | **Статичний рендеринг**<br><br>Не блокує статичний рендеринг. <br><br> - [Інтеграція з Next.js](https://intlayer.org/doc/environment/nextjs) |
|
|
65
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true" alt="AI" width="700"> | **Переклад на основі AI**<br><br>Перетворіть свій вебсайт на 231 мову всього за один клік, використовуючи розширені AI-інструменти перекладу Intlayer з вашим власним постачальником AI / ключем API. <br><br> - [Інтеграція CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [Автозаповнення](https://intlayer.org/doc/concept/auto-fill) |
|
|
66
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true" alt="MCP" width="700"> | **Інтеграція сервера MCP**<br><br>Надає сервер MCP (Model Context Protocol) для автоматизації IDE, що дозволяє безперешкодне керування контентом та i18n-робочі процеси безпосередньо у вашому середовищі розробки. <br><br> - [Сервер MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/mcp_server.md) |
|
|
67
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true" alt="Extension" width="700"> | **Розширення для VSCode**<br><br>Intlayer надає розширення для VSCode, яке допомагає керувати вашим контентом та перекладами, створювати словники, перекладати ваш контент та інше. <br><br> - [Розширення для VSCode](https://intlayer.org/doc/vs-code-extension) |
|
|
68
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true" alt="Interoperability" width="700"> | **Сумісність**<br><br>Забезпечує сумісність з react-i18next, next-i18next, next-intl, react-intl, vue-i18n. <br><br> - [Intlayer і react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer і next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer і next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer і vue-i18n](https://intlayer.org/blog/intlayer-with-vue-i18n) <br> - [Адаптери сумісності Intlayer](https://intlayer.org/doc/compatibility) |
|
|
69
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/benchmark.png?raw=true" alt="Benchmark" width="700"> | **Продуктивність та бенчмарк**<br><br>Використовує вдосконалене розділення коду (tree-shaking) та динамічне завантаження для підвищення продуктивності та збереження максимальної легкості рішення. <br><br> - [Продуктивність та бенчмарк](https://intlayer.org/doc/benchmark) |
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|
|
@@ -173,7 +173,7 @@ const HomePage = () => {
|
|
|
173
173
|
<li><a href="https://intlayer.org/doc/concept/cms" rel=''>Intlayer CMS</a></li>
|
|
174
174
|
<li><a href="https://intlayer.org/doc/concept/content" rel=''>Словник</a>
|
|
175
175
|
<ul>
|
|
176
|
-
<li><a href="https://intlayer.org/doc/concept/
|
|
176
|
+
<li><a href="https://intlayer.org/doc/concept/per-locale-file" rel=''>Файл декларації контенту для кожної локалі</a></li>
|
|
177
177
|
<li><a href="https://intlayer.org/doc/concept/content/translation" rel=''>Переклад</a></li>
|
|
178
178
|
<li><a href="https://intlayer.org/doc/concept/content/enumeration" rel=''>Перелічення</a></li>
|
|
179
179
|
<li><a href="https://intlayer.org/doc/concept/content/condition" rel=''>Умова</a></li>
|
|
@@ -194,7 +194,7 @@ const HomePage = () => {
|
|
|
194
194
|
<ul>
|
|
195
195
|
<li><a href="https://intlayer.org/doc/environment/nextjs/15" rel=''>Next.js 15</a></li>
|
|
196
196
|
<li><a href="https://intlayer.org/doc/environment/nextjs/14" rel=''>Next.js 14 (App Router)</a></li>
|
|
197
|
-
<li><a href="https://intlayer.org/doc/environment/nextjs/next-with-
|
|
197
|
+
<li><a href="https://intlayer.org/doc/environment/nextjs/next-with-page-router" rel=''>Next.js Page Router</a></li>
|
|
198
198
|
<li><a href="https://intlayer.org/doc/environment/nextjs/compiler" rel=''>Next.js за допомогою компілятора</a></li>
|
|
199
199
|
</ul>
|
|
200
200
|
</li>
|
|
@@ -223,7 +223,7 @@ const HomePage = () => {
|
|
|
223
223
|
<li><a href="https://intlayer.org/doc/environment/sveltekit" rel=''>SvelteKit</a></li>
|
|
224
224
|
<li><a href="https://intlayer.org/doc/environment/vite-and-preact" rel=''>Vite + Preact</a></li>
|
|
225
225
|
<li><a href="https://intlayer.org/doc/environment/vite-and-vue" rel=''>Vite + Vue</a></li>
|
|
226
|
-
<li><a href="https://intlayer.org/doc/environment/
|
|
226
|
+
<li><a href="https://intlayer.org/doc/environment/nuxt-and-vue" rel=''>Vite + Nuxt</a></li>
|
|
227
227
|
<li><a href="https://intlayer.org/doc/environment/vite-and-solid" rel=''>Vite + Solid</a></li>
|
|
228
228
|
<li><a href="https://intlayer.org/doc/environment/angular" rel=''>Angular</a></li>
|
|
229
229
|
<li>
|