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.
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."
);
See also: integration example and integration test.
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.