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.

This commit is contained in:
Torsten Schulz (local)
2025-11-16 14:03:07 +01:00
parent e69ae0148c
commit 7c63bfc236

View File

@@ -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 envLocaleName = env_.locale().name(); // z.B. "de_DE", "en_GB"
auto mapped = mapLanguageTag(envLocaleName); auto mapped = mapLanguageTag(envLocaleName);
if (!mapped.empty()) { if (!mapped.empty()) {
return makeLocale(mapped); return makeLocale(mapped);
} }
// Fallback: britisches Englisch // 4. Fallback: britisches Englisch
return makeLocale("en_GB"); return makeLocale("en_GB");
} }