Trait fluent_fallback::env::LocalesProvider [−][src]
pub trait LocalesProvider { type Iter: Iterator<Item = LanguageIdentifier>; fn locales(&self) -> Self::Iter; }
Expand description
A trait used to provide a selection of locales to be used by the
Localization
instance for runtime
locale fallbacking.
Example
use fluent_fallback::{Localization, env::LocalesProvider}; use fluent_resmgr::ResourceManager; use unic_langid::LanguageIdentifier; use std::{ rc::Rc, cell::RefCell }; #[derive(Clone)] struct Env { locales: Rc<RefCell<Vec<LanguageIdentifier>>>, } impl Env { pub fn new(locales: Vec<LanguageIdentifier>) -> Self { Self { locales: Rc::new(RefCell::new(locales)) } } pub fn set_locales(&mut self, new_locales: Vec<LanguageIdentifier>) { let mut locales = self.locales.borrow_mut(); locales.clear(); locales.extend(new_locales); } } impl LocalesProvider for Env { type Iter = <Vec<LanguageIdentifier> as IntoIterator>::IntoIter; fn locales(&self) -> Self::Iter { self.locales.borrow().clone().into_iter() } } let res_mgr = ResourceManager::new("./path/{locale}/".to_string()); let mut env = Env::new(vec![ "en-GB".parse().unwrap() ]); let mut loc = Localization::with_env(vec![], true, env.clone(), res_mgr); env.set_locales(vec![ "de".parse().unwrap(), "en-GB".parse().unwrap(), ]); loc.on_change(); // The next format call will attempt to localize to `de` first and // fallback on `en-GB`.