From 7c63bfc236d3f2cd0277d02f33e50b2295784db7 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Sun, 16 Nov 2025 14:03:07 +0100 Subject: [PATCH] Enhanced locale determination logic to evaluate the Accept-Language header from the browser, allowing for improved locale selection based on user preferences. Updated fallback mechanism for locale handling. --- src/app.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/app.cpp b/src/app.cpp index 2e31084..fb21fb9 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -140,14 +140,27 @@ Wt::WLocale App::determineLocaleFromBrowser() const { } } - // 2. Sonst Locale verwenden, die Wt bereits aus dem Browser/Request ermittelt hat + // 2. Accept-Language Header des Browsers auswerten + std::string accept = env_.headerValue("Accept-Language"); + if (!accept.empty()) { + std::stringstream ss(accept); + std::string part; + while (std::getline(ss, part, ',')) { + auto localeName = mapLanguageTag(part); + if (!localeName.empty()) { + return makeLocale(localeName); + } + } + } + + // 3. Sonst Locale verwenden, die Wt bereits aus dem Request ermittelt hat auto envLocaleName = env_.locale().name(); // z.B. "de_DE", "en_GB" auto mapped = mapLanguageTag(envLocaleName); if (!mapped.empty()) { return makeLocale(mapped); } - // Fallback: britisches Englisch + // 4. Fallback: britisches Englisch return makeLocale("en_GB"); }