1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru****************************************************************************** 3b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 48393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius* Copyright (C) 1996-2013, International Business Machines 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Corporation and others. All Rights Reserved. 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru****************************************************************************** 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* File locid.h 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Created by: Helena Shih 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Modification History: 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Date Name Description 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 02/11/97 aliu Changed gLocPath to fgLocPath and added methods to 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* get and set it. 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 04/02/97 aliu Made operator!= inline; fixed return value of getName(). 19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 04/15/97 aliu Cleanup for AIX/Win32. 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 04/24/97 aliu Numerous changes per code review. 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 08/18/98 stephen Added tokenizeString(),changed getDisplayName() 22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 09/08/98 stephen Moved definition of kEmptyString for Mac Port 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 11/09/99 weiv Added const char * getName() const; 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 04/12/00 srl removing unicodestring api's and cached hash code 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 08/10/01 grhoten Change the static Locales to accessor functions 26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru****************************************************************************** 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef LOCID_H 30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define LOCID_H 31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h" 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/uobject.h" 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/unistr.h" 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/putil.h" 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/uloc.h" 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/strenum.h" 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \file 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \brief C++ API: Locale ID object. 42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 4454dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_NAMESPACE_BEGIN 4554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 4659d709d503bab6e2b61931737e662dd293b40578ccornelius// Forward Declarations 4759d709d503bab6e2b61931737e662dd293b40578ccorneliusvoid U_CALLCONV locale_available_init(); /**< @internal */ 4859d709d503bab6e2b61931737e662dd293b40578ccornelius 49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A <code>Locale</code> object represents a specific geographical, political, 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * or cultural region. An operation that requires a <code>Locale</code> to perform 52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * its task is called <em>locale-sensitive</em> and uses the <code>Locale</code> 53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * to tailor information for the user. For example, displaying a number 54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * is a locale-sensitive operation--the number should be formatted 55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * according to the customs/conventions of the user's native country, 56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * region, or culture. 57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The Locale class is not suitable for subclassing. 59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * You can create a <code>Locale</code> object using the constructor in 62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * this class: 63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \htmlonly<blockquote>\endhtmlonly 64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre> 65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Locale( const char* language, 66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * const char* country, 67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * const char* variant); 68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre> 69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \htmlonly</blockquote>\endhtmlonly 70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The first argument to the constructors is a valid <STRONG>ISO 71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Language Code.</STRONG> These codes are the lower-case two-letter 72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * codes as defined by ISO-639. 73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * You can find a full list of these codes at: 74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <BR><a href ="http://www.loc.gov/standards/iso639-2/"> 75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * http://www.loc.gov/standards/iso639-2/</a> 76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The second argument to the constructors is a valid <STRONG>ISO Country 79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Code.</STRONG> These codes are the upper-case two-letter codes 80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * as defined by ISO-3166. 81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * You can find a full list of these codes at a number of sites, such as: 82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <BR><a href="http://www.iso.org/iso/en/prods-services/iso3166ma/index.html"> 83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * http://www.iso.org/iso/en/prods-services/iso3166ma/index.html</a> 84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The third constructor requires a third argument--the <STRONG>Variant.</STRONG> 87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The Variant codes are vendor and browser-specific. 88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * For example, use REVISED for a langauge's revised script orthography, and POSIX for POSIX. 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Where there are two variants, separate them with an underscore, and 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * put the most important one first. For 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * example, a Traditional Spanish collation might be referenced, with 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "ES", "ES", "Traditional_POSIX". 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Because a <code>Locale</code> object is just an identifier for a region, 96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * no validity check is performed when you construct a <code>Locale</code>. 97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If you want to see whether particular resources are available for the 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <code>Locale</code> you construct, you must query those resources. For 99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * example, ask the <code>NumberFormat</code> for the locales it supports 100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * using its <code>getAvailableLocales</code> method. 101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <BR><STRONG>Note:</STRONG> When you ask for a resource for a particular 102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * locale, you get back the best available match, not necessarily 103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * precisely what you asked for. For more information, look at 104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <code>ResourceBundle</code>. 105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The <code>Locale</code> class provides a number of convenient constants 108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * that you can use to create <code>Locale</code> objects for commonly used 109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * locales. For example, the following refers to a <code>Locale</code> object 110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * for the United States: 111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \htmlonly<blockquote>\endhtmlonly 112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre> 113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Locale::getUS() 114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre> 115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \htmlonly</blockquote>\endhtmlonly 116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Once you've created a <code>Locale</code> you can query it for information about 119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * itself. Use <code>getCountry</code> to get the ISO Country Code and 120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <code>getLanguage</code> to get the ISO Language Code. You can 121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * use <code>getDisplayCountry</code> to get the 122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * name of the country suitable for displaying to the user. Similarly, 123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * you can use <code>getDisplayLanguage</code> to get the name of 124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the language suitable for displaying to the user. Interestingly, 125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the <code>getDisplayXXX</code> methods are themselves locale-sensitive 126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * and have two versions: one that uses the default locale and one 127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * that takes a locale as an argument and displays the name or country in 128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * a language appropriate to that locale. 129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * ICU provides a number of classes that perform locale-sensitive 132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * operations. For example, the <code>NumberFormat</code> class formats 133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * numbers, currency, or percentages in a locale-sensitive manner. Classes 134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * such as <code>NumberFormat</code> have a number of convenience methods 135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * for creating a default object of that type. For example, the 136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <code>NumberFormat</code> class provides these three convenience methods 137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * for creating a default <code>NumberFormat</code> object: 138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \htmlonly<blockquote>\endhtmlonly 139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre> 140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UErrorCode success = U_ZERO_ERROR; 141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Locale myLocale; 142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * NumberFormat *nf; 143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * nf = NumberFormat::createInstance( success ); delete nf; 145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * nf = NumberFormat::createCurrencyInstance( success ); delete nf; 146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * nf = NumberFormat::createPercentInstance( success ); delete nf; 147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre> 148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \htmlonly</blockquote>\endhtmlonly 149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Each of these methods has two variants; one with an explicit locale 150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * and one without; the latter using the default locale. 151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \htmlonly<blockquote>\endhtmlonly 152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre> 153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * nf = NumberFormat::createInstance( myLocale, success ); delete nf; 154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * nf = NumberFormat::createCurrencyInstance( myLocale, success ); delete nf; 155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * nf = NumberFormat::createPercentInstance( myLocale, success ); delete nf; 156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre> 157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \htmlonly</blockquote>\endhtmlonly 158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A <code>Locale</code> is the mechanism for identifying the kind of object 159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * (<code>NumberFormat</code>) that you would like to get. The locale is 160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <STRONG>just</STRONG> a mechanism for identifying objects, 161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <STRONG>not</STRONG> a container for the objects themselves. 162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Each class that performs locale-sensitive operations allows you 165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * to get all the available objects of that type. You can sift 166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * through these objects by language, country, or variant, 167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * and use the display names to present a menu to the user. 168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * For example, you can create a menu of all the collation objects 169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * suitable for a given language. Such classes implement these 170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * three class methods: 171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \htmlonly<blockquote>\endhtmlonly 172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre> 173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * static Locale* getAvailableLocales(int32_t& numLocales) 174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * static UnicodeString& getDisplayName(const Locale& objectLocale, 175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * const Locale& displayLocale, 176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UnicodeString& displayName) 177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * static UnicodeString& getDisplayName(const Locale& objectLocale, 178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UnicodeString& displayName) 179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre> 180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \htmlonly</blockquote>\endhtmlonly 181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see ResourceBundle 184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass U_COMMON_API Locale : public UObject { 186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic: 18727f654740f2a26ad62a5c155af9199af9e69b889claireho /** Useful constant for the Root locale. @stable ICU 4.4 */ 18850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho static const Locale &U_EXPORT2 getRoot(void); 189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this language. @stable ICU 2.0 */ 190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getEnglish(void); 191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this language. @stable ICU 2.0 */ 192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getFrench(void); 193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this language. @stable ICU 2.0 */ 194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getGerman(void); 195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this language. @stable ICU 2.0 */ 196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getItalian(void); 197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this language. @stable ICU 2.0 */ 198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getJapanese(void); 199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this language. @stable ICU 2.0 */ 200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getKorean(void); 201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this language. @stable ICU 2.0 */ 202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getChinese(void); 203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this language. @stable ICU 2.0 */ 204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getSimplifiedChinese(void); 205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this language. @stable ICU 2.0 */ 206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getTraditionalChinese(void); 207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this country/region. @stable ICU 2.0 */ 209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getFrance(void); 210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this country/region. @stable ICU 2.0 */ 211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getGermany(void); 212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this country/region. @stable ICU 2.0 */ 213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getItaly(void); 214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this country/region. @stable ICU 2.0 */ 215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getJapan(void); 216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this country/region. @stable ICU 2.0 */ 217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getKorea(void); 218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this country/region. @stable ICU 2.0 */ 219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getChina(void); 220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this country/region. @stable ICU 2.0 */ 221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getPRC(void); 222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this country/region. @stable ICU 2.0 */ 223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getTaiwan(void); 224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this country/region. @stable ICU 2.0 */ 225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getUK(void); 226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this country/region. @stable ICU 2.0 */ 227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getUS(void); 228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this country/region. @stable ICU 2.0 */ 229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getCanada(void); 230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Useful constant for this country/region. @stable ICU 2.0 */ 231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &U_EXPORT2 getCanadaFrench(void); 232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Construct a default locale object, a Locale for the default locale ID. 236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see getDefault 238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see uloc_getDefault 239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale(); 242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Construct a locale from language, country, variant. 245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If an error occurs, then the constructed object will be "bogus" 246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * (isBogus() will return TRUE). 247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param language Lowercase two-letter or three-letter ISO-639 code. 249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This parameter can instead be an ICU style C locale (e.g. "en_US"), 250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * but the other parameters must not be used. 251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This parameter can be NULL; if so, 252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the locale is initialized to match the current default locale. 253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * (This is the same as using the default constructor.) 254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Please note: The Java Locale class does NOT accept the form 255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'new Locale("en_US")' but only 'new Locale("en","US")' 256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param country Uppercase two-letter ISO-3166 code. (optional) 258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param variant Uppercase vendor and browser specific code. See class 259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * description. (optional) 260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param keywordsAndValues A string consisting of keyword/values pairs, such as 261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "collation=phonebook;currency=euro" 262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see getDefault 264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see uloc_getDefault 265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale( const char * language, 268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char * country = 0, 269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char * variant = 0, 270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char * keywordsAndValues = 0); 271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Initializes a Locale object from another Locale object. 274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param other The Locale object being copied in. 276b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale(const Locale& other); 279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Destructor 283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual ~Locale() ; 286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Replaces the entire contents of *this with the specified value. 289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param other The Locale object being copied in. 291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return *this 292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale& operator=(const Locale& other); 295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Checks if two locale keys are the same. 298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param other The locale key object to be compared with this. 300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return True if the two locale keys are the same, false otherwise. 301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool operator==(const Locale& other) const; 304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Checks if two locale keys are not the same. 307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param other The locale key object to be compared with this. 309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return True if the two locale keys are not the same, false 310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * otherwise. 311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool operator!=(const Locale& other) const; 314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Clone this object. 317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Clones can be used concurrently in multiple threads. 318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If an error occurs, then NULL is returned. 319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The caller must delete the clone. 320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return a clone of this object 322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see getDynamicClassID 324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.8 325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale *clone() const; 327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 328103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#ifndef U_HIDE_SYSTEM_API 329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Common methods of getting the current default Locale. Used for the 331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * presentation: menus, dialogs, etc. Generally set once when your applet or 332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * application is initialized, then never reset. (If you do reset the 333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * default locale, you probably want to reload your GUI, so that the change 334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * is reflected in your interface.) 335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * More advanced programs will allow users to use different locales for 337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * different fields, e.g. in a spreadsheet. 338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Note that the initial setting will match the host system. 340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return a reference to the Locale object for the default locale ID 341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @system 342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale& U_EXPORT2 getDefault(void); 345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Sets the default. Normally set once at the beginning of a process, 348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * then never reset. 349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * setDefault() only changes ICU's default locale ID, <strong>not</strong> 350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the default locale ID of the runtime environment. 351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param newLocale Locale to set to. If NULL, set to the value obtained 353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * from the runtime environement. 354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param success The error code. 355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @system 356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static void U_EXPORT2 setDefault(const Locale& newLocale, 359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode& success); 360103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#endif /* U_HIDE_SYSTEM_API */ 361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Creates a locale which has had minimal canonicalization 364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * as per uloc_getName(). 365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param name The name to create from. If name is null, 366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the default Locale is used. 367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return new locale object 368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see uloc_getName 370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static Locale U_EXPORT2 createFromName(const char *name); 372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Creates a locale from the given string after canonicalizing 375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the string by calling uloc_canonicalize(). 376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param name the locale ID to create from. Must not be NULL. 377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return a new locale object corresponding to the given name 378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see uloc_canonicalize 380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static Locale U_EXPORT2 createCanonical(const char* name); 382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns the locale's ISO-639 language code. 385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return An alias to the code 386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru inline const char * getLanguage( ) const; 389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns the locale's ISO-15924 abbreviation script code. 392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return An alias to the code 393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see uscript_getShortName 394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see uscript_getCode 395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.8 396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru inline const char * getScript( ) const; 398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns the locale's ISO-3166 country code. 401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return An alias to the code 402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru inline const char * getCountry( ) const; 405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns the locale's variant code. 408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return An alias to the code 409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru inline const char * getVariant( ) const; 412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns the programmatic name of the entire locale, with the language, 415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * country and variant separated by underbars. If a field is missing, up 416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * to two leading underbars will occur. Example: "en", "de_DE", "en_US_WIN", 417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "de__POSIX", "fr__MAC", "__MAC", "_MT", "_FR_EURO" 418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A pointer to "name". 419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru inline const char * getName() const; 422b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 42459d709d503bab6e2b61931737e662dd293b40578ccornelius * Returns the programmatic name of the entire locale as getName() would return, 425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * but without keywords. 426b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A pointer to "name". 427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see getName 428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.8 429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char * getBaseName() const; 431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 432b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 433b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Gets the list of keywords for the specified locale. 435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 43650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param status the status code 43750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return pointer to StringEnumeration class, or NULL if there are no keywords. 43850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Client must dispose of it by calling delete. 439b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.8 440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru StringEnumeration * createKeywords(UErrorCode &status) const; 442b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 443b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 444103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Gets the value for a keyword. 445b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param keywordName name of the keyword for which we want the value. Case insensitive. 447b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param buffer The buffer to receive the keyword value. 448b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bufferCapacity The capacity of receiving buffer 44950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param status Returns any error information while performing this operation. 45050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return the length of the keyword value 451b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.8 453b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 454b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t getKeywordValue(const char* keywordName, char *buffer, int32_t bufferCapacity, UErrorCode &status) const; 455b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 45759d709d503bab6e2b61931737e662dd293b40578ccornelius * Sets or removes the value for a keyword. 45859d709d503bab6e2b61931737e662dd293b40578ccornelius * 45959d709d503bab6e2b61931737e662dd293b40578ccornelius * For removing all keywords, use getBaseName(), 46059d709d503bab6e2b61931737e662dd293b40578ccornelius * and construct a new Locale if it differs from getName(). 46150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 46250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param keywordName name of the keyword to be set. Case insensitive. 46350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param keywordValue value of the keyword to be set. If 0-length or 46450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * NULL, will result in the keyword being removed. No error is given if 46550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * that keyword does not exist. 46650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param status Returns any error information while performing this operation. 46750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 4688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @stable ICU 49 46950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 47050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho void setKeywordValue(const char* keywordName, const char* keywordValue, UErrorCode &status); 47150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 47250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * returns the locale's three-letter language code, as specified 474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * in ISO draft standard ISO-639-2. 475b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @return An alias to the code, or an empty string 476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char * getISO3Language() const; 479b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Fills in "name" with the locale's three-letter ISO-3166 country code. 482b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @return An alias to the code, or an empty string 483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char * getISO3Country() const; 486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns the Windows LCID value corresponding to this locale. 489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This value is stored in the resource data for the locale as a one-to-four-digit 490b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * hexadecimal number. If the resource is missing, in the wrong format, or 491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * there is no Windows LCID value that corresponds to this locale, returns 0. 492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uint32_t getLCID(void) const; 495b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Fills in "dispLang" with the name of this locale's language in a format suitable for 498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * user display in the default locale. For example, if the locale's language code is 499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "fr" and the default locale's language code is "en", this function would set 500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * dispLang to "French". 501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param dispLang Receives the language's display name. 502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A reference to "dispLang". 503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& getDisplayLanguage(UnicodeString& dispLang) const; 506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Fills in "dispLang" with the name of this locale's language in a format suitable for 509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * user display in the locale specified by "displayLocale". For example, if the locale's 510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * language code is "en" and displayLocale's language code is "fr", this function would set 511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * dispLang to "Anglais". 512b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param displayLocale Specifies the locale to be used to display the name. In other words, 513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if the locale's language code is "en", passing Locale::getFrench() for 514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * displayLocale would result in "Anglais", while passing Locale::getGerman() 515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * for displayLocale would result in "Englisch". 516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param dispLang Receives the language's display name. 517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A reference to "dispLang". 518b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& getDisplayLanguage( const Locale& displayLocale, 521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& dispLang) const; 522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Fills in "dispScript" with the name of this locale's script in a format suitable 525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * for user display in the default locale. For example, if the locale's script code 526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * is "LATN" and the default locale's language code is "en", this function would set 527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * dispScript to "Latin". 528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param dispScript Receives the scripts's display name. 529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A reference to "dispScript". 530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.8 531b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 532b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& getDisplayScript( UnicodeString& dispScript) const; 533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 534b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Fills in "dispScript" with the name of this locale's country in a format suitable 536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * for user display in the locale specified by "displayLocale". For example, if the locale's 537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * script code is "LATN" and displayLocale's language code is "en", this function would set 538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * dispScript to "Latin". 539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param displayLocale Specifies the locale to be used to display the name. In other 540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * words, if the locale's script code is "LATN", passing 541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Locale::getFrench() for displayLocale would result in "", while 542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * passing Locale::getGerman() for displayLocale would result in 543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "". 544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param dispScript Receives the scripts's display name. 545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A reference to "dispScript". 546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.8 547b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& getDisplayScript( const Locale& displayLocale, 549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& dispScript) const; 550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Fills in "dispCountry" with the name of this locale's country in a format suitable 553b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * for user display in the default locale. For example, if the locale's country code 554b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * is "FR" and the default locale's language code is "en", this function would set 555b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * dispCountry to "France". 556b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param dispCountry Receives the country's display name. 557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A reference to "dispCountry". 558b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 560b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& getDisplayCountry( UnicodeString& dispCountry) const; 561b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 562b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 563b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Fills in "dispCountry" with the name of this locale's country in a format suitable 564b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * for user display in the locale specified by "displayLocale". For example, if the locale's 565b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * country code is "US" and displayLocale's language code is "fr", this function would set 566b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * dispCountry to "États-Unis". 567b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param displayLocale Specifies the locale to be used to display the name. In other 568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * words, if the locale's country code is "US", passing 569b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Locale::getFrench() for displayLocale would result in "États-Unis", while 570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * passing Locale::getGerman() for displayLocale would result in 571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "Vereinigte Staaten". 572b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param dispCountry Receives the country's display name. 573b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A reference to "dispCountry". 574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 576b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& getDisplayCountry( const Locale& displayLocale, 577b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& dispCountry) const; 578b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Fills in "dispVar" with the name of this locale's variant code in a format suitable 581b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * for user display in the default locale. 582b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param dispVar Receives the variant's name. 583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A reference to "dispVar". 584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 585b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 586b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& getDisplayVariant( UnicodeString& dispVar) const; 587b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 588b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 589b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Fills in "dispVar" with the name of this locale's variant code in a format 590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * suitable for user display in the locale specified by "displayLocale". 591b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param displayLocale Specifies the locale to be used to display the name. 592b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param dispVar Receives the variant's display name. 593b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A reference to "dispVar". 594b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 595b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 596b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& getDisplayVariant( const Locale& displayLocale, 597b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& dispVar) const; 598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 600b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Fills in "name" with the name of this locale in a format suitable for user display 601b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * in the default locale. This function uses getDisplayLanguage(), getDisplayCountry(), 602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * and getDisplayVariant() to do its work, and outputs the display name in the format 603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "language (country[,variant])". For example, if the default locale is en_US, then 604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * fr_FR's display name would be "French (France)", and es_MX_Traditional's display name 605b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * would be "Spanish (Mexico,Traditional)". 606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param name Receives the locale's display name. 607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A reference to "name". 608b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 609b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& getDisplayName( UnicodeString& name) const; 611b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 612b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 613b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Fills in "name" with the name of this locale in a format suitable for user display 614b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * in the locale specfied by "displayLocale". This function uses getDisplayLanguage(), 615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * getDisplayCountry(), and getDisplayVariant() to do its work, and outputs the display 616b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * name in the format "language (country[,variant])". For example, if displayLocale is 617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * fr_FR, then en_US's display name would be "Anglais (États-Unis)", and no_NO_NY's 618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * display name would be "norvégien (Norvège,NY)". 619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param displayLocale Specifies the locale to be used to display the name. 620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param name Receives the locale's display name. 621b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A reference to "name". 622b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& getDisplayName( const Locale& displayLocale, 625b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& name) const; 626b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 628b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Generates a hash code for the locale. 629b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 630b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 631b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t hashCode(void) const; 632b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 633b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 634b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Sets the locale to bogus 635b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A bogus locale represents a non-existing locale associated 636b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * with services that can be instantiated from non-locale data 637b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * in addition to locale (for example, collation can be 638b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * instantiated from a locale and from a rule set). 639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.1 640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void setToBogus(); 642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 643b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 644b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Gets the bogus state. Locale object can be bogus if it doesn't exist 645b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return FALSE if it is a real locale, TRUE if it is a bogus locale 646b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.1 647b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 648b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool isBogus(void) const; 649b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 651b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns a list of all installed locales. 652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param count Receives the number of locales in the list. 653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A pointer to an array of Locale objects. This array is the list 654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * of all locales with installed resource files. The called does NOT 655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * get ownership of this list, and must NOT delete it. 656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale* U_EXPORT2 getAvailableLocales(int32_t& count); 659b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 660b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 66150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Gets a list of all available 2-letter country codes defined in ISO 3166. This is a 662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * pointer to an array of pointers to arrays of char. All of these pointers are 663b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * owned by ICU-- do not delete them, and do not write through them. The array is 664b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * terminated with a null pointer. 665b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return a list of all available country codes 666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 667b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 668b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const char* const* U_EXPORT2 getISOCountries(); 669b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 670b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 671b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Gets a list of all available language codes defined in ISO 639. This is a pointer 672b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * to an array of pointers to arrays of char. All of these pointers are owned 673b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * by ICU-- do not delete them, and do not write through them. The array is 674b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * terminated with a null pointer. 675b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return a list of all available language codes 676b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 678b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const char* const* U_EXPORT2 getISOLanguages(); 679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * ICU "poor man's RTTI", returns a UClassID for this class. 682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.2 684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 685b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static UClassID U_EXPORT2 getStaticClassID(); 686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 687b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 688b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * ICU "poor man's RTTI", returns a UClassID for the actual class. 689b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 690b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.2 691b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 692b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual UClassID getDynamicClassID() const; 693b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 694b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprotected: /* only protected for testing purposes. DO NOT USE. */ 695103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#ifndef U_HIDE_INTERNAL_API 696b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 697b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Set this from a single POSIX style locale string. 698b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @internal 699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 700b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void setFromPOSIXID(const char *posixID); 701103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#endif /* U_HIDE_INTERNAL_API */ 702b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 703b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprivate: 704b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 705b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Initialize the locale object with a new name. 706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Was deprecated - used in implementation - moved internal 707b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 708b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param cLocaleID The new locale name. 709b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param canonicalize whether to call uloc_canonicalize on cLocaleID 710b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 711b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale& init(const char* cLocaleID, UBool canonicalize); 712b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 713b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 714b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Internal constructor to allow construction of a locale object with 715b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * NO side effects. (Default constructor tries to get 716b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the default locale.) 717b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 718b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru enum ELocaleType { 719b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru eBOGUS 720b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 721b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale(ELocaleType); 722b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 723b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 724b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Initialize the locale cache for commonly used locales 725b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 726b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static Locale *getLocaleCache(void); 727b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 728b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru char language[ULOC_LANG_CAPACITY]; 729b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru char script[ULOC_SCRIPT_CAPACITY]; 730b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru char country[ULOC_COUNTRY_CAPACITY]; 731b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t variantBegin; 732b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru char* fullName; 733b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru char fullNameBuffer[ULOC_FULLNAME_CAPACITY]; 734b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // name without keywords 735b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru char* baseName; 736b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru char baseNameBuffer[ULOC_FULLNAME_CAPACITY]; 737b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 738b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool fIsBogus; 739b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const Locale &getLocale(int locid); 741b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 742b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 743b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A friend to allow the default locale to be set by either the C or C++ API. 744b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @internal 745b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 74654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius friend Locale *locale_set_default_internal(const char *, UErrorCode& status); 74759d709d503bab6e2b61931737e662dd293b40578ccornelius 74859d709d503bab6e2b61931737e662dd293b40578ccornelius /** 74959d709d503bab6e2b61931737e662dd293b40578ccornelius * @internal 75059d709d503bab6e2b61931737e662dd293b40578ccornelius */ 751fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius friend void U_CALLCONV locale_available_init(); 752b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 753b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 754b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruinline UBool 755b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLocale::operator!=(const Locale& other) const 756b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 757b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return !operator==(other); 758b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 759b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 760b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruinline const char * 761b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLocale::getCountry() const 762b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 763b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return country; 764b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 765b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 766b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruinline const char * 767b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLocale::getLanguage() const 768b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 769b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return language; 770b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 771b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 772b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruinline const char * 773b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLocale::getScript() const 774b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 775b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return script; 776b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 777b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 778b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruinline const char * 779b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLocale::getVariant() const 780b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 78150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho getBaseName(); // lazy init 78250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return &baseName[variantBegin]; 783b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 784b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 785b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruinline const char * 786b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLocale::getName() const 787b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 788b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fullName; 789b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 791b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruinline UBool 792b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLocale::isBogus(void) const { 793b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fIsBogus; 794b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 796b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_END 797b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 798b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 799