From dfa7a116742259476a92c773e6226dddc1a7a8a6 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 21 Feb 2026 10:43:49 +0100 Subject: [PATCH 1/7] French Traduction --- src/lib/types/audible.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib/types/audible.ts b/src/lib/types/audible.ts index 871ec5a..5f6d4d3 100644 --- a/src/lib/types/audible.ts +++ b/src/lib/types/audible.ts @@ -5,7 +5,7 @@ import type { SupportedLanguage } from '../constants/language-config'; -export type AudibleRegion = 'us' | 'ca' | 'uk' | 'au' | 'in' | 'de' | 'es'; +export type AudibleRegion = 'us' | 'ca' | 'uk' | 'au' | 'in' | 'de' | 'es' | 'fr'; export interface AudibleRegionConfig { code: AudibleRegion; @@ -64,6 +64,13 @@ export const AUDIBLE_REGIONS: Record = { baseUrl: 'https://www.audible.es', audnexusParam: 'es', language: 'es', + }, + fr: { + code: 'fr', + name: 'French', + baseUrl: 'https://www.audible.fr', + audnexusParam: 'fr', + language: 'fr', } }; From f570b8734341e8d196c6f5d053f93fdee6649768 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 21 Feb 2026 10:48:24 +0100 Subject: [PATCH 2/7] French Traduction --- documentation/integrations/audible.md | 1 + documentation/settings-pages.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/documentation/integrations/audible.md b/documentation/integrations/audible.md index 54c3cf7..8d6d706 100644 --- a/documentation/integrations/audible.md +++ b/documentation/integrations/audible.md @@ -33,6 +33,7 @@ Configurable Audible region for accurate metadata matching across different inte - India (`in`) - `audible.in` (English) - Germany (`de`) - `audible.de` (non-English) - Spain (`es`) - `audible.es` (non-English) +- French (`fr`) - `audible.fr` (non-English) **`isEnglish` Flag:** - Each region has `isEnglish: boolean` in `AudibleRegionConfig` diff --git a/documentation/settings-pages.md b/documentation/settings-pages.md index 45b51f0..393492b 100644 --- a/documentation/settings-pages.md +++ b/documentation/settings-pages.md @@ -271,7 +271,7 @@ src/app/admin/settings/ **PUT /api/admin/settings/audible** - Updates Audible region -- Body: `{ region: string }` (one of: us, ca, uk, au, in, es) +- Body: `{ region: string }` (one of: us, ca, uk, au, in, es, fr) - No validation required **PUT /api/admin/settings/prowlarr/indexers** From c43ce7ba8f370d3016d11240111a0b0b4194dbf8 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 21 Feb 2026 11:40:48 +0100 Subject: [PATCH 3/7] French Traduction --- src/lib/constants/language-config.ts | 37 +++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/src/lib/constants/language-config.ts b/src/lib/constants/language-config.ts index f7ab586..e242993 100644 --- a/src/lib/constants/language-config.ts +++ b/src/lib/constants/language-config.ts @@ -16,7 +16,7 @@ import type { AudibleRegion } from '../types/audible'; // Types // --------------------------------------------------------------------------- -export type SupportedLanguage = 'en' | 'de' | 'es'; +export type SupportedLanguage = 'en' | 'de' | 'es' | 'fr'; export interface ScrapingConfig { /** Audible locale query-param value (e.g. 'english', 'deutsch') */ @@ -170,6 +170,39 @@ const SPANISH_CONFIG: LanguageConfig = { }, }; +const FRENCH_CONFIG: LanguageConfig = { + code: 'fr', + annasArchiveLang: 'fr', + epubCode: 'fr', + stopWords: ['le', 'la', 'les','un', 'une', 'de', 'des', 'sur', 'dans', '\u00e0', 'et', 'par', 'pour'], + characterReplacements: {}, + scraping: { + audibleLocaleParam: 'french', + authorPrefixes: ['De:', '\u00c9crit par:', 'Auteur:'], + narratorPrefixes: ['Lu par:'], + lengthLabels: ['Dur\u00e9e'], + languageLabels: ['Langue:'], + releaseDateLabels: ['Date de publication:'], + seriesLabels: ['S\u00e9ries:'], + acceptedLanguageValues: ['french'], + runtimeHourPatterns: [/(\d+)\s*h\b/i, /(\d+)\s*heures?/i], + runtimeMinutePatterns: [/(\d+)\s*min/i, /(\d+)\s*minutes?/i], + ratingPatterns: [/(\d+[.,]?\d*)\s*de\s*5/i], + releaseDatePatterns: [/Date de publication:\s*(.+)/i], + descriptionExcludePatterns: [ + /\$\d+\.\d+/, + /\d+,\d+\s*\u20ac/, + /cancela cuando quieras/i, + /Essayer pour/i, + /R\u00e9siliez \u00e0 tout moment/i, + /Acheter pour/i, + /^\s*de\s+[\w\s,]+$/i, + ], + durationDetectionPattern: /\d+\s*(h|heures?)\s*\d*\s*(min|minutes?)?/i, + ratingTextSelector: 'sur 5 étoiles', + }, +}; + // --------------------------------------------------------------------------- // Lookup Maps // --------------------------------------------------------------------------- @@ -178,6 +211,7 @@ export const LANGUAGE_CONFIGS: Record = { en: ENGLISH_CONFIG, de: GERMAN_CONFIG, es: SPANISH_CONFIG, + fr: FRENCH_CONFIG, }; /** @@ -192,6 +226,7 @@ export const REGION_LANGUAGE_MAP: Record = { in: 'en', de: 'de', es: 'es', + fr: 'fr', }; // --------------------------------------------------------------------------- From aff5faaa58bee1cacf7f5b692f7f30317c1688f7 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 21 Feb 2026 11:43:06 +0100 Subject: [PATCH 4/7] French Traduction --- src/lib/constants/language-config.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/constants/language-config.ts b/src/lib/constants/language-config.ts index e242993..adc85a6 100644 --- a/src/lib/constants/language-config.ts +++ b/src/lib/constants/language-config.ts @@ -192,7 +192,6 @@ const FRENCH_CONFIG: LanguageConfig = { descriptionExcludePatterns: [ /\$\d+\.\d+/, /\d+,\d+\s*\u20ac/, - /cancela cuando quieras/i, /Essayer pour/i, /R\u00e9siliez \u00e0 tout moment/i, /Acheter pour/i, From c60b6214cee91bc6036a1222add4f31fc12b60a4 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 21 Feb 2026 12:44:56 +0100 Subject: [PATCH 5/7] French Traduction --- src/lib/constants/language-config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/constants/language-config.ts b/src/lib/constants/language-config.ts index adc85a6..41fe394 100644 --- a/src/lib/constants/language-config.ts +++ b/src/lib/constants/language-config.ts @@ -177,14 +177,14 @@ const FRENCH_CONFIG: LanguageConfig = { stopWords: ['le', 'la', 'les','un', 'une', 'de', 'des', 'sur', 'dans', '\u00e0', 'et', 'par', 'pour'], characterReplacements: {}, scraping: { - audibleLocaleParam: 'french', + audibleLocaleParam: 'fran\u00e7ais', authorPrefixes: ['De:', '\u00c9crit par:', 'Auteur:'], narratorPrefixes: ['Lu par:'], lengthLabels: ['Dur\u00e9e'], languageLabels: ['Langue:'], releaseDateLabels: ['Date de publication:'], seriesLabels: ['S\u00e9ries:'], - acceptedLanguageValues: ['french'], + acceptedLanguageValues: ['fran\u00e7ais', 'french'], runtimeHourPatterns: [/(\d+)\s*h\b/i, /(\d+)\s*heures?/i], runtimeMinutePatterns: [/(\d+)\s*min/i, /(\d+)\s*minutes?/i], ratingPatterns: [/(\d+[.,]?\d*)\s*de\s*5/i], From 9a460f808d49b7a42c938e6b135a5a189b04d00c Mon Sep 17 00:00:00 2001 From: root Date: Sat, 21 Feb 2026 13:57:47 +0100 Subject: [PATCH 6/7] french-Traduction --- src/lib/constants/language-config.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/lib/constants/language-config.ts b/src/lib/constants/language-config.ts index 41fe394..fc87b97 100644 --- a/src/lib/constants/language-config.ts +++ b/src/lib/constants/language-config.ts @@ -177,14 +177,14 @@ const FRENCH_CONFIG: LanguageConfig = { stopWords: ['le', 'la', 'les','un', 'une', 'de', 'des', 'sur', 'dans', '\u00e0', 'et', 'par', 'pour'], characterReplacements: {}, scraping: { - audibleLocaleParam: 'fran\u00e7ais', - authorPrefixes: ['De:', '\u00c9crit par:', 'Auteur:'], - narratorPrefixes: ['Lu par:'], - lengthLabels: ['Dur\u00e9e'], - languageLabels: ['Langue:'], - releaseDateLabels: ['Date de publication:'], - seriesLabels: ['S\u00e9ries:'], - acceptedLanguageValues: ['fran\u00e7ais', 'french'], + audibleLocaleParam: 'français', + authorPrefixes: ['De :', '\u00c9crit par :', 'Auteur :'], + narratorPrefixes: ['Lu par :'], + lengthLabels: ['Dur\u00e9e :'], + languageLabels: ['Langue :'], + releaseDateLabels: ['Date de publication :'], + seriesLabels: ['S\u00e9rie :'], + acceptedLanguageValues: ['français', 'french'], runtimeHourPatterns: [/(\d+)\s*h\b/i, /(\d+)\s*heures?/i], runtimeMinutePatterns: [/(\d+)\s*min/i, /(\d+)\s*minutes?/i], ratingPatterns: [/(\d+[.,]?\d*)\s*de\s*5/i], From 40d5363dc4569fb242b1473aa1f1019bd3fb0b75 Mon Sep 17 00:00:00 2001 From: kikootwo Date: Tue, 24 Feb 2026 00:51:55 -0500 Subject: [PATCH 7/7] Fix French stopWords spacing and region name Trim whitespace in the French stopWords array (add missing space after comma) to keep formatting consistent, and rename AUDIBLE_REGIONS.fr.name from "French" to "France" to better reflect the region label used for the Audible configuration. --- src/lib/constants/language-config.ts | 2 +- src/lib/types/audible.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/constants/language-config.ts b/src/lib/constants/language-config.ts index fc87b97..f24a525 100644 --- a/src/lib/constants/language-config.ts +++ b/src/lib/constants/language-config.ts @@ -174,7 +174,7 @@ const FRENCH_CONFIG: LanguageConfig = { code: 'fr', annasArchiveLang: 'fr', epubCode: 'fr', - stopWords: ['le', 'la', 'les','un', 'une', 'de', 'des', 'sur', 'dans', '\u00e0', 'et', 'par', 'pour'], + stopWords: ['le', 'la', 'les', 'un', 'une', 'de', 'des', 'sur', 'dans', '\u00e0', 'et', 'par', 'pour'], characterReplacements: {}, scraping: { audibleLocaleParam: 'français', diff --git a/src/lib/types/audible.ts b/src/lib/types/audible.ts index 5f6d4d3..2160d92 100644 --- a/src/lib/types/audible.ts +++ b/src/lib/types/audible.ts @@ -67,7 +67,7 @@ export const AUDIBLE_REGIONS: Record = { }, fr: { code: 'fr', - name: 'French', + name: 'France', baseUrl: 'https://www.audible.fr', audnexusParam: 'fr', language: 'fr',