Firefox扩展开发笔记 - 关于locale的使用(二)

本文介绍如何在Firefox扩展中使用properties文件进行本地化设置,包括文件内容格式、存放路径及在XUL和JS文件中的调用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原创声明:
    本文章为原创,欢迎转载,但请给出本文链接,多谢合作。
    本文链接:http://blog.youkuaiyun.com/epinszteinic/archive/2009/11/16/4815039.aspx

这一篇是介绍如何使用properties文件,也是官方教程 的补充。

①properties文件的内容:
foo.msg=hello world

②properties文件如何存放?
  存放路径与dtd文件的存放路径一致(请参考「Firefox扩展开发笔记 - 关于locale的使用(一) 」 ),
  一句话来说:chrome.manifest文件里locale的声明以及locale文件夹的构造要一致(参考前一篇locale文件夹的构造)。

③在xul文件里,定义使用properties文件,代码片段:

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://myextension/content/myextension.css"?>
<!DOCTYPE window SYSTEM "chrome://myextension/locale/myextension.dtd">

<overlay id=""
    xmlns:html="http://www.w3.org/1999/xhtml"
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

     <stringbundleset>
        <stringbundle id="jsLocaleString" src="chrome://myextension/locale/myextension.properties"/>
    </stringbundleset>


...以下省略
注意,locale下的en-US、ja-JP、zh-CN的子目录不需要写出来(已经在chrome.manifest里声明)

④然后是在js里面使用:
    var strbundle = document.getElementById("jsLocaleString");
    var msg=strbundle.getString("foo.msg");
    alert(msg);

需要注意的是,只有浏览器加载完了以后,才能使用stringbundle。
这是什么意思呢?
  意思是,在xul加载的同时,不能使用stringbundle,在事件响应里,可以使用stringbundle。
xul可以内嵌js脚本,比如:
...
<overlay ...>
    <stringbundleset>...

<script>
...
    //在此处使用stringbundle的话,是取不到值的
    var strbundle = document.getElementById("jsLocaleString");
    var msg=strbundle.getString("foo.msg");
    alert(msg);
</script>

</overlay>

另外,写中文,日文之类的properties文件的时候,经过测试,直接写中文字日文字,存成UTF-8的文件就可以,而不需要用java的natice2ascii.exe之类的程序转换。

测试环境:
 Windows Vista
 Firefox 3.5.5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值