我可以从我的Chrome扩展中获得可用的区域设置翻译列表吗
Can I get a list of available locale translations from my Chrome extension?
有没有办法从我的Google Chrome扩展中检索所有可用翻译的列表?
例如,我的应用程序可能包含以下文件夹:
_locales'en'messages.json
_locales'fr'messages.json
_locales'es'messages.json
有没有办法从扩展本身中知道它是en
、fr
和es
?
第二个问题是,有没有办法将特定的messages.json
文件解析为JSON数据?我的意思是比chrome.i18n.getMessage()
提供的功能多一点。
这两个问题都是,这要归功于能够读取扩展自己的文件夹:
chrome.runtime.getPackageDirectoryEntry(function callback)
返回包目录的
DirectoryEntry
。
例如,您可以用这种方式列出区域设置(不具有弹性,添加您自己的错误检查):
function getLocales(callback) {
chrome.runtime.getPackageDirectoryEntry(function(root) {
root.getDirectory("_locales", {create: false}, function(localesdir) {
var reader = localesdir.createReader();
// Assumes that there are fewer than 100 locales; otherwise see DirectoryReader docs
reader.readEntries(function(results) {
callback(results.map(function(de){return de.name;}).sort());
});
});
});
}
getLocales(function(data){console.log(data);});
同样,您可以使用它来获取messages.json文件的FileEntry并对其进行解析。
编辑:或者,一旦您知道文件夹名称,您就可以按照Marco的回答使用XHR。
要知道用户当前使用的语言环境是什么,可以执行以下操作:
currentLocale = chrome.i18n.getMessage("@@ui_locale");
现在currentLocale
将类似于"en"
或"fr"
,或者wathever是用户使用的语言环境。因此,现在您可以使用它来构建特定于区域设置的URL。
要将messages.json
用作Javascript对象,您可以:
- 获取当前区域设置
- 使用
XMLHttpRequest
请求messages.json
文件 - 使用
JSON.parse()
方法将内容解析为对象
假设您有一个messages.json
文件,如下所示:
{
"hello": {
"message": "Hello world!",
"description": "Sample text used for testing."
}
}
您现在将执行XHR来获取文件,类似于以下内容:
var currentLocale = chrome.i18n.getMessage("@@ui_locale"),
xhr = new XMLHttpRequest(),
messages;
xhr.open("GET", "/_locales/"+currentLocale+"messages.json", false);
xhr.send();
messages = JSON.parse(xhr.responseText);
// now you can access the messages like this:
alert(messages["hello"].message);
您将看到您的消息提醒。
相关文章:
- 如何构建'瞬间'在非全局区域设置中工作的函数
- 分析特定区域设置(而不是时区!)中的日期字符串
- JS toLocaleString始终显示货币符号,而不考虑区域设置
- Javascript中与区域设置无关的字符串搜索
- 使用不同的日期格式和区域设置创建时刻
- 如何从区域设置获取日期格式
- 如何使日期区域设置正常工作
- 如何在时间标签和相同的类中以UTC格式重新格式化ISO 8601时间戳,并通过JavaScript根据用户区域设置和时区
- 获取网站访问者的区域设置(语言)
- 无法在文本区域设置文本
- 具体来说,JS引擎对小写和大写区域设置敏感
- 什么是区域设置字符串
- 使用区域设置更改日期格式
- 使用jQuery和PHP加载区域设置变量
- 在HTML中记住用户区域设置选择的最简单方法
- 如何将有角度的文本区域设置为仅以特定单词开头
- 根据区域设置更改 forEach
- 无法读取属性'区域设置'的未定义
- 如何正确设置jQuery日历小部件的区域设置
- i18n:在JavaScript中访问区域设置解析逻辑