osxlocalepeer.cpp

来自「这是VCF框架的代码」· C++ 代码 · 共 915 行 · 第 1/3 页

CPP
915
字号
//OSXLocalePeer.cpp/*Copyright 2000-2004 The VCF Project.Please see License.txt in the top level directorywhere you installed the VCF.*/#include "vcf/FoundationKit/FoundationKit.h"#include "vcf/FoundationKit/FoundationKitPrivate.h"#include "vcf/FoundationKit/LocalePeer.h"#include "vcf/FoundationKit/OSXLocalePeer.h"#include "vcf/FoundationKit/DateTime.h"using namespace VCF;std::map<String,AppleLocalePair> OSXLocalePeer::localeMaping;OSXLocalePeer::OSXLocalePeer():    localeRef_(NULL),	collateLocaleRef_(NULL),	integerNumFormatterRef_(NULL),	realNumFormatterRef_(NULL),	currencyNumFormatterRef_(NULL){    if ( OSXLocalePeer::localeMaping.empty() ) {        OSXLocalePeer::localeMaping["en_US"] = AppleLocalePair(langEnglish,verUS);        OSXLocalePeer::localeMaping["en_GB"] = AppleLocalePair(langEnglish,verBritain);        OSXLocalePeer::localeMaping["en_UK"] = AppleLocalePair(langEnglish,verBritain);        OSXLocalePeer::localeMaping["en_IE"] = AppleLocalePair(langEnglish,verIrelandEnglish);        OSXLocalePeer::localeMaping["en_AU"] = AppleLocalePair(langEnglish,verAustralia);        OSXLocalePeer::localeMaping["en_CA"] = AppleLocalePair(langEnglish,verEngCanada);        OSXLocalePeer::localeMaping["en_ZA"] = AppleLocalePair(langEnglish,verAfrikaans);        OSXLocalePeer::localeMaping["fr_FR"] = AppleLocalePair(langFrench,verFrance);        OSXLocalePeer::localeMaping["fr_CH"] = AppleLocalePair(langFrench,verFrSwiss);        OSXLocalePeer::localeMaping["fr_CA"] = AppleLocalePair(langFrench,verFrCanada);        OSXLocalePeer::localeMaping["fr_BE"] = AppleLocalePair(langFrench,verFrBelgium);        OSXLocalePeer::localeMaping["de_DE"] = AppleLocalePair(langGerman,verGermany);        OSXLocalePeer::localeMaping["de_CH"] = AppleLocalePair(langGerman,verGrSwiss);        OSXLocalePeer::localeMaping["de_AT"] = AppleLocalePair(langGerman,verAustria);        OSXLocalePeer::localeMaping["it_IT"] = AppleLocalePair(langItalian,verItaly);        OSXLocalePeer::localeMaping["it_CH"] = AppleLocalePair(langItalian,verItalianSwiss);        OSXLocalePeer::localeMaping["nl_BE"] = AppleLocalePair(langDutch,verFlemish);        OSXLocalePeer::localeMaping["nl_NL"] = AppleLocalePair(langDutch,verNetherlands);        OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langSwedish,verSweden);        OSXLocalePeer::localeMaping["es_ES"] = AppleLocalePair(langSpanish,verSpain);        OSXLocalePeer::localeMaping["ca_ES"] = AppleLocalePair(langSpanish,verCatalonia);        OSXLocalePeer::localeMaping["es_MX"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["es_GT"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["es_CR"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["es_PA"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["es_DO"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["es_VE"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["es_CO"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["es_PE"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["es_AR"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["es_EC"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["es_CL"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["es_UY"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["es_PY"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["es_BO"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["es_SV"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["es_HN"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["es_NI"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["es_PR"] = AppleLocalePair(langSpanish,verSpLatinAmerica);        OSXLocalePeer::localeMaping["da_DK"] = AppleLocalePair(langDanish,verDenmark);        OSXLocalePeer::localeMaping["pt_PT"] = AppleLocalePair(langPortuguese,verPortugal);        OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langPortuguese,verBrazil);        OSXLocalePeer::localeMaping["no_NO"] = AppleLocalePair(langNorwegian,verNorway);        OSXLocalePeer::localeMaping["nb_NO"] = AppleLocalePair(langNorwegian,verNorway);        OSXLocalePeer::localeMaping["nn_NO"] = AppleLocalePair(langNorwegian,verNynorsk);        OSXLocalePeer::localeMaping["he_IL"] = AppleLocalePair(langHebrew,verIsrael);        OSXLocalePeer::localeMaping["iw_IL"] = AppleLocalePair(langHebrew,verIsrael);        OSXLocalePeer::localeMaping["ja_JP"] = AppleLocalePair(langJapanese,verJapan);        OSXLocalePeer::localeMaping["ar_SA"] = AppleLocalePair(langArabic,verArabic);        OSXLocalePeer::localeMaping["ar_IQ"] = AppleLocalePair(langArabic,verArabic);        OSXLocalePeer::localeMaping["ar_EG"] = AppleLocalePair(langArabic,verArabic);        OSXLocalePeer::localeMaping["ar_LY"] = AppleLocalePair(langArabic,verArabic);        OSXLocalePeer::localeMaping["ar_DZ"] = AppleLocalePair(langArabic,verArabic);        OSXLocalePeer::localeMaping["ar_MA"] = AppleLocalePair(langArabic,verArabic);        OSXLocalePeer::localeMaping["ar_TN"] = AppleLocalePair(langArabic,verArabic);        OSXLocalePeer::localeMaping["ar_OM"] = AppleLocalePair(langArabic,verArabic);        OSXLocalePeer::localeMaping["ar_YE"] = AppleLocalePair(langArabic,verArabic);        OSXLocalePeer::localeMaping["ar_SY"] = AppleLocalePair(langArabic,verArabic);        OSXLocalePeer::localeMaping["ar_JO"] = AppleLocalePair(langArabic,verArabic);        OSXLocalePeer::localeMaping["ar_KW"] = AppleLocalePair(langArabic,verArabic);        OSXLocalePeer::localeMaping["ar_AE"] = AppleLocalePair(langArabic,verArabic);        OSXLocalePeer::localeMaping["ar_BH"] = AppleLocalePair(langArabic,verArabic);        OSXLocalePeer::localeMaping["ar_QA"] = AppleLocalePair(langArabic,verArabic);        OSXLocalePeer::localeMaping["fi_FI"] = AppleLocalePair(langFinnish,verFinland);        OSXLocalePeer::localeMaping["el_GR"] = AppleLocalePair(langGreek,verGreece);        OSXLocalePeer::localeMaping["is_IS"] = AppleLocalePair(langIcelandic,verIceland);        OSXLocalePeer::localeMaping["mt_MT"] = AppleLocalePair(langMaltese,verMalta);        OSXLocalePeer::localeMaping["tr_TR"] = AppleLocalePair(langTurkish,verTurkey);        OSXLocalePeer::localeMaping["hr_HR"] = AppleLocalePair(langCroatian,verCroatia);        OSXLocalePeer::localeMaping["sh_HR"] = AppleLocalePair(langCroatian,verCroatia);        OSXLocalePeer::localeMaping["zh_TW"] = AppleLocalePair(langTradChinese,verTaiwan);        OSXLocalePeer::localeMaping["ur_PK"] = AppleLocalePair(langUrdu,verPakistanUrdu);        OSXLocalePeer::localeMaping["ur_IN"] = AppleLocalePair(langUrdu,verIndiaUrdu);        OSXLocalePeer::localeMaping["hi_IN"] = AppleLocalePair(langHindi,verIndiaHindi);        OSXLocalePeer::localeMaping["th_TH"] = AppleLocalePair(langThai,verThailand);        OSXLocalePeer::localeMaping["ko_KR"] = AppleLocalePair(langKorean,verKorea);        OSXLocalePeer::localeMaping["lt_LT"] = AppleLocalePair(langLithuanian,verLithuania);        OSXLocalePeer::localeMaping["pl_PL"] = AppleLocalePair(langPolish,verPoland);        OSXLocalePeer::localeMaping["hu_HU"] = AppleLocalePair(langHungarian,verHungary);        OSXLocalePeer::localeMaping["et_EE"] = AppleLocalePair(langEstonian,verEstonia);        OSXLocalePeer::localeMaping["lv_LV"] = AppleLocalePair(langLatvian,verLatvia);        OSXLocalePeer::localeMaping["fo_FO"] = AppleLocalePair(langFaroese,verFaroeIsl);        OSXLocalePeer::localeMaping["fa_IR"] = AppleLocalePair(langFarsi,verIran);        //OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langPersian,verIran); ???        OSXLocalePeer::localeMaping["ru_RU"] = AppleLocalePair(langRussian,verRussia);        OSXLocalePeer::localeMaping["zh_CN"] = AppleLocalePair(langSimpChinese,verChina);        //???OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langFlemish,kTextRegionDontCare);        OSXLocalePeer::localeMaping["ga_IE"] = AppleLocalePair(langIrishGaelic,verIreland);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langAlbanian,kTextRegionDontCare);        OSXLocalePeer::localeMaping["ro_RO"] = AppleLocalePair(langRomanian,verRomania);        OSXLocalePeer::localeMaping["cs_CZ"] = AppleLocalePair(langCzech,verCzech);        OSXLocalePeer::localeMaping["sk_SK"] = AppleLocalePair(langSlovak,verSlovak);        OSXLocalePeer::localeMaping["sl_SI"] = AppleLocalePair(langSlovenian,verSlovenian);        OSXLocalePeer::localeMaping["sr_YU"] = AppleLocalePair(langSerbian,verSerbian);        OSXLocalePeer::localeMaping["sh_YU"] = AppleLocalePair(langSerbian,verSerbian);        OSXLocalePeer::localeMaping["mk_MK"] = AppleLocalePair(langMacedonian,verMacedonian);        OSXLocalePeer::localeMaping["bg_BG"] = AppleLocalePair(langBulgarian,verBulgaria);        OSXLocalePeer::localeMaping["uk_UA"] = AppleLocalePair(langUkrainian,verUkraine);        OSXLocalePeer::localeMaping["be_BY"] = AppleLocalePair(langByelorussian,verByeloRussian);        OSXLocalePeer::localeMaping["uz_UZ"] = AppleLocalePair(langUzbek,verUzbek);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langKazakh,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langAzerbaijani,kTextRegionDontCare);        OSXLocalePeer::localeMaping["hy_AM"] = AppleLocalePair(langArmenian,verArmenian);        OSXLocalePeer::localeMaping["ka_GE"] = AppleLocalePair(langGeorgian,verGeorgian);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langMoldavian,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langKirghiz,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langTajiki,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langTurkmen,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langMongolian,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langMongolianCyr,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langPashto,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langKurdish,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langKashmiri,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langSindhi,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langTibetan,kTextRegionDontCare);        OSXLocalePeer::localeMaping["ne_NP"] = AppleLocalePair(langNepali,verNepal);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langSanskrit,kTextRegionDontCare);        OSXLocalePeer::localeMaping["mr_IN"] = AppleLocalePair(langMarathi,verMarathi);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langBengali,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langAssamese,kTextRegionDontCare);        OSXLocalePeer::localeMaping["gu_IN"] = AppleLocalePair(langGujarati,verGujarati);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langPunjabi,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langOriya,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langMalayalam,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langKannada,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langTamil,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langTelugu,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langSinhalese,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langBurmese,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langKhmer,kTextRegionDontCare);        //OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langLao,kTextRegionDontCare);        OSXLocalePeer::localeMaping["vi_VN"] = AppleLocalePair(langVietnamese,verVietnam);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langIndonesian,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langTagalog,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langMalayRoman,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langMalayArabic,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langAmharic,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langTigrinya,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langOromo,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langSomali,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langSwahili,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langKinyarwanda,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langRuanda,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langRundi,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langNyanja,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langChewa,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langMalagasy,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langWelsh,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langBasque,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langCatalan,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langLatin,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langQuechua,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langGuarani,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langAymara,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langTatar,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langUighur,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langDzongkha,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langJavaneseRom,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langSundaneseRom,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langGalician,kTextRegionDontCare);        OSXLocalePeer::localeMaping["af_ZA"] = AppleLocalePair(langAfrikaans,verAfrikaans);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langBreton,kTextRegionDontCare);        OSXLocalePeer::localeMaping["iu_CA"] = AppleLocalePair(langInuktitut,verNunavut);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langScottishGaelic,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langManxGaelic,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langIrishGaelicScript,kTextRegionDontCare);        OSXLocalePeer::localeMaping["to_TO"] = AppleLocalePair(langTongan,verTonga);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langGreekPoly,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langGreenlandic,kTextRegionDontCare);        //??OSXLocalePeer::localeMaping["pt_BR"] = AppleLocalePair(langAzerbaijanRoman,kTextRegionDontCare);    }}void OSXLocalePeer::setLocale( const UnicodeString& language, const UnicodeString& country, const UnicodeString& variant ){	if ( NULL != localeRef_ ) {		CFRelease( localeRef_ );		localeRef_ = NULL;	}	if ( NULL != integerNumFormatterRef_ ) {		CFRelease( integerNumFormatterRef_ );		integerNumFormatterRef_ = NULL;	}		if ( NULL != realNumFormatterRef_ ) {		CFRelease( realNumFormatterRef_ );		realNumFormatterRef_ = NULL;	}		if ( NULL != currencyNumFormatterRef_ ) {		CFRelease( currencyNumFormatterRef_ );		currencyNumFormatterRef_ = NULL;	}	String name = language + "_" + country;	if ( language.empty() && country.empty() ) {		localeRef_ = CFLocaleCopyCurrent();		collateLocaleRef_ = NULL;	}	else {        std::map<String,AppleLocalePair>::iterator found = OSXLocalePeer::localeMaping.find( name );        if ( found != OSXLocalePeer::localeMaping.end() ) {            AppleLocalePair& localePair = found->second;            OSStatus err = LocaleRefFromLangOrRegionCode( localePair.first, localePair.second, &collateLocaleRef_ );            if ( err != noErr ) {                throw RuntimeException( MAKE_ERROR_MSG_2( "LocaleRefFromLangOrRegionCode failed!" ) );            }        }				CFTextString localeName;			localeName = name;				localeRef_ = CFLocaleCreate( kCFAllocatorDefault, localeName );			}		if ( NULL == localeRef_ ) {		throw RuntimeException( MAKE_ERROR_MSG_2( "CFLocaleCreate failed for locale " + name ) );	}			integerNumFormatterRef_ = CFNumberFormatterCreate( kCFAllocatorDefault, localeRef_, kCFNumberFormatterDecimalStyle );

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?