//! Server-side message catalogue for everything the backend renders itself: //! transactional e-mail, in-app notification text and the HTML result pages. //! //! The interface language is a per-recipient property, so this crate never //! holds "the" locale — it resolves one per message from the recipient's //! `users.language` and falls back to the request's `Accept-Language`, then to //! `[email].default_locale`. //! //! Scope is deliberately narrow: two locales (`zh-CN`, `en`) covering the //! strings the platform actually emits. Anything written by a user is never //! translated here. pub mod catalog; pub mod locale; pub use catalog::*; pub use locale::{UiLocale, negotiate_accept_language, resolve_user_locale, resolve_user_locales};