00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef LOCID_H
00030 #define LOCID_H
00031
00032 #include "unicode/utypes.h"
00033 #include "unicode/uobject.h"
00034 #include "unicode/unistr.h"
00035 #include "unicode/putil.h"
00036 #include "unicode/uloc.h"
00037 #include "unicode/strenum.h"
00038
00180 U_NAMESPACE_BEGIN
00181 class U_COMMON_API Locale : public UObject {
00182 public:
00184 static const Locale &U_EXPORT2 getEnglish(void);
00186 static const Locale &U_EXPORT2 getFrench(void);
00188 static const Locale &U_EXPORT2 getGerman(void);
00190 static const Locale &U_EXPORT2 getItalian(void);
00192 static const Locale &U_EXPORT2 getJapanese(void);
00194 static const Locale &U_EXPORT2 getKorean(void);
00196 static const Locale &U_EXPORT2 getChinese(void);
00198 static const Locale &U_EXPORT2 getSimplifiedChinese(void);
00200 static const Locale &U_EXPORT2 getTraditionalChinese(void);
00201
00203 static const Locale &U_EXPORT2 getFrance(void);
00205 static const Locale &U_EXPORT2 getGermany(void);
00207 static const Locale &U_EXPORT2 getItaly(void);
00209 static const Locale &U_EXPORT2 getJapan(void);
00211 static const Locale &U_EXPORT2 getKorea(void);
00213 static const Locale &U_EXPORT2 getChina(void);
00215 static const Locale &U_EXPORT2 getPRC(void);
00217 static const Locale &U_EXPORT2 getTaiwan(void);
00219 static const Locale &U_EXPORT2 getUK(void);
00221 static const Locale &U_EXPORT2 getUS(void);
00223 static const Locale &U_EXPORT2 getCanada(void);
00225 static const Locale &U_EXPORT2 getCanadaFrench(void);
00226
00227
00235 Locale();
00236
00261 Locale( const char * language,
00262 const char * country = 0,
00263 const char * variant = 0,
00264 const char * keywordsAndValues = 0);
00265
00272 Locale(const Locale& other);
00273
00274
00279 virtual ~Locale() ;
00280
00288 Locale& operator=(const Locale& other);
00289
00297 UBool operator==(const Locale& other) const;
00298
00307 UBool operator!=(const Locale& other) const;
00308
00320 Locale *clone() const;
00321
00337 static const Locale& U_EXPORT2 getDefault(void);
00338
00351 static void U_EXPORT2 setDefault(const Locale& newLocale,
00352 UErrorCode& success);
00353
00363 static Locale U_EXPORT2 createFromName(const char *name);
00364
00373 static Locale U_EXPORT2 createCanonical(const char* name);
00374
00380 inline const char * getLanguage( ) const;
00381
00389 inline const char * getScript( ) const;
00390
00396 inline const char * getCountry( ) const;
00397
00403 inline const char * getVariant( ) const;
00404
00413 inline const char * getName() const;
00414
00422 const char * getBaseName() const;
00423
00424
00432 StringEnumeration * createKeywords(UErrorCode &status) const;
00433
00445 int32_t getKeywordValue(const char* keywordName, char *buffer, int32_t bufferCapacity, UErrorCode &status) const;
00446
00453 const char * getISO3Language() const;
00454
00460 const char * getISO3Country() const;
00461
00469 uint32_t getLCID(void) const;
00470
00480 UnicodeString& getDisplayLanguage(UnicodeString& dispLang) const;
00481
00495 UnicodeString& getDisplayLanguage( const Locale& displayLocale,
00496 UnicodeString& dispLang) const;
00497
00507 UnicodeString& getDisplayScript( UnicodeString& dispScript) const;
00508
00523 UnicodeString& getDisplayScript( const Locale& displayLocale,
00524 UnicodeString& dispScript) const;
00525
00535 UnicodeString& getDisplayCountry( UnicodeString& dispCountry) const;
00536
00551 UnicodeString& getDisplayCountry( const Locale& displayLocale,
00552 UnicodeString& dispCountry) const;
00553
00561 UnicodeString& getDisplayVariant( UnicodeString& dispVar) const;
00562
00571 UnicodeString& getDisplayVariant( const Locale& displayLocale,
00572 UnicodeString& dispVar) const;
00573
00585 UnicodeString& getDisplayName( UnicodeString& name) const;
00586
00599 UnicodeString& getDisplayName( const Locale& displayLocale,
00600 UnicodeString& name) const;
00601
00606 int32_t hashCode(void) const;
00607
00616 void setToBogus();
00617
00623 UBool isBogus(void) const;
00624
00633 static const Locale* U_EXPORT2 getAvailableLocales(int32_t& count);
00634
00643 static const char* const* U_EXPORT2 getISOCountries();
00644
00653 static const char* const* U_EXPORT2 getISOLanguages();
00654
00660 static UClassID U_EXPORT2 getStaticClassID();
00661
00667 virtual UClassID getDynamicClassID() const;
00668
00669 protected:
00674 void setFromPOSIXID(const char *posixID);
00675
00676 private:
00683 Locale& init(const char* cLocaleID, UBool canonicalize);
00684
00685
00686
00687
00688
00689
00690 enum ELocaleType {
00691 eBOGUS
00692 };
00693 Locale(ELocaleType);
00694
00698 static Locale *getLocaleCache(void);
00699
00700 char language[ULOC_LANG_CAPACITY];
00701 char script[ULOC_SCRIPT_CAPACITY];
00702 char country[ULOC_COUNTRY_CAPACITY];
00703 int32_t variantBegin;
00704 char* fullName;
00705 char fullNameBuffer[ULOC_FULLNAME_CAPACITY];
00706
00707 char* baseName;
00708 char baseNameBuffer[ULOC_FULLNAME_CAPACITY];
00709
00710 UBool fIsBogus;
00711
00712 static const Locale &getLocale(int locid);
00713
00718 friend void locale_set_default_internal(const char *);
00719 };
00720
00721 inline UBool
00722 Locale::operator!=(const Locale& other) const
00723 {
00724 return !operator==(other);
00725 }
00726
00727 inline const char *
00728 Locale::getCountry() const
00729 {
00730 return country;
00731 }
00732
00733 inline const char *
00734 Locale::getLanguage() const
00735 {
00736 return language;
00737 }
00738
00739 inline const char *
00740 Locale::getScript() const
00741 {
00742 return script;
00743 }
00744
00745 inline const char *
00746 Locale::getVariant() const
00747 {
00748 return &fullName[variantBegin];
00749 }
00750
00751 inline const char *
00752 Locale::getName() const
00753 {
00754 return fullName;
00755 }
00756
00757 inline UBool
00758 Locale::isBogus(void) const {
00759 return fIsBogus;
00760 }
00761
00762 U_NAMESPACE_END
00763
00764 #endif
00765