如何在js-code中使用locale实体

时间:2011-02-18 18:02:05

标签: firefox-addon

是否可以获得实体的价值

<!ENTITY gatwayError  "Gateway error">

使用javascript ?现在我使用

在我的xul文件中引用它们
&gatewayError;

更新ff-sidebar.xul<page>内的<stringbundleset id="stringbundleset"> <stringbundle id="strings" src="chrome://myaddon/locale/de/sidebar.properties"/> </stringbundleset>

ff-sidebar.js

在我的var strbundle = document.getElementById("strings"); var localizedString = strbundle.getString("test"); 我点击:

var strbundle = document.getElementById("stringbundleset");

这给了我以下错误

enter image description here

不应该

{{1}}

这给了我没有错误但没有结果。

2 个答案:

答案 0 :(得分:2)

基本上Neil发布的是你需要做的事情(减去第一段咆哮:P)

这是一个例子(基本上是Neil链接的摘要):

您的XUL文件:

<stringbundleset id="strbundles">
    <stringbundle id="strings" src="chrome://yourextension/locale/something.properties"/>
</stringbundleset>

你的something.properties(你定义你的本地化字符串key = value)。当然,您可以拥有任意数量的文件:

something=Some text for localization
something2=Some more text

您的js文件:

var strbundle = document.getElementById("strings");
var localizedString = strbundle.getString("something");

希望这有帮助。

答案 1 :(得分:1)

这适用于少数实体。例如,菜单项有时会有两个实体,文本略有不同,具体取决于菜单项的用途,然后将正确的实体复制到标签上。最糟糕的滥用是针对Thunderbird和SeaMonkey的邮件窗口中的删除菜单项,其中包含用于取消订阅新闻组,删除文件夹,取消新闻帖子,删除单个或多个邮件或使用IMAP标记从文件夹中取消删除单个或多个邮件的标签作为删除模型。呼!

如果你有很多语言环境数据,那么最好将它放在自己的.properties文件中并使用<stringbundle>读取它。如果您的脚本无法访问<stringbundle>元素,则还可以从nsIStringBundle手动检索nsIStringBundleService