| // Copyright 2009 The Closure Library Authors. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS-IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| /** |
| * @fileoverview Code to make goog.date.relative plurals-aware. |
| */ |
| |
| goog.provide('goog.date.relativeWithPlurals'); |
| |
| goog.require('goog.date.relative'); |
| goog.require('goog.date.relative.Unit'); |
| goog.require('goog.i18n.MessageFormat'); |
| |
| |
| /** |
| * Gets a localized relative date string for a given delta and unit. |
| * @param {number} delta Number of minutes/hours/days. |
| * @param {boolean} future Whether the delta is in the future. |
| * @param {goog.date.relative.Unit} unit The units the delta is in. |
| * @return {string} The message. |
| * @private |
| */ |
| goog.date.relativeWithPlurals.formatTimeDelta_ = |
| function(delta, future, unit) { |
| if (!future && unit == goog.date.relative.Unit.MINUTES) { |
| /** |
| * @desc Relative date indicating how many minutes ago something happened. |
| */ |
| var MSG_MINUTES_AGO_ICU = |
| goog.getMsg('{NUM, plural, ' + |
| '=0 {# minutes ago}' + |
| '=1 {# minute ago}' + |
| 'other {# minutes ago}}'); |
| |
| return new goog.i18n.MessageFormat(MSG_MINUTES_AGO_ICU). |
| format({'NUM': delta}); |
| |
| } else if (future && unit == goog.date.relative.Unit.MINUTES) { |
| /** |
| * @desc Relative date indicating in how many minutes something happens. |
| */ |
| var MSG_IN_MINUTES_ICU = |
| goog.getMsg('{NUM, plural, ' + |
| '=0 {in # minutes}' + |
| '=1 {in # minute}' + |
| 'other {in # minutes}}'); |
| |
| return new goog.i18n.MessageFormat(MSG_IN_MINUTES_ICU). |
| format({'NUM': delta}); |
| |
| } else if (!future && unit == goog.date.relative.Unit.HOURS) { |
| /** |
| * @desc Relative date indicating how many hours ago something happened. |
| */ |
| var MSG_HOURS_AGO_ICU = |
| goog.getMsg('{NUM, plural, ' + |
| '=0 {# hours ago}' + |
| '=1 {# hour ago}' + |
| 'other {# hours ago}}'); |
| |
| return new goog.i18n.MessageFormat(MSG_HOURS_AGO_ICU). |
| format({'NUM': delta}); |
| |
| } else if (future && unit == goog.date.relative.Unit.HOURS) { |
| /** |
| * @desc Relative date indicating in how many hours something happens. |
| */ |
| var MSG_IN_HOURS_ICU = |
| goog.getMsg('{NUM, plural, ' + |
| '=0 {in # hours}' + |
| '=1 {in # hour}' + |
| 'other {in # hours}}'); |
| |
| return new goog.i18n.MessageFormat(MSG_IN_HOURS_ICU). |
| format({'NUM': delta}); |
| |
| } else if (!future && unit == goog.date.relative.Unit.DAYS) { |
| /** |
| * @desc Relative date indicating how many days ago something happened. |
| */ |
| var MSG_DAYS_AGO_ICU = |
| goog.getMsg('{NUM, plural, ' + |
| '=0 {# days ago}' + |
| '=1 {# day ago}' + |
| 'other {# days ago}}'); |
| |
| return new goog.i18n.MessageFormat(MSG_DAYS_AGO_ICU). |
| format({'NUM': delta}); |
| |
| } else if (future && unit == goog.date.relative.Unit.DAYS) { |
| /** |
| * @desc Relative date indicating in how many days something happens. |
| */ |
| var MSG_IN_DAYS_ICU = |
| goog.getMsg('{NUM, plural, ' + |
| '=0 {in # days}' + |
| '=1 {in # day}' + |
| 'other {in # days}}'); |
| |
| return new goog.i18n.MessageFormat(MSG_IN_DAYS_ICU). |
| format({'NUM': delta}); |
| |
| } else { |
| return ''; |
| } |
| }; |
| |
| goog.date.relative.setTimeDeltaFormatter( |
| goog.date.relativeWithPlurals.formatTimeDelta_); |