Añade traducción de textos con plantillas Fluent

This commit is contained in:
Manuel Cillero 2022-02-13 09:12:12 +01:00
parent 96884cbbc0
commit 0e3300dc90
14 changed files with 149 additions and 53 deletions

3
src/base/mod.rs Normal file
View file

@ -0,0 +1,3 @@
//! Temas, Módulos y Componentes base.
pub mod module;

View file

@ -0,0 +1,4 @@
module_name = Default homepage
module_desc = Displays a default homepage when none is configured.
greeting = Hello { $name }!

View file

@ -0,0 +1,4 @@
module_name = Página de inicio predeterminada
module_desc = Muestra una página de inicio predeterminada cuando no hay ninguna configurada.
greeting = Hola { $name }!

View file

@ -0,0 +1,39 @@
use crate::prelude::*;
localize!("en-US", "src/base/module/homepage/locales");
pub struct HomepageModule;
impl Module for HomepageModule {
fn name(&self) -> String {
l("module_name")
}
fn description(&self) -> String {
l("module_desc")
}
fn configure_module(&self, cfg: &mut server::web::ServiceConfig) {
cfg.service(
server::web::resource("/")
.route(server::web::get().to(greet))
);
cfg.service(
server::web::resource("/{name}")
.route(server::web::get().to(greet_with_param))
);
}
}
async fn greet() -> impl server::Responder {
t("greeting", &args!["name" => config_get!("app.name")])
}
async fn greet_with_param(req: server::HttpRequest) -> server::HttpResponse {
let name: String = req.match_info().get("name").unwrap_or("World").into();
let args = args!["name" => name];
server::HttpResponse::Ok()
.body(sycamore::render_to_string(|ctx| sycamore::view! { ctx,
p { (t("greeting", &args)) }
}))
}

1
src/base/module/mod.rs Normal file
View file

@ -0,0 +1 @@
pub mod homepage;