Дата створення:2025-11-16Останнє оновлення:2025-11-16

    Документація: функція getPrefix в intlayer

    Опис

    Функція getPrefix визначає префікс URL для заданої локалі на основі конфігурації режиму маршрутизації. Вона порівнює локаль з локаллю за замовчуванням і повертає об'єкт, що містить три різні формати префіксів для гнучкого побудови URL.

    Ключові особливості:

    • Приймає локаль як перший параметр (обов'язково)
    • Необов'язковий об'єкт options з полями defaultLocale та mode
    • Повертає об'єкт з властивостями prefix та localePrefix
    • Підтримує всі режими маршрутизації: prefix-no-default, prefix-all, no-prefix та search-params
    • Легка утиліта для визначення, коли додавати префікси локалі

    Підпис функції

    getPrefix(
      locale: Locales,               // Обов'язково
      options?: {                    // Необов'язково
        defaultLocale?: Locales;
        mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params';
      }
    ): GetPrefixResult
    
    type GetPrefixResult = {
      prefix: string;   // напр., 'fr/' або ''
      localePrefix?: Locale; // напр., 'fr' або undefined
    }

    Параметри

    • locale: Locales

      • Опис: Локаль, для якої потрібно згенерувати префікс. Якщо значення є falsy (undefined, null, порожній рядок), функція повертає порожній рядок.
      • Тип: Locales
      • Обов'язкове: Так
    • options?: object

      • Опис: Об'єкт конфігурації для визначення префіксу.
      • Тип: object
      • Обов'язкове: Ні (Необов'язково)

      • options.defaultLocale?: Locales

        • Опис: Локаль за замовчуванням для застосунку. Якщо не вказано, використовується налаштована локаль за замовчуванням з конфігурації вашого проєкту.
        • Тип: Locales
        • За замовчуванням: Конфігурація проєкту
      • options.mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'

        • Опис: Режим маршрутизації URL для обробки локалі. Якщо не вказано, використовується режим, налаштований у конфігурації вашого проєкту.
        • Тип: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'
        • За замовчуванням: Конфігурація проєкту
        • Режими:
          • prefix-no-default: Повертає порожні рядки, коли локаль збігається з локаллю за замовчуванням
          • prefix-all: Повертає префікс для всіх локалей, включно з локаллю за замовчуванням
          • no-prefix: Повертає порожні рядки (без префікса в URL)
          • search-params: Повертає порожні рядки (локаль у параметрах запиту)

    Повертає

    • Тип: GetPrefixResult
    • Опис: Об'єкт, що містить три різні формати префіксів:
      • prefix: Префікс шляху з кінцевим слешем (наприклад, 'fr/', '')
      • localePrefix: Ідентифікатор локалі без слешів (наприклад, 'fr', undefined)

    Приклад використання

    Базове використання

    import { getPrefix, Locales } from "intlayer";
    
    // Перевірка префіксу для англійської локалі
    getPrefix(Locales.ENGLISH, {
      defaultLocale: Locales.ENGLISH,
      mode: "prefix-all",
    });
    // Повертає: { prefix: 'en/', localePrefix: 'en' }
    
    // Перевірка префіксу для французької локалі
    getPrefix(Locales.FRENCH, {
      defaultLocale: Locales.ENGLISH,
      mode: "prefix-no-default",
    });
    // Повертає: { prefix: 'fr/', localePrefix: 'fr' }

    Різні режими маршрутизації

    import { getPrefix, Locales } from "intlayer";
    
    // prefix-all: Завжди повертає префікс
    getPrefix(Locales.ENGLISH, {
      mode: "prefix-all",
      defaultLocale: Locales.ENGLISH,
    });
    // Повертає: { prefix: '/en', localePrefix: 'en' }
    
    // prefix-no-default: Без префікса, коли локаль збігається зі значенням за замовчуванням
    getPrefix(Locales.ENGLISH, {
      mode: "prefix-no-default",
      defaultLocale: Locales.ENGLISH,
    });
    // Повертає: { prefix: '', localePrefix: undefined }
    
    // prefix-no-default: Повертає префікс, коли локаль відрізняється від локалі за замовчуванням
    getPrefix(Locales.FRENCH, {
      mode: "prefix-no-default",
      defaultLocale: Locales.ENGLISH,
    });
    // Повертає: { prefix: 'fr/', localePrefix: 'fr' }
    
    // no-prefix & search-params: Ніколи не повертає префікс
    getPrefix(Locales.ENGLISH, { mode: "no-prefix" });
    // Повертає: { prefix: '', localePrefix: undefined }
    
    getPrefix(Locales.ENGLISH, { mode: "search-params" });
    // Повертає: { prefix: '', localePrefix: undefined }

    Практичний приклад

    import { getPrefix, Locales } from "intlayer";
    
    // Формуємо URL з відповідним префіксом для конкретної локалі
    const locale = Locales.FRENCH;
    const { prefix, localePrefix } = getPrefix(locale, {
      defaultLocale: Locales.ENGLISH,
      mode: "prefix-no-default",
    });
    
    // Використання prefix для побудови шляху
    const url1 = `/${prefix}about`.replace(/\/+/g, "/");
    // Результат: "/fr/about"
    
    // Використання localePrefix для ідентифікації локалі
    console.log(`Current locale: ${localePrefix}`);
    // Вивід: "Current locale: fr"

    Пов'язані функції

    • getLocalizedUrl: Генерує локалізований URL для певної локалі
    • getMultilingualUrls: Генерує URL-адреси для всіх налаштованих локалей

    TypeScript

    type GetPrefixResult = {
      prefix: string; // Префікс шляху з кінцевим слешем (наприклад, 'fr/' або '')
      localePrefix?: Locale; // Ідентифікатор локалі без слешів (наприклад, 'fr' або undefined)
    };
    
    function getPrefix(
      locale: Locales,
      options?: {
        defaultLocale?: Locales;
        mode?: "prefix-no-default" | "prefix-all" | "no-prefix" | "search-params";
      }
    ): GetPrefixResult;