--- createdAt: 2025-08-23 updatedAt: 2025-11-16 title: Документація функції getMultilingualUrls | intlayer description: Дізнайтеся, як використовувати функцію getMultilingualUrls у пакеті intlayer keywords: - getMultilingualUrls - переклад - Intlayer - intlayer - інтернаціоналізація - документація - Next.js - JavaScript - React slugs: - doc - packages - intlayer - getMultilingualUrls history: - version: 7.1.0 date: 2025-11-16 changes: Refactored to use options parameter with mode instead of prefixDefault - version: 5.5.10 date: 2025-06-29 changes: Init history --- # Документація: функція `getMultilingualUrls` в `intlayer` ## Опис Функція `getMultilingualUrls` генерує відображення багатомовних URL, додаючи префікс локалі до заданого URL для кожної підтримуваної локалі. Вона може обробляти як абсолютні, так і відносні URL, застосовуючи відповідний префікс локалі на основі наданої конфігурації або значень за замовчуванням. **Ключові особливості:** - Потрібен лише один параметр: `url` - Необов'язковий об'єкт `options` з полями `locales`, `defaultLocale` та `mode` - Використовує конфігурацію інтернаціоналізації вашого проєкту за замовчуванням - Підтримує кілька режимів маршрутизації: `prefix-no-default`, `prefix-all`, `no-prefix` та `search-params` - Повертає об'єкт-мапу, де ключами є всі локалі, а значеннями — відповідні URL --- ## Підпис функції ```typescript getMultilingualUrls( url: string, // Обов'язково options?: { // Необов'язково locales?: Locales[]; defaultLocale?: Locales; mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'; } ): StrictModeLocaleMap ``` --- ## Параметри ### Обов'язкові параметри - `url: string` - **Опис**: Початковий рядок URL, до якого будуть додані префікси локалей. - **Тип**: `string` - **Обов'язково**: Так ### Необов'язкові параметри - `options?: object` - **Опис**: Об'єкт конфігурації для поведінки локалізації URL. - **Тип**: `object` - **Обов'язково**: Ні (Необов'язково) - `options.locales?: Locales[]` - **Опис**: Масив підтримуваних локалей. Якщо не вказано, використовуються налаштовані локалі з конфігурації вашого проєкту. - **Тип**: `Locales[]` - **За замовчуванням**: [`Конфігурація проєкту`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md#middleware) - `options.defaultLocale?: Locales` - **Опис**: Мова за замовчуванням для додатка. Якщо не вказано, використовується мова за замовчуванням, налаштована у конфігурації вашого проєкту. - **Тип**: `Locales` - **За замовчуванням**: [`Конфігурація проєкту`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md#middleware) - `options.mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'` - **Опис**: Режим маршрутизації URL для обробки локалі. Якщо не вказано, використовується режим, налаштований у конфігурації вашого проєкту. - **Тип**: `'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'` - **За замовчуванням**: [`Конфігурація проєкту`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md#middleware) - **Режими**: - `prefix-no-default`: Без префікса для мови за замовчуванням, префікс для всіх інших - `prefix-all`: Префікс для всіх мов, включно зі мовою за замовчуванням - `no-prefix`: Немає префікса локалі в URL - `search-params`: Використовувати параметри запиту для локалі (наприклад, `?locale=fr`) ### Повертає - **Тип**: `StrictModeLocaleMap` - **Опис**: Об'єкт, який зіставляє кожну локаль з відповідним багатомовним URL. --- ## Приклад використання ### Базове використання (використовує конфігурацію проєкту) ```typescript codeFormat="typescript" import { getMultilingualUrls, Locales } from "intlayer"; // Використовує конфігурацію вашого проєкту для locales, defaultLocale і mode getMultilingualUrls("/dashboard"); // Вивід (припускаючи, що в конфігурації проєкту є en і fr з mode 'prefix-no-default'): // { // en: "/dashboard", // fr: "/fr/dashboard" // } ``` ```javascript codeFormat="esm" import { getMultilingualUrls, Locales } from "intlayer"; getMultilingualUrls("/dashboard"); // Вивід: { // en: "/dashboard", // fr: "/fr/dashboard" // } ``` ```javascript codeFormat="commonjs" const { getMultilingualUrls, Locales } = require("intlayer"); getMultilingualUrls("/dashboard"); // Вивід: { // en: "/dashboard", // fr: "/fr/dashboard" // } ``` ### Відносні URL з опціями ```typescript codeFormat="typescript" import { getMultilingualUrls, Locales } from "intlayer"; getMultilingualUrls("/dashboard", { locales: [Locales.ENGLISH, Locales.FRENCH], defaultLocale: Locales.ENGLISH, mode: "prefix-no-default", }); // Вивід: { // en: "/dashboard", // fr: "/fr/dashboard" // } ``` ```javascript codeFormat="esm" import { getMultilingualUrls, Locales } from "intlayer"; getMultilingualUrls("/dashboard", { locales: [Locales.ENGLISH, Locales.FRENCH], defaultLocale: Locales.ENGLISH, mode: "prefix-no-default", }); // Вивід: { // en: "/dashboard", // fr: "/fr/dashboard" // } ``` ```javascript codeFormat="commonjs" const { getMultilingualUrls, Locales } = require("intlayer"); getMultilingualUrls("/dashboard", { locales: [Locales.ENGLISH, Locales.FRENCH], defaultLocale: Locales.ENGLISH, mode: "prefix-no-default", }); // Вивід: { // en: "/dashboard", // fr: "/fr/dashboard" // } ``` ### Абсолютні URL-адреси ```typescript getMultilingualUrls("https://example.com/dashboard", { locales: [Locales.ENGLISH, Locales.FRENCH], defaultLocale: Locales.ENGLISH, mode: "prefix-all", }); // Вивід: { // en: "https://example.com/en/dashboard", // fr: "https://example.com/fr/dashboard" // } ``` ### Різні режими маршрутизації ```typescript // prefix-no-default: Без префіксу для локалі за замовчуванням getMultilingualUrls("/dashboard", { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, mode: "prefix-no-default", }); // Вивід: { // en: "/dashboard", // fr: "/fr/dashboard", // es: "/es/dashboard" // } // prefix-all: Префікс для всіх локалей getMultilingualUrls("/dashboard", { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, mode: "prefix-all", }); // Вихід: { // en: "/en/dashboard", // fr: "/fr/dashboard", // es: "/es/dashboard" // } // no-prefix: Відсутній префікс локалі в URL getMultilingualUrls("/dashboard", { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, mode: "no-prefix", }); // Вихід: { // en: "/dashboard", // fr: "/dashboard", // es: "/dashboard" // } // search-params: Локаль як параметр запиту getMultilingualUrls("/dashboard", { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, mode: "search-params", }); // Вихід: { // en: "/dashboard?locale=en", // fr: "/dashboard?locale=fr", // es: "/dashboard?locale=es" // } ``` --- ## Крайні випадки - **Відсутній сегмент локалі:** - Функція видаляє будь-який існуючий сегмент локалі з URL перед генерацією багатомовних відповідностей. - **Локаль за замовчуванням:** - Коли `mode` дорівнює `'prefix-no-default'`, функція не додає префікс до URL для локалі за замовчуванням. - Коли `mode` дорівнює `'prefix-all'`, функція додає префікси для всіх локалей, включно з локаллю за замовчуванням. - **Непідтримувані локалі:** - Лише локалі, вказані в масиві locales, враховуються під час генерації URL. - **Режими маршрутизації:** - `'prefix-no-default'`: для локалі за замовчуванням префікс відсутній, для інших — є (наприклад, `/dashboard`, `/fr/dashboard`) - `'prefix-all'`: усі локалі мають префікси (наприклад, `/en/dashboard`, `/fr/dashboard`) - `'no-prefix'`: Немає префіксів локалі в URL (для всіх локалей повертається той самий URL) - `'search-params'`: Локаль вказується через параметр запиту (наприклад, `/dashboard?locale=fr`) --- ## Використання в застосунках У багатомовному застосунку налаштування параметрів інтернаціоналізації через `locales` та `defaultLocale` є критично важливим для забезпечення відображення правильної мови. Нижче наведено приклад того, як `getMultilingualUrls` може бути використана в конфігурації застосунку: ```tsx codeFormat="typescript" import { Locales, type IntlayerConfig } from "intlayer"; // Конфігурація підтримуваних локалей та локалі за замовчуванням export default { internationalization: { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, }, } satisfies IntlayerConfig; export default config; ``` ```javascript codeFormat="esm" import { Locales } from "intlayer"; /** @type {import('intlayer').IntlayerConfig} */ const config = { internationalization: { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, }, }; export default config; ``` ```javascript codeFormat="commonjs" const { Locales } = require("intlayer"); /** @type {import('intlayer').IntlayerConfig} */ const config = { internationalization: { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, }, }; module.exports = config; ``` Показана вище конфігурація гарантує, що додаток розпізнає `ENGLISH`, `FRENCH` і `SPANISH` як підтримувані мови та використовує `ENGLISH` як мову за замовчуванням. З цією конфігурацією функція `getMultilingualUrls` може динамічно генерувати відповідності багатомовних URL на основі підтримуваних у додатку локалей: ```typescript // Використання конфігурації проєкту (опції не потрібні) getMultilingualUrls("/dashboard"); // Вивід: // { // en: "/dashboard", // fr: "/fr/dashboard", // es: "/es/dashboard" // } // З явними опціями getMultilingualUrls("/dashboard", { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, mode: "prefix-no-default", }); // Вивід: // { // en: "/dashboard", // fr: "/fr/dashboard", // es: "/es/dashboard" // } // Абсолютні URL з режимом "prefix-all" getMultilingualUrls("https://example.com/dashboard", { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, mode: "prefix-all", }); // Вивід: // { // en: "https://example.com/en/dashboard", // fr: "https://example.com/fr/dashboard", // es: "https://example.com/es/dashboard" // } ``` Інтегруючи `getMultilingualUrls`, розробники можуть підтримувати узгоджену структуру URL для кількох мов, що покращує як досвід користувача, так і SEO.