tiny-i18n

Crates.iotiny-i18n
lib.rstiny-i18n
version0.1.12
sourcesrc
created_at2024-06-04 17:04:17.980085
updated_at2024-08-10 13:10:51.842298
descriptionA tiny library to internationalize your project
homepage
repositoryhttps://gitlab.com/crat1985/tiny-i18n
max_upload_size
id1261761
size3,853
Thibaut (crat1985)

documentation

README

My i18n Rust library

Features

  • Fully at compile-time (shouldn't ever crash or experience an issue at runtime, any crash or issue at runtime should be reported as an issue)
  • [x] Supports arguments (not named, it uses format!() under the hood, see its documentation for all of its caracteristics)
  • Supports named arguments (of the form $argument_name)
  • Fallback language choice (for now, it is always en-US)

Example

///This macro generates a function per translation key inside the specified struct.
#[tiny_i18n::i18n("path_of_the_translations_directory")] //defaults to `i18n` if called without argument
pub(crate) struct I18n;

fn main() {
    // Each translation key generates a function (every non-ASCII letter, number or underscore are removed)
    println!("{}", I18n::hello_world("en-us")); //the first argument is the language, the following are the arguments, if any
}

The structure is the following :

└── *The name of your i18n folder*
    └── en-US
        └── *You can put as many files as you want (with any/no extension) inside each language folder (or inside any subfolder (as many subfolders as you want)), the name of the file (without the extension) is the id of the translation*
    └── *Other languages*
Commit count: 30

cargo fmt