排序语言的下拉列表为本地化Chrome扩展
Sorting a dropdown list of languages for localised Chrome extension
在我的扩展中,我有一个用户可以选择的语言列表(这些是翻译工具的目标语言)。在尝试添加本地化到这个扩展,我已经在消息文件中创建了条目(这是西班牙语):
_locales/es/messages.json
"extLang_af": {
"message": "Africaans",
"description": "Localised name for Afrikaans"
},
"extLang_sq": {
"message": "Alban'u00E9s",
"description": "Localised name for Albanian"
},
"extLang_ar": {
"message": "'u00C1rabe",
"description": "Localised name for Arabic"
},
...
在options.html
文件中我有以下内容:
<select id="target">
<option id="af">Afrikaans</option>
<option id="sq">Albanian</option>
<option id="ar">Arabic</option>
...
</select>
<script src="options.js"></script>
和我有javascript在options.js
更改名称。
var langs = ['af', 'sq', 'ar', ...]
langs.forEach(function(lang) {
var msg_name = "extLang_" + lang;
var localised_lang = chrome.i18n.getMessage(msg_name);
document.getElementById(lang).text=localised_lang;
});
我的问题是,因为原来的<select>
选项是为英语排序的,语言选项在翻译后是无序的。我认为它可以通过从存储在_locales/es/messages.json
文件中的排序列表以编程方式生成<select>
选项来解决,但不知道这是否是最好的方法。有解决这个问题的标准方法吗?
我知道这不是很漂亮,但它似乎工作。将options.js
中的javascript替换为:
var langs = ['af', 'sq', 'ar', ...]
var langsToSort = [];
langs.forEach(function(lang) {
var msg_name = "extLang_" + lang;
var localisedLang = chrome.i18n.getMessage(msg_name);
langsToSort.push([localisedLang, lang]);
});
var sortedLangs = langsToSort.sort(function(a,b) {
return a[0].localeCompare(b[0]);
});
// Get rid of current contents of the select dropdown
document.getElementById("target").innerHTML = "";
// Set the dropdown elements
sortedLangs.forEach(function(lang) {
var x = document.getElementById("target");
var optn = document.createElement("OPTION");
optn.text = lang[0];
optn.value = lang[1];
x.add(optn);
});
相关文章:
- Chrome WebKitGetUserMedia
- JQueryhide()不适用于Mozzilla,但适用于Chrome
- 在chrome.tabs.onCreated之后加载HTML页面
- chrome扩展中的navigator.geolocation.getCurrentPosition
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- chrome扩展更改主机/域警告
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 如何在chrome扩展中重定向到html页面
- Chrome扩展没有't在重新加载之前考虑期权价值
- Google/html5语音识别JavaScript SDK Chrome网络工具包SpeechRecognition
- 激活chrome上的chrome.notifications对象
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- JS可以在Chrome中工作,但不能在Firefox中工作
- Chrome加载旧版本的Javascript文件
- 试图阻止Chrome通过扩展关闭
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Chrome扩展中的本地化
- 添加Chrome扩展时的本地化问题——说我没有指定默认的语言环境,尽管我指定了
- 排序语言的下拉列表为本地化Chrome扩展