Crate i18nx

source ·
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.