refactor: make locale handling truly centralized and robust
- Added getPathWithoutLocale() and buildLocalePath() helpers to locales.ts - Updated Header to use centralized helpers instead of hardcoded regex - Updated middleware to use SUPPORTED_LOCALES in matcher config - Updated LocaleProvider to use isValidLocale() instead of hardcoded array To add a new language now, only update: 1. SUPPORTED_LOCALES in locales.ts 2. LOCALE_CONFIG entry with label, flag, saleorLocale 3. Add translation keys to all message files All routing now uses centralized constants - no more hardcoded locale lists.
This commit is contained in:
@@ -21,6 +21,19 @@ export function getSaleorLocale(locale: Locale): string {
|
||||
}
|
||||
|
||||
export function getLocaleFromPath(pathname: string): string {
|
||||
const match = pathname.match(/^\/(sr|en|de|fr)/);
|
||||
const pattern = SUPPORTED_LOCALES.join("|");
|
||||
const match = pathname.match(new RegExp(`^\\/(${pattern})`));
|
||||
return match ? match[1] : DEFAULT_LOCALE;
|
||||
}
|
||||
|
||||
export function getPathWithoutLocale(pathname: string): string {
|
||||
const pattern = SUPPORTED_LOCALES.join("|");
|
||||
return pathname.replace(new RegExp(`^\\/(${pattern})`), "") || "/";
|
||||
}
|
||||
|
||||
export function buildLocalePath(locale: Locale, path: string): string {
|
||||
if (locale === DEFAULT_LOCALE) {
|
||||
return path === "/" ? "/" : path;
|
||||
}
|
||||
return `/${locale}${path === "/" ? "" : path}`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user