---
createdAt: 2025-11-16
updatedAt: 2025-11-16
title: Документация функции getPrefix | intlayer
description: Узнайте, как использовать функцию getPrefix для пакета intlayer
keywords:
  - getPrefix
  - префикс
  - Intlayer
  - intlayer
  - Интернационализация
  - Документация
  - Next.js
  - JavaScript
  - React
slugs:
  - doc
  - packages
  - intlayer
  - getPrefix
history:
  - version: 7.1.0
    date: 2025-11-16
    changes: "Начальная документация"
---

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

## Описание

Функция `getPrefix` определяет префикс URL для заданной локали на основе конфигурации режима маршрутизации. Она сравнивает локаль с локалью по умолчанию и возвращает объект, содержащий три различных формата префикса для гибкого построения URL.

**Основные особенности:**

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

---

## Сигнатура функции

```typescript
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`
  - **Описание**: Локаль, для которой необходимо сгенерировать префикс. Если значение ложно (undefined, null, пустая строка), функция возвращает пустую строку.
  - **Тип**: `Locales`
  - **Обязательно**: Да

- `options?: object`
  - **Описание**: Объект конфигурации для определения префикса.
  - **Тип**: `object`
  - **Обязательно**: Нет (необязательно)

  - `options.defaultLocale?: Locales`
    - **Описание**: Локаль по умолчанию для приложения. Если не указана, используется локаль по умолчанию, настроенная в конфигурации вашего проекта.
    - **Тип**: `Locales`
    - **По умолчанию**: [`Конфигурация проекта`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/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/ru/configuration.md#middleware)
    - **Режимы**:
      - `prefix-no-default`: Возвращает пустые строки, когда локаль совпадает с локалью по умолчанию
      - `prefix-all`: Возвращает префикс для всех локалей, включая локаль по умолчанию
      - `no-prefix`: Возвращает пустые строки (без префикса в URL)
      - `search-params`: Возвращает пустые строки (локаль в параметрах запроса)

### Возвращает

- **Тип**: `GetPrefixResult`
- **Описание**: Объект, содержащий три различных формата префикса:
  - `prefix`: Префикс пути с завершающим слэшем (например, `'fr/'`, `''`)
  - `localePrefix`: Идентификатор локали без слэшей (например, `'fr'`, `undefined`)

---

## Пример использования

### Базовое использование

```typescript codeFormat={["typescript", "esm", "commonjs"]}
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' }
```

### Различные режимы маршрутизации

```typescript
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 }
```

### Практический пример

```typescript
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`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/intlayer/getLocalizedUrl.md): Генерирует локализованный URL для конкретной локали
- [`getMultilingualUrls`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/intlayer/getMultilingualUrls.md): Генерирует URL для всех настроенных локалей

---

## TypeScript

```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;
```
