diff options
Diffstat (limited to 'server/src/routes/locale.rs')
-rw-r--r-- | server/src/routes/locale.rs | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/server/src/routes/locale.rs b/server/src/routes/locale.rs index adce685..6d16c17 100644 --- a/server/src/routes/locale.rs +++ b/server/src/routes/locale.rs @@ -30,26 +30,26 @@ impl<'r> FromRequest<'r> for AcceptLanguage { 'life0: 'async_trait, Self: 'async_trait, { - Box::pin(async move { - Outcome::Success(AcceptLanguage( - request - .headers() - .get_one("accept-language") - .and_then(|h| { - h.split(",") - .filter_map(|e| { - let code = e.split(";").next()?; - let code = code.split_once("-").unwrap_or((code, "")).0; - match code { - "en" => Some(Language::English), - "de" => Some(Language::German), - _ => None, - } - }) - .next() - }) - .unwrap_or(Language::English), - )) - }) + Box::pin(async move { Outcome::Success(AcceptLanguage(lang_from_request(request))) }) } } + +pub(crate) fn lang_from_request(request: &Request) -> Language { + request + .headers() + .get_one("accept-language") + .and_then(|h| { + h.split(",") + .filter_map(|e| { + let code = e.split(";").next()?; + let code = code.split_once("-").unwrap_or((code, "")).0; + match code { + "en" => Some(Language::English), + "de" => Some(Language::German), + _ => None, + } + }) + .next() + }) + .unwrap_or(Language::English) +} |