您的位置:首页 > 运维架构

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

2009-11-11 16:51 288 查看

原创声明:

    本文章为原创,欢迎转载,但请给出本文链接,多谢合作。

    本文链接: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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息