幻想小说网 酷文学 深夜书屋 叮当小说网 找小说网 无限小说网 红尘小说网

Mozilla研究—minimo的本地化

Mozilla研究—minimo的本地化

 

转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd

作者联系方式:Li XianJing <xianjimli at hotmail dot com>

更新时间:2007-3-8

 

mozilla是一个以浏览器为中心的软件平台,它在我们平台中占有重要地位。我们用它来实现WEB浏览器、WAP浏览器、邮件系统、电子书和帮助阅读器等应用程序。为此,我最近花了不少时间去阅读mozilla的代码和文档,我将写一系列的BLOG作为笔记,供有需要的朋友参考。本文介绍一下minimo的本地化。

 

国际化通常简写为I18N ,其中18表示I和N之间省略了18个字母;而本地化同样可简写为L10N。在我的印象中,国际化通常是一些基础平台和库,为本地化提供必要的支持。而本地化则是为某个国家/地区做些特别的定制(如文字翻译)。没有国际化的支持,本地化将非常困难。没有本地化的实现,国际化也没有用武之地。两者相辅相存,所以大多数情况下,很少严格区分这两个概念,本文中也是如此。

 

国际化/本地化是非常复杂的,它要考虑很多问题。比如,翻译后字符串长度对界面的影响、输入法、字符串编码、时间/日期/货币的格式、文字显示的方向(左到右和右到左),甚至涉及宗教风俗等等。这里我们只介绍字符串本地化的问题。

 

我们知道,在Windows下,开发时字符串放在资源文件里,编译后放在可执行文件或动态库里,运行时通过字符串ID去查询实际的字符串。这种方法只适用于Windows平台,其它平台通常都有自己的方法。Linux版的minimo,它采用了四种不同的方法:

 

1.         C/C++中使用gettextGettextLinux下处理字符串本地化最正统的方法,特别适用于C/C++文件。Minimo主界面及其它设置界面都没有支持字符串本地化,它在GTK控件中直接显示原始的英文字符串。要本地化字符串只能自己处理,这可以参照Linux下开发多语言软件

 

2.         XML中使用实体(entity)XML中实体(entity)C/C++中的宏有点类似,解析器在解析时才展开为实际的内容,比如&lt;表示字符’<’Mozilla通过实体来引用字符串,比如实例&warningText3.label;可以引用英文中的"You should only install software from sources that you trust."。实体的定义是放在DTD文件中,每种语言都有对应的DTD文件。DTD本来是用于描述语言语法的,恰好也可以用来存放实体,这种方法即方便又合符标准。

 

下面是在xpinstallConfirm.xul引用DTD文件的示例:

<!DOCTYPE dialog SYSTEM "chrome://mozapps/locale/xpinstall/xpinstallConfirm.dtd">

 

3.         javascript中使用属性(properties)。前面两种方法在javascript中都行不通了。为此Mozilla自己实现了字符串加载方法,字符串放在. properties文件中,javascript通过nsIStringBundle接口去查询对应的字符串。

 

XML文件中声明properties的位置:

<stringbundle id="xpinstallConfirmStrings"

                src="chrome://mozapps/locale/xpinstall/xpinstallConfirm.properties"/>

      

       javascript中获取字符串:

       var bundle = document.getElementById("xpinstallConfirmStrings");

       var introString = bundle.getString("itemWarningIntroSingle");

 

4.         desktop中使用freedesktop的方法。desktop文件是linux桌面的一个标准,它用来把应用程序集到桌面(如开始菜单)里面来。应用程序要提供一个.desktop文件,里面有相应的描述信息。桌面根据这些信息在适当的位置加上应用程序的入口。Minimodesktop文件放在embedding/minimo/ipkg目录里,可以在里面加入其它语言的字符串。具体方法见Desktop Entry Specification

 

~~end~~

 

posted on 2007-03-14 20:35  张云临  阅读(137)  评论(0编辑  收藏  举报

导航