High-level Fluent Rust APIs

I have a leptos-based web app that I want to translate.

I’d like to use fluent. My needs aren’t complex, but I don’t want to learn or be tied to any homegrown, framework-specific translation format.

Looking at high-level APIs for fluent (selecting locales, providing a macro, embedding data into the executable), I’m aware of these alternatives:

  • fluent-fallback, from fluent-rs. For a high-level crate, APIs like format_value_sync are still cumbersome to use, and I would have to write my own wrapper on top.
  • fluent-templates, by XAMPPRocky (a prolific crate author I trust). Seems easy to use
  • i18n-embed / cargo-i18n, by kellpossible. I hit a papercut on first try but it does provide a convenient proc macro (i18n-embed-fl)
  • l10n. An all-in-one crate by MathieuTricoire with another macro. I like that he contributed PRs to fix stuff in fluent-bundle; unfortunately the fluent-rs project has yet to cut releases with those (latest release was almost one year ago, for fluent-resmgr).
  • fluent-localization-loader / fluent-localization-bindgen (I’ve hit the link limit) by AEnterprise

Does anyone have any experience with these?

While looking into the lack of recent releases (with the fixes for the l10n crate), I realized that ICU4X might start on support for its own way of localising strings, but this is years away, and the language might be overly complex (ICU4J example); I’d like to have recommendations I could work on now.