12e5b6d6dSopenharmony_ci---
22e5b6d6dSopenharmony_cilayout: default
32e5b6d6dSopenharmony_cititle: Locale Examples
42e5b6d6dSopenharmony_cinav_order: 1
52e5b6d6dSopenharmony_ciparent: Locales and Resources
62e5b6d6dSopenharmony_ci---
72e5b6d6dSopenharmony_ci<!--
82e5b6d6dSopenharmony_ci© 2020 and later: Unicode, Inc. and others.
92e5b6d6dSopenharmony_ciLicense & terms of use: http://www.unicode.org/copyright.html
102e5b6d6dSopenharmony_ci-->
112e5b6d6dSopenharmony_ci
122e5b6d6dSopenharmony_ci# Locale Examples
132e5b6d6dSopenharmony_ci
142e5b6d6dSopenharmony_ci## Locale Currency Conventions
152e5b6d6dSopenharmony_ci
162e5b6d6dSopenharmony_ciApplication programs should not reset the default locale as a way of requesting
172e5b6d6dSopenharmony_cian international object, because resetting default locale affects the other
182e5b6d6dSopenharmony_ciprograms running in the same process. Use one of the factory methods instead,
192e5b6d6dSopenharmony_cie.g. `Collator::createInstance(Locale)`.
202e5b6d6dSopenharmony_ci
212e5b6d6dSopenharmony_ciIn general, a locale object or locale string is used for specifying the locale.
222e5b6d6dSopenharmony_ciHere is an example to specify the Belgium French with Euro currency locale:
232e5b6d6dSopenharmony_ci
242e5b6d6dSopenharmony_ci**C++**
252e5b6d6dSopenharmony_ci
262e5b6d6dSopenharmony_ci```c++
272e5b6d6dSopenharmony_ciLocale loc("fr", "BE");
282e5b6d6dSopenharmony_ciLocale loc2("fr_BE");
292e5b6d6dSopenharmony_ci```
302e5b6d6dSopenharmony_ci
312e5b6d6dSopenharmony_ci**C**
322e5b6d6dSopenharmony_ci
332e5b6d6dSopenharmony_ci```c
342e5b6d6dSopenharmony_ciconst char *loc = "fr_BE";
352e5b6d6dSopenharmony_ci```
362e5b6d6dSopenharmony_ci
372e5b6d6dSopenharmony_ci**Java**
382e5b6d6dSopenharmony_ci
392e5b6d6dSopenharmony_ci```java
402e5b6d6dSopenharmony_ciULocale loc = new ULocale("fr_BE");
412e5b6d6dSopenharmony_ci```
422e5b6d6dSopenharmony_ci
432e5b6d6dSopenharmony_ci> :point_right: **Note**: **Java** does **not** support the form `Locale("xx_yy_ZZ")`,
442e5b6d6dSopenharmony_ci> instead use the form `Locale("xx","yy","ZZ")`.
452e5b6d6dSopenharmony_ci
462e5b6d6dSopenharmony_ci## Locale Constants
472e5b6d6dSopenharmony_ci
482e5b6d6dSopenharmony_ciA `Locale` is the mechanism for identifying the kind of object (`NumberFormat`) that
492e5b6d6dSopenharmony_ciyou would like to get. The locale is just a mechanism for identifying objects,
502e5b6d6dSopenharmony_cinot a container for the objects themselves. For example, the following creates
512e5b6d6dSopenharmony_civarious number formatters for the "Germany" locale:
522e5b6d6dSopenharmony_ci
532e5b6d6dSopenharmony_ci**C++**
542e5b6d6dSopenharmony_ci
552e5b6d6dSopenharmony_ci```c++
562e5b6d6dSopenharmony_ciUErrorCode status = U_ZERO_ERROR;
572e5b6d6dSopenharmony_ciNumberFormat *nf;
582e5b6d6dSopenharmony_cinf = NumberFormat::createInstance(Locale::getGermany(), status);
592e5b6d6dSopenharmony_cidelete nf;
602e5b6d6dSopenharmony_cinf = NumberFormat::createCurrencyInstance(Locale::getGermany(), status);
612e5b6d6dSopenharmony_cidelete nf;
622e5b6d6dSopenharmony_cinf = NumberFormat::createPercentInstance(Locale::getGermany(), status);
632e5b6d6dSopenharmony_cidelete nf;
642e5b6d6dSopenharmony_ci```
652e5b6d6dSopenharmony_ci
662e5b6d6dSopenharmony_ci**C**
672e5b6d6dSopenharmony_ci
682e5b6d6dSopenharmony_ci```c
692e5b6d6dSopenharmony_ciUErrorCode success = U_ZERO_ERROR;
702e5b6d6dSopenharmony_ciUChar *pattern;
712e5b6d6dSopenharmony_ciUNumberFormat *nf;
722e5b6d6dSopenharmony_ciUParseError *pe;
732e5b6d6dSopenharmony_cinf = unum_open( UNUM_DEFAULT, pattern, 0, "fr_FR", pe, &success );
742e5b6d6dSopenharmony_ciunum_close(nf);
752e5b6d6dSopenharmony_cinf = unum_open( UNUM_CURRENCY, pattern, 0, "fr_FR", pe, &success );
762e5b6d6dSopenharmony_ciunum_close(nf);
772e5b6d6dSopenharmony_cinf = unum_open( UNUM_PERCENT, pattern, 0, "fr_FR", pe, &success );
782e5b6d6dSopenharmony_ciunum_close(nf);
792e5b6d6dSopenharmony_ci```
802e5b6d6dSopenharmony_ci
812e5b6d6dSopenharmony_ci**Java**
822e5b6d6dSopenharmony_ci
832e5b6d6dSopenharmony_ci```java
842e5b6d6dSopenharmony_ciNumberFormat nf = NumberFormat.getInstance(ULocale.GERMANY);
852e5b6d6dSopenharmony_ciNumberFormat currencyInstance = NumberFormat.getCurrencyInstance(ULocale.GERMANY);
862e5b6d6dSopenharmony_ciNumberFormat percentInstance = NumberFormat.getPercentInstance(ULocale.GERMANY);
872e5b6d6dSopenharmony_ci```
882e5b6d6dSopenharmony_ci
892e5b6d6dSopenharmony_ci## Querying Locale
902e5b6d6dSopenharmony_ci
912e5b6d6dSopenharmony_ciEach class that performs locale-sensitive operations allows you to get all the
922e5b6d6dSopenharmony_ciavailable objects of that type. You can sift through these objects by language,
932e5b6d6dSopenharmony_cicountry, or variant, and use the display names to present a menu to the user.
942e5b6d6dSopenharmony_ciFor example, you can create a menu of all the collation objects suitable for a
952e5b6d6dSopenharmony_cigiven language. For example, the following shows the display name of all
962e5b6d6dSopenharmony_ciavailable locales in English (US):
972e5b6d6dSopenharmony_ci
982e5b6d6dSopenharmony_ci**C++**
992e5b6d6dSopenharmony_ci
1002e5b6d6dSopenharmony_ci```c++
1012e5b6d6dSopenharmony_ciint32_t count;
1022e5b6d6dSopenharmony_ciconst Locale* list = NULL;
1032e5b6d6dSopenharmony_ciUnicodeString result;
1042e5b6d6dSopenharmony_cilist = Locale::getAvailableLocales(count);
1052e5b6d6dSopenharmony_cifor (int i = 0; i < count; i++) {
1062e5b6d6dSopenharmony_ci    list[i].getDisplayName(Locale::getUS(), result);
1072e5b6d6dSopenharmony_ci    /* print result */
1082e5b6d6dSopenharmony_ci}
1092e5b6d6dSopenharmony_ci```
1102e5b6d6dSopenharmony_ci
1112e5b6d6dSopenharmony_ci**C**
1122e5b6d6dSopenharmony_ci
1132e5b6d6dSopenharmony_ci```c
1142e5b6d6dSopenharmony_ciint32_t count;
1152e5b6d6dSopenharmony_ciUChar result[100];
1162e5b6d6dSopenharmony_ciint i = 0;
1172e5b6d6dSopenharmony_ciUErrorCode status = U_ZERO_ERROR;
1182e5b6d6dSopenharmony_cicount = uloc_countAvailable();
1192e5b6d6dSopenharmony_cifor (i = 0; i < count; i++) {
1202e5b6d6dSopenharmony_ci    uloc_getDisplayName(uloc_getAvailable(i), "en_US", result, 100, &status);
1212e5b6d6dSopenharmony_ci    /* print result */
1222e5b6d6dSopenharmony_ci}
1232e5b6d6dSopenharmony_ci```
1242e5b6d6dSopenharmony_ci
1252e5b6d6dSopenharmony_ci**Java**
1262e5b6d6dSopenharmony_ci
1272e5b6d6dSopenharmony_ci```java
1282e5b6d6dSopenharmony_ciimport com.ibm.icu.util.*;
1292e5b6d6dSopenharmony_cipublic class TestLocale {
1302e5b6d6dSopenharmony_ci    public void run() {
1312e5b6d6dSopenharmony_ci        ULocale l[] = ULocale.getAvailableLocales();
1322e5b6d6dSopenharmony_ci        int n = l.length;
1332e5b6d6dSopenharmony_ci        for(int i=0; i<n; ++i) {
1342e5b6d6dSopenharmony_ci            ULocale locale = l[i];
1352e5b6d6dSopenharmony_ci            System.out.println();
1362e5b6d6dSopenharmony_ci            System.out.println("The base name of this locale is: " + locale.getBaseName());
1372e5b6d6dSopenharmony_ci            System.out.println("Locale's country name: " + locale.getDisplayCountry());
1382e5b6d6dSopenharmony_ci            System.out.println("Locale's script name: " + locale.getDisplayScript());
1392e5b6d6dSopenharmony_ci            System.out.println("Locale's language: " + locale.getDisplayLanguage());
1402e5b6d6dSopenharmony_ci            System.out.println("Locale's variant: " + locale.getDisplayVariant());
1412e5b6d6dSopenharmony_ci        }
1422e5b6d6dSopenharmony_ci    }
1432e5b6d6dSopenharmony_ci    public static void main(String args[]) {
1442e5b6d6dSopenharmony_ci        new TestLocale().run();
1452e5b6d6dSopenharmony_ci    }
1462e5b6d6dSopenharmony_ci}
1472e5b6d6dSopenharmony_ci```
148