@intlayer/docs 7.5.12 → 7.5.14

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 (229) hide show
  1. package/blog/ar/per-component_vs_centralized_i18n.md +248 -0
  2. package/blog/de/per-component_vs_centralized_i18n.md +248 -0
  3. package/blog/en/_per-component_vs_centralized_i18n.md +252 -0
  4. package/blog/en/per-component_vs_centralized_i18n.md +248 -0
  5. package/blog/en-GB/per-component_vs_centralized_i18n.md +247 -0
  6. package/blog/es/per-component_vs_centralized_i18n.md +245 -0
  7. package/blog/fr/per-component_vs_centralized_i18n.md +245 -0
  8. package/blog/hi/per-component_vs_centralized_i18n.md +249 -0
  9. package/blog/id/per-component_vs_centralized_i18n.md +248 -0
  10. package/blog/it/per-component_vs_centralized_i18n.md +247 -0
  11. package/blog/ja/per-component_vs_centralized_i18n.md +247 -0
  12. package/blog/ko/per-component_vs_centralized_i18n.md +246 -0
  13. package/blog/pl/per-component_vs_centralized_i18n.md +247 -0
  14. package/blog/pt/per-component_vs_centralized_i18n.md +246 -0
  15. package/blog/ru/per-component_vs_centralized_i18n.md +251 -0
  16. package/blog/tr/per-component_vs_centralized_i18n.md +244 -0
  17. package/blog/uk/compiler_vs_declarative_i18n.md +224 -0
  18. package/blog/uk/i18n_using_next-i18next.md +1086 -0
  19. package/blog/uk/i18n_using_next-intl.md +760 -0
  20. package/blog/uk/index.md +69 -0
  21. package/blog/uk/internationalization_and_SEO.md +273 -0
  22. package/blog/uk/intlayer_with_i18next.md +211 -0
  23. package/blog/uk/intlayer_with_next-i18next.md +202 -0
  24. package/blog/uk/intlayer_with_next-intl.md +203 -0
  25. package/blog/uk/intlayer_with_react-i18next.md +200 -0
  26. package/blog/uk/intlayer_with_react-intl.md +202 -0
  27. package/blog/uk/intlayer_with_vue-i18n.md +206 -0
  28. package/blog/uk/l10n_platform_alternative/Lokalise.md +80 -0
  29. package/blog/uk/l10n_platform_alternative/crowdin.md +80 -0
  30. package/blog/uk/l10n_platform_alternative/phrase.md +78 -0
  31. package/blog/uk/list_i18n_technologies/CMS/drupal.md +143 -0
  32. package/blog/uk/list_i18n_technologies/CMS/wix.md +167 -0
  33. package/blog/uk/list_i18n_technologies/CMS/wordpress.md +189 -0
  34. package/blog/uk/list_i18n_technologies/frameworks/angular.md +125 -0
  35. package/blog/uk/list_i18n_technologies/frameworks/flutter.md +128 -0
  36. package/blog/uk/list_i18n_technologies/frameworks/react-native.md +217 -0
  37. package/blog/uk/list_i18n_technologies/frameworks/react.md +155 -0
  38. package/blog/uk/list_i18n_technologies/frameworks/svelte.md +145 -0
  39. package/blog/uk/list_i18n_technologies/frameworks/vue.md +144 -0
  40. package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +1499 -0
  41. package/blog/uk/nextjs-multilingual-seo-comparison.md +360 -0
  42. package/blog/uk/per-component_vs_centralized_i18n.md +248 -0
  43. package/blog/uk/rag_powered_documentation_assistant.md +288 -0
  44. package/blog/uk/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
  45. package/blog/uk/vue-i18n_vs_intlayer.md +279 -0
  46. package/blog/uk/what_is_internationalization.md +167 -0
  47. package/blog/vi/per-component_vs_centralized_i18n.md +246 -0
  48. package/blog/zh/per-component_vs_centralized_i18n.md +248 -0
  49. package/dist/cjs/common.cjs.map +1 -1
  50. package/dist/cjs/generated/blog.entry.cjs +20 -0
  51. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  52. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  53. package/dist/cjs/generated/frequentQuestions.entry.cjs +20 -0
  54. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  55. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  56. package/dist/esm/common.mjs.map +1 -1
  57. package/dist/esm/generated/blog.entry.mjs +20 -0
  58. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  59. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  60. package/dist/esm/generated/frequentQuestions.entry.mjs +20 -0
  61. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  62. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  63. package/dist/types/generated/blog.entry.d.ts +1 -0
  64. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  65. package/dist/types/generated/frequentQuestions.entry.d.ts +1 -0
  66. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  67. package/docs/ar/configuration.md +6 -1
  68. package/docs/ar/dictionary/content_file.md +6 -1
  69. package/docs/de/configuration.md +6 -1
  70. package/docs/de/dictionary/content_file.md +6 -1
  71. package/docs/en/configuration.md +6 -1
  72. package/docs/en/dictionary/content_file.md +6 -1
  73. package/docs/en-GB/configuration.md +6 -1
  74. package/docs/en-GB/dictionary/content_file.md +3 -1
  75. package/docs/es/configuration.md +6 -1
  76. package/docs/es/dictionary/content_file.md +6 -1
  77. package/docs/fr/configuration.md +6 -1
  78. package/docs/fr/dictionary/content_file.md +3 -1
  79. package/docs/hi/configuration.md +6 -1
  80. package/docs/hi/dictionary/content_file.md +3 -1
  81. package/docs/id/configuration.md +6 -1
  82. package/docs/id/dictionary/content_file.md +3 -1
  83. package/docs/it/configuration.md +6 -1
  84. package/docs/it/dictionary/content_file.md +3 -1
  85. package/docs/ja/configuration.md +6 -1
  86. package/docs/ja/dictionary/content_file.md +3 -1
  87. package/docs/ko/configuration.md +6 -1
  88. package/docs/ko/dictionary/content_file.md +3 -1
  89. package/docs/pl/configuration.md +3 -1
  90. package/docs/pl/dictionary/content_file.md +3 -1
  91. package/docs/pt/configuration.md +6 -1
  92. package/docs/pt/dictionary/content_file.md +3 -1
  93. package/docs/ru/configuration.md +6 -1
  94. package/docs/ru/dictionary/content_file.md +6 -1
  95. package/docs/tr/configuration.md +6 -1
  96. package/docs/tr/dictionary/content_file.md +3 -1
  97. package/docs/uk/CI_CD.md +198 -0
  98. package/docs/uk/autoFill.md +307 -0
  99. package/docs/uk/bundle_optimization.md +185 -0
  100. package/docs/uk/cli/build.md +64 -0
  101. package/docs/uk/cli/ci.md +137 -0
  102. package/docs/uk/cli/configuration.md +63 -0
  103. package/docs/uk/cli/debug.md +46 -0
  104. package/docs/uk/cli/doc-review.md +43 -0
  105. package/docs/uk/cli/doc-translate.md +132 -0
  106. package/docs/uk/cli/editor.md +28 -0
  107. package/docs/uk/cli/fill.md +130 -0
  108. package/docs/uk/cli/index.md +190 -0
  109. package/docs/uk/cli/init.md +84 -0
  110. package/docs/uk/cli/list.md +90 -0
  111. package/docs/uk/cli/list_projects.md +128 -0
  112. package/docs/uk/cli/live.md +41 -0
  113. package/docs/uk/cli/login.md +157 -0
  114. package/docs/uk/cli/pull.md +78 -0
  115. package/docs/uk/cli/push.md +98 -0
  116. package/docs/uk/cli/sdk.md +71 -0
  117. package/docs/uk/cli/test.md +76 -0
  118. package/docs/uk/cli/transform.md +65 -0
  119. package/docs/uk/cli/version.md +24 -0
  120. package/docs/uk/cli/watch.md +37 -0
  121. package/docs/uk/configuration.md +742 -0
  122. package/docs/uk/dictionary/condition.md +237 -0
  123. package/docs/uk/dictionary/content_file.md +1134 -0
  124. package/docs/uk/dictionary/enumeration.md +245 -0
  125. package/docs/uk/dictionary/file.md +232 -0
  126. package/docs/uk/dictionary/function_fetching.md +212 -0
  127. package/docs/uk/dictionary/gender.md +273 -0
  128. package/docs/uk/dictionary/insertion.md +187 -0
  129. package/docs/uk/dictionary/markdown.md +383 -0
  130. package/docs/uk/dictionary/nesting.md +273 -0
  131. package/docs/uk/dictionary/translation.md +332 -0
  132. package/docs/uk/formatters.md +595 -0
  133. package/docs/uk/how_works_intlayer.md +256 -0
  134. package/docs/uk/index.md +175 -0
  135. package/docs/uk/interest_of_intlayer.md +297 -0
  136. package/docs/uk/intlayer_CMS.md +569 -0
  137. package/docs/uk/intlayer_visual_editor.md +292 -0
  138. package/docs/uk/intlayer_with_angular.md +710 -0
  139. package/docs/uk/intlayer_with_astro.md +256 -0
  140. package/docs/uk/intlayer_with_create_react_app.md +1258 -0
  141. package/docs/uk/intlayer_with_express.md +429 -0
  142. package/docs/uk/intlayer_with_fastify.md +446 -0
  143. package/docs/uk/intlayer_with_lynx+react.md +548 -0
  144. package/docs/uk/intlayer_with_nestjs.md +283 -0
  145. package/docs/uk/intlayer_with_next-i18next.md +640 -0
  146. package/docs/uk/intlayer_with_next-intl.md +456 -0
  147. package/docs/uk/intlayer_with_nextjs_page_router.md +1541 -0
  148. package/docs/uk/intlayer_with_nuxt.md +711 -0
  149. package/docs/uk/intlayer_with_react_router_v7.md +600 -0
  150. package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +669 -0
  151. package/docs/uk/intlayer_with_svelte_kit.md +579 -0
  152. package/docs/uk/intlayer_with_tanstack.md +818 -0
  153. package/docs/uk/intlayer_with_vite+preact.md +1748 -0
  154. package/docs/uk/intlayer_with_vite+react.md +1449 -0
  155. package/docs/uk/intlayer_with_vite+solid.md +302 -0
  156. package/docs/uk/intlayer_with_vite+svelte.md +520 -0
  157. package/docs/uk/intlayer_with_vite+vue.md +1113 -0
  158. package/docs/uk/introduction.md +222 -0
  159. package/docs/uk/locale_mapper.md +242 -0
  160. package/docs/uk/mcp_server.md +211 -0
  161. package/docs/uk/packages/express-intlayer/t.md +465 -0
  162. package/docs/uk/packages/intlayer/getEnumeration.md +159 -0
  163. package/docs/uk/packages/intlayer/getHTMLTextDir.md +121 -0
  164. package/docs/uk/packages/intlayer/getLocaleLang.md +81 -0
  165. package/docs/uk/packages/intlayer/getLocaleName.md +135 -0
  166. package/docs/uk/packages/intlayer/getLocalizedUrl.md +338 -0
  167. package/docs/uk/packages/intlayer/getMultilingualUrls.md +359 -0
  168. package/docs/uk/packages/intlayer/getPathWithoutLocale.md +75 -0
  169. package/docs/uk/packages/intlayer/getPrefix.md +213 -0
  170. package/docs/uk/packages/intlayer/getTranslation.md +190 -0
  171. package/docs/uk/packages/intlayer/getTranslationContent.md +189 -0
  172. package/docs/uk/packages/next-intlayer/t.md +365 -0
  173. package/docs/uk/packages/next-intlayer/useDictionary.md +276 -0
  174. package/docs/uk/packages/next-intlayer/useIntlayer.md +263 -0
  175. package/docs/uk/packages/next-intlayer/useLocale.md +166 -0
  176. package/docs/uk/packages/react-intlayer/t.md +311 -0
  177. package/docs/uk/packages/react-intlayer/useDictionary.md +295 -0
  178. package/docs/uk/packages/react-intlayer/useI18n.md +250 -0
  179. package/docs/uk/packages/react-intlayer/useIntlayer.md +251 -0
  180. package/docs/uk/packages/react-intlayer/useLocale.md +210 -0
  181. package/docs/uk/per_locale_file.md +345 -0
  182. package/docs/uk/plugins/sync-json.md +398 -0
  183. package/docs/uk/readme.md +265 -0
  184. package/docs/uk/releases/v6.md +305 -0
  185. package/docs/uk/releases/v7.md +624 -0
  186. package/docs/uk/roadmap.md +346 -0
  187. package/docs/uk/testing.md +204 -0
  188. package/docs/vi/configuration.md +6 -1
  189. package/docs/vi/dictionary/content_file.md +6 -1
  190. package/docs/zh/configuration.md +6 -1
  191. package/docs/zh/dictionary/content_file.md +6 -1
  192. package/frequent_questions/ar/error-vite-env-only.md +77 -0
  193. package/frequent_questions/de/error-vite-env-only.md +77 -0
  194. package/frequent_questions/en/error-vite-env-only.md +77 -0
  195. package/frequent_questions/en-GB/error-vite-env-only.md +77 -0
  196. package/frequent_questions/es/error-vite-env-only.md +76 -0
  197. package/frequent_questions/fr/error-vite-env-only.md +77 -0
  198. package/frequent_questions/hi/error-vite-env-only.md +77 -0
  199. package/frequent_questions/id/error-vite-env-only.md +77 -0
  200. package/frequent_questions/it/error-vite-env-only.md +77 -0
  201. package/frequent_questions/ja/error-vite-env-only.md +77 -0
  202. package/frequent_questions/ko/error-vite-env-only.md +77 -0
  203. package/frequent_questions/pl/error-vite-env-only.md +77 -0
  204. package/frequent_questions/pt/error-vite-env-only.md +77 -0
  205. package/frequent_questions/ru/error-vite-env-only.md +77 -0
  206. package/frequent_questions/tr/error-vite-env-only.md +77 -0
  207. package/frequent_questions/uk/SSR_Next_no_[locale].md +104 -0
  208. package/frequent_questions/uk/array_as_content_declaration.md +72 -0
  209. package/frequent_questions/uk/build_dictionaries.md +58 -0
  210. package/frequent_questions/uk/build_error_CI_CD.md +74 -0
  211. package/frequent_questions/uk/bun_set_up.md +53 -0
  212. package/frequent_questions/uk/customized_locale_list.md +64 -0
  213. package/frequent_questions/uk/domain_routing.md +113 -0
  214. package/frequent_questions/uk/error-vite-env-only.md +77 -0
  215. package/frequent_questions/uk/esbuild_error.md +29 -0
  216. package/frequent_questions/uk/get_locale_cookie.md +142 -0
  217. package/frequent_questions/uk/intlayer_command_undefined.md +155 -0
  218. package/frequent_questions/uk/locale_incorect_in_url.md +73 -0
  219. package/frequent_questions/uk/package_version_error.md +181 -0
  220. package/frequent_questions/uk/static_rendering.md +44 -0
  221. package/frequent_questions/uk/translated_path_url.md +55 -0
  222. package/frequent_questions/uk/unknown_command.md +97 -0
  223. package/frequent_questions/vi/error-vite-env-only.md +77 -0
  224. package/frequent_questions/zh/error-vite-env-only.md +77 -0
  225. package/legal/uk/privacy_notice.md +83 -0
  226. package/legal/uk/terms_of_service.md +55 -0
  227. package/package.json +9 -9
  228. package/src/generated/blog.entry.ts +20 -0
  229. package/src/generated/frequentQuestions.entry.ts +20 -0
@@ -0,0 +1,359 @@
1
+ ---
2
+ createdAt: 2025-08-23
3
+ updatedAt: 2025-11-16
4
+ title: Документація функції getMultilingualUrls | intlayer
5
+ description: Дізнайтеся, як використовувати функцію getMultilingualUrls у пакеті intlayer
6
+ keywords:
7
+ - getMultilingualUrls
8
+ - переклад
9
+ - Intlayer
10
+ - intlayer
11
+ - інтернаціоналізація
12
+ - документація
13
+ - Next.js
14
+ - JavaScript
15
+ - React
16
+ slugs:
17
+ - doc
18
+ - packages
19
+ - intlayer
20
+ - getMultilingualUrls
21
+ history:
22
+ - version: 7.1.0
23
+ date: 2025-11-16
24
+ changes: Refactored to use options parameter with mode instead of prefixDefault
25
+ - version: 5.5.10
26
+ date: 2025-06-29
27
+ changes: Init history
28
+ ---
29
+
30
+ # Документація: функція `getMultilingualUrls` в `intlayer`
31
+
32
+ ## Опис
33
+
34
+ Функція `getMultilingualUrls` генерує відображення багатомовних URL, додаючи префікс локалі до заданого URL для кожної підтримуваної локалі. Вона може обробляти як абсолютні, так і відносні URL, застосовуючи відповідний префікс локалі на основі наданої конфігурації або значень за замовчуванням.
35
+
36
+ **Ключові особливості:**
37
+
38
+ - Потрібен лише один параметр: `url`
39
+ - Необов'язковий об'єкт `options` з полями `locales`, `defaultLocale` та `mode`
40
+ - Використовує конфігурацію інтернаціоналізації вашого проєкту за замовчуванням
41
+ - Підтримує кілька режимів маршрутизації: `prefix-no-default`, `prefix-all`, `no-prefix` та `search-params`
42
+ - Повертає об'єкт-мапу, де ключами є всі локалі, а значеннями — відповідні URL
43
+
44
+ ---
45
+
46
+ ## Підпис функції
47
+
48
+ ```typescript
49
+ getMultilingualUrls(
50
+ url: string, // Обов'язково
51
+ options?: { // Необов'язково
52
+ locales?: Locales[];
53
+ defaultLocale?: Locales;
54
+ mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params';
55
+ }
56
+ ): StrictModeLocaleMap<string>
57
+ ```
58
+
59
+ ---
60
+
61
+ ## Параметри
62
+
63
+ ### Обов'язкові параметри
64
+
65
+ - `url: string`
66
+ - **Опис**: Початковий рядок URL, до якого будуть додані префікси локалей.
67
+ - **Тип**: `string`
68
+ - **Обов'язково**: Так
69
+
70
+ ### Необов'язкові параметри
71
+
72
+ - `options?: object`
73
+ - **Опис**: Об'єкт конфігурації для поведінки локалізації URL.
74
+ - **Тип**: `object`
75
+ - **Обов'язково**: Ні (Необов'язково)
76
+
77
+ - `options.locales?: Locales[]`
78
+ - **Опис**: Масив підтримуваних локалей. Якщо не вказано, використовуються налаштовані локалі з конфігурації вашого проєкту.
79
+ - **Тип**: `Locales[]`
80
+ - **За замовчуванням**: [`Конфігурація проєкту`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md#middleware)
81
+
82
+ - `options.defaultLocale?: Locales`
83
+ - **Опис**: Мова за замовчуванням для додатка. Якщо не вказано, використовується мова за замовчуванням, налаштована у конфігурації вашого проєкту.
84
+ - **Тип**: `Locales`
85
+ - **За замовчуванням**: [`Конфігурація проєкту`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md#middleware)
86
+
87
+ - `options.mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
88
+ - **Опис**: Режим маршрутизації URL для обробки локалі. Якщо не вказано, використовується режим, налаштований у конфігурації вашого проєкту.
89
+ - **Тип**: `'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
90
+ - **За замовчуванням**: [`Конфігурація проєкту`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md#middleware)
91
+ - **Режими**:
92
+ - `prefix-no-default`: Без префікса для мови за замовчуванням, префікс для всіх інших
93
+ - `prefix-all`: Префікс для всіх мов, включно зі мовою за замовчуванням
94
+ - `no-prefix`: Немає префікса локалі в URL
95
+ - `search-params`: Використовувати параметри запиту для локалі (наприклад, `?locale=fr`)
96
+
97
+ ### Повертає
98
+
99
+ - **Тип**: `StrictModeLocaleMap<string>`
100
+ - **Опис**: Об'єкт, який зіставляє кожну локаль з відповідним багатомовним URL.
101
+
102
+ ---
103
+
104
+ ## Приклад використання
105
+
106
+ ### Базове використання (використовує конфігурацію проєкту)
107
+
108
+ ```typescript codeFormat="typescript"
109
+ import { getMultilingualUrls, Locales } from "intlayer";
110
+
111
+ // Використовує конфігурацію вашого проєкту для locales, defaultLocale і mode
112
+ getMultilingualUrls("/dashboard");
113
+ // Вивід (припускаючи, що в конфігурації проєкту є en і fr з mode 'prefix-no-default'):
114
+ // {
115
+ // en: "/dashboard",
116
+ // fr: "/fr/dashboard"
117
+ // }
118
+ ```
119
+
120
+ ```javascript codeFormat="esm"
121
+ import { getMultilingualUrls, Locales } from "intlayer";
122
+
123
+ getMultilingualUrls("/dashboard");
124
+ // Вивід: {
125
+ // en: "/dashboard",
126
+ // fr: "/fr/dashboard"
127
+ // }
128
+ ```
129
+
130
+ ```javascript codeFormat="commonjs"
131
+ const { getMultilingualUrls, Locales } = require("intlayer");
132
+
133
+ getMultilingualUrls("/dashboard");
134
+ // Вивід: {
135
+ // en: "/dashboard",
136
+ // fr: "/fr/dashboard"
137
+ // }
138
+ ```
139
+
140
+ ### Відносні URL з опціями
141
+
142
+ ```typescript codeFormat="typescript"
143
+ import { getMultilingualUrls, Locales } from "intlayer";
144
+
145
+ getMultilingualUrls("/dashboard", {
146
+ locales: [Locales.ENGLISH, Locales.FRENCH],
147
+ defaultLocale: Locales.ENGLISH,
148
+ mode: "prefix-no-default",
149
+ });
150
+ // Вивід: {
151
+ // en: "/dashboard",
152
+ // fr: "/fr/dashboard"
153
+ // }
154
+ ```
155
+
156
+ ```javascript codeFormat="esm"
157
+ import { getMultilingualUrls, Locales } from "intlayer";
158
+
159
+ getMultilingualUrls("/dashboard", {
160
+ locales: [Locales.ENGLISH, Locales.FRENCH],
161
+ defaultLocale: Locales.ENGLISH,
162
+ mode: "prefix-no-default",
163
+ });
164
+ // Вивід: {
165
+ // en: "/dashboard",
166
+ // fr: "/fr/dashboard"
167
+ // }
168
+ ```
169
+
170
+ ```javascript codeFormat="commonjs"
171
+ const { getMultilingualUrls, Locales } = require("intlayer");
172
+
173
+ getMultilingualUrls("/dashboard", {
174
+ locales: [Locales.ENGLISH, Locales.FRENCH],
175
+ defaultLocale: Locales.ENGLISH,
176
+ mode: "prefix-no-default",
177
+ });
178
+ // Вивід: {
179
+ // en: "/dashboard",
180
+ // fr: "/fr/dashboard"
181
+ // }
182
+ ```
183
+
184
+ ### Абсолютні URL-адреси
185
+
186
+ ```typescript
187
+ getMultilingualUrls("https://example.com/dashboard", {
188
+ locales: [Locales.ENGLISH, Locales.FRENCH],
189
+ defaultLocale: Locales.ENGLISH,
190
+ mode: "prefix-all",
191
+ });
192
+ // Вивід: {
193
+ // en: "https://example.com/en/dashboard",
194
+ // fr: "https://example.com/fr/dashboard"
195
+ // }
196
+ ```
197
+
198
+ ### Різні режими маршрутизації
199
+
200
+ ```typescript
201
+ // prefix-no-default: Без префіксу для локалі за замовчуванням
202
+ getMultilingualUrls("/dashboard", {
203
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
204
+ defaultLocale: Locales.ENGLISH,
205
+ mode: "prefix-no-default",
206
+ });
207
+ // Вивід: {
208
+ // en: "/dashboard",
209
+ // fr: "/fr/dashboard",
210
+ // es: "/es/dashboard"
211
+ // }
212
+
213
+ // prefix-all: Префікс для всіх локалей
214
+ getMultilingualUrls("/dashboard", {
215
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
216
+ defaultLocale: Locales.ENGLISH,
217
+ mode: "prefix-all",
218
+ });
219
+ // Вихід: {
220
+ // en: "/en/dashboard",
221
+ // fr: "/fr/dashboard",
222
+ // es: "/es/dashboard"
223
+ // }
224
+
225
+ // no-prefix: Відсутній префікс локалі в URL
226
+ getMultilingualUrls("/dashboard", {
227
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
228
+ defaultLocale: Locales.ENGLISH,
229
+ mode: "no-prefix",
230
+ });
231
+ // Вихід: {
232
+ // en: "/dashboard",
233
+ // fr: "/dashboard",
234
+ // es: "/dashboard"
235
+ // }
236
+
237
+ // search-params: Локаль як параметр запиту
238
+ getMultilingualUrls("/dashboard", {
239
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
240
+ defaultLocale: Locales.ENGLISH,
241
+ mode: "search-params",
242
+ });
243
+ // Вихід: {
244
+ // en: "/dashboard?locale=en",
245
+ // fr: "/dashboard?locale=fr",
246
+ // es: "/dashboard?locale=es"
247
+ // }
248
+ ```
249
+
250
+ ---
251
+
252
+ ## Крайні випадки
253
+
254
+ - **Відсутній сегмент локалі:**
255
+ - Функція видаляє будь-який існуючий сегмент локалі з URL перед генерацією багатомовних відповідностей.
256
+
257
+ - **Локаль за замовчуванням:**
258
+ - Коли `mode` дорівнює `'prefix-no-default'`, функція не додає префікс до URL для локалі за замовчуванням.
259
+ - Коли `mode` дорівнює `'prefix-all'`, функція додає префікси для всіх локалей, включно з локаллю за замовчуванням.
260
+
261
+ - **Непідтримувані локалі:**
262
+ - Лише локалі, вказані в масиві locales, враховуються під час генерації URL.
263
+
264
+ - **Режими маршрутизації:**
265
+ - `'prefix-no-default'`: для локалі за замовчуванням префікс відсутній, для інших — є (наприклад, `/dashboard`, `/fr/dashboard`)
266
+ - `'prefix-all'`: усі локалі мають префікси (наприклад, `/en/dashboard`, `/fr/dashboard`)
267
+ - `'no-prefix'`: Немає префіксів локалі в URL (для всіх локалей повертається той самий URL)
268
+ - `'search-params'`: Локаль вказується через параметр запиту (наприклад, `/dashboard?locale=fr`)
269
+
270
+ ---
271
+
272
+ ## Використання в застосунках
273
+
274
+ У багатомовному застосунку налаштування параметрів інтернаціоналізації через `locales` та `defaultLocale` є критично важливим для забезпечення відображення правильної мови. Нижче наведено приклад того, як `getMultilingualUrls` може бути використана в конфігурації застосунку:
275
+
276
+ ```tsx codeFormat="typescript"
277
+ import { Locales, type IntlayerConfig } from "intlayer";
278
+
279
+ // Конфігурація підтримуваних локалей та локалі за замовчуванням
280
+ export default {
281
+ internationalization: {
282
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
283
+ defaultLocale: Locales.ENGLISH,
284
+ },
285
+ } satisfies IntlayerConfig;
286
+
287
+ export default config;
288
+ ```
289
+
290
+ ```javascript codeFormat="esm"
291
+ import { Locales } from "intlayer";
292
+
293
+ /** @type {import('intlayer').IntlayerConfig} */
294
+ const config = {
295
+ internationalization: {
296
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
297
+ defaultLocale: Locales.ENGLISH,
298
+ },
299
+ };
300
+
301
+ export default config;
302
+ ```
303
+
304
+ ```javascript codeFormat="commonjs"
305
+ const { Locales } = require("intlayer");
306
+
307
+ /** @type {import('intlayer').IntlayerConfig} */
308
+ const config = {
309
+ internationalization: {
310
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
311
+ defaultLocale: Locales.ENGLISH,
312
+ },
313
+ };
314
+
315
+ module.exports = config;
316
+ ```
317
+
318
+ Показана вище конфігурація гарантує, що додаток розпізнає `ENGLISH`, `FRENCH` і `SPANISH` як підтримувані мови та використовує `ENGLISH` як мову за замовчуванням.
319
+
320
+ З цією конфігурацією функція `getMultilingualUrls` може динамічно генерувати відповідності багатомовних URL на основі підтримуваних у додатку локалей:
321
+
322
+ ```typescript
323
+ // Використання конфігурації проєкту (опції не потрібні)
324
+ getMultilingualUrls("/dashboard");
325
+ // Вивід:
326
+ // {
327
+ // en: "/dashboard",
328
+ // fr: "/fr/dashboard",
329
+ // es: "/es/dashboard"
330
+ // }
331
+
332
+ // З явними опціями
333
+ getMultilingualUrls("/dashboard", {
334
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
335
+ defaultLocale: Locales.ENGLISH,
336
+ mode: "prefix-no-default",
337
+ });
338
+ // Вивід:
339
+ // {
340
+ // en: "/dashboard",
341
+ // fr: "/fr/dashboard",
342
+ // es: "/es/dashboard"
343
+ // }
344
+
345
+ // Абсолютні URL з режимом "prefix-all"
346
+ getMultilingualUrls("https://example.com/dashboard", {
347
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
348
+ defaultLocale: Locales.ENGLISH,
349
+ mode: "prefix-all",
350
+ });
351
+ // Вивід:
352
+ // {
353
+ // en: "https://example.com/en/dashboard",
354
+ // fr: "https://example.com/fr/dashboard",
355
+ // es: "https://example.com/es/dashboard"
356
+ // }
357
+ ```
358
+
359
+ Інтегруючи `getMultilingualUrls`, розробники можуть підтримувати узгоджену структуру URL для кількох мов, що покращує як досвід користувача, так і SEO.
@@ -0,0 +1,75 @@
1
+ ---
2
+ createdAt: 2025-08-23
3
+ updatedAt: 2025-08-23
4
+ title: Документація функції getPathWithoutLocale | intlayer
5
+ description: Дивіться, як використовувати функцію getPathWithoutLocale для пакета intlayer
6
+ keywords:
7
+ - getPathWithoutLocale
8
+ - переклад
9
+ - Intlayer
10
+ - intlayer
11
+ - інтернаціоналізація
12
+ - документація
13
+ - Next.js
14
+ - JavaScript
15
+ - React
16
+ slugs:
17
+ - doc
18
+ - packages
19
+ - intlayer
20
+ - getPathWithoutLocale
21
+ history:
22
+ - version: 5.5.10
23
+ date: 2025-06-29
24
+ changes: Init history
25
+ ---
26
+
27
+ # Документація: Функції `getPathWithoutLocale` у `intlayer`
28
+
29
+ ## Опис
30
+
31
+ Видаляє сегмент локалі з вказаного URL або pathname, якщо він присутній. Працює як з абсолютними URL, так і з відносними шляхами.
32
+
33
+ ## Параметри
34
+
35
+ - `inputUrl: string`
36
+ - **Опис**: Повний рядок URL або шлях (pathname) для обробки.
37
+ - **Тип**: `string`
38
+
39
+ - `locales: Locales[]`
40
+ - **Опис**: Необов’язковий масив підтримуваних локалей. За замовчуванням використовуються локалі, налаштовані в проєкті.
41
+ - **Тип**: `Locales[]`
42
+
43
+ ## Повертає
44
+
45
+ - **Тип**: `string`
46
+ - **Опис**: Рядок URL або шлях без сегмента локалі.
47
+
48
+ ## Приклад використання
49
+
50
+ ```typescript codeFormat="typescript"
51
+ import { getPathWithoutLocale } from "intlayer";
52
+
53
+ console.log(getPathWithoutLocale("/dashboard")); // Виведе: "/dashboard"
54
+ console.log(getPathWithoutLocale("/en/dashboard")); // Виведе: "/dashboard"
55
+ console.log(getPathWithoutLocale("/fr/dashboard")); // Виведе: "/dashboard"
56
+ console.log(getPathWithoutLocale("https://example.com/en/dashboard")); // Вивід: "https://example.com/dashboard"
57
+ ```
58
+
59
+ ```javascript codeFormat="esm"
60
+ import { getPathWithoutLocale } from "intlayer";
61
+
62
+ console.log(getPathWithoutLocale("/dashboard")); // Вивід: "/dashboard"
63
+ console.log(getPathWithoutLocale("/en/dashboard")); // Вивід: "/dashboard"
64
+ console.log(getPathWithoutLocale("/fr/dashboard")); // Вивід: "/dashboard"
65
+ console.log(getPathWithoutLocale("https://example.com/en/dashboard")); // Вивід: "https://example.com/dashboard"
66
+ ```
67
+
68
+ ```javascript codeFormat="commonjs"
69
+ const { getPathWithoutLocale } = require("intlayer");
70
+
71
+ console.log(getPathWithoutLocale("/dashboard")); // Вивід: "/dashboard"
72
+ console.log(getPathWithoutLocale("/en/dashboard")); // Вивід: "/dashboard"
73
+ console.log(getPathWithoutLocale("/fr/dashboard")); // Вивід: "/dashboard"
74
+ console.log(getPathWithoutLocale("https://example.com/en/dashboard")); // Вивід: "https://example.com/dashboard"
75
+ ```
@@ -0,0 +1,213 @@
1
+ ---
2
+ createdAt: 2025-11-16
3
+ updatedAt: 2025-11-16
4
+ title: Документація функції getPrefix | intlayer
5
+ description: Дивіться, як використовувати функцію getPrefix для пакета intlayer
6
+ keywords:
7
+ - getPrefix
8
+ - prefix
9
+ - Intlayer
10
+ - intlayer
11
+ - Інтернаціоналізація
12
+ - Документація
13
+ - Next.js
14
+ - JavaScript
15
+ - React
16
+ slugs:
17
+ - doc
18
+ - packages
19
+ - intlayer
20
+ - getPrefix
21
+ history:
22
+ - version: 7.1.0
23
+ date: 2025-11-16
24
+ changes: Початкова документація
25
+ ---
26
+
27
+ # Документація: функція `getPrefix` в `intlayer`
28
+
29
+ ## Опис
30
+
31
+ Функція `getPrefix` визначає префікс URL для заданої локалі на основі конфігурації режиму маршрутизації. Вона порівнює локаль з локаллю за замовчуванням і повертає об'єкт, що містить три різні формати префіксів для гнучкого побудови URL.
32
+
33
+ **Ключові особливості:**
34
+
35
+ - Приймає локаль як перший параметр (обов'язково)
36
+ - Необов'язковий об'єкт `options` з полями `defaultLocale` та `mode`
37
+ - Повертає об'єкт з властивостями `prefix` та `localePrefix`
38
+ - Підтримує всі режими маршрутизації: `prefix-no-default`, `prefix-all`, `no-prefix` та `search-params`
39
+ - Легка утиліта для визначення, коли додавати префікси локалі
40
+
41
+ ---
42
+
43
+ ## Підпис функції
44
+
45
+ ```typescript
46
+ getPrefix(
47
+ locale: Locales, // Обов'язково
48
+ options?: { // Необов'язково
49
+ defaultLocale?: Locales;
50
+ mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params';
51
+ }
52
+ ): GetPrefixResult
53
+
54
+ type GetPrefixResult = {
55
+ prefix: string; // напр., 'fr/' або ''
56
+ localePrefix?: Locale; // напр., 'fr' або undefined
57
+ }
58
+ ```
59
+
60
+ ---
61
+
62
+ ## Параметри
63
+
64
+ - `locale: Locales`
65
+ - **Опис**: Локаль, для якої потрібно згенерувати префікс. Якщо значення є falsy (undefined, null, порожній рядок), функція повертає порожній рядок.
66
+ - **Тип**: `Locales`
67
+ - **Обов'язкове**: Так
68
+
69
+ - `options?: object`
70
+ - **Опис**: Об'єкт конфігурації для визначення префіксу.
71
+ - **Тип**: `object`
72
+ - **Обов'язкове**: Ні (Необов'язково)
73
+
74
+ - `options.defaultLocale?: Locales`
75
+ - **Опис**: Локаль за замовчуванням для застосунку. Якщо не вказано, використовується налаштована локаль за замовчуванням з конфігурації вашого проєкту.
76
+ - **Тип**: `Locales`
77
+ - **За замовчуванням**: [`Конфігурація проєкту`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md#middleware)
78
+
79
+ - `options.mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
80
+ - **Опис**: Режим маршрутизації URL для обробки локалі. Якщо не вказано, використовується режим, налаштований у конфігурації вашого проєкту.
81
+ - **Тип**: `'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
82
+ - **За замовчуванням**: [`Конфігурація проєкту`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md#middleware)
83
+ - **Режими**:
84
+ - `prefix-no-default`: Повертає порожні рядки, коли локаль збігається з локаллю за замовчуванням
85
+ - `prefix-all`: Повертає префікс для всіх локалей, включно з локаллю за замовчуванням
86
+ - `no-prefix`: Повертає порожні рядки (без префікса в URL)
87
+ - `search-params`: Повертає порожні рядки (локаль у параметрах запиту)
88
+
89
+ ### Повертає
90
+
91
+ - **Тип**: `GetPrefixResult`
92
+ - **Опис**: Об'єкт, що містить три різні формати префіксів:
93
+ - `prefix`: Префікс шляху з кінцевим слешем (наприклад, `'fr/'`, `''`)
94
+ - `localePrefix`: Ідентифікатор локалі без слешів (наприклад, `'fr'`, `undefined`)
95
+
96
+ ---
97
+
98
+ ## Приклад використання
99
+
100
+ ### Базове використання
101
+
102
+ ```typescript codeFormat="typescript"
103
+ import { getPrefix, Locales } from "intlayer";
104
+
105
+ // Перевірка префіксу для англійської локалі
106
+ getPrefix(Locales.ENGLISH, {
107
+ defaultLocale: Locales.ENGLISH,
108
+ mode: "prefix-all",
109
+ });
110
+ // Повертає: { prefix: 'en/', localePrefix: 'en' }
111
+
112
+ // Перевірка префіксу для французької локалі
113
+ getPrefix(Locales.FRENCH, {
114
+ defaultLocale: Locales.ENGLISH,
115
+ mode: "prefix-no-default",
116
+ });
117
+ // Повертає: { prefix: 'fr/', localePrefix: 'fr' }
118
+ ```
119
+
120
+ ```javascript codeFormat="esm"
121
+ import { getPrefix, Locales } from "intlayer";
122
+
123
+ getPrefix(Locales.ENGLISH, { mode: "prefix-all" });
124
+ // Повертає: { prefix: '', localePrefix: undefined }
125
+ ```
126
+
127
+ ```javascript codeFormat="commonjs"
128
+ const { getPrefix, Locales } = require("intlayer");
129
+
130
+ getPrefix(Locales.ENGLISH, { mode: "prefix-all" });
131
+ // Повертає: { prefix: '', localePrefix: undefined }
132
+ ```
133
+
134
+ ### Різні режими маршрутизації
135
+
136
+ ```typescript
137
+ import { getPrefix, Locales } from "intlayer";
138
+
139
+ // prefix-all: Завжди повертає префікс
140
+ getPrefix(Locales.ENGLISH, {
141
+ mode: "prefix-all",
142
+ defaultLocale: Locales.ENGLISH,
143
+ });
144
+ // Повертає: { prefix: '/en', localePrefix: 'en' }
145
+
146
+ // prefix-no-default: Без префікса, коли локаль збігається зі значенням за замовчуванням
147
+ getPrefix(Locales.ENGLISH, {
148
+ mode: "prefix-no-default",
149
+ defaultLocale: Locales.ENGLISH,
150
+ });
151
+ // Повертає: { prefix: '', localePrefix: undefined }
152
+
153
+ // prefix-no-default: Повертає префікс, коли локаль відрізняється від локалі за замовчуванням
154
+ getPrefix(Locales.FRENCH, {
155
+ mode: "prefix-no-default",
156
+ defaultLocale: Locales.ENGLISH,
157
+ });
158
+ // Повертає: { prefix: 'fr/', localePrefix: 'fr' }
159
+
160
+ // no-prefix & search-params: Ніколи не повертає префікс
161
+ getPrefix(Locales.ENGLISH, { mode: "no-prefix" });
162
+ // Повертає: { prefix: '', localePrefix: undefined }
163
+
164
+ getPrefix(Locales.ENGLISH, { mode: "search-params" });
165
+ // Повертає: { prefix: '', localePrefix: undefined }
166
+ ```
167
+
168
+ ### Практичний приклад
169
+
170
+ ```typescript
171
+ import { getPrefix, Locales } from "intlayer";
172
+
173
+ // Формуємо URL з відповідним префіксом для конкретної локалі
174
+ const locale = Locales.FRENCH;
175
+ const { prefix, localePrefix } = getPrefix(locale, {
176
+ defaultLocale: Locales.ENGLISH,
177
+ mode: "prefix-no-default",
178
+ });
179
+
180
+ // Використання prefix для побудови шляху
181
+ const url1 = `/${prefix}about`.replace(/\/+/g, "/");
182
+ // Результат: "/fr/about"
183
+
184
+ // Використання localePrefix для ідентифікації локалі
185
+ console.log(`Current locale: ${localePrefix}`);
186
+ // Вивід: "Current locale: fr"
187
+ ```
188
+
189
+ ---
190
+
191
+ ## Пов'язані функції
192
+
193
+ - [`getLocalizedUrl`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/packages/intlayer/getLocalizedUrl.md): Генерує локалізований URL для певної локалі
194
+ - [`getMultilingualUrls`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/packages/intlayer/getMultilingualUrls.md): Генерує URL-адреси для всіх налаштованих локалей
195
+
196
+ ---
197
+
198
+ ## TypeScript
199
+
200
+ ```typescript
201
+ type GetPrefixResult = {
202
+ prefix: string; // Префікс шляху з кінцевим слешем (наприклад, 'fr/' або '')
203
+ localePrefix?: Locale; // Ідентифікатор локалі без слешів (наприклад, 'fr' або undefined)
204
+ };
205
+
206
+ function getPrefix(
207
+ locale: Locales,
208
+ options?: {
209
+ defaultLocale?: Locales;
210
+ mode?: "prefix-no-default" | "prefix-all" | "no-prefix" | "search-params";
211
+ }
212
+ ): GetPrefixResult;
213
+ ```