原创声明:
本文章为原创,欢迎转载,但请给出本文链接,多谢合作。
本文链接:http://blog.youkuaiyun.com/epinszteinic/archive/2009/11/16/4815039.aspx
本文章为原创,欢迎转载,但请给出本文链接,多谢合作。
本文链接: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里声明)
<?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>
...以下省略
④然后是在js里面使用:
var strbundle = document.getElementById("jsLocaleString");
var msg=strbundle.getString("foo.msg");
alert(msg);
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>
<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 |