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