diff --git a/src/utils/i18n.ts b/src/utils/i18n.ts index 9d5864e..a995d24 100644 --- a/src/utils/i18n.ts +++ b/src/utils/i18n.ts @@ -16,9 +16,21 @@ export type Locale = (typeof locales)[number] export const getPath = (locale?: Locale): ((arg0: string) => string) => (path: string) => { - if (locale && locale !== CONSTANT.I18N.DEFAULT_LOCALE && !path.startsWith(`/${locale}`)) { + // Check if path already contains any locale prefix + const existingLocale = locales.find(l => path.startsWith(`/${l}/`)) + + if (locale && locale !== CONSTANT.I18N.DEFAULT_LOCALE) { + if (existingLocale) { + // Replace existing locale with new locale + return path.replace(`/${existingLocale}/`, `/${locale}/`) + } + // Add new locale prefix return `/${locale}${path.startsWith('/') ? '' : '/'}${path}` } + // Remove locale prefix if switching to default locale + if (existingLocale && locale === CONSTANT.I18N.DEFAULT_LOCALE) { + return path.replace(`/${existingLocale}/`, '/') + } return path }