From 3112f7c47e41611b719914c7cca39647ae8181db Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Mon, 6 Jul 2026 23:57:04 +0200 Subject: [PATCH] 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. --- CHANGELOG.md | 1 + src/features/metadata/Metadata.constants.ts | 17 +++++++++++++++++ src/lib/ISOLanguageUtil.ts | 4 +++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f0712607..aa07bc7b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -72,6 +72,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - (**Reader**) Fix preserving scroll position - (**Reader**) Fix missing gap between chapters in continuous vertical and horizontal reading modes with disabled transition page - (**Browse**) Fix showing only nsfw sources in the browse source page when the "show nsfw" setting is disabled +- (**Browse**) Fix not being able to select some languages as an "allowed language" in some situations (e.g., browser native language "en-GB" prevented "English" from getting visually shown as enabled) - (**Manga/Library**) Fix mark as read/unread option not being disabled for manga without any chapters - (**Manga/Library**) Fix delete/download option not being disabled for manga without any chapters - (**Source**) Fix changing configuration settings with multi option selection where a selected option does not exist anymore. (E.g. Komgas "Default libraries" setting, still having a library selected that has been deleted) diff --git a/src/features/metadata/Metadata.constants.ts b/src/features/metadata/Metadata.constants.ts index da4dbc47..a00098ff 100644 --- a/src/features/metadata/Metadata.constants.ts +++ b/src/features/metadata/Metadata.constants.ts @@ -726,6 +726,23 @@ export const METADATA_MIGRATIONS: IMetadataMigration[] = [ })) satisfies IMetadataMigration['values'])(), ], }, + { + values: [ + { + key: 'browseLanguages', + oldValue: /^\[.*]$/g, + newValue: (browseLanguagesValue) => { + const convertedBrowseLanguages = convertToObject(browseLanguagesValue, []); + + const convertedToValidIsoCodes = convertedBrowseLanguages.map( + (language) => getISOLanguage(language)?.isoCode ?? language, + ); + + return JSON.stringify(convertedToValidIsoCodes); + }, + }, + ], + }, ]; export const ALL_APP_METADATA_KEY_PREFIXES: string[] = [ diff --git a/src/lib/ISOLanguageUtil.ts b/src/lib/ISOLanguageUtil.ts index 11224bcc..872ffbbb 100644 --- a/src/lib/ISOLanguageUtil.ts +++ b/src/lib/ISOLanguageUtil.ts @@ -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];