Choose a runtime manager
A runtime manager loads FTL resources, selects a locale, and resolves typed messages through an explicit application context. Choose one manager for the application runtime.
| Manager | Choose it for | Continue |
|---|---|---|
es-fluent-manager-embedded | CLIs, TUIs, desktop apps, services, and general Rust | Embedded manager |
es-fluent-manager-dioxus | Dioxus client rendering, SSR, or both | Dioxus manager |
es-fluent-manager-bevy | Bevy ECS, assets, and reactive UI text | Bevy manager |
All concrete managers follow the same application model:
- Put
define_i18n_module!()in a library-reachable module. - Keep derived message types reachable from a library target.
- Initialize or provide a manager context with a selected language.
- Call
localize_message(&message)or pass that context to typed label helpers. - Use fallible lookup only where the caller intentionally handles a missing translation.
Manager macros scan configured locale assets at compile time. Add
es-fluent-build to track those assets and produce the fallback-message catalog
used by strict derive validation; see
Incremental builds.
All managers route typed output through the owning package’s missing-message
policy. The default strict policy rejects missing fallback message values. Set
missing_message_policy = "fallback-str" in i18n.toml so normal message and
label lookup returns a snake_case Rust source name after locale fallback is
exhausted; fallible lookup still returns None.
Use es-fluent-manager-core directly only when building a custom
runtime integration. Concrete managers provide the intended application-facing
APIs.