| Index: chrome/browser/resources/chromeos/chromevox/common/msgs.js
|
| diff --git a/chrome/browser/resources/chromeos/chromevox/common/msgs.js b/chrome/browser/resources/chromeos/chromevox/common/msgs.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8a9628e1d46b825e028d764b62da9f0d54362f75
|
| --- /dev/null
|
| +++ b/chrome/browser/resources/chromeos/chromevox/common/msgs.js
|
| @@ -0,0 +1,161 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +
|
| +/**
|
| + * @fileoverview Defines methods related to retrieving translated messages.
|
| + */
|
| +
|
| +goog.provide('Msgs');
|
| +
|
| +/**
|
| + * @constructor
|
| + */
|
| +Msgs = function() {};
|
| +
|
| +/**
|
| + * The namespace for all Chromevox messages.
|
| + * @type {string}
|
| + * @const
|
| + * @private
|
| + */
|
| +Msgs.NAMESPACE_ = 'chromevox_';
|
| +
|
| +/**
|
| + * Dictionary of locale names.
|
| + * @type {Object<string>}
|
| + * @private
|
| + */
|
| +Msgs.localeNameDict_ = null;
|
| +
|
| +/**
|
| + * Return the current locale.
|
| + * @return {string} The locale.
|
| + */
|
| +Msgs.getLocale = function() {
|
| + return chrome.i18n.getMessage('locale');
|
| +};
|
| +
|
| +/**
|
| + * Returns the message with the given message id from the ChromeVox namespace.
|
| + *
|
| + * If we can't find a message, throw an exception. This allows us to catch
|
| + * typos early.
|
| + *
|
| + * @param {string} messageId The id.
|
| + * @param {Array<string>=} opt_subs Substitution strings.
|
| + * @return {string} The localized message.
|
| + */
|
| +Msgs.getMsg = function(messageId, opt_subs) {
|
| + var message = Msgs.Untranslated[messageId.toUpperCase()];
|
| + if (message !== undefined)
|
| + return message;
|
| + message = chrome.i18n.getMessage(
|
| + Msgs.NAMESPACE_ + messageId, opt_subs);
|
| + if (message == undefined || message == '') {
|
| + throw new Error('Invalid ChromeVox message id: ' + messageId);
|
| + }
|
| + return message;
|
| +};
|
| +
|
| +/**
|
| + * Processes an HTML DOM, replacing text content with translated text messages
|
| + * on elements marked up for translation. Elements whose class attributes
|
| + * contain the 'i18n' class name are expected to also have an msgid
|
| + * attribute. The value of the msgid attributes are looked up as message
|
| + * IDs and the resulting text is used as the text content of the elements.
|
| + *
|
| + * @param {Node} root The root node where the translation should be performed.
|
| + */
|
| +Msgs.addTranslatedMessagesToDom = function(root) {
|
| + var elts = root.querySelectorAll('.i18n');
|
| + for (var i = 0; i < elts.length; i++) {
|
| + var msgid = elts[i].getAttribute('msgid');
|
| + if (!msgid) {
|
| + throw new Error('Element has no msgid attribute: ' + elts[i]);
|
| + }
|
| + elts[i].textContent = this.getMsg(msgid);
|
| + elts[i].classList.add('i18n-processed');
|
| + }
|
| +};
|
| +
|
| +/**
|
| + * Retuns a number formatted correctly.
|
| + *
|
| + * @param {number} num The number.
|
| + * @return {string} The number in the correct locale.
|
| + */
|
| +Msgs.getNumber = function(num) {
|
| + return '' + num;
|
| +};
|
| +
|
| +/**
|
| + * Gets a localized display name for a locale.
|
| + * NOTE: Only a subset of locale identifiers are supported. See the
|
| + * |CHROMEVOX_LOCALE_DICT| message.
|
| + * @param {string} locale On the form |ll| or |ll_CC|, where |ll| is
|
| + * the language code and |CC| the country code.
|
| + * @return {string} The display name.
|
| + */
|
| +Msgs.getLocaleDisplayName = function(locale) {
|
| + if (!Msgs.localeNameDict_) {
|
| + Msgs.localeNameDict_ = /** @type {!Object<string>} */(
|
| + JSON.parse(this.getMsg('locale_dict')));
|
| + }
|
| + var name = Msgs.localeNameDict_[locale];
|
| + if (!name) {
|
| + throw Error('Unsupported locale identifier: ' + locale);
|
| + }
|
| + return name;
|
| +};
|
| +
|
| +/**
|
| + * Strings that are displayed in the user interface but don't need
|
| + * be translated.
|
| + * @type {Object<string>}
|
| + */
|
| +Msgs.Untranslated = {
|
| + /** The unchecked state for a checkbox in braille. */
|
| + CHECKBOX_UNCHECKED_STATE_BRL: '( )',
|
| + /** The checked state for a checkbox in braille. */
|
| + CHECKBOX_CHECKED_STATE_BRL: '(x)',
|
| + /** The unselected state for a radio button in braille. */
|
| + RADIO_UNSELECTED_STATE_BRL: '( )',
|
| + /** The selected state for a radio button in braille. */
|
| + RADIO_SELECTED_STATE_BRL: '(x)',
|
| + /** Brailled after a menu if the menu has a submenu. */
|
| + ARIA_HAS_SUBMENU_BRL: '->',
|
| + /** Describes an element with the ARIA role option. */
|
| + ROLE_OPTION: ' ',
|
| + /** Braille of element with the ARIA role option. */
|
| + ROLE_OPTION_BRL: ' ',
|
| + /** Braille of element with the ARIA attribute aria-checked=true. */
|
| + ARIA_CHECKED_TRUE_BRL: '(x)',
|
| + /** Braille of element with the ARIA attribute aria-checked=false. */
|
| + ARIA_CHECKED_FALSE_BRL: '( )',
|
| + /** Braille of element with the ARIA attribute aria-checked=mixed. */
|
| + ARIA_CHECKED_MIXED_BRL: '(-)',
|
| + /** Braille of element with the ARIA attribute aria-disabled=true. */
|
| + ARIA_DISABLED_TRUE_BRL: 'xx',
|
| + /** Braille of element with the ARIA attribute aria-expanded=true. */
|
| + ARIA_EXPANDED_TRUE_BRL: '-',
|
| + /** Braille of element with the ARIA attribute aria-expanded=false. */
|
| + ARIA_EXPANDED_FALSE_BRL: '+',
|
| + /** Braille of element with the ARIA attribute aria-invalid=true. */
|
| + ARIA_INVALID_TRUE_BRL: '!',
|
| + /** Braille of element with the ARIA attribute aria-pressed=true. */
|
| + ARIA_PRESSED_TRUE_BRL: '=',
|
| + /** Braille of element with the ARIA attribute aria-pressed=false. */
|
| + ARIA_PRESSED_FALSE_BRL: ' ',
|
| + /** Braille of element with the ARIA attribute aria-pressed=mixed. */
|
| + ARIA_PRESSED_MIXED_BRL: '-',
|
| + /** Braille of element with the ARIA attribute aria-selected=true. */
|
| + ARIA_SELECTED_TRUE_BRL: '(x)',
|
| + /** Braille of element with the ARIA attribute aria-selected=false. */
|
| + ARIA_SELECTED_FALSE_BRL: '( )',
|
| + /** Brailled after a menu if it has a submenu. */
|
| + HAS_SUBMENU_BRL: '->',
|
| + /** Brailled to describe a <time> tag. */
|
| + TAG_TIME_BRL: ' ',
|
| +};
|
|
|