Add new isoLangs and change isoLangs generation
- Add new isoLangs to src/js/common.js.
- Generated isoLangs now only have the first nativeName entry defined in
tools/langs/isoLangs.json (for instance, instead of "euskara, euskera"
now the generated nativeName only includes "euskara").
- In the options page, the languages in the select element when adding a
new language are ordered by language name. This change was needed
because now the generated isoLangs variable is ordered by key and not
by name.
Change-Id: Ic0c528b2e0382341700e2ac96cc61186471fe508
diff --git a/src/js/common.js b/src/js/common.js
index 8289ced..31914e8 100644
--- a/src/js/common.js
+++ b/src/js/common.js
@@ -1,106 +1,111 @@
var isoLangs = {
'af': {'name': 'Afrikaans', 'nativeName': 'Afrikaans'},
- 'sq': {'name': 'Albanian', 'nativeName': 'Shqip'},
'am': {'name': 'Amharic', 'nativeName': 'አማርኛ'},
'ar': {'name': 'Arabic', 'nativeName': 'العربية'},
- 'hy': {'name': 'Armenian', 'nativeName': 'Հայերեն'},
'az': {'name': 'Azerbaijani', 'nativeName': 'azərbaycan dili'},
- 'eu': {'name': 'Basque', 'nativeName': 'euskara'},
'be': {'name': 'Belarusian', 'nativeName': 'Беларуская'},
+ 'bg': {'name': 'Bulgarian', 'nativeName': 'български език'},
'bn': {'name': 'Bengali', 'nativeName': 'বাংলা'},
'bs': {'name': 'Bosnian', 'nativeName': 'bosanski jezik'},
- 'bg': {'name': 'Bulgarian', 'nativeName': 'български език'},
'ca': {'name': 'Catalan', 'nativeName': 'Català'},
- 'ceb': {'name': 'Cebuano', 'nativeName': 'Bisaya'},
- 'ny': {'name': 'Chichewa', 'nativeName': 'chiCheŵa'},
- 'zh': {'name': 'Chinese', 'nativeName': '中文 (Zhōngwén)'},
+ 'ceb': {'name': 'Cebuano', 'nativeName': 'Binisaya'},
'co': {'name': 'Corsican', 'nativeName': 'corsu'},
- 'hr': {'name': 'Croatian', 'nativeName': 'hrvatski'},
'cs': {'name': 'Czech', 'nativeName': 'česky'},
+ 'cy': {'name': 'Welsh', 'nativeName': 'Cymraeg'},
'da': {'name': 'Danish', 'nativeName': 'dansk'},
- 'nl': {'name': 'Dutch', 'nativeName': 'Nederlands'},
+ 'de': {'name': 'German', 'nativeName': 'Deutsch'},
+ 'el': {'name': 'Greek', 'nativeName': 'Ελληνικά'},
'en': {'name': 'English', 'nativeName': 'English'},
'eo': {'name': 'Esperanto', 'nativeName': 'Esperanto'},
+ 'es': {'name': 'Spanish', 'nativeName': 'español'},
'et': {'name': 'Estonian', 'nativeName': 'eesti'},
- 'tl': {'name': 'Filipino', 'nativeName': 'Pilipino'},
+ 'eu': {'name': 'Basque', 'nativeName': 'euskara'},
+ 'fa': {'name': 'Persian', 'nativeName': 'فارسی'},
'fi': {'name': 'Finnish', 'nativeName': 'suomi'},
'fr': {'name': 'French', 'nativeName': 'français'},
'fy': {'name': 'Frisian', 'nativeName': 'Frysk'},
- 'gl': {'name': 'Galician', 'nativeName': 'Galego'},
- 'ka': {'name': 'Georgian', 'nativeName': 'ქართული'},
- 'de': {'name': 'German', 'nativeName': 'Deutsch'},
- 'el': {'name': 'Greek', 'nativeName': 'Ελληνικά'},
- 'gu': {'name': 'Gujarati', 'nativeName': 'ગુજરાતી'},
- 'ht': {'name': 'Haitian Creole', 'nativeName': 'Kreyòl ayisyen'},
- 'ha': {'name': 'Hausa', 'nativeName': 'Hausa'},
- 'haw': {'name': 'Hawaiian', 'nativeName': 'Hausa'},
- 'iw': {'name': 'Hebrew', 'nativeName': 'עברית'},
- 'hi': {'name': 'Hindi', 'nativeName': 'हिन्दी, हिंदी'},
- 'hmn': {'name': 'Hmong', 'nativeName': 'lus Hmoob'},
- 'hu': {'name': 'Hungarian', 'nativeName': 'Magyar'},
- 'is': {'name': 'Icelandic', 'nativeName': 'Íslenska'},
- 'ig': {'name': 'Igbo', 'nativeName': 'Asụsụ Igbo'},
- 'id': {'name': 'Indonesian', 'nativeName': 'Bahasa Indonesia'},
'ga': {'name': 'Irish', 'nativeName': 'Gaeilge'},
+ 'gd': {'name': 'Scots Gaelic', 'nativeName': 'Gàidhlig'},
+ 'gl': {'name': 'Galician', 'nativeName': 'Galego'},
+ 'gu': {'name': 'Gujarati', 'nativeName': 'ગુજરાતી'},
+ 'ha': {'name': 'Hausa', 'nativeName': 'Hausa'},
+ 'haw': {'name': 'Hawaiian', 'nativeName': 'ʻŌlelo Hawaiʻi'},
+ 'hi': {'name': 'Hindi', 'nativeName': 'हिन्दी'},
+ 'hmn': {'name': 'Hmong', 'nativeName': 'Hmoob'},
+ 'hr': {'name': 'Croatian', 'nativeName': 'hrvatski'},
+ 'ht': {'name': 'Haitian Creole', 'nativeName': 'Kreyòl ayisyen'},
+ 'hu': {'name': 'Hungarian', 'nativeName': 'Magyar'},
+ 'hy': {'name': 'Armenian', 'nativeName': 'Հայերեն'},
+ 'id': {'name': 'Indonesian', 'nativeName': 'Bahasa Indonesia'},
+ 'ig': {'name': 'Igbo', 'nativeName': 'Asụsụ Igbo'},
+ 'is': {'name': 'Icelandic', 'nativeName': 'Íslenska'},
'it': {'name': 'Italian', 'nativeName': 'Italiano'},
+ 'iw': {'name': 'Hebrew', 'nativeName': 'עברית'},
'ja': {'name': 'Japanese', 'nativeName': '日本語 (にほんご/にっぽんご)'},
- 'jv': {'name': 'Javanese', 'nativeName': 'basa Jawa'},
- 'kn': {'name': 'Kannada', 'nativeName': 'ಕನ್ನಡ'},
+ 'jw': {'name': 'Javanese', 'nativeName': 'basa Jawa'},
+ 'ka': {'name': 'Georgian', 'nativeName': 'ქართული'},
'kk': {'name': 'Kazakh', 'nativeName': 'Қазақ тілі'},
'km': {'name': 'Khmer', 'nativeName': 'ភាសាខ្មែរ'},
+ 'kn': {'name': 'Kannada', 'nativeName': 'ಕನ್ನಡ'},
'ko': {'name': 'Korean', 'nativeName': '한국어 (韓國語)'},
'ku': {'name': 'Kurdish (Kurmanji)', 'nativeName': 'Kurdî'},
'ky': {'name': 'Kyrgyz', 'nativeName': 'кыргыз тили'},
- 'lo': {'name': 'Lao', 'nativeName': 'ພາສາລາວ'},
'la': {'name': 'Latin', 'nativeName': 'latine'},
- 'lv': {'name': 'Latvian', 'nativeName': 'latviešu valoda'},
- 'lt': {'name': 'Lithuanian', 'nativeName': 'lietuvių kalba'},
'lb': {'name': 'Luxembourgish', 'nativeName': 'Lëtzebuergesch'},
- 'mk': {'name': 'Macedonian', 'nativeName': 'македонски јазик'},
+ 'lo': {'name': 'Lao', 'nativeName': 'ພາສາລາວ'},
+ 'lt': {'name': 'Lithuanian', 'nativeName': 'lietuvių kalba'},
+ 'lv': {'name': 'Latvian', 'nativeName': 'latviešu valoda'},
'mg': {'name': 'Malagasy', 'nativeName': 'Malagasy fiteny'},
- 'ms': {'name': 'Malay', 'nativeName': 'bahasa Melayu'},
+ 'mi': {'name': 'Maori', 'nativeName': 'te reo Māori'},
+ 'mk': {'name': 'Macedonian', 'nativeName': 'македонски јазик'},
'ml': {'name': 'Malayalam', 'nativeName': 'മലയാളം'},
- 'mt': {'name': 'Maltese', 'nativeName': 'Malti'},
- 'mi': {'name': 'Māori', 'nativeName': 'te reo Māori'},
- 'mr': {'name': 'Marathi', 'nativeName': 'मराठी'},
'mn': {'name': 'Mongolian', 'nativeName': 'монгол'},
- 'my': {'name': 'Myanmar', 'nativeName': 'ဗမာစာ'},
+ 'mr': {'name': 'Marathi', 'nativeName': 'मराठी'},
+ 'ms': {'name': 'Malay', 'nativeName': 'bahasa Melayu'},
+ 'mt': {'name': 'Maltese', 'nativeName': 'Malti'},
+ 'my': {'name': 'Myanmar (Burmese)', 'nativeName': 'ဗမာစာ'},
'ne': {'name': 'Nepali', 'nativeName': 'नेपाली'},
+ 'nl': {'name': 'Dutch', 'nativeName': 'Nederlands'},
'no': {'name': 'Norwegian', 'nativeName': 'Norsk'},
- 'ps': {'name': 'Pashto', 'nativeName': 'پښتو'},
- 'fa': {'name': 'Persian', 'nativeName': 'فارسی'},
+ 'ny': {'name': 'Chichewa', 'nativeName': 'chiCheŵa'},
+ 'or': {'name': 'Odia (Oriya)', 'nativeName': 'ଓଡ଼ିଆ'},
+ 'pa': {'name': 'Punjabi', 'nativeName': 'ਪੰਜਾਬੀ'},
'pl': {'name': 'Polish', 'nativeName': 'polski'},
+ 'ps': {'name': 'Pashto', 'nativeName': 'پښتو'},
'pt': {'name': 'Portuguese', 'nativeName': 'Português'},
- 'pa': {'name': 'Punjabi', 'nativeName': 'ਪੰਜਾਬ'},
'ro': {'name': 'Romanian', 'nativeName': 'română'},
'ru': {'name': 'Russian', 'nativeName': 'русский язык'},
- 'sm': {'name': 'Samoan', 'nativeName': 'gagana faa Samoa'},
- 'gd': {'name': 'Scots Gaelic', 'nativeName': 'Gàidhlig'},
- 'sr': {'name': 'Serbian', 'nativeName': 'српски језик'},
- 'st': {'name': 'Sesotho', 'nativeName': 'Sesotho'},
- 'sn': {'name': 'Shona', 'nativeName': 'chiShona'},
+ 'rw': {'name': 'Kinyarwanda', 'nativeName': 'Ikinyarwanda'},
'sd': {'name': 'Sindhi', 'nativeName': 'सिन्धी'},
'si': {'name': 'Sinhala', 'nativeName': 'සිංහල'},
'sk': {'name': 'Slovak', 'nativeName': 'slovenčina'},
'sl': {'name': 'Slovenian', 'nativeName': 'slovenščina'},
+ 'sm': {'name': 'Samoan', 'nativeName': 'gagana faa Samoa'},
+ 'sn': {'name': 'Shona', 'nativeName': 'chiShona'},
'so': {'name': 'Somali', 'nativeName': 'Soomaaliga'},
- 'es': {'name': 'Spanish', 'nativeName': 'español'},
+ 'sq': {'name': 'Albanian', 'nativeName': 'Shqip'},
+ 'sr': {'name': 'Serbian', 'nativeName': 'српски језик'},
+ 'st': {'name': 'Sesotho', 'nativeName': 'Sesotho'},
'su': {'name': 'Sundanese', 'nativeName': 'Basa Sunda'},
- 'sw': {'name': 'Swahili', 'nativeName': 'Kiswahili'},
'sv': {'name': 'Swedish', 'nativeName': 'svenska'},
- 'tg': {'name': 'Tajik', 'nativeName': 'тоҷикӣ'},
+ 'sw': {'name': 'Swahili', 'nativeName': 'Kiswahili'},
'ta': {'name': 'Tamil', 'nativeName': 'தமிழ்'},
'te': {'name': 'Telugu', 'nativeName': 'తెలుగు'},
+ 'tg': {'name': 'Tajik', 'nativeName': 'тоҷикӣ'},
'th': {'name': 'Thai', 'nativeName': 'ไทย'},
+ 'tk': {'name': 'Turkmen', 'nativeName': 'Türkmen'},
+ 'tl': {'name': 'Filipino', 'nativeName': 'Wikang Tagalog'},
'tr': {'name': 'Turkish', 'nativeName': 'Türkçe'},
+ 'tt': {'name': 'Tatar', 'nativeName': 'татарча'},
+ 'ug': {'name': 'Uyghur', 'nativeName': 'Uyƣurqə'},
'uk': {'name': 'Ukrainian', 'nativeName': 'українська'},
'ur': {'name': 'Urdu', 'nativeName': 'اردو'},
'uz': {'name': 'Uzbek', 'nativeName': 'zbek'},
'vi': {'name': 'Vietnamese', 'nativeName': 'Tiếng Việt'},
- 'cy': {'name': 'Welsh', 'nativeName': 'Cymraeg'},
'xh': {'name': 'Xhosa', 'nativeName': 'isiXhosa'},
'yi': {'name': 'Yiddish', 'nativeName': 'ייִדיש'},
'yo': {'name': 'Yoruba', 'nativeName': 'Yorùbá'},
- 'za': {'name': 'Zhuang, Chuang', 'nativeName': 'Saɯ cueŋƅ'},
+ 'zh-CN': {'name': 'Chinese (Simplified)', 'nativeName': '汉语'},
+ 'zh-TW': {'name': 'Chinese (Traditional)', 'nativeName': '漢語'},
'zu': {'name': 'Zulu', 'nativeName': 'isiZulu'}
};
diff --git a/src/js/options.js b/src/js/options.js
index 0f79b2d..a639c56 100644
--- a/src/js/options.js
+++ b/src/js/options.js
@@ -20,15 +20,22 @@
function printListModal() {
$('#select_language').textContent = '';
var heysortable = sortable.toArray();
- for (var language in isoLangs) {
- if (!inArray(language, heysortable)) {
+ var languages = [];
+ for (var langCode of Object.keys(isoLangs)) {
+ var l = isoLangs[langCode];
+ l['code'] = langCode;
+ languages.push(l);
+ }
+
+ languages.sort((a, b) => a.name < b.name ? -1 : (a.name > b.name ? 1 : 0));
+ languages.forEach(language => {
+ if (!inArray(language['code'], heysortable)) {
var el = document.createElement('option');
- el.setAttribute('value', language);
- el.innerText = isoLangs[language]['name'] + ' (' +
- isoLangs[language]['nativeName'] + ')';
+ el.setAttribute('value', language['code']);
+ el.textContent = language['name'] + ' (' + language['nativeName'] + ')';
$('#select_language').appendChild(el);
}
- }
+ });
}
function init() {
diff --git a/tools/langs/langs.go b/tools/langs/langs.go
index c1bbe90..acfb811 100644
--- a/tools/langs/langs.go
+++ b/tools/langs/langs.go
@@ -7,6 +7,7 @@
"log"
"net/http"
"os"
+ "strings"
)
const isoLangsFileName = "isoLangs.json"
@@ -21,6 +22,12 @@
for currLangCode, currLang := range isoLangs {
if currLangCode == lang {
currLang.CodeName = lang
+
+ // Only consider the first entry of the list (e.g. "a, b, c" --> "a")
+ if index := strings.Index(currLang.NativeName, ","); index > 0 {
+ currLang.NativeName = currLang.NativeName[:index]
+ }
+
return currLang, nil
}
}