= i18n
Rizzen Yazston

Welcome to the *`i18n`* crate of the _Internationalisation_ (i18n) project.

This convenience meta crate contains selected available crates:

- `i18n_lexer`: A simple lexer to tokenise a string,

- `i18n_localiser`: The multilingual localisation system,

- `i18n_provider`: Trait for providing language strings, and error struct,

- `i18n_provider_sqlite3`: Implementation of `i18n_provider` using Sqlite3 as its data store,

- `i18n_utility`: Contains the `LanguageTagRegistry``, and the `TaggedString` type.

NOTE: All these crates on `crates.io` have the names appended with the suffix `-rizzen-yazston` to distinguish them from internationalisation crates created by other authors.

== Features

Available features for `i18n_icu` crate:

* `icu_blob`: Allow for instances of `BlobDataProvider` to be used various ICU4X components that supports {BufferProvider}[`BufferProvider`]. An alternative provider when the internal data of ICU4X components are insufficient for a particular use case.
 
* `icu_compiled_data` [default]: Allow for the internal data of the various ICU4X components.

* `icu_extended`: Use the more detailed ICU information structs, types, and methods.
 
* `icu_fs`: Allow for instances of `FsDataProvider` to be used various ICU4X components that supports `BufferProvider`. An alternative provider when the internal data of ICU4X components are insufficient for a particular use case.

* `logging`: To provide some logging information.

* `sync`: Allow for rust's concurrency capabilities to be used. Use of `Arc` and `Mutex` instead `Rc` and `RefCell`.

== Acknowledgement

Stefano Angeleri for advice on various design aspects of implementing the components of the internationalisation project, and also providing the Italian translation of error message strings.

== Usage

For most use cases, just the use of `i18n-rizzen-yazston` crate will be sufficient to use the multilingual message system, though the individual crates can be selected individual if the entire `i18n` project is not required.

=== Cargo.toml

```
[dependencies]
i18n-rizzen-yazston = "0.9.0"
```

=== Examples
 
See the various component crates for usage examples.
 