javascript - 我可以从我的 Chrome 扩展程序中获取可用语言环境翻译的列表吗?

标签 javascript google-chrome google-chrome-extension internationalization

有没有办法从我的 Google Chrome 扩展程序中检索所有可用翻译的列表?

例如,我的应用程序可能包含以下文件夹:

_locales\en\messages.json
_locales\fr\messages.json
_locales\es\messages.json

有没有办法从扩展本身中知道它是 enfres

第二个问题,有没有办法将特定的 messages.json 文件解析为 JSON 数据?我的意思是比 chrome.i18n.getMessage() 提供的功能多一点。

最佳答案

对这两个问题都是肯定的,这要归功于读取扩展程序自己的文件夹的能力:

chrome.runtime.getPackageDirectoryEntry(function callback)

Returns a DirectoryEntry for the package directory.

例如,您可以以这种方式列出语言环境(没有弹性,添加您自己的错误检查):

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's answer 中的说明使用 XHR知道文件夹名称后。

关于javascript - 我可以从我的 Chrome 扩展程序中获取可用语言环境翻译的列表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26273405/

相关文章:

javascript - Google Chrome 扩展程序(扩展程序启动时触发事件)

javascript - 我可以在 Chrome 扩展的不同部分之间共享代码吗?

JavaScript 对对象数组的递归搜索

Javascript:在(50000 * 50000 网格)二维数组中寻路?

Javascript if else 总是返回 2 else if

google-chrome - 使用 ffmpeg 编码的视频无法在 Chrome 中播放

javascript - 解决混合内容的 Chrome 扩展?

javascript - Kendo 网格文本按列宽切割

google-chrome - 为客户解决 Chrome 中的 "not commonly downloaded"警告

javascript - 无法从弹出窗口访问网页 DOM; console.logs不显示