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:
17
src/app.cpp
17
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 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");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user