Framework for embedding localizations into Rust types
//! Example showing localized progress bars

use icu_locale::locale;
use l10n_embed_derive::localize;
use l10n_embed_interaction::{InteractionEnvironment, InteractionError, ProgressBar};

#[localize("examples/progress/*.ftl")]
enum ProgressMessage {
    LongProgress,
    ShortProgress,
    Hello,
}

fn main() -> Result<(), InteractionError> {
    let environment = InteractionEnvironment::new(locale!("en-US"), true);
    let long_progress = ProgressBar::new(&environment, ProgressMessage::LongProgress, 200);
    let short_progress = ProgressBar::new(&environment, ProgressMessage::ShortProgress, 100);

    for _ in 0..100 {
        long_progress.increment(1);
        short_progress.increment(1);
        std::thread::sleep(std::time::Duration::from_millis(10));
    }

    short_progress.finish();

    environment.emit_message(ProgressMessage::Hello)?;

    for _ in 0..100 {
        long_progress.increment(1);
        std::thread::sleep(std::time::Duration::from_millis(10));
    }

    Ok(())
}