@intlayer/docs 7.5.12 → 7.5.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/blog/uk/compiler_vs_declarative_i18n.md +224 -0
  2. package/blog/uk/i18n_using_next-i18next.md +1086 -0
  3. package/blog/uk/i18n_using_next-intl.md +760 -0
  4. package/blog/uk/index.md +69 -0
  5. package/blog/uk/internationalization_and_SEO.md +273 -0
  6. package/blog/uk/intlayer_with_i18next.md +211 -0
  7. package/blog/uk/intlayer_with_next-i18next.md +202 -0
  8. package/blog/uk/intlayer_with_next-intl.md +203 -0
  9. package/blog/uk/intlayer_with_react-i18next.md +200 -0
  10. package/blog/uk/intlayer_with_react-intl.md +202 -0
  11. package/blog/uk/intlayer_with_vue-i18n.md +206 -0
  12. package/blog/uk/l10n_platform_alternative/Lokalise.md +80 -0
  13. package/blog/uk/l10n_platform_alternative/crowdin.md +80 -0
  14. package/blog/uk/l10n_platform_alternative/phrase.md +78 -0
  15. package/blog/uk/list_i18n_technologies/CMS/drupal.md +143 -0
  16. package/blog/uk/list_i18n_technologies/CMS/wix.md +167 -0
  17. package/blog/uk/list_i18n_technologies/CMS/wordpress.md +189 -0
  18. package/blog/uk/list_i18n_technologies/frameworks/angular.md +125 -0
  19. package/blog/uk/list_i18n_technologies/frameworks/flutter.md +128 -0
  20. package/blog/uk/list_i18n_technologies/frameworks/react-native.md +217 -0
  21. package/blog/uk/list_i18n_technologies/frameworks/react.md +155 -0
  22. package/blog/uk/list_i18n_technologies/frameworks/svelte.md +145 -0
  23. package/blog/uk/list_i18n_technologies/frameworks/vue.md +144 -0
  24. package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +1499 -0
  25. package/blog/uk/nextjs-multilingual-seo-comparison.md +360 -0
  26. package/blog/uk/rag_powered_documentation_assistant.md +288 -0
  27. package/blog/uk/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
  28. package/blog/uk/vue-i18n_vs_intlayer.md +279 -0
  29. package/blog/uk/what_is_internationalization.md +167 -0
  30. package/dist/cjs/generated/frequentQuestions.entry.cjs +20 -0
  31. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  32. package/dist/esm/generated/frequentQuestions.entry.mjs +20 -0
  33. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  34. package/dist/types/generated/frequentQuestions.entry.d.ts +1 -0
  35. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  36. package/docs/ar/configuration.md +6 -1
  37. package/docs/ar/dictionary/content_file.md +6 -1
  38. package/docs/de/configuration.md +6 -1
  39. package/docs/de/dictionary/content_file.md +6 -1
  40. package/docs/en/configuration.md +6 -1
  41. package/docs/en/dictionary/content_file.md +6 -1
  42. package/docs/en-GB/configuration.md +6 -1
  43. package/docs/en-GB/dictionary/content_file.md +3 -1
  44. package/docs/es/configuration.md +6 -1
  45. package/docs/es/dictionary/content_file.md +6 -1
  46. package/docs/fr/configuration.md +6 -1
  47. package/docs/fr/dictionary/content_file.md +3 -1
  48. package/docs/hi/configuration.md +6 -1
  49. package/docs/hi/dictionary/content_file.md +3 -1
  50. package/docs/id/configuration.md +6 -1
  51. package/docs/id/dictionary/content_file.md +3 -1
  52. package/docs/it/configuration.md +6 -1
  53. package/docs/it/dictionary/content_file.md +3 -1
  54. package/docs/ja/configuration.md +6 -1
  55. package/docs/ja/dictionary/content_file.md +3 -1
  56. package/docs/ko/configuration.md +6 -1
  57. package/docs/ko/dictionary/content_file.md +3 -1
  58. package/docs/pl/configuration.md +3 -1
  59. package/docs/pl/dictionary/content_file.md +3 -1
  60. package/docs/pt/configuration.md +6 -1
  61. package/docs/pt/dictionary/content_file.md +3 -1
  62. package/docs/ru/configuration.md +6 -1
  63. package/docs/ru/dictionary/content_file.md +6 -1
  64. package/docs/tr/configuration.md +6 -1
  65. package/docs/tr/dictionary/content_file.md +3 -1
  66. package/docs/uk/CI_CD.md +198 -0
  67. package/docs/uk/autoFill.md +307 -0
  68. package/docs/uk/bundle_optimization.md +185 -0
  69. package/docs/uk/cli/build.md +64 -0
  70. package/docs/uk/cli/ci.md +137 -0
  71. package/docs/uk/cli/configuration.md +63 -0
  72. package/docs/uk/cli/debug.md +46 -0
  73. package/docs/uk/cli/doc-review.md +43 -0
  74. package/docs/uk/cli/doc-translate.md +132 -0
  75. package/docs/uk/cli/editor.md +28 -0
  76. package/docs/uk/cli/fill.md +130 -0
  77. package/docs/uk/cli/index.md +190 -0
  78. package/docs/uk/cli/init.md +84 -0
  79. package/docs/uk/cli/list.md +90 -0
  80. package/docs/uk/cli/list_projects.md +128 -0
  81. package/docs/uk/cli/live.md +41 -0
  82. package/docs/uk/cli/login.md +157 -0
  83. package/docs/uk/cli/pull.md +78 -0
  84. package/docs/uk/cli/push.md +98 -0
  85. package/docs/uk/cli/sdk.md +71 -0
  86. package/docs/uk/cli/test.md +76 -0
  87. package/docs/uk/cli/transform.md +65 -0
  88. package/docs/uk/cli/version.md +24 -0
  89. package/docs/uk/cli/watch.md +37 -0
  90. package/docs/uk/configuration.md +742 -0
  91. package/docs/uk/dictionary/condition.md +237 -0
  92. package/docs/uk/dictionary/content_file.md +1134 -0
  93. package/docs/uk/dictionary/enumeration.md +245 -0
  94. package/docs/uk/dictionary/file.md +232 -0
  95. package/docs/uk/dictionary/function_fetching.md +212 -0
  96. package/docs/uk/dictionary/gender.md +273 -0
  97. package/docs/uk/dictionary/insertion.md +187 -0
  98. package/docs/uk/dictionary/markdown.md +383 -0
  99. package/docs/uk/dictionary/nesting.md +273 -0
  100. package/docs/uk/dictionary/translation.md +332 -0
  101. package/docs/uk/formatters.md +595 -0
  102. package/docs/uk/how_works_intlayer.md +256 -0
  103. package/docs/uk/index.md +175 -0
  104. package/docs/uk/interest_of_intlayer.md +297 -0
  105. package/docs/uk/intlayer_CMS.md +569 -0
  106. package/docs/uk/intlayer_visual_editor.md +292 -0
  107. package/docs/uk/intlayer_with_angular.md +710 -0
  108. package/docs/uk/intlayer_with_astro.md +256 -0
  109. package/docs/uk/intlayer_with_create_react_app.md +1258 -0
  110. package/docs/uk/intlayer_with_express.md +429 -0
  111. package/docs/uk/intlayer_with_fastify.md +446 -0
  112. package/docs/uk/intlayer_with_lynx+react.md +548 -0
  113. package/docs/uk/intlayer_with_nestjs.md +283 -0
  114. package/docs/uk/intlayer_with_next-i18next.md +640 -0
  115. package/docs/uk/intlayer_with_next-intl.md +456 -0
  116. package/docs/uk/intlayer_with_nextjs_page_router.md +1541 -0
  117. package/docs/uk/intlayer_with_nuxt.md +711 -0
  118. package/docs/uk/intlayer_with_react_router_v7.md +600 -0
  119. package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +669 -0
  120. package/docs/uk/intlayer_with_svelte_kit.md +579 -0
  121. package/docs/uk/intlayer_with_tanstack.md +818 -0
  122. package/docs/uk/intlayer_with_vite+preact.md +1748 -0
  123. package/docs/uk/intlayer_with_vite+react.md +1449 -0
  124. package/docs/uk/intlayer_with_vite+solid.md +302 -0
  125. package/docs/uk/intlayer_with_vite+svelte.md +520 -0
  126. package/docs/uk/intlayer_with_vite+vue.md +1113 -0
  127. package/docs/uk/introduction.md +222 -0
  128. package/docs/uk/locale_mapper.md +242 -0
  129. package/docs/uk/mcp_server.md +211 -0
  130. package/docs/uk/packages/express-intlayer/t.md +465 -0
  131. package/docs/uk/packages/intlayer/getEnumeration.md +159 -0
  132. package/docs/uk/packages/intlayer/getHTMLTextDir.md +121 -0
  133. package/docs/uk/packages/intlayer/getLocaleLang.md +81 -0
  134. package/docs/uk/packages/intlayer/getLocaleName.md +135 -0
  135. package/docs/uk/packages/intlayer/getLocalizedUrl.md +338 -0
  136. package/docs/uk/packages/intlayer/getMultilingualUrls.md +359 -0
  137. package/docs/uk/packages/intlayer/getPathWithoutLocale.md +75 -0
  138. package/docs/uk/packages/intlayer/getPrefix.md +213 -0
  139. package/docs/uk/packages/intlayer/getTranslation.md +190 -0
  140. package/docs/uk/packages/intlayer/getTranslationContent.md +189 -0
  141. package/docs/uk/packages/next-intlayer/t.md +365 -0
  142. package/docs/uk/packages/next-intlayer/useDictionary.md +276 -0
  143. package/docs/uk/packages/next-intlayer/useIntlayer.md +263 -0
  144. package/docs/uk/packages/next-intlayer/useLocale.md +166 -0
  145. package/docs/uk/packages/react-intlayer/t.md +311 -0
  146. package/docs/uk/packages/react-intlayer/useDictionary.md +295 -0
  147. package/docs/uk/packages/react-intlayer/useI18n.md +250 -0
  148. package/docs/uk/packages/react-intlayer/useIntlayer.md +251 -0
  149. package/docs/uk/packages/react-intlayer/useLocale.md +210 -0
  150. package/docs/uk/per_locale_file.md +345 -0
  151. package/docs/uk/plugins/sync-json.md +398 -0
  152. package/docs/uk/readme.md +265 -0
  153. package/docs/uk/releases/v6.md +305 -0
  154. package/docs/uk/releases/v7.md +624 -0
  155. package/docs/uk/roadmap.md +346 -0
  156. package/docs/uk/testing.md +204 -0
  157. package/docs/vi/configuration.md +6 -1
  158. package/docs/vi/dictionary/content_file.md +6 -1
  159. package/docs/zh/configuration.md +6 -1
  160. package/docs/zh/dictionary/content_file.md +6 -1
  161. package/frequent_questions/ar/error-vite-env-only.md +77 -0
  162. package/frequent_questions/de/error-vite-env-only.md +77 -0
  163. package/frequent_questions/en/error-vite-env-only.md +77 -0
  164. package/frequent_questions/en-GB/error-vite-env-only.md +77 -0
  165. package/frequent_questions/es/error-vite-env-only.md +76 -0
  166. package/frequent_questions/fr/error-vite-env-only.md +77 -0
  167. package/frequent_questions/hi/error-vite-env-only.md +77 -0
  168. package/frequent_questions/id/error-vite-env-only.md +77 -0
  169. package/frequent_questions/it/error-vite-env-only.md +77 -0
  170. package/frequent_questions/ja/error-vite-env-only.md +77 -0
  171. package/frequent_questions/ko/error-vite-env-only.md +77 -0
  172. package/frequent_questions/pl/error-vite-env-only.md +77 -0
  173. package/frequent_questions/pt/error-vite-env-only.md +77 -0
  174. package/frequent_questions/ru/error-vite-env-only.md +77 -0
  175. package/frequent_questions/tr/error-vite-env-only.md +77 -0
  176. package/frequent_questions/uk/SSR_Next_no_[locale].md +104 -0
  177. package/frequent_questions/uk/array_as_content_declaration.md +72 -0
  178. package/frequent_questions/uk/build_dictionaries.md +58 -0
  179. package/frequent_questions/uk/build_error_CI_CD.md +74 -0
  180. package/frequent_questions/uk/bun_set_up.md +53 -0
  181. package/frequent_questions/uk/customized_locale_list.md +64 -0
  182. package/frequent_questions/uk/domain_routing.md +113 -0
  183. package/frequent_questions/uk/error-vite-env-only.md +77 -0
  184. package/frequent_questions/uk/esbuild_error.md +29 -0
  185. package/frequent_questions/uk/get_locale_cookie.md +142 -0
  186. package/frequent_questions/uk/intlayer_command_undefined.md +155 -0
  187. package/frequent_questions/uk/locale_incorect_in_url.md +73 -0
  188. package/frequent_questions/uk/package_version_error.md +181 -0
  189. package/frequent_questions/uk/static_rendering.md +44 -0
  190. package/frequent_questions/uk/translated_path_url.md +55 -0
  191. package/frequent_questions/uk/unknown_command.md +97 -0
  192. package/frequent_questions/vi/error-vite-env-only.md +77 -0
  193. package/frequent_questions/zh/error-vite-env-only.md +77 -0
  194. package/legal/uk/privacy_notice.md +83 -0
  195. package/legal/uk/terms_of_service.md +55 -0
  196. package/package.json +6 -6
  197. package/src/generated/frequentQuestions.entry.ts +20 -0
@@ -0,0 +1,155 @@
1
+ ---
2
+ createdAt: 2025-05-20
3
+ updatedAt: 2025-06-29
4
+ title: Команда intlayer не визначена
5
+ description: Дізнайтеся, як виправити помилку «команда intlayer не визначена».
6
+ keywords:
7
+ - intlayer
8
+ - command
9
+ - undefined
10
+ - error
11
+ - vscode
12
+ - extension
13
+ - plugin
14
+ - framework
15
+ - next.js
16
+ - vite
17
+ slugs:
18
+ - frequent-questions
19
+ - intlayer-command-undefined
20
+ ---
21
+
22
+ # Команда intlayer не визначена
23
+
24
+ ## Огляд
25
+
26
+ Intlayer CLI надає зручний спосіб керування вашим вмістом intlayer, включно зі збіркою словників, відправкою перекладів та іншим. Однак він не є обов'язковим для роботи вашого проєкту. Якщо ви використовуєте bundler-плагін (наприклад, `withIntlayer()` для Next.js або `intlayer()` для Vite), Intlayer автоматично збирає словники під час збірки додатку або запуску dev-сервера. У режимі розробки він також відслідковує зміни та автоматично перебудовує файли декларацій вмісту.
27
+
28
+ Ви можете отримати доступ до команд intlayer різними способами:
29
+
30
+ - Використовуючи CLI-команду `intlayer` безпосередньо
31
+ - Використовуючи [розширення VSCode](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/vs_code_extension.md)
32
+ - Використовуючи SDK `@intlayer/cli`
33
+
34
+ ## Проблема
35
+
36
+ Коли ви намагаєтеся використати команду `intlayer`, ви можете зіткнутися з цією помилкою:
37
+
38
+ ```bash
39
+ 'intlayer' is not recognized as an internal or external command,
40
+ operable program or batch file.
41
+ ```
42
+
43
+ ## Рішення
44
+
45
+ Спробуйте ці рішення в порядку:
46
+
47
+ 1. **Перевірте, що команда встановлена**
48
+
49
+ ```bash
50
+ npx intlayer -h
51
+ ```
52
+
53
+ Очікуваний вивід:
54
+
55
+ ```bash
56
+ Usage: intlayer [options] [command]
57
+
58
+ Intlayer CLI
59
+
60
+ Options:
61
+ -V, --version output the version number
62
+ -h, --help display help for command
63
+
64
+ Commands:
65
+ dictionary|dictionaries Dictionaries operations
66
+ configuration|config Configuration operations
67
+ help [command] display help for command
68
+ ```
69
+
70
+ 2. **Встановіть пакет intlayer-cli глобально**
71
+
72
+ ```bash
73
+ npm install intlayer-cli -g -g
74
+ ```
75
+
76
+ > Це не має бути необхідним, якщо ви вже встановили пакет `intlayer`
77
+
78
+ 3. **Встановіть пакет глобально**
79
+
80
+ ```bash
81
+ npm install intlayer -g
82
+ ```
83
+
84
+ 4. **Перезапустіть термінал**
85
+ Іноді потрібно перезапустити термінал, щоб він розпізнав нові команди.
86
+
87
+ 5. **Очистіть і перевстановіть**
88
+ Якщо наведені вище рішення не допомогли:
89
+
90
+ ```bash
91
+ rm -rf node_modules package-lock.json
92
+ npm install
93
+ ```
94
+
95
+ 6. **Перевірте файли встановлення**
96
+ Якщо проблема зберігається, перевірте, що існують такі файли:
97
+ - `node_modules/intlayer/dist/cjs/cli.cjs`
98
+ - `node_modules/intlayer/package.json` (має містити поле `bin`, що посилається на `./dist/cjs/cli.cjs`)
99
+
100
+ 7. **Перевірте змінну середовища PATH**
101
+ Переконайтеся, що директорія глобальних bin-файлів npm присутня у вашому PATH:
102
+
103
+ ```bash
104
+ # Для Unix-подібних систем (macOS/Linux)
105
+ echo $PATH
106
+ # Має містити щось на кшталт /usr/local/bin або ~/.npm-global/bin
107
+
108
+ # Для Windows
109
+ echo %PATH%
110
+ # Має містити каталог глобальних бінарних файлів npm
111
+ ```
112
+
113
+ 8. **Use npx with full path**
114
+ If the command is still not found, try using npx with the full path:
115
+
116
+ ```bash
117
+ npx ./node_modules/intlayer/ dictionaries build
118
+ ```
119
+
120
+ 9. **Check for conflicting installations**
121
+
122
+ ```bash
123
+ # Перелічіть усі глобально встановлені пакети
124
+ npm list -g --depth=0
125
+
126
+ # Видаліть будь-які конфліктні глобальні встановлення
127
+ npm uninstall -g intlayer
128
+ npm uninstall -g intlayer-cli
129
+ # Потім перевстановіть
130
+ npm install -g intlayer
131
+ ```
132
+
133
+ 10. **Verify Node.js and npm versions**
134
+ Make sure you're using compatible versions:
135
+
136
+ ```bash
137
+ node --version
138
+ npm --version
139
+ ```
140
+
141
+ If you're using an outdated version, consider updating Node.js and npm.
142
+
143
+ 11. **Перевірте проблеми з дозволами**
144
+ Якщо ви отримуєте помилки доступу:
145
+
146
+ ```bash
147
+ # Для Unix-подібних систем
148
+ sudo npm install -g intlayer
149
+
150
+ # Або змініть каталог за замовчуванням для npm
151
+ mkdir ~/.npm-global
152
+ npm config set prefix '~/.npm-global'
153
+ # Додайте в ваш ~/.profile або ~/.bashrc:
154
+ export PATH=~/.npm-global/bin:$PATH
155
+ ```
@@ -0,0 +1,73 @@
1
+ ---
2
+ createdAt: 2025-05-20
3
+ updatedAt: 2025-06-29
4
+ title: Некоректна локаль, отримана з URL
5
+ description: Дізнайтеся, як виправити некоректну локаль, отриману з URL.
6
+ keywords:
7
+ - локаль
8
+ - url
9
+ - intlayer
10
+ - next.js
11
+ - vite
12
+ - фреймворк
13
+ - middleware
14
+ - конфігурація
15
+ - prefixDefault
16
+ - noPrefix
17
+ slugs:
18
+ - frequent-questions
19
+ - locale-incorect-in-url
20
+ ---
21
+
22
+ # Некоректна локаль, отримана з URL
23
+
24
+ ## Опис проблеми
25
+
26
+ Коли ви намагаєтеся отримати параметр locale з URL, ви можете зіткнутися з проблемою, коли значення локалі некоректне:
27
+
28
+ ```js
29
+ const { locale } = await params;
30
+ console.log(locale); // повертає "about" замість очікуваної локалі
31
+ ```
32
+
33
+ ## Рішення
34
+
35
+ ### 1. Перевірте структуру файлів
36
+
37
+ Переконайтеся, що шлях у app router вашого Next.js відповідає цій структурі:
38
+
39
+ ```bash
40
+ src/app/[locale]/about/page.tsx
41
+ ```
42
+
43
+ ### 2. Перевірте конфігурацію middleware
44
+
45
+ Проблема часто виникає, коли middleware відсутній або не спрацьовує. Файл middleware має знаходитись за шляхом:
46
+
47
+ ```bash
48
+ src/middleware.ts
49
+ ```
50
+
51
+ Цей middleware відповідає за переписування маршрутів, коли `prefixDefault` встановлено в `false`. Наприклад, він переписує `/en/about` на `/about`.
52
+
53
+ ### 3. Шаблони URL залежно від конфігурації
54
+
55
+ #### Конфігурація за замовчуванням (`prefixDefault: false`, `noPrefix: false`)
56
+
57
+ - Англійська: `/about`
58
+ - Французька: `/fr/about`
59
+ - Іспанська: `/es/about`
60
+
61
+ #### Якщо `prefixDefault: true`
62
+
63
+ - Англійська: `/en/about`
64
+ - Французька: `/fr/about`
65
+ - Іспанська: `/es/about`
66
+
67
+ #### Якщо `noPrefix: true`
68
+
69
+ - Англійська: `/about`
70
+ - Французька: `/about`
71
+ - Іспанська: `/about`
72
+
73
+ Для докладнішої інформації про ці параметри конфігурації перегляньте [Документацію з конфігурації](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md).
@@ -0,0 +1,181 @@
1
+ ---
2
+ createdAt: 2025-05-20
3
+ updatedAt: 2025-06-29
4
+ title: Отримую помилку, пов'язану з підпакетами `@intlayer/*`
5
+ description: Виправлення помилки, пов'язаної з підпакетами @intlayer/*.
6
+ keywords:
7
+ - @intlayer/*
8
+ - підпакети
9
+ - intlayer
10
+ slugs:
11
+ - frequent-questions
12
+ - package-version-error
13
+ ---
14
+
15
+ # Отримую помилку, пов'язану з підпакетами `@intlayer/*`
16
+
17
+ Ця проблема зазвичай виникає після оновлення пакетів Intlayer.
18
+
19
+ Приклад повідомлення про помилку:
20
+
21
+ ```bash
22
+ Error: Cannot find module '@intlayer/types'
23
+ ```
24
+
25
+ ```bash
26
+ TypeError: (0 , __intlayer_config_client.colorize) is not a function
27
+
28
+ at import { colorize } from '@intlayer/config';
29
+ ```
30
+
31
+ ```bash
32
+ ✖ ERROR No matching export in "node_modules/@intlayer/config/dist/esm/client.mjs" for import "clearModuleCache"
33
+
34
+ node_modules/@intlayer/unmerged-dictionaries-entry/dist/esm/index.mjs:3:9:
35
+ 3 | import { clearModuleCache, configESMxCJSRequire } from "@intlayer/config";
36
+ | ~~~~~~~~~~~~~~~~
37
+
38
+ ✖ ERROR No matching export in "node_modules/@intlayer/config/dist/esm/client.mjs" for import "configESMxCJSRequire"
39
+
40
+ node_modules/@intlayer/unmerged-dictionaries-entry/dist/esm/index.mjs:3:27:
41
+ 3 | import { clearModuleCache, configESMxCJSRequire } from "@intlayer/config";
42
+ | ~~~~~~~~~~~~~~~~~~~~
43
+ ```
44
+
45
+ ## Причина
46
+
47
+ Базові пакети, такі як `intlayer`, `react-intlayer`, `react-native-intlayer`, `vue-intlayer`, повторно використовують ті самі суб-пакети `@intlayer/config`, `@intlayer/core`, `@intlayer/types`, щоб уникнути дублювання коду.
48
+
49
+ Між двома версіями експорти підпакетів не обов'язково збігаються. Щоб зменшити цю проблему, intlayer прив'язує версії підпакетів до версії головного пакета.
50
+
51
+ > Наприклад: `intlayer@1.0.0` використовує `@intlayer/config@1.0.0`, `@intlayer/core@1.0.0`, `@intlayer/types@1.0.0`
52
+
53
+ > (За винятком `@intlayer/swc`), підпакети `@intlayer/*` не призначені для прямого використання. Тому рекомендується не встановлювати їх безпосередньо.
54
+
55
+ ## Вирішення
56
+
57
+ 1. Переконайтеся, що версії головного пакета та підпакетів однакові.
58
+
59
+ ```json5
60
+ {
61
+ "dependencies": {
62
+ "intlayer": "7.0.1",
63
+ "react-intlayer": "7.0.0", // Неправильна версія, має бути 7.0.1
64
+ },
65
+ "devDependencies": {
66
+ "intlayer-editor": "7.0.1",
67
+ },
68
+ }
69
+ ```
70
+
71
+ 2. Спробуйте видалити lockfile та папку node_modules і перевстановити залежності.
72
+
73
+ Інколи пакетний менеджер зберігає стару версію sub-packages у lockfile або в кеші. Щоб виправити це, можна спробувати видалити lockfile та папку node_modules і перевстановити залежності.
74
+
75
+ ```bash
76
+ rm -rf package-lock.json node_modules
77
+
78
+ npm install # або yarn install або pnpm install або bun pm install
79
+ ```
80
+
81
+ 3. Перевірте версії локальних залежностей
82
+
83
+ Може статися, що ваш пакетний менеджер зберігає стару версію sub-packages у lockfile або в кеші.
84
+
85
+ Приклад `intlayer@7.0.0` > `@intlayer/config@7.0.0` > `@intlayer/dictionary-entry@6.0.0`.
86
+
87
+ Щоб виявити невідповідність між версіями локальних залежностей і версіями sub-packages, ви можете використати наступну команду:
88
+
89
+ ```bash
90
+ npm list --depth=3 | grep intlayer
91
+ ```
92
+
93
+ ```bash
94
+ yarn list --depth=3 | grep intlayer
95
+ ```
96
+
97
+ ```bash
98
+ pnpm list --depth=3 | grep intlayer
99
+ ```
100
+
101
+ ```bash
102
+ bun pm ls --depth=3 | grep intlayer
103
+ ```
104
+
105
+ > На Windows замініть `| grep intlayer` на `| findstr intlayer` або використайте PowerShell з `Select-String -Pattern "intlayer"`.
106
+
107
+ 4. Перевірте глобальну інсталяцію
108
+
109
+ Ми рекомендуємо встановити `intlayer` або `intlayer-cli` глобально, щоб мати доступ до CLI-команд. Якщо глобальна версія відрізняється від локальної версії, пакетний менеджер може обрати невірну версію.
110
+
111
+ **Перевірити, чи пакет встановлено глобально**
112
+
113
+ ```bash
114
+ npm list -g --depth=3 | grep intlayer
115
+ ```
116
+
117
+ ```bash
118
+ yarn global list --depth=3 | grep intlayer
119
+ ```
120
+
121
+ ```bash
122
+ pnpm list -g --depth=3 | grep intlayer
123
+ ```
124
+
125
+ ```bash
126
+ bun pm ls -g --depth=3 | grep intlayer
127
+ ```
128
+
129
+ > На Windows замініть `| grep intlayer` на `| findstr intlayer` або використовуйте PowerShell з `Select-String -Pattern "intlayer"`.
130
+
131
+ **Виправте потенційні конфлікти глобальних залежностей**
132
+
133
+ ```bash
134
+ npm uninstall -g intlayer intlayer-cli
135
+ ```
136
+
137
+ ```bash
138
+ yarn global remove intlayer intlayer-cli
139
+ ```
140
+
141
+ ```bash
142
+ pnpm remove -g intlayer intlayer-cli
143
+ ```
144
+
145
+ ```bash
146
+ bun pm rm -g intlayer intlayer-cli
147
+ ```
148
+
149
+ 5. Спробуйте очистити кеш
150
+
151
+ У деяких середовищах, таких як Docker, GitHub Actions або хостинг-платформи на зразок Vercel, може бути задіяний кеш. Спробуйте очистити кеш і повторити встановлення.
152
+
153
+ Ви також можете очистити кеш вашого пакетного менеджера за допомогою наступних команд:
154
+
155
+ ```bash
156
+ npm cache clean --force
157
+ ```
158
+
159
+ ```bash
160
+ yarn cache clean
161
+ ```
162
+
163
+ ```bash
164
+ pnpm cache clean
165
+ ```
166
+
167
+ ```bash
168
+ bun pm cache clean
169
+ ```
170
+
171
+ 6. Спробуйте видалити папку `.intlayer`
172
+
173
+ Intlayer кешує зібрану версію самої себе в папці `.intlayer/cache`.
174
+
175
+ Цей кеш може бути пошкоджений, якщо версія intlayer відрізняється від версії, збереженої в кеші.
176
+
177
+ Ви можете спробувати видалити папку `.intlayer` і повторити збірку.
178
+
179
+ ```bash
180
+ rm -rf .intlayer
181
+ ```
@@ -0,0 +1,44 @@
1
+ ---
2
+ createdAt: 2025-05-20
3
+ updatedAt: 2025-06-29
4
+ title: Статичний vs динамічний рендеринг з i18n у Next.js
5
+ description: Дізнайтеся, як використовувати статичний та динамічний рендеринг з i18n у Next.js.
6
+ keywords:
7
+ - статичний
8
+ - динамічний
9
+ - рендеринг
10
+ - i18n
11
+ - next.js
12
+ - next-intl
13
+ - intlayer
14
+ - фреймворк
15
+ - middleware
16
+ - конфігурація
17
+ slugs:
18
+ - frequent-questions
19
+ - static-rendering
20
+ ---
21
+
22
+ # Статичний vs динамічний рендеринг з i18n у Next.js
23
+
24
+ ## Проблема з **next-intl**
25
+
26
+ - **Що відбувається?**
27
+ Коли ви використовуєте `useTranslations`, `getTranslations`, або будь-який хелпер next-intl _всередині Server Component_ в застосунку з i18n-маршрутизацією (`/en/…`, `/fr/…`), Next.js позначає весь маршрут як **dynamic**. ([Next Intl][1])
28
+
29
+ - **Чому?**
30
+ next-intl визначає поточну локаль з заголовка, доступного лише в запиті (`x-next-intl-locale`) через `headers()`. Оскільки `headers()` — це **динамічний API**, будь-який компонент, який до нього звертається, втрачає статичну оптимізацію. ([Next Intl][1], [Next.js][2])
31
+
32
+ - **Офіційне рішення (boilerplate)**
33
+ 1. Експортуйте `generateStaticParams` для кожної підтримуваної локалі.
34
+ 2. Викликайте `setRequestLocale(locale)` у **кожному** layout/page _перед_ тим, як викликати `useTranslations`. ([Next Intl][1])
35
+ Це усуває залежність від заголовка, але додає додатковий код для підтримки та використовує нестабільний API у продакшені.
36
+
37
+ ## Як **intlayer** обходить проблему
38
+
39
+ **Дизайн-рішення**
40
+
41
+ 1. **Тільки параметр маршруту (route-param only)** – локаль береться з сегмента URL `[locale]`, який Next.js вже передає кожній сторінці.
42
+ 2. **Бандли на етапі компіляції** – Переклади імпортуються як звичайні ES-модулі, тож вони піддаються tree-shaking і вбудовуються під час збірки.
43
+ 3. **Без динамічних API** – `useT()` читає з React context, а не з `headers()` або `cookies()`.
44
+ 4. **Жодної додаткової конфігурації** – Як тільки ваші сторінки розміщені під `app/[locale]/`, Next.js автоматично генерує по одному HTML‑файлу на кожну локаль.
@@ -0,0 +1,55 @@
1
+ ---
2
+ createdAt: 2025-05-20
3
+ updatedAt: 2025-06-29
4
+ title: Чи можна перекласти шлях URL?
5
+ description: Дізнайтеся, як перекласти шлях URL.
6
+ keywords:
7
+ - array
8
+ - content
9
+ - declaration
10
+ - intlayer
11
+ - middleware
12
+ - proxy
13
+ - rewrite
14
+ - prefix
15
+ - locale
16
+ - url
17
+ slugs:
18
+ - frequent-questions
19
+ - translated-path-url
20
+ ---
21
+
22
+ # Чи можливо перекласти URL наступним чином:
23
+
24
+ ```bash
25
+ en -> /product (без префікса) або /en/product (з префіксом)
26
+ fr -> /fr/produit
27
+ es -> /es/producto
28
+ ```
29
+
30
+ На жаль, Intlayer не дозволяє перекладати URL так, як зазначено вище. Щоб досягти цього, ви повинні використовувати власний middleware або proxy для перезапису (rewrite) URL.
31
+
32
+ Але ви можете використовувати функцію `getMultilingualUrl`, щоб вставити префікс у URL для заданої локалі.
33
+
34
+ ```ts
35
+ import { getMultilingualUrl, Locales } from "intlayer";
36
+
37
+ const url = getMultilingualUrl("/product");
38
+
39
+ /**
40
+ * en -> /product (без префікса) або /en/product (з префіксом)
41
+ * fr -> /fr/product
42
+ * es -> /es/product
43
+ */
44
+ console.log(url);
45
+ ```
46
+
47
+ Або `getLocalizedUrl`
48
+
49
+ ```ts
50
+ import { getLocalizedUrl, Locales } from "intlayer";
51
+
52
+ const url = getLocalizedUrl("/product", Locales.FRENCH);
53
+
54
+ console.log(url); // виведе: /fr/product
55
+ ```
@@ -0,0 +1,97 @@
1
+ ---
2
+ createdAt: 2025-05-20
3
+ updatedAt: 2025-06-29
4
+ title: Невідома команда
5
+ description: Дізнайтеся, як виправити помилку невідомої команди.
6
+ keywords:
7
+ - невідома
8
+ - команда
9
+ - помилка
10
+ - intlayer
11
+ - fill
12
+ - build
13
+ - verbose
14
+ - термінал
15
+ - перезапуск
16
+ - локально
17
+ slugs:
18
+ - frequent-questions
19
+ - unknown-command
20
+ ---
21
+
22
+ # помилка: невідома команда fill / build / тощо
23
+
24
+ Якщо `npx intlayer fill --verbose` видає:
25
+
26
+ ```
27
+ error: unknown command 'fill'
28
+ ```
29
+
30
+ але ви впевнені, що команда `fill` _повинна_ існувати, ось кроки для вирішення:
31
+
32
+ ## 1. **Переконайтеся, що ви використовуєте найновішу версію**
33
+
34
+ Запустіть:
35
+
36
+ ```bash
37
+ npx intlayer --version # поточна локальна версія intlayer
38
+ npx intlayer@latest --version # остання доступна версія intlayer
39
+ ```
40
+
41
+ Це змушує `npx` завантажити найновішу версію. Потім спробуйте ще раз:
42
+
43
+ ```bash
44
+ npx intlayer@latest build --verbose
45
+ ```
46
+
47
+ ## 2. **Перевірте, чи команда зареєстрована**
48
+
49
+ Ви можете перевірити за допомогою:
50
+
51
+ ```bash
52
+ npx intlayer --help # надає інформацію про команди
53
+ ```
54
+
55
+ Перевірте, чи з'являється команда у списку команд.
56
+
57
+ Перейдіть у репозиторій та підтвердьте, що ваша команда експортується й зареєстрована в точці входу CLI. Intlayer використовує `commander` як фреймворк.
58
+
59
+ Код, що стосується CLI:
60
+ https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/cli/src/cli.ts
61
+
62
+ ## 4. **Перезапустіть термінал**
63
+
64
+ Іноді потрібно перезапустити термінал, щоб він розпізнав нові команди.
65
+
66
+ ## 5. **Якщо ви розробляєте `intlayer`, перебудуйте та підключіть його**
67
+
68
+ Якщо ви розробляєте `intlayer` локально:
69
+
70
+ ```bash
71
+ # У директорії intlayer
72
+ npm install
73
+ npm run build
74
+ npm link
75
+ ```
76
+
77
+ Потім в іншому терміналі:
78
+
79
+ ```bash
80
+ intlayer fill --verbose
81
+ ```
82
+
83
+ Це використовує локальну версію, над якою ви працюєте.
84
+
85
+ ## 6. **Очистіть кеш npx (якщо ви застрягли на старішій версії)**
86
+
87
+ ```bash
88
+ npx clear-npx-cache
89
+ ```
90
+
91
+ Або вручну видаліть кешовані пакети intlayer:
92
+
93
+ ```bash
94
+ rm -rf ~/.npm/_npx
95
+ ```
96
+
97
+ Перевірте еквівалентні команди, якщо ви використовуєте pnpm, yarn, bun або інший пакетний менеджер
@@ -0,0 +1,77 @@
1
+ ---
2
+ createdAt: 2026-01-11
3
+ updatedAt: 2026-01-11
4
+ title: `vite-env-only` & Intlayer – lỗi từ chối `node:fs` dương tính giả
5
+ description: Tại sao vite-env-only báo một import `node:fs` bị từ chối khi dùng Intlayer + React-Router + Vite và phải làm gì.
6
+ keywords:
7
+ - intlayer
8
+ - vite
9
+ - react-router
10
+ - vite-env-only
11
+ - node:fs
12
+ - import bị từ chối
13
+ - alias
14
+ - bundle phía client
15
+ slugs:
16
+ - frequent-questions
17
+ - vite-env-only-node-fs-false-positive
18
+ ---
19
+
20
+ # vite-env-only từ chối `node:fs` với Intlayer
21
+
22
+ Nếu bạn đã sử dụng plugin **vite-env-only** (như được đề cập trong các gợi ý React-Router v7 cũ hơn) và thấy:
23
+
24
+ ```bash
25
+
26
+ Error: [vite-env-only] Import denied
27
+
28
+ * Denied by specifier pattern: /^node:/
29
+ * Importer: index.html
30
+ * Import: "node:fs"
31
+
32
+ ```
33
+
34
+ …mặc dù **không có `node:fs` trong bundle phía client của bạn**, đây là một **false positive (dương tính giả)**.
35
+
36
+ ## Nguyên nhân gây ra
37
+
38
+ `vite-env-only` chạy một kiểm tra dựa trên Babel **rất sớm trong quá trình phân giải graph của Vite**, _trước khi_:
39
+
40
+ - aliasing (bao gồm ánh xạ browser vs node của Intlayer),
41
+ - dead-code elimination,
42
+ - SSR vs client resolution,
43
+ - các module ảo như của React-Router.
44
+
45
+ Các package của Intlayer chứa mã có thể chạy trên cả Node và trình duyệt. Ở một giai đoạn _trung gian_, một builtin của Node như `node:fs` có thể xuất hiện trong graph **trước khi** Vite loại bỏ nó khỏi build phía client. `vite-env-only` nhìn thấy điều đó và báo lỗi ngay lập tức, mặc dù bundle cuối cùng không chứa nó.
46
+
47
+ ## React-Router và Server Modules
48
+
49
+ Trong tài liệu của React-Router về **server module conventions**
50
+ (https://reactrouter.com/api/framework-conventions/server-modules), nhóm **rõ ràng khuyến nghị sử dụng `vite-env-only`** để ngăn các import chỉ dành cho server bị rò rỉ vào bundle phía client.
51
+
52
+ Tuy nhiên, những quy ước đó dựa vào aliasing của Vite, conditional exports và tree-shaking để loại bỏ mã chỉ dành cho server. Trong khi aliasing và conditional exports đã được áp dụng, một số tiện ích dựa trên Node vẫn còn xuất hiện trong các package như `@intlayer/core` ở giai đoạn đó (mặc dù chúng không bao giờ được import vào client). Vì tree-shaking chưa chạy, các hàm đó vẫn bị Babel phân tích cú pháp, và `vite-env-only` phát hiện các import `node:` của chúng và báo dương tính giả — mặc dù chúng đã được loại bỏ chính xác khỏi bundle cuối cùng của client.
53
+
54
+ ## Cách khắc phục / giải pháp tạm thời
55
+
56
+ ### Khuyến nghị: Gỡ bỏ `vite-env-only`
57
+
58
+ Chỉ cần gỡ plugin. Trong nhiều trường hợp bạn không cần nó — Vite đã xử lý việc phân biệt imports client và server thông qua cơ chế resolution của nó.
59
+
60
+ Điều này sửa lỗi báo sai `node:fs` mà không cần thay đổi Intlayer.
61
+
62
+ ### Thay vào đó, kiểm tra bản build cuối cùng
63
+
64
+ Nếu bạn vẫn muốn đảm bảo không có built-in của Node trong client, hãy làm điều đó **sau khi build**, ví dụ:
65
+
66
+ ```bash
67
+ pnpm build
68
+ grep -R "node:" dist/
69
+ ```
70
+
71
+ Nếu không có kết quả, các bundle client của bạn sạch.
72
+
73
+ ## Tóm tắt
74
+
75
+ - `vite-env-only` có thể báo lỗi về `node:fs` vì nó kiểm tra quá sớm.
76
+ - Vite + Intlayer + quy ước server modules của React-Router thường loại bỏ tham chiếu chỉ dành cho server một cách chính xác.
77
+ - Gỡ plugin hoặc kiểm tra _kết quả cuối cùng_ thường là giải pháp tốt nhất.