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 + -
显示快捷键?