bi18n 0.1.0

Barebone i18n crate, usable for web interfaces
Documentation
mod key;
mod locale;
pub use key::Key;
pub use locale::Locale;
mod i18n;
pub use i18n::I18n;

lazy_static::lazy_static! {
    static ref I18N: std::sync::Arc<parking_lot::RwLock<Option<I18n>>> = std::sync::Arc::new(parking_lot::RwLock::new(None));
}

pub fn t(key: impl Into<Key>) -> String {
    try_t(key).unwrap()
}

pub fn try_t(key: impl Into<Key>) -> Option<String> {
    I18N.read().as_ref()?.try_get(key.into()).cloned()
}

pub fn set(i18n: I18n) {
    *I18N.write() = Some(i18n)
}

pub fn free() {
    *I18N.write() = None
}

pub fn try_get_locale() -> Option<Locale> {
    Some(I18N.read().as_ref()?.locale().clone())
}