Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(532)

Unified Diff: chrome/browser/resources/chromeos/chromevox/common/msgs.js

Issue 1362223003: Improve braille related message descriptions and clean up message handling in Chromevox. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@inputtypeexception
Patch Set: Move another braille message to Msgs.Untranslated Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 &lt;time&gt; tag. */
+ TAG_TIME_BRL: ' ',
+};

Powered by Google App Engine
This is Rietveld 408576698