//! This example demonstrates how to use pathbuf derived I18nConfig. //! This is useful when the path to the translation files is not known at compile time. use dioxus::prelude::*; use dioxus_i18n::{prelude::*, t}; use unic_langid::langid; use std::path::PathBuf; fn main() { launch(app); } #[allow(non_snake_case)] fn Body() -> Element { let mut i18n = i18n(); let change_to_english = move |_| i18n.set_language(langid!("en-US")); let change_to_spanish = move |_| i18n.set_language(langid!("es-ES")); rsx!( button { onclick: change_to_english, label { "English" } } button { onclick: change_to_spanish, label { "Spanish" } } p { { t!("hello_world") } } p { { t!("hello", name: "Dioxus") } } ) } fn app() -> Element { use_init_i18n(|| { // This initialisation allows individual translation files to be selected. // The locales can be added with an implicitly derived locale (see config-static-includestr.rs for a comparison) // or using an explicit Locale::new_dynamic call. // // The two examples are functionally equivalent. // // It IS NOT supported in WASM targets. I18nConfig::new(langid!("en-US")) // Implicit... .with_locale(( langid!("es-ES"), PathBuf::from("./examples/data/i18n/es-ES.ftl"), )) // Explicit... .with_locale(Locale::new_dynamic( langid!("en-US"), PathBuf::from("./examples/data/i18n/en-US.ftl"), )) }); rsx!(Body {}) }