# 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](https://docs.rs/ron) 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](https://docs.rs/formatx) for more information. ## Usage ```rust 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](examples/demo.rs) and [integration test](tests/integration.rs). ## License Licensed under either of * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) at your option. ## Contribution 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.