| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "ui/base/l10n/formatter.h" | 5 #include "ui/base/l10n/formatter.h" |
| 6 | 6 |
| 7 #include <limits.h> | 7 #include <limits.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 static const Pluralities IDS_ELAPSED_HOUR = { | 46 static const Pluralities IDS_ELAPSED_HOUR = { |
| 47 IDS_TIME_ELAPSED_HOURS, | 47 IDS_TIME_ELAPSED_HOURS, |
| 48 "one{# hour ago}", | 48 "one{# hour ago}", |
| 49 " other{# hours ago}" | 49 " other{# hours ago}" |
| 50 }; | 50 }; |
| 51 static const Pluralities IDS_ELAPSED_DAY = { | 51 static const Pluralities IDS_ELAPSED_DAY = { |
| 52 IDS_TIME_ELAPSED_DAYS, | 52 IDS_TIME_ELAPSED_DAYS, |
| 53 "one{# day ago}", | 53 "one{# day ago}", |
| 54 " other{# days ago}" | 54 " other{# days ago}" |
| 55 }; | 55 }; |
| 56 static const Pluralities IDS_ELAPSED_MONTH = { |
| 57 IDS_TIME_ELAPSED_MONTHS, "one{# month ago}", " other{# months ago}"}; |
| 58 static const Pluralities IDS_ELAPSED_YEAR = { |
| 59 IDS_TIME_ELAPSED_YEARS, "one{# year ago}", " other{# years ago}"}; |
| 56 | 60 |
| 57 static const Pluralities IDS_REMAINING_SHORT_SEC = { | 61 static const Pluralities IDS_REMAINING_SHORT_SEC = { |
| 58 IDS_TIME_REMAINING_SECS, | 62 IDS_TIME_REMAINING_SECS, |
| 59 "one{# sec left}", | 63 "one{# sec left}", |
| 60 " other{# secs left}" | 64 " other{# secs left}" |
| 61 }; | 65 }; |
| 62 static const Pluralities IDS_REMAINING_SHORT_MIN = { | 66 static const Pluralities IDS_REMAINING_SHORT_MIN = { |
| 63 IDS_TIME_REMAINING_MINS, | 67 IDS_TIME_REMAINING_MINS, |
| 64 "one{# min left}", | 68 "one{# min left}", |
| 65 " other{# mins left}" | 69 " other{# mins left}" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 78 static const Pluralities IDS_REMAINING_HOUR = { | 82 static const Pluralities IDS_REMAINING_HOUR = { |
| 79 IDS_TIME_REMAINING_HOURS, | 83 IDS_TIME_REMAINING_HOURS, |
| 80 "one{# hour left}", | 84 "one{# hour left}", |
| 81 " other{# hours left}" | 85 " other{# hours left}" |
| 82 }; | 86 }; |
| 83 static const Pluralities IDS_REMAINING_DAY = { | 87 static const Pluralities IDS_REMAINING_DAY = { |
| 84 IDS_TIME_REMAINING_DAYS, | 88 IDS_TIME_REMAINING_DAYS, |
| 85 "one{# day left}", | 89 "one{# day left}", |
| 86 " other{# days left}" | 90 " other{# days left}" |
| 87 }; | 91 }; |
| 92 static const Pluralities IDS_REMAINING_MONTH = { |
| 93 IDS_TIME_REMAINING_MONTHS, "one{# month left}", " other{# months left}"}; |
| 94 static const Pluralities IDS_REMAINING_YEAR = { |
| 95 IDS_TIME_REMAINING_YEARS, "one{# year left}", " other{# years left}"}; |
| 88 | 96 |
| 89 static const Pluralities IDS_DURATION_SHORT_SEC = { | 97 static const Pluralities IDS_DURATION_SHORT_SEC = { |
| 90 IDS_TIME_SECS, | 98 IDS_TIME_SECS, |
| 91 "one{# sec}", | 99 "one{# sec}", |
| 92 " other{# secs}" | 100 " other{# secs}" |
| 93 }; | 101 }; |
| 94 static const Pluralities IDS_DURATION_SHORT_MIN = { | 102 static const Pluralities IDS_DURATION_SHORT_MIN = { |
| 95 IDS_TIME_MINS, | 103 IDS_TIME_MINS, |
| 96 "one{# min}", | 104 "one{# min}", |
| 97 " other{# mins}" | 105 " other{# mins}" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 110 static const Pluralities IDS_DURATION_HOUR = { | 118 static const Pluralities IDS_DURATION_HOUR = { |
| 111 IDS_TIME_HOURS, | 119 IDS_TIME_HOURS, |
| 112 "one{# hour}", | 120 "one{# hour}", |
| 113 " other{# hours}" | 121 " other{# hours}" |
| 114 }; | 122 }; |
| 115 static const Pluralities IDS_DURATION_DAY = { | 123 static const Pluralities IDS_DURATION_DAY = { |
| 116 IDS_TIME_DAYS, | 124 IDS_TIME_DAYS, |
| 117 "one{# day}", | 125 "one{# day}", |
| 118 " other{# days}" | 126 " other{# days}" |
| 119 }; | 127 }; |
| 128 static const Pluralities IDS_DURATION_MONTH = {IDS_TIME_MONTHS, "one{# month}", |
| 129 " other{# months}"}; |
| 130 static const Pluralities IDS_DURATION_YEAR = {IDS_TIME_YEARS, "one{# year}", |
| 131 " other{# years}"}; |
| 120 | 132 |
| 121 static const Pluralities IDS_LONG_MIN_1ST = { | 133 static const Pluralities IDS_LONG_MIN_1ST = { |
| 122 IDS_TIME_LONG_MINS_1ST, | 134 IDS_TIME_LONG_MINS_1ST, |
| 123 "one{# minute and }", | 135 "one{# minute and }", |
| 124 " other{# minutes and }" | 136 " other{# minutes and }" |
| 125 }; | 137 }; |
| 126 static const Pluralities IDS_LONG_SEC_2ND = { | 138 static const Pluralities IDS_LONG_SEC_2ND = { |
| 127 IDS_TIME_LONG_SECS_2ND, | 139 IDS_TIME_LONG_SECS_2ND, |
| 128 "one{# second}", | 140 "one{# second}", |
| 129 " other{# seconds}" | 141 " other{# seconds}" |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 format.format(&formattable, 1, *result, ignore, *err); | 184 format.format(&formattable, 1, *result, ignore, *err); |
| 173 DCHECK(U_SUCCESS(*err)); | 185 DCHECK(U_SUCCESS(*err)); |
| 174 return; | 186 return; |
| 175 } | 187 } |
| 176 | 188 |
| 177 } // namespace | 189 } // namespace |
| 178 | 190 |
| 179 Formatter::Formatter(const Pluralities& sec_pluralities, | 191 Formatter::Formatter(const Pluralities& sec_pluralities, |
| 180 const Pluralities& min_pluralities, | 192 const Pluralities& min_pluralities, |
| 181 const Pluralities& hour_pluralities, | 193 const Pluralities& hour_pluralities, |
| 182 const Pluralities& day_pluralities) { | 194 const Pluralities& day_pluralities, |
| 195 const Pluralities& month_pluralities, |
| 196 const Pluralities& year_pluralities) { |
| 183 simple_format_[UNIT_SEC] = InitFormat(sec_pluralities); | 197 simple_format_[UNIT_SEC] = InitFormat(sec_pluralities); |
| 184 simple_format_[UNIT_MIN] = InitFormat(min_pluralities); | 198 simple_format_[UNIT_MIN] = InitFormat(min_pluralities); |
| 185 simple_format_[UNIT_HOUR] = InitFormat(hour_pluralities); | 199 simple_format_[UNIT_HOUR] = InitFormat(hour_pluralities); |
| 186 simple_format_[UNIT_DAY] = InitFormat(day_pluralities); | 200 simple_format_[UNIT_DAY] = InitFormat(day_pluralities); |
| 201 simple_format_[UNIT_MONTH] = InitFormat(month_pluralities); |
| 202 simple_format_[UNIT_YEAR] = InitFormat(year_pluralities); |
| 187 } | 203 } |
| 188 | 204 |
| 189 Formatter::Formatter(const Pluralities& sec_pluralities, | 205 Formatter::Formatter(const Pluralities& sec_pluralities, |
| 190 const Pluralities& min_pluralities, | 206 const Pluralities& min_pluralities, |
| 191 const Pluralities& hour_pluralities, | 207 const Pluralities& hour_pluralities, |
| 192 const Pluralities& day_pluralities, | 208 const Pluralities& day_pluralities, |
| 209 const Pluralities& month_pluralities, |
| 210 const Pluralities& year_pluralities, |
| 193 const Pluralities& min_sec_pluralities1, | 211 const Pluralities& min_sec_pluralities1, |
| 194 const Pluralities& min_sec_pluralities2, | 212 const Pluralities& min_sec_pluralities2, |
| 195 const Pluralities& hour_min_pluralities1, | 213 const Pluralities& hour_min_pluralities1, |
| 196 const Pluralities& hour_min_pluralities2, | 214 const Pluralities& hour_min_pluralities2, |
| 197 const Pluralities& day_hour_pluralities1, | 215 const Pluralities& day_hour_pluralities1, |
| 198 const Pluralities& day_hour_pluralities2) { | 216 const Pluralities& day_hour_pluralities2) { |
| 199 simple_format_[UNIT_SEC] = InitFormat(sec_pluralities); | 217 simple_format_[UNIT_SEC] = InitFormat(sec_pluralities); |
| 200 simple_format_[UNIT_MIN] = InitFormat(min_pluralities); | 218 simple_format_[UNIT_MIN] = InitFormat(min_pluralities); |
| 201 simple_format_[UNIT_HOUR] = InitFormat(hour_pluralities); | 219 simple_format_[UNIT_HOUR] = InitFormat(hour_pluralities); |
| 202 simple_format_[UNIT_DAY] = InitFormat(day_pluralities); | 220 simple_format_[UNIT_DAY] = InitFormat(day_pluralities); |
| 221 simple_format_[UNIT_MONTH] = InitFormat(month_pluralities); |
| 222 simple_format_[UNIT_YEAR] = InitFormat(year_pluralities); |
| 203 detailed_format_[TWO_UNITS_MIN_SEC][0] = InitFormat(min_sec_pluralities1); | 223 detailed_format_[TWO_UNITS_MIN_SEC][0] = InitFormat(min_sec_pluralities1); |
| 204 detailed_format_[TWO_UNITS_MIN_SEC][1] = InitFormat(min_sec_pluralities2); | 224 detailed_format_[TWO_UNITS_MIN_SEC][1] = InitFormat(min_sec_pluralities2); |
| 205 detailed_format_[TWO_UNITS_HOUR_MIN][0] = InitFormat(hour_min_pluralities1); | 225 detailed_format_[TWO_UNITS_HOUR_MIN][0] = InitFormat(hour_min_pluralities1); |
| 206 detailed_format_[TWO_UNITS_HOUR_MIN][1] = InitFormat(hour_min_pluralities2); | 226 detailed_format_[TWO_UNITS_HOUR_MIN][1] = InitFormat(hour_min_pluralities2); |
| 207 detailed_format_[TWO_UNITS_DAY_HOUR][0] = InitFormat(day_hour_pluralities1); | 227 detailed_format_[TWO_UNITS_DAY_HOUR][0] = InitFormat(day_hour_pluralities1); |
| 208 detailed_format_[TWO_UNITS_DAY_HOUR][1] = InitFormat(day_hour_pluralities2); | 228 detailed_format_[TWO_UNITS_DAY_HOUR][1] = InitFormat(day_hour_pluralities2); |
| 209 } | 229 } |
| 210 | 230 |
| 211 void Formatter::Format(Unit unit, | 231 void Formatter::Format(Unit unit, |
| 212 int value, | 232 int value, |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 278 | 298 |
| 279 FormatterContainer::FormatterContainer() { | 299 FormatterContainer::FormatterContainer() { |
| 280 Initialize(); | 300 Initialize(); |
| 281 } | 301 } |
| 282 | 302 |
| 283 FormatterContainer::~FormatterContainer() { | 303 FormatterContainer::~FormatterContainer() { |
| 284 } | 304 } |
| 285 | 305 |
| 286 void FormatterContainer::Initialize() { | 306 void FormatterContainer::Initialize() { |
| 287 formatter_[TimeFormat::FORMAT_ELAPSED][TimeFormat::LENGTH_SHORT].reset( | 307 formatter_[TimeFormat::FORMAT_ELAPSED][TimeFormat::LENGTH_SHORT].reset( |
| 288 new Formatter(IDS_ELAPSED_SHORT_SEC, | 308 new Formatter(IDS_ELAPSED_SHORT_SEC, IDS_ELAPSED_SHORT_MIN, |
| 289 IDS_ELAPSED_SHORT_MIN, | 309 IDS_ELAPSED_HOUR, IDS_ELAPSED_DAY, IDS_ELAPSED_MONTH, |
| 290 IDS_ELAPSED_HOUR, | 310 IDS_ELAPSED_YEAR)); |
| 291 IDS_ELAPSED_DAY)); | |
| 292 formatter_[TimeFormat::FORMAT_ELAPSED][TimeFormat::LENGTH_LONG].reset( | 311 formatter_[TimeFormat::FORMAT_ELAPSED][TimeFormat::LENGTH_LONG].reset( |
| 293 new Formatter(IDS_ELAPSED_LONG_SEC, IDS_ELAPSED_LONG_MIN, | 312 new Formatter(IDS_ELAPSED_LONG_SEC, IDS_ELAPSED_LONG_MIN, |
| 294 IDS_ELAPSED_HOUR, IDS_ELAPSED_DAY)); | 313 IDS_ELAPSED_HOUR, IDS_ELAPSED_DAY, IDS_ELAPSED_MONTH, |
| 314 IDS_ELAPSED_YEAR)); |
| 295 formatter_[TimeFormat::FORMAT_REMAINING][TimeFormat::LENGTH_SHORT].reset( | 315 formatter_[TimeFormat::FORMAT_REMAINING][TimeFormat::LENGTH_SHORT].reset( |
| 296 new Formatter(IDS_REMAINING_SHORT_SEC, | 316 new Formatter(IDS_REMAINING_SHORT_SEC, IDS_REMAINING_SHORT_MIN, |
| 297 IDS_REMAINING_SHORT_MIN, | 317 IDS_REMAINING_HOUR, IDS_REMAINING_DAY, IDS_REMAINING_MONTH, |
| 298 IDS_REMAINING_HOUR, | 318 IDS_REMAINING_YEAR)); |
| 299 IDS_REMAINING_DAY)); | |
| 300 formatter_[TimeFormat::FORMAT_REMAINING][TimeFormat::LENGTH_LONG].reset( | 319 formatter_[TimeFormat::FORMAT_REMAINING][TimeFormat::LENGTH_LONG].reset( |
| 301 new Formatter(IDS_REMAINING_LONG_SEC, | 320 new Formatter(IDS_REMAINING_LONG_SEC, IDS_REMAINING_LONG_MIN, |
| 302 IDS_REMAINING_LONG_MIN, | 321 IDS_REMAINING_HOUR, IDS_REMAINING_DAY, IDS_REMAINING_MONTH, |
| 303 IDS_REMAINING_HOUR, | 322 IDS_REMAINING_YEAR)); |
| 304 IDS_REMAINING_DAY)); | |
| 305 formatter_[TimeFormat::FORMAT_DURATION][TimeFormat::LENGTH_SHORT].reset( | 323 formatter_[TimeFormat::FORMAT_DURATION][TimeFormat::LENGTH_SHORT].reset( |
| 306 new Formatter(IDS_DURATION_SHORT_SEC, | 324 new Formatter(IDS_DURATION_SHORT_SEC, IDS_DURATION_SHORT_MIN, |
| 307 IDS_DURATION_SHORT_MIN, | 325 IDS_DURATION_HOUR, IDS_DURATION_DAY, IDS_DURATION_MONTH, |
| 308 IDS_DURATION_HOUR, | 326 IDS_DURATION_YEAR)); |
| 309 IDS_DURATION_DAY)); | |
| 310 formatter_[TimeFormat::FORMAT_DURATION][TimeFormat::LENGTH_LONG].reset( | 327 formatter_[TimeFormat::FORMAT_DURATION][TimeFormat::LENGTH_LONG].reset( |
| 311 new Formatter(IDS_LONG_SEC, | 328 new Formatter(IDS_LONG_SEC, IDS_LONG_MIN, IDS_DURATION_HOUR, |
| 312 IDS_LONG_MIN, | 329 IDS_DURATION_DAY, IDS_DURATION_MONTH, IDS_DURATION_YEAR, |
| 313 IDS_DURATION_HOUR, | 330 IDS_LONG_MIN_1ST, IDS_LONG_SEC_2ND, IDS_DURATION_HOUR_1ST, |
| 314 IDS_DURATION_DAY, | 331 IDS_LONG_MIN_2ND, IDS_DURATION_DAY_1ST, |
| 315 IDS_LONG_MIN_1ST, | |
| 316 IDS_LONG_SEC_2ND, | |
| 317 IDS_DURATION_HOUR_1ST, | |
| 318 IDS_LONG_MIN_2ND, | |
| 319 IDS_DURATION_DAY_1ST, | |
| 320 IDS_DURATION_HOUR_2ND)); | 332 IDS_DURATION_HOUR_2ND)); |
| 321 } | 333 } |
| 322 | 334 |
| 323 void FormatterContainer::Shutdown() { | 335 void FormatterContainer::Shutdown() { |
| 324 for (int format = 0; format < TimeFormat::FORMAT_COUNT; ++format) { | 336 for (int format = 0; format < TimeFormat::FORMAT_COUNT; ++format) { |
| 325 for (int length = 0; length < TimeFormat::LENGTH_COUNT; ++length) { | 337 for (int length = 0; length < TimeFormat::LENGTH_COUNT; ++length) { |
| 326 formatter_[format][length].reset(); | 338 formatter_[format][length].reset(); |
| 327 } | 339 } |
| 328 } | 340 } |
| 329 } | 341 } |
| 330 | 342 |
| 331 } // namespace ui | 343 } // namespace ui |
| OLD | NEW |