use *;
/// The aggregate i18n state.
///
/// Constructed once per app via `App::use_i18n()`, threaded
/// through any code that needs to render translated text.
/// Cheap to `Clone` (the internal signal is
/// `Copy`-by-pointer).
///
/// # Storage
///
/// Messages are stored in a `Signal<HashMap<String,
/// HashMap<String, String>>>` keyed by `locale → (key →
/// message)`. The map is intentionally two-level: it
/// matches how translation files are typically organized
/// (`en.json` is one flat key/value map, `zh-CN.json` is
/// another, etc.) and it lets `add_messages(locale,
/// &[(k, v), ...])` build the inner map by direct
/// insertion without the user having to allocate one
/// `HashMap` per locale.