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

来源:互联网 发布:s7200仿真软件 编辑:程序博客网 时间:2024/05/17 23:28
原创声明:
    本文章为原创,欢迎转载,但请给出本文链接,多谢合作。
    本文链接:http://blog.csdn.net/epinszteinic/archive/2009/11/11/4799036.aspx

最近正在学做firefox的扩展。做语言国际化的时候,虽然官方有教程,但是写的不够详细,着实让我费了好大劲。。。
把自己的经验写下来,作为官方教程的一个补充吧。
国际化有两种,一种是定义dtd,一种是使用properties文件。
首先介绍如何使用dtd。
dtd文件是用于xul文件(用户界面描述文件 -- 请允许我用这个词来翻译)里面。
如何进行配置才能正常使用?下面是步骤:
①构造文件夹:
    你的应用 --  content
                  |- locale
                  ..      |- en-US
                          |- zh-CN
                          |- ja-JP
                          ..

②为你的dtd文件取个名字吧,在心里取好就行,或者写在纸上。我们暂时给它取个名字叫:abc.dtd
    这个文件里面要怎么写,放在哪里?不要着急,下面接着写。需要明确的是,locale里的每个子文件夹里都有一个abc.dtd。

③在chrome.manifest文件里,添加声明。

    locale    news_common_viewer       en-US                    locale/en-US/
    locale    news_common_viewer       zh-CN                    locale/zh-CN/
    locale    news_common_viewer       ja-JP                    locale/ja-JP/
    ...

④在要使用这个dtd的xul文件里声明使用,否则会报错。
    如何加声明?代码片段(红字,位置也要注意,一般放在<?xml>的声明下面就可以):
    <?xml version="1.0"?>
    <?xml-stylesheet href="chrome://myext/content/myext.css"?>
    <!DOCTYPE window SYSTEM "chrome://myext/locale/abc.dtd">
    <overlay id="xxx" ....以下省略>
    Q:为什么是locale/abc.dtd,而不是locale/en-US/abc.dtd,locale/zh-CN/abc.dtd呢?
    A:因为firefox会根据当前firefox的语言设置来自动去en-US、zh-CN、ja-JP这些文件夹里面找abc.dtd,所以声明的时候不需要en-US这些目录。因此,每个子目录里面,都会有一个abc.dtd。

⑤然后是用不同的语言编写每一个abc.dtd就可以了。
    dtd的内容格式如下:
        <!ENTITY key "value">
      其中,key可以很长,可以用「.」分割,value为任意字符串文字。
    举个例子:
       <!ENTITY ok_btn.val "提交">
       <!ENTITY ok_btn.accesskey "f">

⑥写完dtd以后,就可以在xul文件里面使用了,以下是代码片段:
    <popup id="pop1">
        <menu id="pop_menu1" label="&ok_btn.val;" accesskey="&ok_btn.accesskey;" insertafter="context-reload">
    ...省略
    </popup>
    使用格式:「&」号,然后是key,然后是「;」号

dtd文件的使用就介绍到这里,下一篇是properties文件的使用。

测试环境: Windows Vista Firefox 3.5.5
原创粉丝点击