| Index: ui/base/l10n/formatter.cc
|
| diff --git a/ui/base/l10n/formatter.cc b/ui/base/l10n/formatter.cc
|
| index 7f719330459173e195f656ff7c35d248cfee2419..298646d9e2c61245113821ea2aaf929435e74a08 100644
|
| --- a/ui/base/l10n/formatter.cc
|
| +++ b/ui/base/l10n/formatter.cc
|
| @@ -7,10 +7,10 @@
|
| #include <vector>
|
|
|
| #include "base/logging.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| #include "third_party/icu/source/common/unicode/unistr.h"
|
| #include "third_party/icu/source/i18n/unicode/msgfmt.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| -#include "ui/base/l10n/l10n_util_plurals.h"
|
| #include "ui/strings/grit/ui_strings.h"
|
|
|
| namespace ui {
|
| @@ -139,6 +139,33 @@ static const Pluralities IDS_DURATION_HOUR_2ND = {
|
| " other{# hours}"
|
| };
|
|
|
| +namespace {
|
| +
|
| +scoped_ptr<icu::PluralRules> BuildPluralRules() {
|
| + UErrorCode err = U_ZERO_ERROR;
|
| + scoped_ptr<icu::PluralRules> rules(
|
| + icu::PluralRules::forLocale(icu::Locale::getDefault(), err));
|
| + if (U_FAILURE(err)) {
|
| + err = U_ZERO_ERROR;
|
| + icu::UnicodeString fallback_rules("one: n is 1", -1, US_INV);
|
| + rules.reset(icu::PluralRules::createRules(fallback_rules, err));
|
| + DCHECK(U_SUCCESS(err));
|
| + }
|
| + return rules.Pass();
|
| +}
|
| +
|
| +void FormatNumberInPlural(const icu::MessageFormat& format, int number,
|
| + icu::UnicodeString* result, UErrorCode* err) {
|
| + if (U_FAILURE(*err)) return;
|
| + icu::Formattable formattable(number);
|
| + icu::FieldPosition ignore(icu::FieldPosition::DONT_CARE);
|
| + format.format(&formattable, 1, *result, ignore, *err);
|
| + DCHECK(U_SUCCESS(*err));
|
| + return;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| Formatter::Formatter(const Pluralities& sec_pluralities,
|
| const Pluralities& min_pluralities,
|
| const Pluralities& hour_pluralities,
|
| @@ -177,8 +204,8 @@ void Formatter::Format(Unit unit,
|
| DCHECK(simple_format_[unit]);
|
| DCHECK(formatted_string->isEmpty() == TRUE);
|
| UErrorCode error = U_ZERO_ERROR;
|
| - l10n_util::FormatNumberInPlural(*simple_format_[unit],
|
| - value, formatted_string, &error);
|
| + FormatNumberInPlural(*simple_format_[unit],
|
| + value, formatted_string, &error);
|
| DCHECK(U_SUCCESS(error)) << "Error in icu::PluralFormat::format().";
|
| return;
|
| }
|
| @@ -193,11 +220,11 @@ void Formatter::Format(TwoUnits units,
|
| << "Detailed() not implemented for your (format, length) combination!";
|
| DCHECK(formatted_string->isEmpty() == TRUE);
|
| UErrorCode error = U_ZERO_ERROR;
|
| - l10n_util::FormatNumberInPlural(*detailed_format_[units][0], value_1,
|
| - formatted_string, &error);
|
| + FormatNumberInPlural(*detailed_format_[units][0], value_1,
|
| + formatted_string, &error);
|
| DCHECK(U_SUCCESS(error));
|
| - l10n_util::FormatNumberInPlural(*detailed_format_[units][1], value_2,
|
| - formatted_string, &error);
|
| + FormatNumberInPlural(*detailed_format_[units][1], value_2,
|
| + formatted_string, &error);
|
| DCHECK(U_SUCCESS(error));
|
| return;
|
| }
|
| @@ -230,7 +257,7 @@ scoped_ptr<icu::MessageFormat> Formatter::InitFormat(
|
| return format.Pass();
|
| }
|
|
|
| - scoped_ptr<icu::PluralRules> rules(l10n_util::BuildPluralRules());
|
| + scoped_ptr<icu::PluralRules> rules(BuildPluralRules());
|
| return CreateFallbackFormat(*rules, pluralities);
|
| }
|
|
|
|
|