Rocket I18N 
A crate to help you internationalize your Rocket applications.
Features
- Build helpers (with the
buildfeature enabled), to update and compile PO files. - Select the correct locale for each request
- Provides a macro to internationalize any string.
Usage
First add it to your Cargo.toml (you have to use the git version, because we can't publish the latest version on https://crates.io as it depends on the master branch of Rocket):
[]
= "https://github.com/BaptisteGelez/rocket_i18n"
= "<LATEST COMMIT>"
Then, in your main.rs:
extern crate rocket;
extern crate rocket_i18n;
Then in all your requests you'll be able to use the i18n macro to translate anything.
It takes a gettext::Catalog and a string to translate as argument.
# extern crate rocket_i18n;
use I18n;
For strings that may have a plural form, just add the plural and the number of element to the arguments
i18n!;
Any extra argument, after a ;, will be used for formatting.
let user_name = "Alex";
i18n!;
When using it with plural, {0} will be the number of elements, and other arguments will start
at {1}.
Because of its design, rocket_i18n is only compatible with askama. You can use
the t macro in your templates, as long as they have a field called catalog to
store your catalog.
Editing the POT
For those strings to be translatable you should also add them to the po/YOUR_DOMAIN.pot file. To add a simple message, just do:
msgid "Hello, world" # The string you used with your filter
msgstr "" # Always empty
For plural forms, the syntax is a bit different:
msgid "You have one new notification" # The singular form
msgid_plural "You have {{ count }} new notifications" # The plural one
msgstr[0] ""
msgstr[1] ""
Using with Actix Web
First, disable the default features so it doesn't pull in all of Rocket.
[]
= "0.2"
= false
= ["actix-web"]
Then add it to your application.
extern crate rocket_i18n;
use ;