Index: chrome/browser/resources/options/chromeos_language_list.js |
diff --git a/chrome/browser/resources/options/chromeos_language_list.js b/chrome/browser/resources/options/chromeos_language_list.js |
index e78e029db465f326cd77d9813b7ce5593f3f54a2..a4f7972c11495e2def62c9da3b7faecaefde685f 100644 |
--- a/chrome/browser/resources/options/chromeos_language_list.js |
+++ b/chrome/browser/resources/options/chromeos_language_list.js |
@@ -43,16 +43,18 @@ cr.define('options.language', function() { |
* @private |
*/ |
handlePrefChange_: function(e) { |
- this.load_(e.value); |
+ var languageCodesInCsv = e.value; |
+ var languageCodes = this.filterBadLanguageCodes_( |
+ languageCodesInCsv.split(',')); |
+ this.load_(languageCodes); |
}, |
/** |
* Loads given language list. |
- * @param {string} languageCodesInCsv A CSV string of language codes. |
+ * @param {Array} languageCodes List of language codes. |
* @private |
*/ |
- load_: function(languageCodesInCsv) { |
- var languageCodes = languageCodesInCsv.split(','); |
+ load_: function(languageCodes) { |
this.dataModel = new ArrayDataModel(languageCodes); |
// Select the first item if it's not empty. |
// TODO(satorux): Switch to a single item selection model that does |
@@ -68,6 +70,24 @@ cr.define('options.language', function() { |
// Encode the language codes into a CSV string. |
Preferences.setStringPref(this.pref, this.dataModel.slice().join(',')); |
}, |
+ |
+ /** |
+ * Filters bad language codes in case bad language codes are |
+ * stored in the preference. |
+ * @param {Array} languageCodes List of language codes. |
+ * @private |
+ */ |
+ filterBadLanguageCodes_: function(languageCodes) { |
+ var filteredLanguageCodes = []; |
+ for (var i = 0; i < languageCodes.length; i++) { |
+ // Check if the translation for the language code is |
+ // present. Otherwise, skip it. |
+ if (localStrings.getString(languageCodes[i])) { |
+ filteredLanguageCodes.push(languageCodes[i]); |
+ } |
+ } |
+ return filteredLanguageCodes; |
+ }, |
}; |
return { |