From abd4c4cb8c65639374838517b1a77af07ad730d1 Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Mon, 7 Sep 2020 14:33:05 +0200 Subject: [PATCH] ui: add translation support Signed-off-by: Thomas Lamprecht --- debian/control | 1 + debian/control.in | 1 + src/bin/proxmox-backup-proxy.rs | 1 + src/server/rest.rs | 32 ++++++++++++++++++++++++-------- www/index.hbs | 4 ++++ 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/debian/control b/debian/control index e523d4d2..460cac6e 100644 --- a/debian/control +++ b/debian/control @@ -103,6 +103,7 @@ Depends: fonts-font-awesome, libjs-extjs (>= 6.0.1), libzstd1 (>= 1.3.8), lvm2, + pbs-i18n, proxmox-backup-docs, proxmox-mini-journalreader, proxmox-widget-toolkit (>= 2.2-4), diff --git a/debian/control.in b/debian/control.in index 31641a3b..8e2312d3 100644 --- a/debian/control.in +++ b/debian/control.in @@ -4,6 +4,7 @@ Depends: fonts-font-awesome, libjs-extjs (>= 6.0.1), libzstd1 (>= 1.3.8), lvm2, + pbs-i18n, proxmox-backup-docs, proxmox-mini-journalreader, proxmox-widget-toolkit (>= 2.2-4), diff --git a/src/bin/proxmox-backup-proxy.rs b/src/bin/proxmox-backup-proxy.rs index 2b43c5ac..75065e6f 100644 --- a/src/bin/proxmox-backup-proxy.rs +++ b/src/bin/proxmox-backup-proxy.rs @@ -53,6 +53,7 @@ async fn run() -> Result<(), Error> { config.add_alias("extjs", "/usr/share/javascript/extjs"); config.add_alias("fontawesome", "/usr/share/fonts-font-awesome"); config.add_alias("xtermjs", "/usr/share/pve-xtermjs"); + config.add_alias("locale", "/usr/share/pbs-i18n"); config.add_alias("widgettoolkit", "/usr/share/javascript/proxmox-widget-toolkit"); config.add_alias("css", "/usr/share/javascript/proxmox-backup/css"); config.add_alias("docs", "/usr/share/doc/proxmox-backup/html"); diff --git a/src/server/rest.rs b/src/server/rest.rs index 70c8b2c1..5577116b 100644 --- a/src/server/rest.rs +++ b/src/server/rest.rs @@ -313,7 +313,13 @@ pub async fn handle_api_request, token: Option, api: &Arc, parts: Parts) -> Response { +fn get_index( + userid: Option, + token: Option, + language: Option, + api: &Arc, + parts: Parts, +) -> Response { let nodename = proxmox::tools::nodename(); let userid = userid.as_ref().map(|u| u.as_str()).unwrap_or(""); @@ -333,10 +339,18 @@ fn get_index(userid: Option, token: Option, api: &Arc } } + let mut lang = String::from(""); + if let Some(language) = language { + if Path::new(&format!("/usr/share/pbs-i18n/pbs-lang-{}.js", language)).exists() { + lang = language; + } + } + let data = json!({ "NodeName": nodename, "UserName": userid, "CSRFPreventionToken": token, + "language": lang, "debug": debug, }); @@ -441,12 +455,14 @@ async fn handle_static_file_download(filename: PathBuf) -> Result (Option, Option) { +fn extract_auth_data(headers: &http::HeaderMap) -> (Option, Option, Option) { let mut ticket = None; + let mut language = None; if let Some(raw_cookie) = headers.get("COOKIE") { if let Ok(cookie) = raw_cookie.to_str() { ticket = tools::extract_cookie(cookie, "PBSAuthCookie"); + language = tools::extract_cookie(cookie, "PBSLangCookie"); } } @@ -455,7 +471,7 @@ fn extract_auth_data(headers: &http::HeaderMap) -> (Option, Option None, }; - (ticket, token) + (ticket, token, language) } fn check_auth( @@ -526,7 +542,7 @@ pub async fn handle_request(api: Arc, req: Request) -> Result rpcenv.set_user(Some(userid.to_string())), Err(err) => { @@ -573,20 +589,20 @@ pub async fn handle_request(api: Arc, req: Request) -> Result { let new_token = assemble_csrf_prevention_token(csrf_secret(), &userid); - return Ok(get_index(Some(userid), Some(new_token), &api, parts)); + return Ok(get_index(Some(userid), Some(new_token), language, &api, parts)); } _ => { tokio::time::delay_until(Instant::from_std(delay_unauth_time)).await; - return Ok(get_index(None, None, &api, parts)); + return Ok(get_index(None, None, language, &api, parts)); } } } else { - return Ok(get_index(None, None, &api, parts)); + return Ok(get_index(None, None, language, &api, parts)); } } else { let filename = api.find_alias(&components); diff --git a/www/index.hbs b/www/index.hbs index 11e4baa9..fc5afb4a 100644 --- a/www/index.hbs +++ b/www/index.hbs @@ -12,7 +12,11 @@ + {{#if language}} + + {{else}} + {{/if}} {{#if debug}}