Ticket #5970: kits_locale.patch
File kits_locale.patch, 3.2 KB (added by , 14 years ago) |
---|
-
src/kits/locale/Country.cpp
8 8 #include <Country.h> 9 9 10 10 #include <assert.h> 11 #include <string.h> 11 12 12 13 #include <IconUtils.h> 13 14 #include <Resources.h> … … 52 53 } 53 54 54 55 55 BCountry::BCountry(const char* languageAndCountryCode) 56 /*! 57 Parameter for the method should follow one of the following models: 58 "en_US@ISO-8859-1", en_US@ISO-8859-15" "en_US@euro" "en_US@utf8" 59 "en_US@utf-8" "en_US@UTF8" "en_US@UTF-8""en_US.ISO-8859-1", 60 "en_US.ISO-8859-15" "en_US.euro" "en_US.utf8" "en_US.utf-8", "en_US.UTF8" 61 and "en_US.UTF-8". 62 */ 63 BCountry::BCountry(const char* languageAndCountryCodeAtEncoding) 56 64 : 57 65 fStrings(gStrings) 58 66 { 59 fICULocale = new icu_4_2::Locale(languageAndCountryCode); 67 int len = strcspn(languageAndCountryCodeAtEncoding, "@."); 68 if (len < strlen(languageAndCountryCodeAtEncoding) { 69 char languageAndCountryCode[512]; 70 strncpy(languageAndCountryCode, languageAndCountryCodeAtEncoding, len); 71 languageAndCountryCode[len]='\0'; 72 73 int langSize = strlen(languageAndCountryCode); 74 int paramSize = strlen(languageAndCountryCodeAtEncoding); 75 char encoding[512]; 76 77 if (paramSize > (langSize+1)) { 78 len = paramSize-langSize-1; 79 strncpy(encoding, languageAndCountryCodeAtEncoding+(langSize+1), len); 80 encoding[len] = '\0'; 81 } else 82 encoding[0] = '\0'; 83 84 fICULocale = new icu_4_2::Locale(languageAndCountryCode); 85 fICULocale->setEncoding(encoding); 86 } else 87 fICULocale = new icu_4_2::Locale(languageAndCountryCodeAtEncoding); 88 60 89 fICULongDateFormatter = DateFormat::createDateInstance( 61 90 DateFormat::FULL, *fICULocale); 62 91 fICUShortDateFormatter = DateFormat::createDateInstance( 63 92 DateFormat::SHORT, *fICULocale); 93 fICULocale->setEncoding(""); 64 94 } 65 95 66 96 … … 111 141 } 112 142 113 143 144 bool 145 BCountry::Encoding(BString& code) const 146 { 147 UnicodeString uString; 148 fICULocale->getEncoding(uString); 149 BStringByteSink stringConverter(&code); 150 uString.toUTF8(stringConverter); 151 return true; 152 } 153 154 114 155 // TODO use ICU backend keywords instead 115 156 const char* 116 157 BCountry::GetString(uint32 id) const … … 247 288 248 289 249 290 void 291 BCountry::Set24HourClock(bool clock) 292 { 293 fIsClock24Hour = clock; 294 } 295 296 297 bool 298 BCountry::IsClock24Hour() const 299 { 300 return fIsClock24Hour; 301 } 302 303 304 void 250 305 BCountry::FormatNumber(char* string, size_t maxSize, double value) 251 306 { 252 307 BString fullString; -
src/kits/locale/LocaleRoster.cpp
192 192 BMessage fPreferredLanguages; 193 193 BString fCountryCodeName; 194 194 BString fCountryDateFormat; 195 bool fIsClock24Hour; 195 196 196 197 RosterData(); 197 198 ~RosterData(); … … 247 248 248 249 if (settingsMessage.FindString("country", &fCountryCodeName) != B_OK) 249 250 fCountryCodeName = "en_US"; 251 fIsClock24Hour = false; 250 252 return; 251 253 } 252 254 } … … 255 257 // set everything to default values 256 258 fPreferredLanguages.AddString("language", "en"); 257 259 fCountryCodeName = "en_US"; 260 fIsClock24Hour = false; 258 261 log_team(LOG_ERR,"*** No language preference found!\n"); 259 262 } 260 263