Получайте уведомления о предстоящих релизах Intlayer
    Создание: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';  }): GetPrefixResulttype GetPrefixResult = {  prefix: string;   // например, 'fr/' или ''  localePrefix?: Locale; // например, 'fr' или undefined}

    Параметры

    • locale: Locales

      • Описание: Локаль, для которой необходимо сгенерировать префикс. Если значение ложно (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",});// Использование префикса для построения путиconst url1 = `/${prefix}about`.replace(/\/+/g, "/");// Результат: "/fr/about"// Использование localePrefix для идентификации локалиconsole.log(`Текущая локаль: ${localePrefix}`);// Вывод: "Текущая локаль: 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;
    Получайте уведомления о предстоящих релизах Intlayer