define(function(require, exports) { 'use strict'; var IntlHelper = require('shared/intl_helper'); /** * Observes localized events and localizes elements * with data-l10n-date-format should be registered * after the first localized event. * * * Example: * * * * * 2013/9/19 * * * */ exports.init = function() { window.addEventListener('localized', exports._localizeElements); window.addEventListener('timeformatchange', exports._localizeElements); }; /** * Localizes all elements with data-l10n-date-format. */ exports._localizeElements = function() { var elements = document.querySelectorAll('[data-l10n-date-format]'); for (var i = 0; i < elements.length; i++) { exports._localizeElement(elements[i]); } }; /** * Localize a single element expected to have data-l10n-date-format. */ exports._localizeElement = function(element) { var date = element.dataset.date; if (!date) { return; } var format = element.dataset.l10nDateFormat; var formatter = IntlHelper.get(format); var text; if (format === 'week-hour-format') { text = formatter.format(new Date(date), { dayperiod: '', }); } else { text = formatter.format(new Date(date)); } element.textContent = text; }; });