Документация: Функция getLocalizedUrl в intlayer
Описание:
Функция getLocalizedUrl генерирует локализованный URL, добавляя указанный язык в начало данного URL. Она обрабатывает как абсолютные, так и относительные URL, гарантируя, что правильный префикс языка применяется в зависимости от конфигурации.
Параметры:
url: string
- Описание: Исходная строка URL, к которой будет добавлен язык.
- Тип: string
currentLocale: Locales
- Описание: Текущий язык, для которого происходит локализация URL.
- Тип: Locales
locales: Locales[]
- Описание: Необязательный массив поддерживаемых языков. По умолчанию предоставляются сконфигурированные языки в проекте.
- Тип: Locales[]
- По умолчанию: Настройки проекта
defaultLocale: Locales
- Описание: Язык по умолчанию для приложения. По умолчанию предоставляются сконфигурированный язык по умолчанию в проекте.
- Тип: Locales
- По умолчанию: Настройки проекта
prefixDefault: boolean
- Описание: Нужно ли добавлять префикс языка для языка по умолчанию. По умолчанию предоставляется сконфигурированное значение в проекте.
- Тип: boolean
- По умолчанию: Настройки проекта
Возвращает:
- Тип: string
- Описание: Локализованный URL для указанного языка.
Пример использования:
Относительные URL:
import { getLocalizedUrl, Locales } from "intlayer";getLocalizedUrl( "/about", Locales.FRENCH, [Locales.ENGLISH, Locales.FRENCH], Locales.ENGLISH, false);// Вывод: "/fr/about" для французского языка// Вывод: "/about" для языка по умолчанию (английский)
Абсолютные URL:
getLocalizedUrl( "https://example.com/about", Locales.FRENCH, // Текущий язык [Locales.ENGLISH, Locales.FRENCH], // Поддерживаемые языки Locales.ENGLISH, // Язык по умолчанию false // Префикс языка по умолчанию); // Вывод: "https://example.com/fr/about" для французского языкаgetLocalizedUrl( "https://example.com/about", Locales.ENGLISH, // Текущий язык [Locales.ENGLISH, Locales.FRENCH], // Поддерживаемые языки Locales.ENGLISH, // Язык по умолчанию false // Префикс языка по умолчанию); // Вывод: "https://example.com/about" для английского языкаgetLocalizedUrl( "https://example.com/about", Locales.ENGLISH, // Текущий язык [Locales.ENGLISH, Locales.FRENCH], // Поддерживаемые языки Locales.ENGLISH, // Язык по умолчанию true // Префикс языка по умолчанию); // Вывод: "https://example.com/en/about" для английского языка
Неподдерживаемый язык:
getLocalizedUrl( "/about", Locales.ITALIAN, // Текущий язык [Locales.ENGLISH, Locales.FRENCH], // Поддерживаемые языки Locales.ENGLISH // Язык по умолчанию); // Вывод: "/about" (префикс не добавлен для неподдерживаемого языка)
Граничные случаи:
Отсутствие сегмента языка:
- Если URL не содержит сегмента языка, функция безопасно добавляет соответствующий язык.
Язык по умолчанию:
- Когда prefixDefault равно false, функция не добавляет префикс к URL для языка по умолчанию.
Неподдерживаемые языки:
- Для языков, не указанных в locales, функция не добавляет никакого префикса.
Использование в приложениях:
В многоязычном приложении важно настроить параметры интернационализации с помощью locales и defaultLocale для обеспечения отображения правильного языка. Ниже приведен пример того, как getLocalizedUrl можно использовать в настройках приложения:
import { Locales, type IntlayerConfig } from "intlayer";// Конфигурация для поддерживаемых языков и языка по умолчаниюexport default { internationalization: { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, },} satisfies IntlayerConfig;export default config;
Вышеуказанная конфигурация гарантирует, что приложение распознает ENGLISH, FRENCH и SPANISH как поддерживаемые языки и использует ENGLISH как запасной язык.
Используя эту конфигурацию, функция getLocalizedUrl может динамически генерировать локализованные URL на основе предпочтений языка пользователя:
getLocalizedUrl("/about", Locales.FRENCH); // Вывод: "/fr/about"getLocalizedUrl("/about", Locales.SPANISH); // Вывод: "/es/about"getLocalizedUrl("/about", Locales.ENGLISH); // Вывод: "/about"
Интегрируя getLocalizedUrl, разработчики могут поддерживать согласованную структуру URL на нескольких языках, улучшая как пользовательский опыт, так и SEO.
Если у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHub