@intlayer/core
Version:
Includes core Intlayer functions like translation, dictionary, and utility functions shared across multiple packages.
55 lines (53 loc) • 2.55 kB
JavaScript
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