= i18n_utility Rizzen Yazston :icu4x: https://github.com/unicode-org/icu4x :url-unicode: https://home.unicode.org/ :BCP_47_Language_Tag: https://www.rfc-editor.org/rfc/bcp/bcp47.txt Welcome to the *`i18n_utility`* crate of the _Internationalisation_ (i18n) project. This crate consists of five modules: * `error`: Contains the error enum for the language registry, * `language`: Registry of language tags with ICU4X's `LanguageIdentifier` or `Locale` instances, * `tagged_string`: Simple tagged string type, * `traits`: Traits for localisation of structs and enums, * `types`: Simple struct and enum types. == Features Available features for `i18n_utility` crate: * `icu_extended`: Use the more detailed ICU information structs, types, and methods. * `sync`: Allow for rust's concurrency capabilities to be used. Use of `Arc` and `Mutex` instead `Rc` and `RefCell`. == Modules === `language`: Registry for holding _ICU4X_ `LanguageIdentifier` or `Locale` instances. Registry for holding the validated {BCP_47_Language_Tag}[BCP 47 Language Tag] strings, and optionally holding the `ICU4X` [`LanguageIdentifier`] or [`Locale`] (using feature `icu_extended`) instances. The purpose of the registry is to reduce the need of parsing language tags repeatedly, by storing the validated language tag against the requested language tag. The `LanguageIdentifier` or `Locale` type can be provided by either the [`icu_locid`] crate or the `icu` meta-crate. These two crates are part of the {icu4x}[ICU4X] project developed by the {url-unicode}[Unicode Consortium]. === `tagged_string`: Tagged string. The immutable `TaggedString` type simply associates a language tag ([`Rc`]`` or [`Arc`]``) to a text string ([`String`]). In the context of the `i18n` project, the identifier tag is expected to be a {BCP_47_Language_Tag}[BCP 47 Language Tag] string. == Acknowledgements Stefano Angeleri for advice on various design aspects of implementing the library of the Internationalisation project, and also providing the Italian translation of error message strings.