In this section we explain how we deal with locales in stringi. Locale is a fundamental concept in ICU. It identifies a specific user community, i.e. a group of users who have similar culture and language expectations for human-computer interaction.
Because a locale is just an identifier for a region, no validity check is performed when you specify a Locale. ICU is implemented as a set of services. If you want to see whether particular resources are available for the locale you asked for, you must query those resources. Note: When you ask for a resource for a particular locale, you get back the best available match, not necessarily precisely what you requested.
ICU services are parametrized by locale, to deliver
culturally correct results. Locales are identified by
character strings of the form
Language_Country code, or
Language_Country_Variant code, e.g. "en_US".
Language code uses the ISO-639-1
standard, e.g. "en" stands for English, "pl" – Polish,
"fr" – French, and "de" for German.
Country is a two-letter code following the
ISO-3166 standard. This is to reflect different language
conventions within the same language, for example in
US-English ("en_US") and Australian-English ("en_AU").
Differences may also appear in language conventions used
within the same country. For example, the Euro currency
may be used in several European countries while the
individual country's currency is still in circulation. In
such case, ICU
Variant "_EURO" could be used for
selecting locales that support the Euro currency.
For a list of locales that are recognized by ICU,
Each locale-sensitive function in stringi selects
the current default locale if an empty string or
NULL is given as as its
Default locales are available to all the functions: they
are initially set to be the system locale on that
platform, and may be changed with
stri_locale_set, for example if automatic
detection fails to recognize your locale properly.
Sometimes it is suggested that your program should avoid
changing the default locale: it is not a good way to
request an international object, especially only for a
single function call.. All locale-sensitive functions may
request any desired locale per-call (by specifying the
locale argument), i.e. without referencing to the
default locale. During many tests, however, we did not
observe any improper behavior of stringi while
using a modified default locale.
One of many examples of locale-dependent services is the
Collator, which performs a locale-aware string
comparison. It is used for string comparing, ordering,
sorting, and searching. See
stri_opts_collator for the description on
how to tune its settings, and its
Other locale-sensitive functions include e.g.
stri_trans_tolower (that does character
Locale – ICU User Guide, http://userguide.icu-project.org/locale
ISO 639: Language Codes, http://www.iso.org/iso/home/standards/language_codes.htm
ISO 3166: Country Codes, http://www.iso.org/iso/country_codes