From 76e1c767aefd95fc14ea60ea9fe9efb3f760d36e Mon Sep 17 00:00:00 2001 From: Philipp Hofer Date: Sat, 9 Aug 2025 17:12:00 +0200 Subject: [PATCH] set language on all routes --- src/game.rs | 19 +++++++++++++++---- src/index.rs | 3 +-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/game.rs b/src/game.rs index a9b32ce..2c99339 100644 --- a/src/game.rs +++ b/src/game.rs @@ -1,14 +1,14 @@ -use crate::{Backend, NameUpdateError, language::language, page::Page}; +use crate::{language::language, page::Page, Backend, NameUpdateError}; use axum::{ - Form, Router, extract::{Path, State}, http::HeaderMap, response::{IntoResponse, Redirect, Response}, routing::{get, post}, + Form, Router, }; use axum_extra::extract::CookieJar; use axum_messages::Messages; -use maud::{Markup, PreEscaped, html}; +use maud::{html, Markup, PreEscaped}; use serde::Deserialize; use std::sync::Arc; use uuid::Uuid; @@ -19,6 +19,9 @@ async fn index( messages: Messages, headers: HeaderMap, ) -> Response { + let lang = language(&cookies, &headers); + rust_i18n::set_locale(lang.to_locale()); + let (cookies, req) = backend.client_full(cookies, &headers).await; let client = req.client; @@ -26,7 +29,8 @@ async fn index( let amount_total_cameras = backend.amount_total_cameras().await; let highscore = backend.highscore().await; - let mut page = Page::new(req.lang); + let lang = language(&cookies, &headers); + let mut page = Page::new(lang); page.messages(messages); let markup = page.content(html! { hgroup { @@ -97,6 +101,9 @@ async fn game( messages: Messages, Path(uuid): Path, ) -> Result { + let lang = language(&cookies, &headers); + rust_i18n::set_locale(lang.to_locale()); + let (cookies, client) = backend.client(cookies).await; let Ok(uuid) = Uuid::parse_str(&uuid) else { @@ -137,8 +144,12 @@ async fn set_name( State(backend): State>, cookies: CookieJar, messages: Messages, + headers: HeaderMap, Form(form): Form, ) -> Response { + let lang = language(&cookies, &headers); + rust_i18n::set_locale(lang.to_locale()); + let (cookies, client) = backend.client(cookies).await; match backend.set_client_name(&client, &form.name).await { diff --git a/src/index.rs b/src/index.rs index d7bf56a..a8d7a60 100644 --- a/src/index.rs +++ b/src/index.rs @@ -1,11 +1,10 @@ use crate::{language::language, page::Page}; use axum::http::HeaderMap; use axum_extra::extract::CookieJar; -use maud::{Markup, PreEscaped, html}; +use maud::{html, Markup, PreEscaped}; pub(super) async fn index(cookies: CookieJar, headers: HeaderMap) -> Markup { let lang = language(&cookies, &headers); - rust_i18n::set_locale(lang.to_locale()); let page = Page::new(lang);