Expand description
i18nx
i18nx is a runtime localization library for Rust. It is designed to be simple and easy to use.
It supports Rusty Object Notation (RON) files for translation data. Refer to the RON documentation for more information.
It exports a single macro t!
that can be used to translate strings at runtime.
For formatting, it uses the same syntax as the format!
macro. Refer to the formatx documentation for more information.
Usage
use i18nx::t;
// Create a new translation dictionary
// Tip: use `include_str` macro to embed translation files
i18nx::from_ron!(r#"{
"Hello {name}!": {
"de": "Hallo {name}!",
"fr": "Bonjour {name}!",
},
}"#);
// If you prefer storing your localizations separately
i18nx::with_ron!("cn", r#"{
"Hello {name}!": "你好 {name}!",
}"#);
i18nx::with_ron!("ru", r#"{
"Hello {name}!": "Привет {name}!",
}"#);
// Set locale anytime
i18nx::locale!("fr");
// Use the `t` macro just like you would use `format`
assert_eq!(
t!("Hello {name}!", name = "Rustaceans"),
"Bonjour Rustaceans!"
);
assert_eq!(
t!("No translation for this string, so it will be printed and formatted as-is."),
"No translation for this string, so it will be printed and formatted as-is."
);
Alternatives
Macros
Same as Dictionary::from_ron but uses global dictionary.
Same as Dictionary::locale but uses global dictionary.
Same as Dictionary::new but uses global dictionary.
Same as Dictionary::get but uses global dictionary.
Same as Dictionary::with_ron but uses global dictionary.
Structs
Dictionary holds current locale and a map of translations for each locale.