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

Unified Diff: ui/webui/resources/js/i18n_behavior.js

Issue 2927213002: [MD settings] I18nBehavior return textContent from i18n() (Closed)
Patch Set: merge with master Created 3 years, 6 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
« no previous file with comments | « chrome/test/data/webui/i18n_behavior_test.html ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/webui/resources/js/i18n_behavior.js
diff --git a/ui/webui/resources/js/i18n_behavior.js b/ui/webui/resources/js/i18n_behavior.js
index 931f8c8f029ecead1ea15335e378ca8a47ccbe1b..94704db51d7a7f1b0787250b7f32d4f270cf5ff0 100644
--- a/ui/webui/resources/js/i18n_behavior.js
+++ b/ui/webui/resources/js/i18n_behavior.js
@@ -39,6 +39,7 @@ var I18nBehavior = {
/**
* Returns a translated string where $1 to $9 are replaced by the given
* values. Also sanitizes the output to filter out dangerous HTML/JS.
+ * Use with Polymer bindings that are *not* inner-h-t-m-l.
* @param {string} id The ID of the string to translate.
* @param {...string} var_args Values to replace the placeholders $1 to $9
* in the string.
@@ -46,22 +47,20 @@ var I18nBehavior = {
*/
i18n: function(id, var_args) {
var rawString = this.i18nRaw_.apply(this, arguments);
- var htmlStr =
- parseHtmlSubset('<b>' + rawString + '</b>').firstChild.innerHTML;
- // TODO(dschuyler): use textContent rather than innerHTML; remove replace().
- return htmlStr.replace(/&nbsp;/g, '\u00a0');
+ return parseHtmlSubset('<b>' + rawString + '</b>').firstChild.textContent;
},
/**
* Similar to 'i18n', returns a translated, sanitized, substituted string.
* It receives the string ID and a dictionary containing the substitutions
- * as well as optional additional allowed tags and attributes.
+ * as well as optional additional allowed tags and attributes. Use with
+ * Polymer bindings that are inner-h-t-m-l, for example.
* @param {string} id The ID of the string to translate.
- * @param {{substitutions: (Array<string>|undefined),
- * attrs: (Object<function(Node, string):boolean>|undefined),
- * tags: (Array<string>|undefined)}} opts
+ * @param {I18nAdvancedOpts=} opts
+ * @return {string}
*/
i18nAdvanced: function(id, opts) {
+ opts = opts || {};
var args = [id].concat(opts.substitutions || []);
var rawString = this.i18nRaw_.apply(this, args);
return parseHtmlSubset('<b>' + rawString + '</b>', opts.tags, opts.attrs)
@@ -91,23 +90,31 @@ var I18nBehavior = {
},
/**
- * Call this when UI strings may have changed. This will send an update to any
- * data bindings to i18nDynamic(locale, ...).
+ * Call this when UI strings may have changed. This will send an update to
+ * any data bindings to i18nDynamic(locale, ...).
*/
i18nUpdateLocale: function() {
this.locale = loadTimeData.getString('language');
},
};
+/**
+ * @typedef {{
+ * substitutions: (Array<string>|undefined),
+ * attrs: (Object<function(Node, string):boolean>|undefined),
+ * tags: (Array<string>|undefined),
+ * }}
+ */
+var I18nAdvancedOpts;
+
/**
* TODO(stevenjb): Replace with an interface. b/24294625
* @typedef {{
- * i18n: function(string, ...string): string}},
- * i18nAdvanced: function({
- * substitutions: (Array<string>|undefined),
- * attrs: (Object<function(Node, string):boolean>|undefined),
- * tags: (Array<string>|undefined)}, opts),
- * i18nExists: function(string)
+ * i18n: function(string, ...string): string,
+ * i18nAdvanced: function(string, I18nAdvancedOpts=): string,
+ * i18nDynamic: function(string, string, ...string): string,
+ * i18nExists: function(string),
+ * i18nUpdateLocale: function()
* }}
*/
I18nBehavior.Proto;
« no previous file with comments | « chrome/test/data/webui/i18n_behavior_test.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698