Fix native language codes usage in "browse languages"
The native language code returned by the browser could be a code that is not included in the defined ISOLanguages object. E.g. "en-GB" while the object only has "en". This caused the "English" browse language to not be able to get selected as an allowed language.
This commit is contained in:
@@ -726,6 +726,23 @@ export const METADATA_MIGRATIONS: IMetadataMigration[] = [
|
||||
})) satisfies IMetadataMigration['values'])(),
|
||||
],
|
||||
},
|
||||
{
|
||||
values: [
|
||||
{
|
||||
key: 'browseLanguages',
|
||||
oldValue: /^\[.*]$/g,
|
||||
newValue: (browseLanguagesValue) => {
|
||||
const convertedBrowseLanguages = convertToObject<string[]>(browseLanguagesValue, []);
|
||||
|
||||
const convertedToValidIsoCodes = convertedBrowseLanguages.map(
|
||||
(language) => getISOLanguage(language)?.isoCode ?? language,
|
||||
);
|
||||
|
||||
return JSON.stringify(convertedToValidIsoCodes);
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
export const ALL_APP_METADATA_KEY_PREFIXES: string[] = [
|
||||
|
||||
@@ -116,7 +116,9 @@ const toUniqueISOLanguageCodes = (codes: string[]): string[] => {
|
||||
};
|
||||
|
||||
export function getPreferredISOLanguageCodes(): readonly string[] {
|
||||
const preferredLanguages = toUniqueISOLanguageCodes([...navigator.languages]);
|
||||
const preferredLanguages = toUniqueISOLanguageCodes([...navigator.languages]).map(
|
||||
(language) => getISOLanguage(language)?.isoCode ?? language,
|
||||
);
|
||||
|
||||
if (!preferredLanguages.length) {
|
||||
return [DEFAULT_LANGUAGE];
|
||||
|
||||
Reference in New Issue
Block a user