@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,121 @@
1
+ ---
2
+ createdAt: 2025-08-23
3
+ updatedAt: 2025-08-23
4
+ title: Документація: функція getHTMLTextDir | intlayer
5
+ description: Дізнайтеся, як використовувати функцію getHTMLTextDir у пакеті intlayer
6
+ keywords:
7
+ - getHTMLTextDir
8
+ - переклад
9
+ - Intlayer
10
+ - intlayer
11
+ - інтернаціоналізація
12
+ - документація
13
+ - Next.js
14
+ - JavaScript
15
+ - React
16
+ slugs:
17
+ - doc
18
+ - packages
19
+ - intlayer
20
+ - getHTMLTextDir
21
+ history:
22
+ - version: 5.5.10
23
+ date: 2025-06-29
24
+ changes: Ініціалізація історії
25
+ ---
26
+
27
+ # Документація: функція `getHTMLTextDir` в `intlayer`
28
+
29
+ ## Опис
30
+
31
+ Функція `getHTMLTextDir` визначає напрямок тексту (`ltr`, `rtl` або `auto`) на основі заданої локалі. Вона призначена, щоб допомогти розробникам встановити атрибут `dir` в HTML для коректного відображення тексту.
32
+
33
+ ## Параметри
34
+
35
+ - `locale?: Locales`
36
+ - **Опис**: Рядок локалі (наприклад, `Locales.ENGLISH`, `Locales.ARABIC`), що використовується для визначення напрямку тексту.
37
+ - **Тип**: `Locales` (необов'язковий)
38
+
39
+ ## Повертає
40
+
41
+ - **Тип**: `Dir` (`'ltr' | 'rtl' | 'auto'`)
42
+ - **Опис**: Напрямок тексту, що відповідає локалі:
43
+ - `'ltr'` для мов з напрямком зліва направо.
44
+ - `'rtl'` для мов з напрямком справа наліво.
45
+ - `'auto'` якщо локаль не розпізнана.
46
+
47
+ ## Приклад використання
48
+
49
+ ### Визначення напряму тексту
50
+
51
+ ```typescript codeFormat="typescript"
52
+ import { getHTMLTextDir } from "intlayer";
53
+
54
+ getHTMLTextDir(Locales.ENGLISH); // Output: "ltr"
55
+ getHTMLTextDir(Locales.FRENCH); // Output: "ltr"
56
+ getHTMLTextDir(Locales.ARABIC); // Output: "rtl"
57
+ ```
58
+
59
+ ```javascript codeFormat="esm"
60
+ import { getHTMLTextDir } from "intlayer";
61
+
62
+ getHTMLTextDir(Locales.ENGLISH); // Вивід: "ltr"
63
+ getHTMLTextDir(Locales.FRENCH); // Вивід: "ltr"
64
+ getHTMLTextDir(Locales.ARABIC); // Вивід: "rtl"
65
+ ```
66
+
67
+ ```javascript codeFormat="commonjs"
68
+ const { getHTMLTextDir } = require("intlayer");
69
+
70
+ getHTMLTextDir(Locales.ENGLISH); // Вивід: "ltr"
71
+ getHTMLTextDir(Locales.FRENCH); // Вивід: "ltr"
72
+ getHTMLTextDir(Locales.ARABIC); // Вивід: "rtl"
73
+ ```
74
+
75
+ ## Крайні випадки
76
+
77
+ - **Локаль не вказано:**
78
+ - Функція повертає `'auto'`, коли `locale` має значення `undefined`.
79
+
80
+ - **Невідома локаль:**
81
+ - Для невідомих локалей функція за замовчуванням повертає `'auto'`.
82
+
83
+ ## Використання в компонентах:
84
+
85
+ Функцію `getHTMLTextDir` можна використовувати для динамічної установки атрибута `dir` в HTML-документі для коректного відображення тексту залежно від локалі.
86
+
87
+ ```tsx codeFormat="typescript"
88
+ import type { FC } from "react";
89
+ import { getHTMLTextDir, type Locales } from "intlayer";
90
+
91
+ export const HTMLLayout: FC<PropsWithChildren<{ locale: Locales }>> = ({
92
+ children,
93
+ locale,
94
+ }) => (
95
+ <html dir={getHTMLTextDir(locale)} locale={locale}>
96
+ <body>{children}</body>
97
+ </html>
98
+ );
99
+ ```
100
+
101
+ ```jsx codeFormat="esm"
102
+ import { getHTMLTextDir } from "intlayer";
103
+
104
+ const HTMLLayout = ({ children, locale }) => (
105
+ <html dir={getHTMLTextDir(locale)} locale={locale}>
106
+ <body>{children}</body>
107
+ </html>
108
+ );
109
+ ```
110
+
111
+ ```jsx codeFormat="commonjs"
112
+ const { getHTMLTextDir } = require("intlayer");
113
+
114
+ const HTMLLayout = ({ children, locale }) => (
115
+ <html dir={getHTMLTextDir(locale)} locale={locale}>
116
+ <body>{children}</body>
117
+ </html>
118
+ );
119
+ ```
120
+
121
+ У наведеному вище прикладі атрибут `dir` динамічно встановлюється на основі локалі.
@@ -0,0 +1,81 @@
1
+ ---
2
+ createdAt: 2025-08-23
3
+ updatedAt: 2025-08-23
4
+ title: Документація функції getLocaleLang | intlayer
5
+ description: Дізнайтеся, як використовувати функцію getLocaleLang у пакеті intlayer
6
+ keywords:
7
+ - getLocaleLang
8
+ - переклад
9
+ - Intlayer
10
+ - intlayer
11
+ - інтернаціоналізація
12
+ - документація
13
+ - Next.js
14
+ - JavaScript
15
+ - React
16
+ slugs:
17
+ - doc
18
+ - packages
19
+ - intlayer
20
+ - getLocaleLang
21
+ history:
22
+ - version: 5.5.10
23
+ date: 2025-06-29
24
+ changes: Ініціалізація історії
25
+ ---
26
+
27
+ # Документація: функція `getLocaleLang` у `intlayer`
28
+
29
+ ## Опис
30
+
31
+ Функція `getLocaleLang` витягує код мови з рядка локалі. Вона підтримує локалі як з кодами країн, так і без них. Якщо локаль не вказана, за замовчуванням повертається пустий рядок.
32
+
33
+ ## Параметри
34
+
35
+ - `locale?: Locales`
36
+ - **Опис**: Рядок локалі (наприклад, `Locales.ENGLISH_UNITED_STATES`, `Locales.FRENCH_CANADA`), з якого витягується код мови.
37
+ - **Тип**: `Locales` (необов'язково)
38
+
39
+ ## Повертає
40
+
41
+ - **Тип**: `string`
42
+ - **Опис**: Код мови, витягнутий з локалі. Якщо локаль не вказана, повертається порожній рядок (`''`).
43
+
44
+ ## Приклад використання
45
+
46
+ ### Отримання кодів мов:
47
+
48
+ ```typescript codeFormat="typescript"
49
+ import { getLocaleLang, Locales } from "intlayer";
50
+
51
+ getLocaleLang(Locales.ENGLISH_UNITED_STATES); // Output: "en"
52
+ getLocaleLang(Locales.ENGLISH); // Output: "en"
53
+ getLocaleLang(Locales.FRENCH_CANADA); // Output: "fr"
54
+ getLocaleLang(Locales.FRENCH); // Output: "fr"
55
+ ```
56
+
57
+ ```javascript codeFormat="esm"
58
+ import { getLocaleLang } from "intlayer";
59
+
60
+ getLocaleLang(Locales.ENGLISH_UNITED_STATES); // Вивід: "en"
61
+ getLocaleLang(Locales.ENGLISH); // Вивід: "en"
62
+ getLocaleLang(Locales.FRENCH_CANADA); // Вивід: "fr"
63
+ getLocaleLang(Locales.FRENCH); // Вивід: "fr"
64
+ ```
65
+
66
+ ```javascript codeFormat="commonjs"
67
+ const { getLocaleLang } = require("intlayer");
68
+
69
+ getLocaleLang(Locales.ENGLISH_UNITED_STATES); // Вивід: "en"
70
+ getLocaleLang(Locales.ENGLISH); // Вивід: "en"
71
+ getLocaleLang(Locales.FRENCH_CANADA); // Вивід: "fr"
72
+ getLocaleLang(Locales.FRENCH); // Вивід: "fr"
73
+ ```
74
+
75
+ ## Крайові випадки
76
+
77
+ - **Locale не вказано:**
78
+ - Функція повертає порожній рядок, коли `locale` є `undefined`.
79
+
80
+ - **Некоректні рядки locale:**
81
+ - Якщо `locale` не відповідає формату `language-country` (наприклад, `Locales.ENGLISH-US`), функція безпечно повертає частину перед `'-'` або весь рядок, якщо `'-'` відсутній.
@@ -0,0 +1,135 @@
1
+ ---
2
+ createdAt: 2025-08-23
3
+ updatedAt: 2025-08-23
4
+ title: Документація функції getLocaleName | intlayer
5
+ description: Дивіться, як використовувати функцію getLocaleName у пакеті intlayer
6
+ keywords:
7
+ - getLocaleName
8
+ - локалізація
9
+ - Intlayer
10
+ - intlayer
11
+ - Інтернаціоналізація
12
+ - Документація
13
+ - Next.js
14
+ - JavaScript
15
+ - React
16
+ slugs:
17
+ - doc
18
+ - packages
19
+ - intlayer
20
+ - getLocaleName
21
+ history:
22
+ - version: 7.5.0
23
+ date: 2025-12-18
24
+ changes: Додано поліфіли для React Native та старіших середовищ
25
+ - version: 5.5.10
26
+ date: 2025-06-29
27
+ changes: Ініціалізація історії
28
+ ---
29
+
30
+ # Документація: функція `getLocaleName` у `intlayer`
31
+
32
+ ## Опис
33
+
34
+ Функція `getLocaleName` повертає локалізовану назву заданої локалі (`targetLocale`) мовою відображення (`displayLocale`). Якщо `targetLocale` не вказано, вона повертає назву `displayLocale` його власною мовою.
35
+
36
+ ## Параметри
37
+
38
+ - `displayLocale: Locales`
39
+ - **Опис**: Локаль, якою буде відображено назву цільової локалі.
40
+ - **Тип**: Enum або рядок, що представляє допустимі локалі.
41
+
42
+ - `targetLocale?: Locales`
43
+ - **Опис**: Локаль, назву якої потрібно локалізувати.
44
+ - **Тип**: Необов'язковий. Enum або рядок, що представляє допустимі локалі.
45
+
46
+ ## Повертає
47
+
48
+ - **Тип**: `string`
49
+ - **Опис**: Локалізована назва `targetLocale` мовою `displayLocale`, або власна назва `displayLocale`, якщо `targetLocale` не вказано. Якщо переклад не знайдено, функція повертає "Unknown locale".
50
+
51
+ ## Приклад використання
52
+
53
+ ```typescript codeFormat="typescript"
54
+ import { Locales, getLocaleName } from "intlayer";
55
+
56
+ getLocaleName(Locales.ENGLISH); // Вивід: "English"
57
+ getLocaleName(Locales.ENGLISH, Locales.FRENCH); // Вивід: "Anglais"
58
+ getLocaleName(Locales.ENGLISH, Locales.ESPANOL); // Вивід: "Inglés"
59
+ getLocaleName(Locales.ENGLISH, Locales.ENGLISH); // Вивід: "English"
60
+
61
+ getLocaleName(Locales.FRENCH); // Вивід: "Français"
62
+ getLocaleName(Locales.FRENCH, Locales.FRENCH); // Вивід: "Français"
63
+ getLocaleName(Locales.FRENCH, Locales.ESPANOL); // Вивід: "Francés"
64
+ getLocaleName(Locales.FRENCH, Locales.ENGLISH); // Вивід: "French"
65
+
66
+ getLocaleName(Locales.CHINESE); // Вивід: "中文"
67
+ getLocaleName(Locales.CHINESE, Locales.FRENCH); // Вивід: "Chinois"
68
+ getLocaleName(Locales.CHINESE, Locales.ESPANOL); // Вивід: "Chino"
69
+ getLocaleName(Locales.CHINESE, Locales.ENGLISH); // Вивід: "Chinese"
70
+
71
+ getLocaleName("unknown-locale"); // Вивід: "Unknown locale"
72
+ ```
73
+
74
+ ```javascript codeFormat="esm"
75
+ import { Locales, getLocaleName } from "intlayer";
76
+
77
+ getLocaleName(Locales.ENGLISH); // Вивід: "English"
78
+ getLocaleName(Locales.ENGLISH, Locales.FRENCH); // Вивід: "Anglais"
79
+ getLocaleName(Locales.ENGLISH, Locales.ESPANOL); // Вивід: "Inglés"
80
+ getLocaleName(Locales.ENGLISH, Locales.ENGLISH); // Вивід: "English"
81
+
82
+ getLocaleName(Locales.FRENCH); // Вивід: "Français"
83
+ getLocaleName(Locales.FRENCH, Locales.FRENCH); // Вивід: "Français"
84
+ getLocaleName(Locales.FRENCH, Locales.ESPANOL); // Вивід: "Francés"
85
+ getLocaleName(Locales.FRENCH, Locales.ENGLISH); // Вивід: "French"
86
+
87
+ getLocaleName(Locales.CHINESE); // Вивід: "中文"
88
+ getLocaleName(Locales.CHINESE, Locales.FRENCH); // Вивід: "Chinois"
89
+ getLocaleName(Locales.CHINESE, Locales.ESPANOL); // Вивід: "Chino"
90
+ getLocaleName(Locales.CHINESE, Locales.ENGLISH); // Вивід: "Chinese"
91
+
92
+ getLocaleName("unknown-locale"); // Вивід: "Unknown locale"
93
+ ```
94
+
95
+ ```javascript codeFormat="commonjs"
96
+ const { Locales, getLocaleName } = require("intlayer");
97
+
98
+ getLocaleName(Locales.ENGLISH); // Вивід: "English"
99
+ getLocaleName(Locales.ENGLISH, Locales.FRENCH); // Вивід: "Anglais"
100
+ getLocaleName(Locales.ENGLISH, Locales.ESPANOL); // Вивід: "Inglés"
101
+ getLocaleName(Locales.ENGLISH, Locales.ENGLISH); // Вивід: "English"
102
+
103
+ getLocaleName(Locales.FRENCH); // Вивід: "Français"
104
+ getLocaleName(Locales.FRENCH, Locales.FRENCH); // Вивід: "Français"
105
+ getLocaleName(Locales.FRENCH, Locales.ESPANOL); // Вивід: "Francés"
106
+ getLocaleName(Locales.FRENCH, Locales.ENGLISH); // Вивід: "French"
107
+
108
+ getLocaleName(Locales.CHINESE); // Вивід: "中文"
109
+ getLocaleName(Locales.CHINESE, Locales.FRENCH); // Вивід: "Chinois"
110
+ getLocaleName(Locales.CHINESE, Locales.ESPANOL); // Вивід: "Chino"
111
+ getLocaleName(Locales.CHINESE, Locales.ENGLISH); // Вивід: "Chinese"
112
+
113
+ getLocaleName("unknown-locale"); // Вивід: "Unknown locale"
114
+ ```
115
+
116
+ ## Крайні випадки
117
+
118
+ - **Не вказано `targetLocale`:**
119
+ - Функція за замовчуванням повертає власну назву `displayLocale`.
120
+ - **Відсутні переклади:**
121
+ - Якщо `localeNameTranslations` не містить запису для `targetLocale` або конкретного `displayLocale`, функція використовує `ownLocalesName` або повертає `"Unknown locale"`.
122
+
123
+ ## Поліфіли для React Native та старіших середовищ
124
+
125
+ Функція `getLocaleName` покладається на API `Intl.DisplayNames`, який недоступний у React Native або старіших JavaScript-середовищах. Якщо ви використовуєте `getLocaleName` у таких середовищах, потрібно додати поліфіли.
126
+
127
+ Імпортуйте поліфіли на початку вашого застосунку, бажано в точці входу (наприклад, `index.js`, `App.tsx`, або `main.tsx`):
128
+
129
+ ```typescript
130
+ import "intl";
131
+ import "@formatjs/intl-locale/polyfill";
132
+ import "@formatjs/intl-displaynames/polyfill";
133
+ ```
134
+
135
+ Для детальнішої інформації див. [документацію поліфілів FormatJS](https://formatjs.io/docs/polyfills/intl-displaynames/).
@@ -0,0 +1,338 @@
1
+ ---
2
+ createdAt: 2025-08-23
3
+ updatedAt: 2025-11-16
4
+ title: Документація функції getLocalizedUrl | intlayer
5
+ description: Дізнайтеся, як використовувати функцію getLocalizedUrl у пакеті intlayer
6
+ keywords:
7
+ - getLocalizedUrl
8
+ - переклад
9
+ - Intlayer
10
+ - intlayer
11
+ - Інтернаціоналізація
12
+ - Документація
13
+ - Next.js
14
+ - JavaScript
15
+ - React
16
+ slugs:
17
+ - doc
18
+ - packages
19
+ - intlayer
20
+ - getLocalizedUrl
21
+ history:
22
+ - version: 7.1.0
23
+ date: 2025-11-16
24
+ changes: Рефакторинг: використання параметра options з полем mode замість prefixDefault
25
+ - version: 5.5.10
26
+ date: 2025-06-29
27
+ changes: Ініціалізація історії
28
+ ---
29
+
30
+ # Документація: функція `getLocalizedUrl` у `intlayer`
31
+
32
+ ## Опис
33
+
34
+ Функція `getLocalizedUrl` генерує локалізований URL, додаючи префікс з вказаною локаллю до переданого URL. Вона обробляє як абсолютні, так і відносні URL, гарантуючи застосування правильного локалізаційного префікса відповідно до конфігурації.
35
+
36
+ **Ключові особливості:**
37
+
38
+ - Потрібні лише 2 параметри: `url` та `currentLocale`
39
+ - Необов'язковий об'єкт `options` з полями `locales`, `defaultLocale` та `mode`
40
+ - Використовує конфігурацію інтернаціоналізації вашого проекту як значення за замовчуванням
41
+ - Може використовуватись з мінімальною кількістю параметрів для простих випадків або бути повністю налаштована для складніших сценаріїв
42
+ - Підтримує кілька режимів маршрутизації: `prefix-no-default`, `prefix-all`, `no-prefix` та `search-params`
43
+
44
+ ---
45
+
46
+ ## Підпис функції
47
+
48
+ ```typescript
49
+ getLocalizedUrl(
50
+ url: string, // Обов'язковий
51
+ currentLocale: Locales, // Обов'язковий
52
+ options?: { // Необов'язковий
53
+ locales?: Locales[];
54
+ defaultLocale?: Locales;
55
+ mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params';
56
+ }
57
+ ): string
58
+ ```
59
+
60
+ ---
61
+
62
+ ## Параметри
63
+
64
+ ### Обов'язкові параметри
65
+
66
+ - `url: string`
67
+ - **Опис**: Початковий рядок URL, якому буде додано префікс локалі.
68
+ - **Тип**: `string`
69
+ - **Обов'язковий**: Так
70
+
71
+ - `currentLocale: Locales`
72
+ - **Опис**: Поточна локаль, для якої локалізується URL.
73
+ - **Тип**: `Locales`
74
+ - **Обов'язковий**: Так
75
+
76
+ ### Необов'язкові параметри
77
+
78
+ - `options?: object`
79
+ - **Опис**: Об'єкт конфігурації для поведінки локалізації URL.
80
+ - **Тип**: `object`
81
+ - **Обов'язковий**: Ні (Необов'язковий)
82
+
83
+ - `options.locales?: Locales[]`
84
+ - `options.locales?: Locales[]`
85
+ - **Description**: Масив підтримуваних локалей. Якщо не вказано, використовуються локалі, налаштовані у конфігурації вашого проєкту.
86
+ - **Type**: `Locales[]`
87
+ - **Default**: [`Конфігурація проєкту`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md#middleware)
88
+
89
+ - `options.defaultLocale?: Locales`
90
+ - **Description**: Локаль за замовчуванням для застосунку. Якщо не вказано, використовується локаль за замовчуванням, налаштована у конфігурації вашого проєкту.
91
+ - **Type**: `Locales`
92
+ - **Default**: [`Конфігурація проєкту`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md#middleware)
93
+
94
+ - `options.mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
95
+ - **Опис**: Режим маршрутизації URL для обробки локалі. Якщо не вказано, використовується режим, налаштований у конфігурації проєкту.
96
+ - **Тип**: `'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
97
+ - **За замовчуванням**: [`Конфігурація проєкту`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md#middleware)
98
+ - **Режими**:
99
+ - `prefix-no-default`: Без префіксу для локалі за замовчуванням, префікс для всіх інших
100
+ - `prefix-all`: Префікс для всіх локалей, включаючи локаль за замовчуванням
101
+ - `no-prefix`: Відсутність префіксу локалі в URL
102
+ - `search-params`: Використовувати параметри запиту для локалі (наприклад, `?locale=fr`)
103
+
104
+ ### Повертає
105
+
106
+ - **Тип**: `string`
107
+ - **Опис**: Локалізований URL для вказаної локалі.
108
+
109
+ ---
110
+
111
+ ## Приклад використання
112
+
113
+ ### Основне використання (тільки обов'язкові параметри)
114
+
115
+ Коли ви налаштували свій проєкт з параметрами інтернаціоналізації, ви можете використовувати цю функцію, передавши лише обов'язкові параметри:
116
+
117
+ ```typescript codeFormat="typescript"
118
+ import { getLocalizedUrl, Locales } from "intlayer";
119
+
120
+ // Використовує налаштування вашого проєкту для locales, defaultLocale та mode
121
+ getLocalizedUrl("/about", Locales.FRENCH);
122
+ // Вихід: "/fr/about" (за умови, що французька підтримується і режим 'prefix-no-default')
123
+
124
+ getLocalizedUrl("/about", Locales.ENGLISH);
125
+ // Вихід: "/about" або "/en/about" (залежно від налаштування режиму)
126
+ ```
127
+
128
+ ```javascript codeFormat="esm"
129
+ import { getLocalizedUrl, Locales } from "intlayer";
130
+
131
+ // Використовує налаштування вашого проєкту
132
+ getLocalizedUrl("/about", Locales.FRENCH);
133
+ // Вихід: "/fr/about"
134
+ ```
135
+
136
+ ```javascript codeFormat="commonjs"
137
+ const { getLocalizedUrl, Locales } = require("intlayer");
138
+
139
+ // Використовує конфігурацію вашого проєкту
140
+ getLocalizedUrl("/about", Locales.FRENCH);
141
+ // Вивід: "/fr/about"
142
+ ```
143
+
144
+ ### Розширене використання (з необов'язковими параметрами)
145
+
146
+ Ви можете перевизначити конфігурацію за замовчуванням, передавши необов'язковий параметр `options`:
147
+
148
+ ### Відносні URL (вказано всі параметри)
149
+
150
+ ```typescript codeFormat="typescript"
151
+ import { getLocalizedUrl, Locales } from "intlayer";
152
+
153
+ // Явно вказуємо всі необов'язкові параметри
154
+ getLocalizedUrl("/about", Locales.FRENCH, {
155
+ locales: [Locales.ENGLISH, Locales.FRENCH],
156
+ defaultLocale: Locales.ENGLISH,
157
+ mode: "prefix-no-default",
158
+ });
159
+ // Вивід: "/fr/about" для французької локалі
160
+
161
+ getLocalizedUrl("/about", Locales.ENGLISH, {
162
+ locales: [Locales.ENGLISH, Locales.FRENCH],
163
+ defaultLocale: Locales.ENGLISH,
164
+ mode: "prefix-no-default",
165
+ });
166
+ // Вивід: "/about" для мови за замовчуванням (English)
167
+ ```
168
+
169
+ ```javascript codeFormat="esm"
170
+ import { getLocalizedUrl, Locales } from "intlayer";
171
+
172
+ // Явне вказання всіх необов'язкових параметрів
173
+ getLocalizedUrl("/about", Locales.FRENCH, {
174
+ locales: [Locales.ENGLISH, Locales.FRENCH],
175
+ defaultLocale: Locales.ENGLISH,
176
+ mode: "prefix-no-default",
177
+ });
178
+ // Вивід: "/fr/about" для французької локалі
179
+ ```
180
+
181
+ ```javascript codeFormat="commonjs"
182
+ const { getLocalizedUrl, Locales } = require("intlayer");
183
+
184
+ // Явне вказання всіх необов'язкових параметрів
185
+ getLocalizedUrl("/about", Locales.FRENCH, {
186
+ locales: [Locales.ENGLISH, Locales.FRENCH],
187
+ defaultLocale: Locales.ENGLISH,
188
+ mode: "prefix-no-default",
189
+ });
190
+ // Вивід: "/fr/about" для французької локалі
191
+ ```
192
+
193
+ ### Часткове перевизначення конфігурації
194
+
195
+ Ви також можете вказати лише деякі з необов'язкових параметрів. Функція використовуватиме конфігурацію вашого проєкту для параметрів, які ви не вкажете:
196
+
197
+ ```typescript codeFormat="typescript"
198
+ import { getLocalizedUrl, Locales } from "intlayer";
199
+
200
+ // Перевизначити лише locales, використати конфіг проєкту для defaultLocale та mode
201
+ getLocalizedUrl("/about", Locales.SPANISH, {
202
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
203
+ });
204
+
205
+ // Перевизначити лише mode, використати конфіг проєкту для locales та defaultLocale
206
+ getLocalizedUrl("/about", Locales.ENGLISH, {
207
+ mode: "prefix-all", // Примусово додавати префікс для всіх локалей, включно зі значенням за замовчуванням
208
+ });
209
+
210
+ // Перевизначити кілька опцій
211
+ getLocalizedUrl("/about", Locales.FRENCH, {
212
+ defaultLocale: Locales.ENGLISH,
213
+ mode: "search-params", // Використати параметри запиту: /about?locale=fr
214
+ });
215
+ ```
216
+
217
+ ### Абсолютні URL-адреси
218
+
219
+ ```typescript
220
+ getLocalizedUrl("https://example.com/about", Locales.FRENCH, {
221
+ locales: [Locales.ENGLISH, Locales.FRENCH],
222
+ defaultLocale: Locales.ENGLISH,
223
+ mode: "prefix-no-default",
224
+ });
225
+ // Вивід: "https://example.com/fr/about" для французької локалі
226
+
227
+ getLocalizedUrl("https://example.com/about", Locales.ENGLISH, {
228
+ locales: [Locales.ENGLISH, Locales.FRENCH],
229
+ defaultLocale: Locales.ENGLISH,
230
+ mode: "prefix-no-default",
231
+ });
232
+ // Вивід: "https://example.com/about" для англійської (без префікса для мови за замовчуванням)
233
+
234
+ getLocalizedUrl("https://example.com/about", Locales.ENGLISH, {
235
+ locales: [Locales.ENGLISH, Locales.FRENCH],
236
+ defaultLocale: Locales.ENGLISH,
237
+ mode: "prefix-all",
238
+ });
239
+ // Вивід: "https://example.com/en/about" для англійської (префікс для всіх)
240
+
241
+ getLocalizedUrl("https://example.com/about", Locales.FRENCH, {
242
+ locales: [Locales.ENGLISH, Locales.FRENCH],
243
+ defaultLocale: Locales.ENGLISH,
244
+ mode: "search-params",
245
+ });
246
+ // Вивід: "https://example.com/about?locale=fr" (використовуючи параметри запиту)
247
+ ```
248
+
249
+ ### Непідтримувана локаль
250
+
251
+ ```typescript
252
+ getLocalizedUrl("/about", Locales.ITALIAN, {
253
+ locales: [Locales.ENGLISH, Locales.FRENCH],
254
+ defaultLocale: Locales.ENGLISH,
255
+ mode: "prefix-no-default",
256
+ });
257
+ // Вивід: "/about" (жодного префікса не застосовано для непідтримуваної локалі)
258
+ ```
259
+
260
+ ---
261
+
262
+ ## Особливі випадки
263
+
264
+ - **Відсутній сегмент локалі:**
265
+ - Якщо URL не містить сегмента локалі, функція коректно додає відповідну локаль як префікс залежно від режиму маршрутизації.
266
+
267
+ - **Локаль за замовчуванням:**
268
+ - Якщо `mode` дорівнює `'prefix-no-default'`, функція не додає префікс до URL для локалі за замовчуванням.
269
+ - Якщо `mode` дорівнює `'prefix-all'`, функція додає префікси для всіх локалей, включаючи локаль за замовчуванням.
270
+
271
+ - **Непідтримувані локалі:**
272
+ - Для локалей, які не перелічені в `locales`, функція не застосовує жодного префіксу.
273
+
274
+ - **Режими маршрутизації:**
275
+ - `'prefix-no-default'`: локаль за замовчуванням без префікса, інші мають префікс (наприклад, `/about`, `/fr/about`)
276
+ - `'prefix-all'`: всі локалі мають префікси (наприклад, `/en/about`, `/fr/about`)
277
+ - `'no-prefix'`: префіксів локалі у URL немає (локаль обробляється в іншому місці)
278
+ - `'search-params'`: Локаль вказується через параметр запиту (наприклад, `/about?locale=fr`)
279
+
280
+ ---
281
+
282
+ ## Використання у застосунках
283
+
284
+ У багатомовному застосунку конфігурація налаштувань інтернаціоналізації через `locales` та `defaultLocale` є критичною для забезпечення відображення правильної мови. Нижче наведено приклад того, як `getLocalizedUrl` можна використовувати в налаштуванні застосунку:
285
+
286
+ ```tsx codeFormat="typescript"
287
+ import { Locales, type IntlayerConfig } from "intlayer";
288
+
289
+ // Конфігурація для підтримуваних локалей та локалі за замовчуванням
290
+ export default {
291
+ internationalization: {
292
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
293
+ defaultLocale: Locales.ENGLISH,
294
+ },
295
+ } satisfies IntlayerConfig;
296
+
297
+ export default config;
298
+ ```
299
+
300
+ ```javascript codeFormat="esm"
301
+ import { Locales } from "intlayer";
302
+
303
+ /** @type {import('intlayer').IntlayerConfig} */
304
+ const config = {
305
+ internationalization: {
306
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
307
+ defaultLocale: Locales.ENGLISH,
308
+ },
309
+ };
310
+
311
+ export default config;
312
+ ```
313
+
314
+ ```javascript codeFormat="commonjs"
315
+ const { Locales } = require("intlayer");
316
+
317
+ /** @type {import('intlayer').IntlayerConfig} */
318
+ const config = {
319
+ internationalization: {
320
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
321
+ defaultLocale: Locales.ENGLISH,
322
+ },
323
+ };
324
+
325
+ module.exports = config;
326
+ ```
327
+
328
+ Вищенаведена конфігурація гарантує, що застосунок розпізнає `ENGLISH`, `FRENCH` і `SPANISH` як підтримувані мови та використовує `ENGLISH` як мову за замовчуванням.
329
+
330
+ За цією конфігурацією функція `getLocalizedUrl` може динамічно створювати локалізовані URL-адреси залежно від мовних налаштувань користувача:
331
+
332
+ ```typescript
333
+ getLocalizedUrl("/about", Locales.FRENCH); // Вивід: "/fr/about"
334
+ getLocalizedUrl("/about", Locales.SPANISH); // Вивід: "/es/about"
335
+ getLocalizedUrl("/about", Locales.ENGLISH); // Вивід: "/about"
336
+ ```
337
+
338
+ Інтегруючи `getLocalizedUrl`, розробники можуть зберігати узгоджену структуру URL-адрес у кількох мовах, покращуючи як зручність для користувачів, так і SEO.