i18n: default-language picker offers only shipped locales; widen stored bare codes on read
This commit is contained in:
@@ -5,6 +5,13 @@ import { useAuth } from 'hooks/useAuth';
|
||||
|
||||
const QUERY_KEY = ['USER_SETTINGS'];
|
||||
|
||||
/**
|
||||
* UI locales went from bare codes to regional BCP 47 tags (docs/localization.md D2). A stale bare
|
||||
* code must resolve rather than fail, and this is a one-time widening on read, not a DB migration.
|
||||
*/
|
||||
const WIDEN_BARE_LOCALE: Record<string, string> = { en: 'en-GB', pt: 'pt-PT' };
|
||||
const widenLocale = (code: string): string => WIDEN_BARE_LOCALE[code] ?? code;
|
||||
|
||||
const mergeWithDefaults = (saved: Partial<UserSettings>): UserSettings => ({
|
||||
chat: { ...DEFAULT_SETTINGS.chat, ...saved.chat },
|
||||
ai: {
|
||||
@@ -14,7 +21,11 @@ const mergeWithDefaults = (saved: Partial<UserSettings>): UserSettings => ({
|
||||
},
|
||||
tasks: { ...DEFAULT_SETTINGS.tasks, ...saved.tasks },
|
||||
appearance: { ...DEFAULT_SETTINGS.appearance, ...saved.appearance },
|
||||
languages: { ...DEFAULT_SETTINGS.languages, ...saved.languages },
|
||||
languages: {
|
||||
...DEFAULT_SETTINGS.languages,
|
||||
...saved.languages,
|
||||
default: widenLocale(saved.languages?.default ?? DEFAULT_SETTINGS.languages.default),
|
||||
},
|
||||
tts: { ...DEFAULT_SETTINGS.tts, ...saved.tts },
|
||||
});
|
||||
|
||||
@@ -121,7 +132,7 @@ export const DEFAULT_SETTINGS: UserSettings = {
|
||||
},
|
||||
languages: {
|
||||
spoken: ['en'],
|
||||
default: 'en',
|
||||
default: 'en-GB',
|
||||
translateTo: 'en',
|
||||
},
|
||||
tts: {
|
||||
|
||||
Reference in New Issue
Block a user