feat(i18n): wire rust-i18n with per-feature locale fragments

Pod's UI is entirely hardcoded English. Land the rust-i18n framework, the locale-file layout, and the conventions every per-module extraction task follows, then convert the app.rs notification chrome as the reference slice. The i18n! macro loads locales/ at the crate root with an en fallback, and boot() sets the active locale once from AccessibilityConfig.language via the Language enum's ESI code. Each feature owns its own locales/<feature>.<locale>.toml fragment so extraction tasks never collide on a shared file; rust-i18n merges every fragment and reads the locale from the filename suffix. Per-locale stubs register all nine ESI codes today. Keys follow <feature>.<area>.<key> with %{name} interpolation, documented in docs/dev/i18n.md. Missing keys fall back to en and absent keys return the key string without panicking, both covered by unit tests.


Author aaronmallen.dev
Date Commit Parent 6e2144cb Change ID