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 |