| Crates.io | i18n-runtime |
| lib.rs | i18n-runtime |
| version | 0.1.0 |
| created_at | 2025-09-22 10:25:07.94802+00 |
| updated_at | 2025-09-22 10:25:07.94802+00 |
| description | Fast i18n runtime for Rust (phf-backed generated support) |
| homepage | |
| repository | https://github.com/sumitsharansatsangi/i18n-runtime |
| max_upload_size | |
| id | 1849776 |
| size | 18,686 |
i18n-runtime** ๐Effortless, fast, and type-safe internationalization (i18n) for Rust apps.
Supports both runtime JSON loading and compile-time PHF maps (when used with i18n-codegen).
locales/*.jsonen-IN-BR โ en-IN โ enMessageKey enumphfAdd to your Cargo.toml:
[dependencies]
i18n-runtime = "0.1"
# Only required if you use generated PHF mode
phf = "0.11"
messages.schema.json:{
"keys": ["welcome", "login_success", "login_failed"]
}
locales/en.json:{
"welcome": "Welcome!",
"login_success": "You have logged in successfully.",
"login_failed": "Login failed. Please try again."
}
use i18n_runtime::{I18n, Locale};
fn main() -> anyhow::Result<()> {
let i18n = I18n::from_json_dir("./locales", "en")?;
let tags = ["en", "hi-IN", "fr"];
for tag in &tags {
let loc = Locale::new(tag);
let msg = i18n.get_owned(&loc, "welcome").unwrap_or("<missing>".into());
println!("{:<6} => {}", tag, msg);
}
Ok(())
}
Output:
en => Welcome!
hi-IN => เคธเฅเคตเคพเคเคค เคนเฅ!
fr => Welcome!
cargo install i18n-codegen
i18n-codegen ./ ./src/generated_i18n
This creates:
src/generated_i18n/generated_keys.rs # MessageKey enum
src/generated_i18n/locales/EN.rs # en.json โ phf::Map
src/generated_i18n/locales/HI_IN.rs # hi-IN.json โ phf::Map
src/generated_i18n/mod.rs # registry
// include generated files
include!("generated_i18n/generated_keys.rs");
mod generated_i18n { include!("generated_i18n/mod.rs"); }
use i18n_runtime::{I18n, Locale};
fn main() {
let registry = generated_i18n::get_generated_registry();
let i18n = I18n::from_generated_registry(registry, "en");
let msg = i18n
.get_by_str_key(&Locale::new("hi-IN"), MessageKey::Welcome.as_str())
.unwrap();
println!("{}", msg); // เคธเฅเคตเคพเคเคค เคนเฅ!
}
en-IN-BR โ en-IN โ en โ fallback locale.
MIT