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