开发者

How to use locale entity in js-code

开发者 https://www.devze.com 2023-02-12 11:01 出处:网络
is it possible to get the value of an entity <!ENTITY gatwayError\"Gateway error\"> using javascript? For now I reference them in my xul file using

is it possible to get the value of an entity

<!ENTITY gatwayError  "Gateway error">

using javascript? For now I reference them in my xul file using

&gatewayError;

UPDATE: In my ff-sidebar.xul within the <page> I have

<stringbundleset id="stringbundleset">
    <stringbundle id="strings" 
                  src="chrome://myaddon/locale/de/sidebar.properties"/>
</stringbundleset开发者_运维百科>

In my ff-sidebar.js I do on click:

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

This gives me following error

How to use locale entity in js-code

Should it not be

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

This gives me no error but no result too.


Basically what Neil posted there is what you need to do (minus first paragraph rant :P )

Here's an example (basically digest from Neil's links):

Your XUL file:

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

Your something.properties (there you define your localized strings key=value). Of course you can have as many files as you want/need:

something=Some text for localization
something2=Some more text

Your js file:

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

Hope this helps.


This works for small numbers of entities. For instance, menuitems sometimes have two entities with slightly different text depending on what the menuitem will be used for, and the correct entity is then copied to the label. The worst abuse of this was for the Delete menuitem in Thunderbird and SeaMonkey's mail windows, which had labels for unsubscribing from newsgroups, deleting folders, cancelling news posts, deleting single or multiple messages, or undeleting single or multiple messages from folders using the IMAP mark as delete model. Phew!

If you have lots of locale data then the best thing is to put it in its own .properties file and read it using a <stringbundle>. If your script doesn't have access to a <stringbundle> element it is also possible to manually retrieve an nsIStringBundle from the nsIStringBundleService.

0

精彩评论

暂无评论...
验证码 换一张
取 消