i18n

Internationalization in Resuma Flow — load locale strings server-side in #[load].

Recommended crates

  • fluent / fluent-bundle — Mozilla Fluent (.ftl files)
  • rust-i18n — compile-time JSON/YAML catalogs

Locale loader

#[load]
async fn i18n(req: &FlowRequest) -> Messages {
    let lang = req.query_param("lang")
        .or_else(|| req.header("accept-language").map(|s| s.split(',').next().unwrap_or("en")))
        .unwrap_or("en");
    Messages::load(lang).await
}

pub fn page(_req: FlowRequest) -> View {
    let t = use_i18n_load();
    view! {
        <h1>{t.get("home.title")}</h1>
        <p>{t.get("home.lead")}</p>
    }
}

URL strategy

/en/docs, /es/docs via Flow file routes or ?lang=es query param with #[load] cache keys per locale.