#internationalization #localization #translation #web

macro i18n_codegen

Safe localization library using code generation

2 releases

0.1.1 Sep 29, 2019
0.1.0 Sep 29, 2019

#159 in #translation

Download history 32/week @ 2023-11-20 55/week @ 2023-11-27 42/week @ 2023-12-04 19/week @ 2023-12-11 8/week @ 2023-12-18 21/week @ 2023-12-25 49/week @ 2024-01-01 6/week @ 2024-01-08 91/week @ 2024-01-15 96/week @ 2024-01-22 77/week @ 2024-01-29 61/week @ 2024-02-05 53/week @ 2024-02-12 63/week @ 2024-02-19 54/week @ 2024-02-26 49/week @ 2024-03-04

220 downloads per month

MIT license

32KB
729 lines

i18n_codegen

Internationalization library for Rust based on code generation.

By leveraging code generation we are able to prevent common bugs like typos in i18n keys, missing interpolations, or various mistakes between locales.

It requires a directory with one JSON file per locale. Here is an example with English and Danish translations:

// tests/doc_locales/en.json
{
    "hello_world": "Hello, World!",
    "greeting": "Hello {name}"
}

// tests/doc_locales/da.json
{
    "hello_world": "Hej, Verden!",
    "greeting": "Hej {name}"
}

And in Rust:

use i18n_codegen::i18n;

i18n!("tests/doc_locales");

fn main() {
    assert_eq!("Hello, World!", Locale::En.hello_world());
    assert_eq!("Hej, Verden!", Locale::Da.hello_world());

    assert_eq!("Hello Bob", Locale::En.greeting(Name("Bob")));
    assert_eq!("Hej Bob", Locale::Da.greeting(Name("Bob")));
}

You can find more details on https://docs.rs/i18n_codegen.

Dependencies

~4.5MB
~92K SLoC