/* ***************************************************************************************** * * Copyright (C) 1996-1999, International Business Machines * Corporation and others. All Rights Reserved. * ***************************************************************************************** * * File locid.h * * Created by: Helena Shih * * Modification History: * * Date Name Description * 02/11/97 aliu Changed gLocPath to fgLocPath and added methods to * get and set it. * 04/02/97 aliu Made operator!= inline; fixed return value of getName(). * 04/15/97 aliu Cleanup for AIX/Win32. * 04/24/97 aliu Numerous changes per code review. * 08/18/98 stephen Added tokenizeString(),changed getDisplayName() * 09/08/98 stephen Moved definition of kEmptyString for Mac Port * 11/09/99 weiv Added const char * getName() const; ***************************************************************************************** */ #ifndef LOCID_H #define LOCID_H #include "unicode/unistr.h" typedef struct ULocale ULocale; typedef struct UHashtable UHashtable; #define ULOC_LANG_CAPACITY 3 #define ULOC_COUNTRY_CAPACITY 3 #define ULOC_FULLNAME_CAPACITY 50 class U_COMMON_API Locale { public: static const Locale ENGLISH; static const Locale FRENCH; static const Locale GERMAN; static const Locale ITALIAN; static const Locale JAPANESE; static const Locale KOREAN; static const Locale CHINESE; static const Locale SIMPLIFIED_CHINESE; static const Locale TRADITIONAL_CHINESE; static const Locale FRANCE; static const Locale GERMANY; static const Locale ITALY; static const Locale JAPAN; static const Locale KOREA; static const Locale CHINA; // Alias for PRC static const Locale PRC; // Peoples Republic of China static const Locale TAIWAN; // Republic of China static const Locale UK; static const Locale US; static const Locale CANADA; static const Locale CANADA_FRENCH; Locale(); Locale( const UnicodeString& language, const UnicodeString& country , const UnicodeString& variant ); Locale( const UnicodeString& language, const UnicodeString& country ); Locale( const UnicodeString& language); Locale(const Locale& other); ~Locale() ; Locale& operator=(const Locale& other); bool_t operator==(const Locale& other) const; bool_t operator!=(const Locale& other) const; static Locale& getDefault(void); static void setDefault(const Locale& newLocale, UErrorCode& success); UnicodeString& getLanguage( UnicodeString& lang) const; UnicodeString& getCountry( UnicodeString& cntry) const; UnicodeString& getVariant( UnicodeString& var) const; UnicodeString& getName( UnicodeString& name) const; const char * getName() const; UnicodeString& getISO3Language(UnicodeString& name, UErrorCode& status) const; UnicodeString& getISO3Language(UnicodeString& name) const; UnicodeString& getISO3Country( UnicodeString& name, UErrorCode& status) const; UnicodeString& getISO3Country( UnicodeString& name) const; uint32_t getLCID(void) const; UnicodeString& getDisplayLanguage(UnicodeString& dispLang) const; UnicodeString& getDisplayLanguage( const Locale& inLocale, UnicodeString& dispLang) const; UnicodeString& getDisplayCountry( UnicodeString& dispCountry) const; UnicodeString& getDisplayCountry( const Locale& inLocale, UnicodeString& dispCountry) const; UnicodeString& getDisplayVariant( UnicodeString& dispVar) const; UnicodeString& getDisplayVariant( const Locale& inLocale, UnicodeString& dispVar) const; UnicodeString& getDisplayName( UnicodeString& name) const; UnicodeString& getDisplayName( const Locale& inLocale, UnicodeString& name) const; int32_t hashCode(void) const; static const Locale* getAvailableLocales(int32_t& count); static const UnicodeString* getISOCountries(int32_t& count); static const UnicodeString* getISOLanguages(int32_t& count); static const char* getDataDirectory(void); static void setDataDirectory(const char* path); Locale& init(const char* cLocaleID); protected: // only protected for testing purposes. DO NOT USE. void setFromPOSIXID(const UnicodeString& posixID); // set it from a single string. void setFromPOSIXID(const char *posixID); // set it from a single string. static const UnicodeString* getLanguagesForCountry( const UnicodeString& country, int32_t& count); private: void setHashCode(void); char language[ULOC_LANG_CAPACITY]; char country[ULOC_COUNTRY_CAPACITY]; char* variant; char* fullName; char fullNameBuffer[ULOC_FULLNAME_CAPACITY]; int32_t khashCode; static Locale *localeList; static int32_t localeListCount; static UnicodeString *isoLanguages; static int32_t isoLanguagesCount; static UnicodeString *isoCountries; static int32_t isoCountriesCount; static UHashtable *ctry2LangMapping; static const UnicodeString compressedCtry2LangMapping; static Locale fgDefaultLocale; }; inline bool_t Locale::operator!=(const Locale& other) const { return !operator==(other); } #endif