UNPKG

@intlayer/core

Version:

Includes core Intlayer functions like translation, dictionary, and utility functions shared across multiple packages.

55 lines (53 loc) 2.55 kB
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs'); const require_localization_getLocalizedUrl = require('./getLocalizedUrl.cjs'); let __intlayer_config_built = require("@intlayer/config/built"); __intlayer_config_built = require_rolldown_runtime.__toESM(__intlayer_config_built); //#region src/localization/getMultilingualUrls.ts /** * Generates multilingual URLs by prefixing the given URL with each supported locale * or adding search parameters based on the routing mode. * Handles both absolute and relative URLs appropriately. * * This function gets the locales, default locale, and routing mode from the configuration if not provided. * * Example: * * ```ts * // prefix-no-default mode * getMultilingualUrls('/dashboard', { locales: ['en', 'fr'], defaultLocale: 'en', mode: 'prefix-no-default' }) * // Returns { en: '/dashboard', fr: '/fr/dashboard' } * * // prefix-all mode * getMultilingualUrls('/dashboard', { locales: ['en', 'fr'], defaultLocale: 'en', mode: 'prefix-all' }) * // Returns { en: '/en/dashboard', fr: '/fr/dashboard' } * * // search-params mode * getMultilingualUrls('/dashboard', { locales: ['en', 'fr'], defaultLocale: 'en', mode: 'search-params' }) * // Returns { en: '/dashboard?locale=en', fr: '/dashboard?locale=fr' } * * // no-prefix mode * getMultilingualUrls('/dashboard', { locales: ['en', 'fr'], defaultLocale: 'en', mode: 'no-prefix' }) * // Returns { en: '/dashboard', fr: '/dashboard' } * ``` * * @param url - The original URL string to be processed. * @param options - Configuration options * @param options.locales - Optional array of supported locales. Defaults to configured locales. * @param options.defaultLocale - The default locale. Defaults to configured default locale. * @param options.mode - URL routing mode for locale handling. Defaults to configured mode. * @returns An object mapping each locale to its corresponding multilingual URL. */ const getMultilingualUrls = (url, options = {}) => { const { locales = __intlayer_config_built.default?.internationalization?.locales, defaultLocale = __intlayer_config_built.default?.internationalization?.defaultLocale, mode = __intlayer_config_built.default?.routing?.mode } = options; return (locales ?? []).reduce((acc, locale) => { acc[locale] = require_localization_getLocalizedUrl.getLocalizedUrl(url, locale, { locales, defaultLocale, mode }); return acc; }, {}); }; //#endregion exports.getMultilingualUrls = getMultilingualUrls; //# sourceMappingURL=getMultilingualUrls.cjs.map