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 &getEnglish(
void);
00186
static const Locale &getFrench(
void);
00188
static const Locale &getGerman(
void);
00190
static const Locale &getItalian(
void);
00192
static const Locale &getJapanese(
void);
00194
static const Locale &getKorean(
void);
00196
static const Locale &getChinese(
void);
00198
static const Locale &getSimplifiedChinese(
void);
00200
static const Locale &getTraditionalChinese(
void);
00201
00203
static const Locale &getFrance(
void);
00205
static const Locale &getGermany(
void);
00207
static const Locale &getItaly(
void);
00209
static const Locale &getJapan(
void);
00211
static const Locale &getKorea(
void);
00213
static const Locale &getChina(
void);
00215
static const Locale &getPRC(
void);
00217
static const Locale &getTaiwan(
void);
00219
static const Locale &getUK(
void);
00221
static const Locale &getUS(
void);
00223
static const Locale &getCanada(
void);
00225
static const Locale &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 ~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& getDefault(
void);
00338
00351
static void setDefault(
const Locale& newLocale,
00352
UErrorCode& success);
00353
00354
00364
static Locale createFromName(
const char *name);
00365
00366
00372
inline const char * getLanguage( )
const;
00373
00381
inline const char * getScript( )
const;
00382
00388
inline const char * getCountry( )
const;
00389
00395
inline const char * getVariant( )
const;
00396
00405
inline const char * getName()
const;
00406
00414
const char * getBaseName()
const;
00415
00416
00424
StringEnumeration * createKeywords(
UErrorCode &status)
const;
00425
00436 int32_t getKeywordValue(
const char* keywordName,
char *buffer, int32_t bufLen,
UErrorCode &status)
const;
00437
00444
const char * getISO3Language()
const;
00445
00451
const char * getISO3Country()
const;
00452
00460 uint32_t getLCID(
void)
const;
00461
00471
UnicodeString& getDisplayLanguage(
UnicodeString& dispLang)
const;
00472
00486
UnicodeString& getDisplayLanguage(
const Locale& displayLocale,
00487
UnicodeString& dispLang)
const;
00488
00498
UnicodeString& getDisplayScript(
UnicodeString& dispScript)
const;
00499
00514
UnicodeString& getDisplayScript(
const Locale& displayLocale,
00515
UnicodeString& dispScript)
const;
00516
00526
UnicodeString& getDisplayCountry(
UnicodeString& dispCountry)
const;
00527
00542
UnicodeString& getDisplayCountry(
const Locale& displayLocale,
00543
UnicodeString& dispCountry)
const;
00544
00552
UnicodeString& getDisplayVariant(
UnicodeString& dispVar)
const;
00553
00562
UnicodeString& getDisplayVariant(
const Locale& displayLocale,
00563
UnicodeString& dispVar)
const;
00564
00576
UnicodeString& getDisplayName(
UnicodeString& name)
const;
00577
00590
UnicodeString& getDisplayName(
const Locale& displayLocale,
00591
UnicodeString& name)
const;
00592
00597 int32_t hashCode(
void)
const;
00598
00607
void setToBogus();
00608
00614
UBool isBogus(
void)
const;
00615
00624
static const Locale* getAvailableLocales(int32_t& count);
00625
00634
static const char*
const* getISOCountries();
00635
00644
static const char*
const* getISOLanguages();
00645
00651
static UClassID getStaticClassID();
00652
00658
virtual UClassID getDynamicClassID()
const;
00659
00660
protected:
00665
void setFromPOSIXID(
const char *posixID);
00666
00667
private:
00674 Locale& init(
const char* cLocaleID);
00675
00676
00677
00678
00679
00680
00681
enum ELocaleType {
00682 eBOGUS
00683 };
00684 Locale(ELocaleType);
00685
00689
static Locale *getLocaleCache(
void);
00690
00691
char language[
ULOC_LANG_CAPACITY];
00692
char script[
ULOC_SCRIPT_CAPACITY];
00693
char country[
ULOC_COUNTRY_CAPACITY];
00694 int32_t variantBegin;
00695
char* fullName;
00696
char fullNameBuffer[
ULOC_FULLNAME_CAPACITY];
00697
00698
char* baseName;
00699
char baseNameBuffer[
ULOC_FULLNAME_CAPACITY];
00700
00701
UBool fIsBogus;
00702
00703
static const Locale &getLocale(
int locid);
00704
00709
friend void locale_set_default_internal(
const char *);
00710 };
00711
00712
inline UBool
00713 Locale::operator!=(
const Locale& other)
const
00714
{
00715
return !
operator==(other);
00716 }
00717
00718
inline const char *
00719 Locale::getCountry()
const
00720
{
00721
return country;
00722 }
00723
00724
inline const char *
00725 Locale::getLanguage()
const
00726
{
00727
return language;
00728 }
00729
00730
inline const char *
00731 Locale::getScript()
const
00732
{
00733
return script;
00734 }
00735
00736
inline const char *
00737 Locale::getVariant()
const
00738
{
00739
return &fullName[variantBegin];
00740 }
00741
00742
inline const char *
00743 Locale::getName()
const
00744
{
00745
return fullName;
00746 }
00747
00748
inline UBool
00749 Locale::isBogus(
void)
const {
00750
return fIsBogus;
00751 }
00752
00753
U_NAMESPACE_END
00754
00755
#endif
00756