@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.
- package/blog/ar/per-component_vs_centralized_i18n.md +248 -0
- package/blog/de/per-component_vs_centralized_i18n.md +248 -0
- package/blog/en/_per-component_vs_centralized_i18n.md +252 -0
- package/blog/en/per-component_vs_centralized_i18n.md +248 -0
- package/blog/en-GB/per-component_vs_centralized_i18n.md +247 -0
- package/blog/es/per-component_vs_centralized_i18n.md +245 -0
- package/blog/fr/per-component_vs_centralized_i18n.md +245 -0
- package/blog/hi/per-component_vs_centralized_i18n.md +249 -0
- package/blog/id/per-component_vs_centralized_i18n.md +248 -0
- package/blog/it/per-component_vs_centralized_i18n.md +247 -0
- package/blog/ja/per-component_vs_centralized_i18n.md +247 -0
- package/blog/ko/per-component_vs_centralized_i18n.md +246 -0
- package/blog/pl/per-component_vs_centralized_i18n.md +247 -0
- package/blog/pt/per-component_vs_centralized_i18n.md +246 -0
- package/blog/ru/per-component_vs_centralized_i18n.md +251 -0
- package/blog/tr/per-component_vs_centralized_i18n.md +244 -0
- package/blog/uk/compiler_vs_declarative_i18n.md +224 -0
- package/blog/uk/i18n_using_next-i18next.md +1086 -0
- package/blog/uk/i18n_using_next-intl.md +760 -0
- package/blog/uk/index.md +69 -0
- package/blog/uk/internationalization_and_SEO.md +273 -0
- package/blog/uk/intlayer_with_i18next.md +211 -0
- package/blog/uk/intlayer_with_next-i18next.md +202 -0
- package/blog/uk/intlayer_with_next-intl.md +203 -0
- package/blog/uk/intlayer_with_react-i18next.md +200 -0
- package/blog/uk/intlayer_with_react-intl.md +202 -0
- package/blog/uk/intlayer_with_vue-i18n.md +206 -0
- package/blog/uk/l10n_platform_alternative/Lokalise.md +80 -0
- package/blog/uk/l10n_platform_alternative/crowdin.md +80 -0
- package/blog/uk/l10n_platform_alternative/phrase.md +78 -0
- package/blog/uk/list_i18n_technologies/CMS/drupal.md +143 -0
- package/blog/uk/list_i18n_technologies/CMS/wix.md +167 -0
- package/blog/uk/list_i18n_technologies/CMS/wordpress.md +189 -0
- package/blog/uk/list_i18n_technologies/frameworks/angular.md +125 -0
- package/blog/uk/list_i18n_technologies/frameworks/flutter.md +128 -0
- package/blog/uk/list_i18n_technologies/frameworks/react-native.md +217 -0
- package/blog/uk/list_i18n_technologies/frameworks/react.md +155 -0
- package/blog/uk/list_i18n_technologies/frameworks/svelte.md +145 -0
- package/blog/uk/list_i18n_technologies/frameworks/vue.md +144 -0
- package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +1499 -0
- package/blog/uk/nextjs-multilingual-seo-comparison.md +360 -0
- package/blog/uk/per-component_vs_centralized_i18n.md +248 -0
- package/blog/uk/rag_powered_documentation_assistant.md +288 -0
- package/blog/uk/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
- package/blog/uk/vue-i18n_vs_intlayer.md +279 -0
- package/blog/uk/what_is_internationalization.md +167 -0
- package/blog/vi/per-component_vs_centralized_i18n.md +246 -0
- package/blog/zh/per-component_vs_centralized_i18n.md +248 -0
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +20 -0
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +20 -0
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +20 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +20 -0
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +1 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts +1 -0
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
- package/docs/ar/configuration.md +6 -1
- package/docs/ar/dictionary/content_file.md +6 -1
- package/docs/de/configuration.md +6 -1
- package/docs/de/dictionary/content_file.md +6 -1
- package/docs/en/configuration.md +6 -1
- package/docs/en/dictionary/content_file.md +6 -1
- package/docs/en-GB/configuration.md +6 -1
- package/docs/en-GB/dictionary/content_file.md +3 -1
- package/docs/es/configuration.md +6 -1
- package/docs/es/dictionary/content_file.md +6 -1
- package/docs/fr/configuration.md +6 -1
- package/docs/fr/dictionary/content_file.md +3 -1
- package/docs/hi/configuration.md +6 -1
- package/docs/hi/dictionary/content_file.md +3 -1
- package/docs/id/configuration.md +6 -1
- package/docs/id/dictionary/content_file.md +3 -1
- package/docs/it/configuration.md +6 -1
- package/docs/it/dictionary/content_file.md +3 -1
- package/docs/ja/configuration.md +6 -1
- package/docs/ja/dictionary/content_file.md +3 -1
- package/docs/ko/configuration.md +6 -1
- package/docs/ko/dictionary/content_file.md +3 -1
- package/docs/pl/configuration.md +3 -1
- package/docs/pl/dictionary/content_file.md +3 -1
- package/docs/pt/configuration.md +6 -1
- package/docs/pt/dictionary/content_file.md +3 -1
- package/docs/ru/configuration.md +6 -1
- package/docs/ru/dictionary/content_file.md +6 -1
- package/docs/tr/configuration.md +6 -1
- package/docs/tr/dictionary/content_file.md +3 -1
- package/docs/uk/CI_CD.md +198 -0
- package/docs/uk/autoFill.md +307 -0
- package/docs/uk/bundle_optimization.md +185 -0
- package/docs/uk/cli/build.md +64 -0
- package/docs/uk/cli/ci.md +137 -0
- package/docs/uk/cli/configuration.md +63 -0
- package/docs/uk/cli/debug.md +46 -0
- package/docs/uk/cli/doc-review.md +43 -0
- package/docs/uk/cli/doc-translate.md +132 -0
- package/docs/uk/cli/editor.md +28 -0
- package/docs/uk/cli/fill.md +130 -0
- package/docs/uk/cli/index.md +190 -0
- package/docs/uk/cli/init.md +84 -0
- package/docs/uk/cli/list.md +90 -0
- package/docs/uk/cli/list_projects.md +128 -0
- package/docs/uk/cli/live.md +41 -0
- package/docs/uk/cli/login.md +157 -0
- package/docs/uk/cli/pull.md +78 -0
- package/docs/uk/cli/push.md +98 -0
- package/docs/uk/cli/sdk.md +71 -0
- package/docs/uk/cli/test.md +76 -0
- package/docs/uk/cli/transform.md +65 -0
- package/docs/uk/cli/version.md +24 -0
- package/docs/uk/cli/watch.md +37 -0
- package/docs/uk/configuration.md +742 -0
- package/docs/uk/dictionary/condition.md +237 -0
- package/docs/uk/dictionary/content_file.md +1134 -0
- package/docs/uk/dictionary/enumeration.md +245 -0
- package/docs/uk/dictionary/file.md +232 -0
- package/docs/uk/dictionary/function_fetching.md +212 -0
- package/docs/uk/dictionary/gender.md +273 -0
- package/docs/uk/dictionary/insertion.md +187 -0
- package/docs/uk/dictionary/markdown.md +383 -0
- package/docs/uk/dictionary/nesting.md +273 -0
- package/docs/uk/dictionary/translation.md +332 -0
- package/docs/uk/formatters.md +595 -0
- package/docs/uk/how_works_intlayer.md +256 -0
- package/docs/uk/index.md +175 -0
- package/docs/uk/interest_of_intlayer.md +297 -0
- package/docs/uk/intlayer_CMS.md +569 -0
- package/docs/uk/intlayer_visual_editor.md +292 -0
- package/docs/uk/intlayer_with_angular.md +710 -0
- package/docs/uk/intlayer_with_astro.md +256 -0
- package/docs/uk/intlayer_with_create_react_app.md +1258 -0
- package/docs/uk/intlayer_with_express.md +429 -0
- package/docs/uk/intlayer_with_fastify.md +446 -0
- package/docs/uk/intlayer_with_lynx+react.md +548 -0
- package/docs/uk/intlayer_with_nestjs.md +283 -0
- package/docs/uk/intlayer_with_next-i18next.md +640 -0
- package/docs/uk/intlayer_with_next-intl.md +456 -0
- package/docs/uk/intlayer_with_nextjs_page_router.md +1541 -0
- package/docs/uk/intlayer_with_nuxt.md +711 -0
- package/docs/uk/intlayer_with_react_router_v7.md +600 -0
- package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +669 -0
- package/docs/uk/intlayer_with_svelte_kit.md +579 -0
- package/docs/uk/intlayer_with_tanstack.md +818 -0
- package/docs/uk/intlayer_with_vite+preact.md +1748 -0
- package/docs/uk/intlayer_with_vite+react.md +1449 -0
- package/docs/uk/intlayer_with_vite+solid.md +302 -0
- package/docs/uk/intlayer_with_vite+svelte.md +520 -0
- package/docs/uk/intlayer_with_vite+vue.md +1113 -0
- package/docs/uk/introduction.md +222 -0
- package/docs/uk/locale_mapper.md +242 -0
- package/docs/uk/mcp_server.md +211 -0
- package/docs/uk/packages/express-intlayer/t.md +465 -0
- package/docs/uk/packages/intlayer/getEnumeration.md +159 -0
- package/docs/uk/packages/intlayer/getHTMLTextDir.md +121 -0
- package/docs/uk/packages/intlayer/getLocaleLang.md +81 -0
- package/docs/uk/packages/intlayer/getLocaleName.md +135 -0
- package/docs/uk/packages/intlayer/getLocalizedUrl.md +338 -0
- package/docs/uk/packages/intlayer/getMultilingualUrls.md +359 -0
- package/docs/uk/packages/intlayer/getPathWithoutLocale.md +75 -0
- package/docs/uk/packages/intlayer/getPrefix.md +213 -0
- package/docs/uk/packages/intlayer/getTranslation.md +190 -0
- package/docs/uk/packages/intlayer/getTranslationContent.md +189 -0
- package/docs/uk/packages/next-intlayer/t.md +365 -0
- package/docs/uk/packages/next-intlayer/useDictionary.md +276 -0
- package/docs/uk/packages/next-intlayer/useIntlayer.md +263 -0
- package/docs/uk/packages/next-intlayer/useLocale.md +166 -0
- package/docs/uk/packages/react-intlayer/t.md +311 -0
- package/docs/uk/packages/react-intlayer/useDictionary.md +295 -0
- package/docs/uk/packages/react-intlayer/useI18n.md +250 -0
- package/docs/uk/packages/react-intlayer/useIntlayer.md +251 -0
- package/docs/uk/packages/react-intlayer/useLocale.md +210 -0
- package/docs/uk/per_locale_file.md +345 -0
- package/docs/uk/plugins/sync-json.md +398 -0
- package/docs/uk/readme.md +265 -0
- package/docs/uk/releases/v6.md +305 -0
- package/docs/uk/releases/v7.md +624 -0
- package/docs/uk/roadmap.md +346 -0
- package/docs/uk/testing.md +204 -0
- package/docs/vi/configuration.md +6 -1
- package/docs/vi/dictionary/content_file.md +6 -1
- package/docs/zh/configuration.md +6 -1
- package/docs/zh/dictionary/content_file.md +6 -1
- package/frequent_questions/ar/error-vite-env-only.md +77 -0
- package/frequent_questions/de/error-vite-env-only.md +77 -0
- package/frequent_questions/en/error-vite-env-only.md +77 -0
- package/frequent_questions/en-GB/error-vite-env-only.md +77 -0
- package/frequent_questions/es/error-vite-env-only.md +76 -0
- package/frequent_questions/fr/error-vite-env-only.md +77 -0
- package/frequent_questions/hi/error-vite-env-only.md +77 -0
- package/frequent_questions/id/error-vite-env-only.md +77 -0
- package/frequent_questions/it/error-vite-env-only.md +77 -0
- package/frequent_questions/ja/error-vite-env-only.md +77 -0
- package/frequent_questions/ko/error-vite-env-only.md +77 -0
- package/frequent_questions/pl/error-vite-env-only.md +77 -0
- package/frequent_questions/pt/error-vite-env-only.md +77 -0
- package/frequent_questions/ru/error-vite-env-only.md +77 -0
- package/frequent_questions/tr/error-vite-env-only.md +77 -0
- package/frequent_questions/uk/SSR_Next_no_[locale].md +104 -0
- package/frequent_questions/uk/array_as_content_declaration.md +72 -0
- package/frequent_questions/uk/build_dictionaries.md +58 -0
- package/frequent_questions/uk/build_error_CI_CD.md +74 -0
- package/frequent_questions/uk/bun_set_up.md +53 -0
- package/frequent_questions/uk/customized_locale_list.md +64 -0
- package/frequent_questions/uk/domain_routing.md +113 -0
- package/frequent_questions/uk/error-vite-env-only.md +77 -0
- package/frequent_questions/uk/esbuild_error.md +29 -0
- package/frequent_questions/uk/get_locale_cookie.md +142 -0
- package/frequent_questions/uk/intlayer_command_undefined.md +155 -0
- package/frequent_questions/uk/locale_incorect_in_url.md +73 -0
- package/frequent_questions/uk/package_version_error.md +181 -0
- package/frequent_questions/uk/static_rendering.md +44 -0
- package/frequent_questions/uk/translated_path_url.md +55 -0
- package/frequent_questions/uk/unknown_command.md +97 -0
- package/frequent_questions/vi/error-vite-env-only.md +77 -0
- package/frequent_questions/zh/error-vite-env-only.md +77 -0
- package/legal/uk/privacy_notice.md +83 -0
- package/legal/uk/terms_of_service.md +55 -0
- package/package.json +9 -9
- package/src/generated/blog.entry.ts +20 -0
- 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
|
+
```
|