Chrome扩展程序-清单版本2 _locales问题

22

我试图更新我的扩展程序的清单版本,但出现了以下问题:

默认语言环境已指定,但缺少_locales子树。

这是我的manifest.json文件,请问问题出在哪里,我该怎么做?

{
  "name": "Selected Text", 
  "version": "0.1", 
  "manifest_version": 2,
  "description": "Selected Text and some changes", 
  "default_locale":"en", 
  "browser_action": { 
    "default_title": "S. Text", 
    "default_icon": "online.png",
    "default_popup": "popup.html"
  },
  "permissions": [
    "tabs", 
    "chrome://favicon/", 
    "http://*/*",  
    "https://*/*" 
  ],
  { 
    "matches": ["http://*/*"], 
    "js": ["selection.js"], 
    "run_at": "document_start", 
    "all_frames": true
  }
}
4个回答

48
看起来您的扩展程序根目录缺少所需的 _locales 目录。由于您指定了 default_locale,因此您需要提供一个 _locales 目录,其中包含您的国际化选项。在您的情况下,您至少需要有一个名为 _locales/en 的文件夹,其中包含一个 messages.json 文件,在其中设置特定的参数(更多信息请参见 这里)。

谢谢!但是当清单版本问题解决后,我的代码停止工作了。你有什么想法吗? - elianore
@elianore 没问题!在你的扩展中,你是否特别包含了国际化选项?也就是说,你是否已经通过包含不同的翻译等来国际化它?如果你没有其他的翻译(或者不打算有它们),你可以简单地删除 default_locale 参数和 _locales 文件夹(因为一个需要另一个)然后它应该可以工作。如果你确实想要国际化,你需要创建至少一个 messages.json 文件(根据链接)来包含你的翻译。 - RocketDonkey
manifest.json文件: { "name": "选中文本", "version": "0.1", "manifest_version": 2, "description": "选中文本并进行一些更改", "browser_action": { "default_title": "S. 文本", "default_icon": "online.png", "default_popup": "popup.html" }, "permissions": [ "tabs", "chrome://favicon/", "http:///", "https:///" ], "content_scripts": [ { "matches": ["http:///"], "js": ["selection.js"], "run_at": "document_start", "all_frames": true } ] } - elianore
function loadXMLDoc(docURL) { if (window.XMLHttpRequest) { // 火狐,欧朋,谷歌浏览器,Safari xhttp = new XMLHttpRequest(); } else { // Internet Explorer xhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xhttp.open("GET",docURL,false); xhttp.send(); return xhttp.responseXML; } function loadDoc(docURL) { if (window.XMLHttpRequest) { // 火狐,欧朋,谷歌浏览器,Safari xhttp = new XMLHttpRequest(); } - elianore
sendResponse({data: window.getSelection().toString()}); json = loadDoc("http://api.wordreference.com/0.8/2d882/json/enfr/"+window.getSelection().toString()); console.info(json); localStorage.setItem(this.document.location.href, Avalue +" _- "+ window.getSelection().toString()); }else{ sendResponse({data: window.getSelection().toString()}); json = loadDoc("http://api.wordreference.com/0.8/2d882/json/enfr/"+window.getSelection().toString()); console.info(json); localStorage.setItem(this.document.location.href, window.getSelection().toString()); - elianore
显示剩余16条评论

1
请检查文件层次结构。应该像下面这样,
- manifest.json
-  _locales    
    -  en 
        - messages.json
    -  es
        - messages.json
    -  ...
        - messages.json

参考资料


0

我遇到了同样的问题。

它是"default_locate": "en",

但仍然存在错误。所以就把它留空。


-5

"default_locale":"zh_cn",

看看这段代码,仔细思考一下,你会得到解决方案的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接