//! el-i18n — Localization for el-ui.
//!
//! RTL-aware, plural forms, CLDR-based number/currency formatting.
//!
//! ## Quick start
//!
//! ```
//! use el_i18n::prelude::*;
//! use std::collections::HashMap;
//!
//! // Build a bundle
//! let mut bundle = LocaleBundle::new(Locale::en_us());
//! bundle.insert("profile.follow", "Follow");
//! let mut forms = HashMap::new();
//! forms.insert("one".to_string(), "{n} Follower".to_string());
//! forms.insert("other".to_string(), "{n} Followers".to_string());
//! bundle.insert_plural("profile.followers", forms);
//!
//! // Create a context
//! let ctx = LocaleContext::new(Locale::en_us(), bundle);
//!
//! // Translate
//! assert_eq!(ctx.t("profile.follow"), "Follow");
//! assert_eq!(ctx.t_plural("profile.followers", 1), "1 Follower");
//! assert_eq!(ctx.t_plural("profile.followers", 42), "42 Followers");
//! ```

#![deny(warnings)]

pub mod bundle;
pub mod format;
pub mod locale;
pub mod plural;
pub mod t;

pub mod prelude {
    pub use crate::bundle::{load_toml, LocaleBundle, TranslationValue};
    pub use crate::format::{format_currency, format_integer, format_number, format_percent};
    pub use crate::locale::{Locale, TextDirection};
    pub use crate::plural::{plural_form, PluralForm};
    pub use crate::t::LocaleContext;
}

pub use prelude::*;
