# My i18n Rust library
## Features
- [x] 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!()](https://doc.rust-lang.org/stable/std/macro.format.html) under the hood, see its documentation for all of its caracteristics)~
- [x] Supports named arguments (of the form `$argument_name`)
- [ ] Fallback language choice (for now, it is always `en-US`)
## Example
```rust
///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*
```