Framework for embedding localizations into Rust types
pub mod decimal;
pub mod list;
pub mod path;
pub mod string;
pub mod style;
pub mod time;

use icu_locale::{Locale, locale};

// Public re-exports of dependencies required at runtime, so macro-generated code
// can find all the dependencies it expects as long as this crate exists
pub mod macro_prelude {
    pub use icu_locale;
    pub use icu_plurals;
}

pub trait Localize {
    fn canonical_locale(&self) -> Locale {
        locale!("en-US")
    }

    fn available_locales(&self) -> Vec<Locale> {
        // TODO: keep track of all locales with Fluent data, and return only those
        vec![self.canonical_locale()]
    }

    fn localize_for(&self, locale: &Locale) -> String;
}