Enhanced locale determination logic to support both '-' and '_' as separators, improving flexibility in language and region parsing from browser settings.
This commit is contained in:
26
src/app.cpp
26
src/app.cpp
@@ -96,13 +96,13 @@ Wt::WLocale App::determineLocaleFromBrowser() const {
|
|||||||
std::string lower = tag;
|
std::string lower = tag;
|
||||||
std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower);
|
std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower);
|
||||||
|
|
||||||
// Sprache und Region trennen
|
// Sprache und Region trennen (Unterstützung für '-' und '_')
|
||||||
std::string lang = lower;
|
std::string lang = lower;
|
||||||
std::string region;
|
std::string region;
|
||||||
auto dashPos = lower.find('-');
|
auto sepPos = lower.find_first_of("-_");
|
||||||
if (dashPos != std::string::npos) {
|
if (sepPos != std::string::npos) {
|
||||||
lang = lower.substr(0, dashPos);
|
lang = lower.substr(0, sepPos);
|
||||||
region = lower.substr(dashPos + 1);
|
region = lower.substr(sepPos + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lang == "en") {
|
if (lang == "en") {
|
||||||
@@ -140,17 +140,11 @@ Wt::WLocale App::determineLocaleFromBrowser() const {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. Sonst Accept-Language Header des Browsers auswerten
|
// 2. Sonst Locale verwenden, die Wt bereits aus dem Browser/Request ermittelt hat
|
||||||
std::string accept = env_.headerValue("Accept-Language");
|
auto envLocaleName = env_.locale().name(); // z.B. "de_DE", "en_GB"
|
||||||
if (!accept.empty()) {
|
auto mapped = mapLanguageTag(envLocaleName);
|
||||||
std::stringstream ss(accept);
|
if (!mapped.empty()) {
|
||||||
std::string part;
|
return makeLocale(mapped);
|
||||||
while (std::getline(ss, part, ',')) {
|
|
||||||
auto localeName = mapLanguageTag(part);
|
|
||||||
if (!localeName.empty()) {
|
|
||||||
return makeLocale(localeName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fallback: britisches Englisch
|
// Fallback: britisches Englisch
|
||||||
|
|||||||
Reference in New Issue
Block a user