localize_it
A tiny, fast localization library with zero runtime dependencies and #![no_std] support.
This crate provides a macro-based API for defining compile-time locales and localized
expressions without dynamic memory allocation or hash maps. All localized expressions
are stored as static arrays, enabling localization via simple indexing. The locale can
be managed manually or via the built-in AtomicUsize storage with Relaxed ordering.
Example
A program that asks the user to choose a language, enter their name, and then greets them in the selected language:
use init_locale;
use ;
// Define available locales and enable built-in storage
init_locale!;
// Define localized expressions (can be any compile-time type)
expressions!;
// Simple input helper for demonstration purposes
Recommended Project Structure
A recommended way to organize your project is to create a dedicated locale module that handles locale
initialization and contains grouped expression modules. For example:
src/
├─ main.rs
└─ locale/
├─ mod.rs # Initialization locale here
├─ error.rs # First module with expressions
└─ ui.rs # Second module with expressions
Design Constraints
- Not possible to update or add the translations without recompiling
- No plans to add automatic gender agreement, numeral declension, etc
Usage
Add the following to your Cargo.toml:
[]
= "2.4.0"
License
This project is licensed under either of
at your option.