Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(144)

Side by Side Diff: app/l10n_util.cc

Issue 171012: Use 'icu::' namespace explicitly (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « app/l10n_util.h ('k') | app/l10n_util_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "app/l10n_util.h" 5 #include "app/l10n_util.h"
6 6
7 #include "app/app_paths.h" 7 #include "app/app_paths.h"
8 #include "app/app_switches.h" 8 #include "app/app_switches.h"
9 #include "app/gfx/canvas.h" 9 #include "app/gfx/canvas.h"
10 #include "app/resource_bundle.h" 10 #include "app/resource_bundle.h"
(...skipping 27 matching lines...) Expand all
38 38
39 // Added to the end of strings that are too big in TrucateString. 39 // Added to the end of strings that are too big in TrucateString.
40 static const wchar_t* const kElideString = L"\x2026"; 40 static const wchar_t* const kElideString = L"\x2026";
41 41
42 // Get language and region from the OS. 42 // Get language and region from the OS.
43 void GetLanguageAndRegionFromOS(std::string* lang, std::string* region) { 43 void GetLanguageAndRegionFromOS(std::string* lang, std::string* region) {
44 // Later we may have to change this to be OS-dependent so that 44 // Later we may have to change this to be OS-dependent so that
45 // it's not affected by ICU's default locale. It's all right 45 // it's not affected by ICU's default locale. It's all right
46 // to do this way because SetICUDefaultLocale is internal 46 // to do this way because SetICUDefaultLocale is internal
47 // to this file and we know where/when it's called. 47 // to this file and we know where/when it's called.
48 Locale locale = Locale::getDefault(); 48 icu::Locale locale = icu::Locale::getDefault();
49 const char* language = locale.getLanguage(); 49 const char* language = locale.getLanguage();
50 const char* country = locale.getCountry(); 50 const char* country = locale.getCountry();
51 DCHECK(language); 51 DCHECK(language);
52 *lang = language; 52 *lang = language;
53 *region = country; 53 *region = country;
54 } 54 }
55 55
56 // Convert Chrome locale name to ICU locale name 56 // Convert Chrome locale name to ICU locale name
57 std::string ICULocaleName(const std::string& locale_string) { 57 std::string ICULocaleName(const std::string& locale_string) {
58 // If not Spanish, just return it. 58 // If not Spanish, just return it.
(...skipping 23 matching lines...) Expand all
82 82
83 // Sets the default locale of ICU. 83 // Sets the default locale of ICU.
84 // When the application locale (UI locale) of Chrome is specified with 84 // When the application locale (UI locale) of Chrome is specified with
85 // '--lang' command line flag or 'intl.app_locale' entry in the "Preferences", 85 // '--lang' command line flag or 'intl.app_locale' entry in the "Preferences",
86 // the default locale of ICU need to be changed to match the application locale 86 // the default locale of ICU need to be changed to match the application locale
87 // so that ICU functions work correctly in a locale-dependent manner. 87 // so that ICU functions work correctly in a locale-dependent manner.
88 // This is handy in that we don't have to call GetApplicationLocale() 88 // This is handy in that we don't have to call GetApplicationLocale()
89 // everytime we call locale-dependent ICU APIs as long as we make sure 89 // everytime we call locale-dependent ICU APIs as long as we make sure
90 // that this is called before any locale-dependent API is called. 90 // that this is called before any locale-dependent API is called.
91 UBool SetICUDefaultLocale(const std::string& locale_string) { 91 UBool SetICUDefaultLocale(const std::string& locale_string) {
92 Locale locale(ICULocaleName(locale_string).c_str()); 92 icu::Locale locale(ICULocaleName(locale_string).c_str());
93 UErrorCode error_code = U_ZERO_ERROR; 93 UErrorCode error_code = U_ZERO_ERROR;
94 Locale::setDefault(locale, error_code); 94 icu::Locale::setDefault(locale, error_code);
95 // This return value is actually bogus because Locale object is 95 // This return value is actually bogus because Locale object is
96 // an ID and setDefault seems to always succeed (regardless of the 96 // an ID and setDefault seems to always succeed (regardless of the
97 // presence of actual locale data). However, 97 // presence of actual locale data). However,
98 // it does not hurt to have it as a sanity check. 98 // it does not hurt to have it as a sanity check.
99 return U_SUCCESS(error_code); 99 return U_SUCCESS(error_code);
100 } 100 }
101 101
102 // Returns true if |locale_name| has an alias in the ICU data file. 102 // Returns true if |locale_name| has an alias in the ICU data file.
103 bool IsDuplicateName(const std::string& locale_name) { 103 bool IsDuplicateName(const std::string& locale_name) {
104 static const char* const kDuplicateNames[] = { 104 static const char* const kDuplicateNames[] = {
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 return kElideString; 448 return kElideString;
449 } 449 }
450 450
451 #if defined(WCHAR_T_IS_UTF32) 451 #if defined(WCHAR_T_IS_UTF32)
452 const string16 string_utf16 = WideToUTF16(string); 452 const string16 string_utf16 = WideToUTF16(string);
453 #else 453 #else
454 const std::wstring &string_utf16 = string; 454 const std::wstring &string_utf16 = string;
455 #endif 455 #endif
456 // Use a line iterator to find the first boundary. 456 // Use a line iterator to find the first boundary.
457 UErrorCode status = U_ZERO_ERROR; 457 UErrorCode status = U_ZERO_ERROR;
458 scoped_ptr<RuleBasedBreakIterator> bi(static_cast<RuleBasedBreakIterator*>( 458 scoped_ptr<icu::RuleBasedBreakIterator> bi(
459 RuleBasedBreakIterator::createLineInstance(Locale::getDefault(), 459 static_cast<icu::RuleBasedBreakIterator*>(
460 status))); 460 icu::RuleBasedBreakIterator::createLineInstance(
461 icu::Locale::getDefault(), status)));
461 if (U_FAILURE(status)) 462 if (U_FAILURE(status))
462 return string.substr(0, max) + kElideString; 463 return string.substr(0, max) + kElideString;
463 bi->setText(string_utf16.c_str()); 464 bi->setText(string_utf16.c_str());
464 int32_t index = bi->preceding(static_cast<int32_t>(max)); 465 int32_t index = bi->preceding(static_cast<int32_t>(max));
465 if (index == BreakIterator::DONE) { 466 if (index == icu::BreakIterator::DONE) {
466 index = static_cast<int32_t>(max); 467 index = static_cast<int32_t>(max);
467 } else { 468 } else {
468 // Found a valid break (may be the beginning of the string). Now use 469 // Found a valid break (may be the beginning of the string). Now use
469 // a character iterator to find the previous non-whitespace character. 470 // a character iterator to find the previous non-whitespace character.
470 StringCharacterIterator char_iterator(string_utf16.c_str()); 471 icu::StringCharacterIterator char_iterator(string_utf16.c_str());
471 if (index == 0) { 472 if (index == 0) {
472 // No valid line breaks. Start at the end again. This ensures we break 473 // No valid line breaks. Start at the end again. This ensures we break
473 // on a valid character boundary. 474 // on a valid character boundary.
474 index = static_cast<int32_t>(max); 475 index = static_cast<int32_t>(max);
475 } 476 }
476 char_iterator.setIndex(index); 477 char_iterator.setIndex(index);
477 while (char_iterator.hasPrevious()) { 478 while (char_iterator.hasPrevious()) {
478 char_iterator.previous(); 479 char_iterator.previous();
479 if (!(u_isspace(char_iterator.current()) || 480 if (!(u_isspace(char_iterator.current()) ||
480 u_charType(char_iterator.current()) == U_CONTROL_CHAR || 481 u_charType(char_iterator.current()) == U_CONTROL_CHAR ||
(...skipping 15 matching lines...) Expand all
496 return string.substr(0, index) + kElideString; 497 return string.substr(0, index) + kElideString;
497 } 498 }
498 499
499 #if defined(WCHAR_T_IS_UTF32) 500 #if defined(WCHAR_T_IS_UTF32)
500 std::wstring ToLower(const std::wstring& string) { 501 std::wstring ToLower(const std::wstring& string) {
501 return UTF16ToWide(ToLower(WideToUTF16(string))); 502 return UTF16ToWide(ToLower(WideToUTF16(string)));
502 } 503 }
503 #endif // defined(WCHAR_T_IS_UTF32) 504 #endif // defined(WCHAR_T_IS_UTF32)
504 505
505 string16 ToLower(const string16& string) { 506 string16 ToLower(const string16& string) {
506 UnicodeString lower_u_str( 507 icu::UnicodeString lower_u_str(
507 UnicodeString(string.c_str()).toLower(Locale::getDefault())); 508 icu::UnicodeString(string.c_str()).toLower(icu::Locale::getDefault()));
508 string16 result; 509 string16 result;
509 lower_u_str.extract(0, lower_u_str.length(), 510 lower_u_str.extract(0, lower_u_str.length(),
510 WriteInto(&result, lower_u_str.length() + 1)); 511 WriteInto(&result, lower_u_str.length() + 1));
511 return result; 512 return result;
512 } 513 }
513 514
514 // Returns the text direction for the default ICU locale. It is assumed 515 // Returns the text direction for the default ICU locale. It is assumed
515 // that SetICUDefaultLocale has been called to set the default locale to 516 // that SetICUDefaultLocale has been called to set the default locale to
516 // the UI locale of Chrome. 517 // the UI locale of Chrome.
517 TextDirection GetTextDirection() { 518 TextDirection GetTextDirection() {
518 if (g_text_direction == UNKNOWN_DIRECTION) { 519 if (g_text_direction == UNKNOWN_DIRECTION) {
519 #if defined(TOOLKIT_GTK) 520 #if defined(TOOLKIT_GTK)
520 GtkTextDirection gtk_dir = gtk_widget_get_default_direction(); 521 GtkTextDirection gtk_dir = gtk_widget_get_default_direction();
521 g_text_direction = 522 g_text_direction =
522 (gtk_dir == GTK_TEXT_DIR_LTR) ? LEFT_TO_RIGHT : RIGHT_TO_LEFT; 523 (gtk_dir == GTK_TEXT_DIR_LTR) ? LEFT_TO_RIGHT : RIGHT_TO_LEFT;
523 #else 524 #else
524 const Locale& locale = Locale::getDefault(); 525 const icu::Locale& locale = icu::Locale::getDefault();
525 g_text_direction = GetTextDirectionForLocale(locale.getName()); 526 g_text_direction = GetTextDirectionForLocale(locale.getName());
526 #endif 527 #endif
527 } 528 }
528 return g_text_direction; 529 return g_text_direction;
529 } 530 }
530 531
531 TextDirection GetTextDirectionForLocale(const char* locale_name) { 532 TextDirection GetTextDirectionForLocale(const char* locale_name) {
532 UScriptCode scripts[10]; // 10 scripts should be enough for any locale. 533 UScriptCode scripts[10]; // 10 scripts should be enough for any locale.
533 UErrorCode error = U_ZERO_ERROR; 534 UErrorCode error = U_ZERO_ERROR;
534 int n = uscript_getCode(locale_name, scripts, 10, &error); 535 int n = uscript_getCode(locale_name, scripts, 10, &error);
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
661 if (GetTextDirection() == LEFT_TO_RIGHT) { 662 if (GetTextDirection() == LEFT_TO_RIGHT) {
662 return gfx::Canvas::TEXT_ALIGN_LEFT; 663 return gfx::Canvas::TEXT_ALIGN_LEFT;
663 } else { 664 } else {
664 return gfx::Canvas::TEXT_ALIGN_RIGHT; 665 return gfx::Canvas::TEXT_ALIGN_RIGHT;
665 } 666 }
666 } 667 }
667 668
668 669
669 // Compares the character data stored in two different strings by specified 670 // Compares the character data stored in two different strings by specified
670 // Collator instance. 671 // Collator instance.
671 UCollationResult CompareStringWithCollator(const Collator* collator, 672 UCollationResult CompareStringWithCollator(const icu::Collator* collator,
672 const std::wstring& lhs, 673 const std::wstring& lhs,
673 const std::wstring& rhs) { 674 const std::wstring& rhs) {
674 DCHECK(collator); 675 DCHECK(collator);
675 UErrorCode error = U_ZERO_ERROR; 676 UErrorCode error = U_ZERO_ERROR;
676 #if defined(WCHAR_T_IS_UTF32) 677 #if defined(WCHAR_T_IS_UTF32)
677 // Need to convert to UTF-16 to be compatible with UnicodeString's 678 // Need to convert to UTF-16 to be compatible with UnicodeString's
678 // constructor. 679 // constructor.
679 string16 lhs_utf16 = WideToUTF16(lhs); 680 string16 lhs_utf16 = WideToUTF16(lhs);
680 string16 rhs_utf16 = WideToUTF16(rhs); 681 string16 rhs_utf16 = WideToUTF16(rhs);
681 682
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
784 } 785 }
785 786
786 void BiDiLineIterator::GetLogicalRun(int start, 787 void BiDiLineIterator::GetLogicalRun(int start,
787 int* end, 788 int* end,
788 UBiDiLevel* level) { 789 UBiDiLevel* level) {
789 DCHECK(bidi_ != NULL); 790 DCHECK(bidi_ != NULL);
790 ubidi_getLogicalRun(bidi_, start, end, level); 791 ubidi_getLogicalRun(bidi_, start, end, level);
791 } 792 }
792 793
793 } 794 }
OLDNEW
« no previous file with comments | « app/l10n_util.h ('k') | app/l10n_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698