Документация: Функция getLocalizedUrl в intlayer
Описание:
Функция getLocalizedUrl генерирует локализованный URL, добавляя префикс с указанной локалью к заданному URL. Она обрабатывает как абсолютные, так и относительные URL, обеспечивая применение правильного префикса локали в зависимости от конфигурации.
Параметры:
url: string
- Описание: Исходная строка URL, к которой будет добавлен префикс с локалью.
- Тип: string
currentLocale: Locales
- Описание: Текущая локаль, для которой локализуется URL.
- Тип: Locales
locales: Locales[]
- Описание: Необязательный массив поддерживаемых локалей. По умолчанию предоставляются сконфигурированные локали в проекте.
- Тип: Locales[]
- По умолчанию: Конфигурация проекта
defaultLocale: Locales
- Описание: Локаль по умолчанию для приложения. По умолчанию предоставляется сконфигурированная локаль по умолчанию в проекте.
- Тип: Locales
- По умолчанию: Конфигурация проекта
prefixDefault: boolean
- Описание: Нужно ли добавлять префикс к URL для локали по умолчанию. По умолчанию предоставляется сконфигурированное значение в проекте.
- Тип: 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