use icu_locale::locale;
use l10n_embed::layout::{Lines, Padded};
use l10n_embed::{Context, Localize};
fn main() {
let items = vec!["item 1", "item 2", "item 3", "item 4"];
let message = "a secret message";
let single_newline: Lines<&str, 1> = Lines::new(items.clone());
let double_newlines: Lines<&str, 2> = Lines::new(items.clone());
let vertical_padding: Padded<&str, 1, 0> = Padded::new(message);
let horizontal_padding: Padded<&str, 0, 4> = Padded::new(message);
let combined_padding: Padded<&str, 1, 4> = Padded::new(message);
let padded_newlines: Lines<Padded<&str, 0, 4>, 1> =
Lines::new(items.iter().map(|item| Padded::new(*item)).collect());
let layouts: [(&str, Box<dyn Localize>); 6] = [
("Single newline", Box::new(single_newline)),
("Double newlines", Box::new(double_newlines)),
("Vertical padding", Box::new(vertical_padding)),
("Horizontal padding", Box::new(horizontal_padding)),
("Combined padding", Box::new(combined_padding)),
("Padded newlines", Box::new(padded_newlines)),
];
let context = Context::new(locale!("en-US"), true);
let mut buffer = String::new();
for (name, layout) in layouts {
buffer.clear();
layout.localize(&context, &mut buffer);
println!("----- {name} -----");
println!("{buffer}");
}
}