在本节中,我们将完成让我们的组件支持多语言。
关于joomla实现joomla的理论,在前面的章节已经介绍了。请查看相关章节的。在这里简单的描述一下,将guestbook进行国际化需要做的步骤。
1,在编码过程中使用相关的规则和函数让组件使用joomla的多语言支持机制。
joomla 对多语言的支持,其实是对字符串的替换。首先在源代码中提供一个带翻译的字符串例如COM_GUESTBOOK_MENU_NAME.然后在各个语言文件 中分别对其进行描述。例如,在zh-CN/zh-CN.com_guestbook.sys.ini有 COM_GUESTBOOK_MENU_NAME =“ZMAX留言板”。在en-GB/en-GB.com_guestbook.sys.ini有 COM_GUESTBOOK_MENU_NAME="ZMAX GuestBook".我们只需要将文件放到正确的位置,joomla多语言机制就会帮我们实现。
需要注意的时,我们会遇到两种需要翻译的语言,一种是XML中的语言。比喻下面的代码:
<metadata>
<layout title="COM_GUESTBOOK_VIEW_POST_MESSAGE_TITLE">
<message>
COM_GUESTBOOK_VIEW_POST_MESSAGE_DESCRIPTION
</message>
</layout>
</metadata>
另一种是php源代码中,例如下面的代码:
<div class="title subject">
<?php echo JText::_('COM_GUESTBOOK_MESSAGE_LABEL_SUBJECT');?>//JText::_()这个函数负责joomla在php代码中的多语言
</div>
很明显,第二种是动态加载的,只要没执行一次系统就会动态的加载一次。也就是,当我们改了语言文件的时候,只需要刷新就可以看见效果。但是第一种却不是这样的。
实际使用中,发现在修改第一种语言文件的时候,需要重新安装整个扩展才能够使用新的语言。具体为什么是这样,还没有弄清楚。
2,增加语言文件夹。
有 了上面的介绍。增加语言文件夹就很自然了。joomla的语言文件是分两部分的,一部分是前台语言,一部分是后台语言。在每一部分,有分为两种语言类型, 一种是.sys.ini (系统使用),一种是.ini(普通使用)。在本组件中,分别在site目录下建立language文件夹,在admin目录下建立language文件 夹。然后放入对应的语言文件即可。例如:zh-CN/zh-CN.com_guestbook.sys.ini,zh- CN.com_guestbook.ini.
3,修改XML文件,让其包含语言文件夹。
做完了上面的部分,剩下的就是告诉安装脚本,叫语言文件拷贝到对应的位置。一个典型的xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="2.5.0" method="upgrade">
<name>COM_GUESTBOOK</name>
<!-- The following elements are optional and free of formatting constraints -->
<creationDate>2013-9-26</creationDate>
<author>min.zhang</author>
<authorEmail>这个 E-mail 受反垃圾邮件程序保护,您需要启用 JavaScript 才能查看。</authorEmail>
<authorUrl>http://www.zmax99.com</authorUrl>
<copyright>All right @zmax</copyright>
<license>License</license>
<!-- The version string is recorded in the components table -->
<version>0.0.1</version>
<!-- The description is optional and defaults to the name -->
<description>COM_GUESTBOOK_DESCRIPTION</description>
<install> <!-- run on install-->
<sql>
<file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
</sql>
</install>
<uninstall>
<sql>
<file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
</sql>
</uninstall>
<update>
<schemas>
<schemapath type="mysql">sql/updates/mysql</schemapath>
</schemas>
</update>
<!-- Site Main File Copy Section -->
<!--
注意folder属性:这个属性指定了安装包中需要被copy的目录的名称,下面的代码说明需要copysite目录下的文件
-->
<files folder="site">
<filename>guestbook.php</filename>
<filename>controller.php</filename>
<filename>index.html</filename>
<folder>css</folder>
<folder>models</folder>
<folder>views</folder>
<folder>language</folder>
</files>
<administration>
<!-- Administration Menu Section-->
<menu>COM_GUESTBOOK_MENU</menu>
<!-- Administration Main File Copy Section -->
<files folder="admin">
<folder>models</folder>
<folder>sql</folder>
<folder>tables</folder>
<folder>views</folder>
<folder>language</folder>
<filename>guestbook.php</filename>
<filename>controller.php</filename>
<filename>index.html</filename>
</files>
<languages folder="admin">
<language tag="zh-CN">language/zh-CN/zh-CN.com_guestbook.ini</language>
<language tag="zh-CN">language/zh-CN/zh-CN.com_guestbook.sys.ini</language>
</languages>
</administration>
</extension>
到此,就完成了组件的国际化了。如果要增减语言,只需要在language文件夹下增加对应语言对字符串的翻译就行了。
评论 (0)