Joomla之门广告招商,PR=5,alexa 排名2万1
English French German Italian Portuguese Russian Spanish

捐款 -> 升级 -> 下载

淘宝捐款升级到高级会员

点击这里给我发消息

Donate to joomlagate.com to translate more Joomla! extensions and free Joomla! templates

下载最新版本 Joomla!

Joomla! CMS - free Joomla! templates
download Joomla! 1.5.15 Chinese version

文章分类阅读

会员登录

 
 
Joomla之门 Joomla教程 Joomla 1.0 教程 Joomla!扩展(组件、模块、触发器)的汉化
Joomla!扩展(组件、模块、触发器)的汉化 E-mail
作者:白建鹏   
2007-02-07

当本站会员brrw在论坛提出“能不能详细的讲一下如何给一个普通的模块外挂个xml中文汉化”这个问题,我沉思了很久。正如AutoIt所说,“汉化”是一个很严格的概念,不仅包含了“翻译”,而且更意味着“本地化”(localization)。我所做的工作,只能算是翻译,还不敢说是汉化。况且,现在Joomla! 1.5 版本呼之欲出,新版本的汉化方法必将有所不同,我们再讨论Joomla! 1.0.x 版本的汉化似乎太晚。最后,我还是决定讲一讲,就算是给Joomla!的新用户介绍一下我的工作过程。

 

标准组件的汉化

 

“标准组件”这个词是我发明的。我认为具有以下特征的组件可以称之为标准组件:

  1. 用zip格式打包;
  2. 具有固定的标准目录名称,比如语言目录用language,图片目录用image,模板目录用template;
  3. 至少含有一个english.php语言文件;
  4. 至少前台的界面语言都在语言文件中能够找到;
  5. 使用默认安装方式;
  6. 附带readme.txt文档或者在安装完成后欢迎界面上显示重要提示信息;
  7. xml安装文件使用英文并且保存为utf-8格式;

不过,符合以上要求的并不多。尤其是很多组件作者经常在语言文件中漏掉需要翻译的字串,甚至有些作者干脆连language目录都没有,给汉化工作带来很大困难。我先说说对标准组件如何汉化。

对于含有language或者lang目录的组件,我们将其中的语言文件翻译就可以了。一般来说,语言文件的文件名都是以该国语言的英文说法命名,比如英文语言文件叫english.php,韩文语言文件叫korean.php,德文语言文件叫dutch.php或者germany.php,西班牙语言文件叫spain.php。大多数扩展都没有提供中文语言文件,我们需要自己手动建立一个。鉴于汉字有简体、繁体之分,大陆与港台汉字又有编码之不同,所以我们需要分别建立。将english.php这个文件复制一份,重命名为simplified_chinese.php,这就是简体中文语言文件的名称;同理,再复制一份重命名为traditional_chinese.php,就成了繁体中文的语言文件。基本上很多中文用户都选择了台湾制作的中文utf-8版本或者本站提供的英文utf-8版本Joomla作为核心,因此本文仅以utf-8编码为例,其他编码参照本方法稍作修改即可。

EmEditor编辑器的“另存为”对话框

用EmEditor这个编辑器(当然,你可以用其他编辑器)打开simplified_chinese.php文件,不做任何修改,立即选择菜单上“文件-另存为”,然后在保存对话框上选择文件编码为utf-8,点击“保存”按钮。由于没有更改文件名称,EmEditor会提示是否要覆盖原文件,选择“是”即可。这样我们就完成了编码转换工作,因为大多数english.php文件都采用了iso-8859-1编码。

注意:上图中“编码”下方有一个选项“添加Unicode签名(BOM)”,这一项一定不能钩选。BOM即“编码字节序标识”(Encoding Bit Order Mark)。在http://dev.csdn.net/develop/article/69/69883.shtm 这篇文章中有关于BOM的解释,如果你搜索“BOM问题”这个关键词,就会发现BOM会带来一些麻烦。因此,我建议不要钩选此项。

再次用EmEditor打开simplified_chinese.php文件,可以看到文件头部有若干行注释,一般以双斜线//开始或者/*符号开始。注释部分声明了文件版权信息,有的还包含致谢信息等。汉化作者可以在此添加自己的名字和联系方式,如果英文语言文件已经有author(作者)一项,你将名字修改即可(下图中第9行)。不过注意,如果这个author意指组件作者,你就必须保留该行,然后在注释末尾添加translator(译者)信息作为你的版权标记。还有一点要注意,有些语言文件头部注释部分的每一行前面有一个@字符(如下图所示),这是为了便于程序读取,因此你添加自己的联系信息时也要按照这个格式来编辑。

Joomla!标准组件语言文件的翻译

注释之后,就是翻译字串的部分。上图中第12行就是第一个翻译字串,不过这个字串一般不需要翻译,它表示的意思是当有人试图直接通过URL访问这个语言文件时,就会显示“您无权访问”的信息。在很多php文件中都有这一句,其作用就是禁止直接访问该文件,以避免遭到攻击。访客必须按照网站前台的链接结构来浏览网站,或者提交信息,而不能随意打开其他文件。

从上图中还可以看出,每一行代表一个需要翻译的字串,并且以DEFINE这个词开始。Define在英文中的意思就是“定义”。在Define之后的括号中,有前后两对双引号,中间以英文逗号分隔。第一对双引号中展示字串代码,第二对双引号中提供翻译后的结果。我们刚才建立的新语言文件中,其第二对双引号中应该还是英文的说法,我们只需要将其翻译为中文即可。有的语言文件不一定使用双引号,而是使用单引号。例如上图的第12行就是这样。单引号、双引号对于翻译的效果没有任何影响,唯一需要注意的是,如果你翻译的结果中需要添加引号,请使用中文引号,以免英文引号引起混乱。有时候你可以看到英文语言文件中,对于字串中的引号使用了斜线前导符(/')来表示引号,我们只需要保留最外围的一对引号即可,中间的引号一律用中文引号代替。

通常情况下,我都是用鼠标拖选第二对引号中的所有内容,然后翻译成汉语。不过,如果其中还有 \n 这个符号,千万不要删除,也不必汉化,保留即可——这是换行符(回车符),表示下一行开始。

当整个文件翻译完毕,我们就完成了大半工作。将simplified_chinese.php文件添加到组件安装包里的language目录中并不能使组件将其安装到网站。因为组件安装时总是执行xml文件中的指令来上传文件。因此,我们还要打开xml安装文件,搜索langauge或者lang(取决于语言文件目录的名称),就能迅速找到安装语言文件的指令。复制其中某一行,比如<filename>language/english.php</filename>,然后在紧邻下方回车创建一个新的空行,粘贴刚才复制的一行进去,并修改为<filename>language/simplified_chinese.php</filename>。如下图所示(图中language一词带有绿色背景是因为EmEditor自动将搜索关键词高亮显示)。然后保存该xml文件并替换安装包中的原文件。现在如果安装该组件,就能自动上传simplified_chinese.php文件到语言文件目录。

如果要顺便制作一个繁体中文版语言文件,我们不需要重新翻译一遍english.php文件。如果你的EmEditor安装了简繁转换插件,就可以将simplified_chinese.php文件复制一份,重命名为traditional_chinese.php文件,然后用EmEditor打开,点击菜单上“工具 -> 插件  -> 转换为繁体中文”,一眨眼所有的简体字串已经变成了繁体。当然,文件头部的simplified_chinese.php标识不会自己变,需要手动修改。另外,一些语言习惯不会自己变。比如台湾人喜欢将“文件”称为“档案”,将“打印”称为“列印”,将“用户”称为“使用者”。所以,制作繁体语言文件需要先将这些叫法不同的词汇用查找替换的方法修改过来,然后使用上面转换方法转为繁体。同样的,我们把traditional_chinese.php文件复制到安装包中的language目录中,还要在xml文件中按照刚才的方法再添加一行命令,以保证安装时自动上传繁体语言文件。