# `locale_select`
A simple library for selecting the user's locale preferences for various ICU4X modules, such as calendar, datetime and decimals.
## Alternatives
This library is specific to ICU4X, but there are many Rust APIs with a similar focus. Here are some that I could find, and what they seem to do differently:
- [`simple-locale`](https://github.com/johnstonskj/simple-locale): very close to this crate, but doesn't use ICU4X libraries
- [`locale_settings`](https://docs.rs/locale-settings/latest/locale_settings): unmaintained(?) version of `simple-locale::settings`
- [`sys_locale`](https://github.com/1password/sys-locale): single locale instead of per-category
- [`utf8-locale`](https://gitlab.com/ppentchev/utf8-locale), [`locale-config`](https://github.com/rust-locale/locale_config): categories are less strongly typed
- [`gettextrs::setlocale()`](https://docs.rs/gettext-rs/latest/gettextrs/fn.setlocale.html): `gettext` bindings, this function can query the locale by setting the locale to a null string
## Useful links
- POSIX:
- Locale category data: https://www.man7.org/linux/man-pages/man5/locale.5.html
- Locale category definitions: https://www.man7.org/linux/man-pages/man7/locale.7.html
- Description of locale names: https://www.gnu.org/software/libc/manual/html_node/Locale-Names.html
- Locale spec: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html
- Localization variables spec: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_02
- Unicode handling of POSIX identifiers: https://unicode.org/reports/tr35/tr35.html#Legacy_Variants