i18n-embed

This library contains traits and macros to conveniently embed the output of cargo-i18n into your application binary in order to localize it at runtime.
Currently this library depends on rust-embed to perform the actual embedding of the language files. This may change in the future to make the library more convenient to use.
Optional Features
The i18n-embed crate has the following optional Cargo features:
fluent-system- Enable support for the fluent localization system via the
FluentLanguageLoader.
- Enable support for the fluent localization system via the
gettext-system- Enable support for the gettext localization system using the tr macro and the gettext crate via the
GettextLanguageLoader.
- Enable support for the gettext localization system using the tr macro and the gettext crate via the
desktop-requester- Enables a convenience implementation of
LanguageRequestertrait calledDesktopLanguageRequesterfor the desktop platform (windows, mac, linux),which makes use of the locale_config crate for resolving the current system locale.
- Enables a convenience implementation of
web-sys-requester- Enables a convenience implementation of
LanguageRequestertrait calledWebLanguageRequesterwhich makes use of the web-sys crate for resolving the language being requested by the user's web browser in a WASM context.
- Enables a convenience implementation of
Example
The following is a minimal example for how localize your binary using this library using the fluent localization system.
First you need to compile i18n-embed in your Cargo.toml with the fluent-system and desktop-requester features enabled:
[]
= { = "0.7", = ["fluent-system", "desktop-requester"]}
= "5"
= "0.9"
Next, you want to create your localization resources, per language fluent files. lang_code needs to conform to the Unicode Language Identifier standard, and will be parsed via the unic_langid crate:
my_crate/
Cargo.toml
i18n.toml
src/
i18n/
lang_code/
my_crate.ftl
Then you can instantiate your language loader and language requester:
use ;
use RustEmbed;
use LanguageIdentifier;
// path to the localization resources
;
You can also make use of the i18n.toml configuration file, and the cargo i18n tool to integrate with a code-base using gettext, and in the future to perform compile time checks, and use the fluent_language_loader!() macro to pull the configuration at compile time to create the FluentLanguageLoader.
For more examples, see the documentation for i18n-embed.