40 lines
893 B
Rust
40 lines
893 B
Rust
use rust_i18n::Backend;
|
|
|
|
rust_i18n::i18n!("../../locales");
|
|
|
|
pub struct I18nBackend;
|
|
|
|
impl Backend for I18nBackend {
|
|
fn available_locales(&self) -> Vec<&str> {
|
|
_RUST_I18N_BACKEND.available_locales()
|
|
}
|
|
|
|
fn translate(&self, locale: &str, key: &str) -> Option<&str> {
|
|
let val = _RUST_I18N_BACKEND.translate(locale, key);
|
|
if val.is_none() {
|
|
_RUST_I18N_BACKEND.translate("en", key)
|
|
} else {
|
|
val
|
|
}
|
|
}
|
|
}
|
|
|
|
#[macro_export]
|
|
macro_rules! init {
|
|
() => {
|
|
rust_i18n::i18n!(backend = i18n::I18nBackend);
|
|
};
|
|
}
|
|
|
|
#[macro_export]
|
|
macro_rules! shared_t {
|
|
($key:expr) => {
|
|
SharedString::from(t!($key))
|
|
};
|
|
($key:expr, $($param:ident = $value:expr),+) => {
|
|
SharedString::from(t!($key, $($param = $value),+))
|
|
};
|
|
}
|
|
|
|
pub use rust_i18n::{set_locale, t};
|