translations #1

This commit is contained in:
2023-11-26 23:53:31 +01:00
parent 5fa660037e
commit 07c02052fd
9 changed files with 288 additions and 22 deletions

View File

@@ -22,12 +22,13 @@ pub struct CVBackendConfig {
cv_backend_path: String,
}
pub fn rocket_builder() -> Rocket<Build> {
let rocket = rocket::build();
//let figment = rocket.figment();
// extract the entire config any `Deserialize` value
//let config: PresentationConfig = figment.extract().expect("config");
rocket.attach(
Template::try_custom(|engines| {
engines.tera.register_filter("static", static_filter);

View File

@@ -11,7 +11,7 @@ struct RootPage {
static_host: String,
cv: CV,
download_cv_url: String,
lang: I18n,
lang: String,
}
#[get("/")]
@@ -21,6 +21,7 @@ pub async fn index(presentation_config: &State<PresentationConfig>, cv_config: &
static_host: presentation_config.static_route.clone(),
cv,
download_cv_url: "FIXME!".to_string(),
lang: "en".to_string(),
},
Err(e) => {
error!("Can't fetch CV data from backend {:?}", e);

View File

@@ -1,10 +1,13 @@
use std::collections::HashMap;
use std::{collections::HashMap, str::FromStr};
use chrono::{Utc, Datelike};
use log::error;
use rocket_dyn_templates::tera::{Value, Error};
use ovlach_data::cv::chrono::from_string;
use sha256::{digest, try_digest};
use fluent_resmgr::resource_manager::ResourceManager;
use tokio::sync::broadcast::error;
use unic_langid::LanguageIdentifier;
// TODO: tenhle modul je trochu prasacky..
@@ -20,7 +23,33 @@ pub fn translate_filter(
value: &Value,
args: &HashMap<String, rocket_dyn_templates::tera::Value>
) -> Result<Value, Error> {
return Ok(rocket_dyn_templates::tera::Value::String(format!("{}", value.as_str().unwrap()))); // TODO: fix-me here!
let mgr = ResourceManager::new("./resources/{locale}/{res_id}".into());
let locales = vec![LanguageIdentifier::from_str("en-US").unwrap()];
let val_id = vec![value.as_str().unwrap().to_string()];
let val = value.as_str().unwrap().to_string();
let bundle = mgr.get_bundle(locales, vec!["ovlach_frontend".to_string()]);
let mut errors = vec![];
match bundle.get_message(&val) {
Some(msg) => {
match msg.value() {
Some(pattern) => {
let output = bundle.format_pattern(pattern, None, &mut errors);
return Ok(rocket_dyn_templates::tera::Value::String(output.clone().to_string()))
},
None => {
error!("Can't translate message: {}", val);
return Ok(rocket_dyn_templates::tera::Value::String(format!("{}", val)));
},
}
},
None => {
error!("Can't translate message: {}", val);
return Ok(rocket_dyn_templates::tera::Value::String(format!("{}", val)));
},
};
}
pub fn lang_entity(