Friday, February 22, 2008

[Joomla] 英文版Joomla!支持中文的解决之道

Source: http://www.pccto.com/bbs/t600/

1,前台中文化
2,UTF-8支持
3,后台英文,跟随官方升级
4,没有乱码

以最新稳定版Joomla 1.0.12 为例,下载最新官方版本。

英文版Joomla完美支持中文

来自Joomla之门的白建鹏为我们带来了这篇非常实用及时的文章,本站在更换系统时用的就是英文原版的Joomla加前台中文,不过并没有严格按照下述步骤进行改动,因为那时我们白老弟的这篇文章还没有写出来呢,不过现在好了,有这方面需求的朋友可以参考这篇文章了。

版权原站所有。原文地址:http://www.joomlagate.com/content/view/20/29/
按理来说,我们要支持中文,直接安装Joomla中文版就可以了。没有必要这么费神研究让英文版来完美支持中文。不过,确实存在这样一种需求:可能是合资公司,为了网站维护人员的方便,后台必须是英文界面,而前台要发布中文内容;或者管理员可能是Joomla发烧友,一心想得到最新的Joomla核心,那么安装英文版就能做到网站核心随时与官方核心同步。比如,我的两个网站,“杏林书香网”和本站即是如此。

当然了,这个方法的创始者并非我,而是我的好友AutoIt。我想大家对这个名字应该很熟悉,如果你是新手,那么一定要去AutoIt 大侠的网站去补补课,顺便表达一下对这位中国Joomla前驱者的尊敬。

言归正传,我下面简单介绍一下这个方法:


第一步:思路
我们知道,英文原版Joomla 1.0.x 版本只支持ISO-88590-1语言编码(1.5版本不适合或者不需要看本文,据说完美支持UTF-8编码)。如果有人说他也能输入中文,那是因为中文也以该编码输出了。我们的目的是支持UTF-8编码的中文。当然,偏爱GB2312编码的用户可以参考本文。

还有一个问题必须注意,就是在英文原版Joomla安装时,会询问是否载入示范数据,默认是载入,而且一般人都会选择载入。这样你才能看清楚Joomla的结构,对于新手来说很有必要这么做。但是,该“示范数据”的SQL文件本身就是ISO-88590-1编码的,因此也需要转换。

英文原版Joomla的前台也是英文界面。我们要汉化前台,必须使用中文语言包。这就需要“拿来主义”一下,我们选择台湾Joomla中文站的汉化版Joomla,从中提取中文前台语言包。

第二步:操作
注:此方法由AutoIt总结,白建鹏执笔记录。感谢AutoIt摸索出的先进经验!
1、下载 Joomla 1.0.11 英文版安装包,最好是 zip 格式;
2、安装一个 FTP 工具(如 FlashFXP 3.4 中文版);
3、上传安装包到网站根目录并解压。如果没有解压权限可以请求管理员帮你解压。否则只能在本地解压后上传;
4、不要开始安装!先从中文版Joomla 1.0.11 版本中提取3个中文前台汉化文件
simplified_chinese.php
simplified_chinese.ignore.php
simplified_chinese.xml
这三个文件位于 /language 目录下面。
打开 simplified_chinese.php 文件并设置编码为 utf-8 。方法:
查找
/** templates/*.php */
DEFINE('_ISO','charset=UTF-8');
DEFINE('_DATE_FORMAT','Y-m-d'); //Uses PHP's DATE Command Format - Depreciated /**
这一段代码,将 charset 的值设置成为 utf-8 即可;
然后用FTP软件上传这三个文件到你网站的 /language 目录下面。
5、修改前台、后台模板,使其能够正确显示 utf-8 编码的中文。方法:
打开前台模板的 index.php 文件(位置 /templates/rhuk_solarflare_ii),找到
原始代码
<meta http-equiv="Content-Type" content="text/html; <?php echo _ISO; ?>" />
这一行代码,修改为
修改后代码<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
并移动到紧跟 <head>标签之后。
同样方法修改后台模板的 index.php 文件( 位置:/administrator/templates/joomla_admin/
)。提醒:如果网站开通后下次更换模板,不论是前台还是后台,都要在上传之后立即按上述方法修改代码,使其接受 utf-8 编码,然后才能启用该模板。否则所有内容变成乱码!

6、修改joomla.php文件(位置 /includes)的1018行左右。
原始代码
if (!$username || !$passwd)
{ echo "<script> alert (\""._login_incomplete. "\"); ......
在 if 这行下面加:
修改后代码 header('content-type:text/html; Charset=UTF-8');
也可能在 function mosErrorAlert 这个函数里.
原始代码
function mosErrorAlert( $text, $action='window.history.go(-1);', $mode=1 ) {
$text = nl2br( $text );
$text = addslashes( $text );
$text = strip_tags( $text );
switch ( $mode ) {
case 2:
header('content-type:text/html; Charset=UTF-8');
echo "<script>$action</script> \n";
break;
case 1:
default:
header('content-type:text/html; Charset=UTF-8');
echo "<script>alert('$text'); $action</script> \n";

6、将 /installation/sql/下的 joomla.sql 及 sample_data.sql 转换为UTF-8编码格式。

7、申请一个 gmail 的信箱,这个信箱将成为网站管理员专用信箱,用来发送会员通知,收取访客反馈等等。建议使用网站域名作为信箱帐户。(如果你没有gmail信箱的注册邀请,可以到本站论坛发布申请,我们有大量邀请向会员发放,先到先得,呵呵)

8、在浏览器地址栏输入 http://www.yoursite.com (注意,这是举例,你需要替换为你自己的网站URL)即可看到安装画面,按照提示一步一步安装;安装完成后看看根目录下的 configuration.php 文件,如果不是 utf-8 编码,也要改成 utf-8 编码。然后进入后台开始安装其他组件。

为了方便大家体验,我已经把1~6的步骤几乎替你完成了,在本站下载栏目,你可以找到修改版的Joomla 1.0.11英文版,上述修改均已经做过。你只需要上传到你的网站,直接开始安装即可。当然,我制作的版本支持的是UTF-8编码,喜欢gb2312编码的用户只好自己按照上述步骤亲手打造了。

顺便说明一下,我提供的这个版本是根据最新的SVN打包的,实际上已经是 1.0.12 开发版了,因此喜欢尝鲜的朋友可以用,注重安全的还是不要采用,直接到官方网站下载1.0.11英文版,毕竟SVN版本经常会有一些漏洞。

Joomla 1.0.12 中文版安装,彻底解决乱码问题

摘自:苏武的BLOG http://zhangxueqing.blog.sohu.com/41701091.html
今天是个好日子,继刚刚发布的《Joomla_1.0.12安装手记》之后,本来想休息一下,再研究该安装手记中未解决的问题,即初始安装Joomla 1.0.12 中文版,彻底解决乱码问题,下午闲来无事,手痒,便决定趁热打铁,没想到很容易大功告成!
还是先说一下初始环境:
Windows平台+Apache2.0.55+php5.1.1+MySQL5.0.27+phpMyAdmin2.9.1.1+ZendOptimizer3.2.0+Joomla_1.0.12-RC1-Full_Package(Chinese).tar.gz
其中对于MySQL和phpMyAdmin的配置不再进行任何限制,而Joomla_1.0.12-RC1-Full_Package(Chinese).tar.gz文件可以到Joomla台湾站点去下载,这里提供一个链接:http://rt.openfoundry.org...l_Package(Chinese).tar.gz

下面说一下安装过程:
1、下载Joomla_1.0.12-RC1-Full_Package(Chinese).tar.gz文件,解压缩到站点的一个文件夹下,比如是joomla文件夹。

2、修改includes文件夹下的database.php文件,找到该行:
//@mysql_query("SET NAMES 'utf8'", $this->_resource);
在其下加入如下两行:
@mysql_query("SET NAMES 'utf8'", $this->_resource);
@mysql_query("SET CHARACTER SET UTF8", $this->_resource);
存盘,切记要用UltraEdit打开,且不要修改该文件的编码格式,以下的修改皆如此!

2、修改installation/sql/sql_simplified_chinese文件夹下的joomla.sql文件(假设joomla安装时选择的是简体中文,如果要选择其它语言安装,则同样的方式修改相应语言文件夹下的文件),寻找关键字#__poll_data,在其下大约是第六行,可以看到如下:
`text` text NOT NULL default '',
把它修改为:
`text` text NOT NULL,
在该文件内进行以下全局替换,把:
TYPE=MyISAM
替换为:
TYPE=MyISAM CHARSET=utf8
寻找关键字#__core_acl_aro,修改以下行:
CREATE TABLE `#__core_acl_aro` (
`aro_id` int(11) NOT NULL auto_increment,
`section_value` varchar(240) NOT NULL default '0',
`value` varchar(240) NOT NULL default '',
`order_value` int(11) NOT NULL default '0',
`name` varchar(255) NOT NULL default '',
`hidden` int(11) NOT NULL default '0',
PRIMARY KEY (`aro_id`),
UNIQUE KEY `section_value_value_aro` (`section_value`,`value`),
UNIQUE KEY `#__gacl_section_value_value_aro` (`section_value`,`value`),
KEY `hidden_aro` (`hidden`),
KEY `#__gacl_hidden_aro` (`hidden`)
) TYPE=MyISAM CHARSET=utf8;
改为:
CREATE TABLE `#__core_acl_aro` (
`aro_id` int(11) NOT NULL auto_increment,
`section_value` varchar(240) NOT NULL default '0',
`value` varchar(240) NOT NULL default '',
`order_value` int(11) NOT NULL default '0',
`name` varchar(255) NOT NULL default '',
`hidden` int(11) NOT NULL default '0',
PRIMARY KEY (`aro_id`),
# UNIQUE KEY `section_value_value_aro` (`section_value`,`value`),
# UNIQUE KEY `#__gacl_section_value_value_aro` (`section_value`,`value`),
KEY `hidden_aro` (`hidden`),
KEY `#__gacl_hidden_aro` (`hidden`)
) TYPE=MyISAM CHARSET=utf8;
ALTER TABLE `#__core_acl_aro` CHANGE `section_value` `section_value` VARCHAR( 240 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL default '0';
ALTER TABLE `#__core_acl_aro` CHANGE `value` `value` VARCHAR( 240 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL default '';
ALTER TABLE `#__core_acl_aro` ADD UNIQUE `section_value_value_aro` ( `section_value` , `value` );
ALTER TABLE `#__core_acl_aro` ADD UNIQUE `#__gacl_section_value_value_aro` (`section_value`,`value`);
存盘!

3、修改installation/sql/sql_simplified_chinese文件夹下的sample_data.sql文件,查找关键字#__contact_details,找到该行:
INSERT INTO `#__contact_details` VALUES (1, '姓名', '职称', '住址', '市/镇', '省/市', '国家/地区', '邮递区号', '电话', '传真', '其它连络资讯', 'asterisk.png', 'top', 'email@email.com', 1, 1, 0, '0000-00-00 00:00:00', 1, '', 0, 12, 0);
改为:
INSERT INTO `#__contact_details` VALUES (1, '姓名', '职称', '住址', '市/镇', '省/市', '国家/地区', '区号', '电话', '传真', '其它连络资讯', 'asterisk.png', 'top', 'email@email.com', 1, 1, 0, '0000-00-00 00:00:00', 1, '', 0, 12, 0);
其实只是把其中的“邮递区号”改为“区号”!
存盘!

4、进入到phpMyAdmin中,建立一个数据库,比如是joomla,其中字元整理选择utf8_general_ci

5、开始安装Joomla,根据安装向导一步一步进行,当要选择数据库名称时,输入第4步建立的数据库名即可。

结束语:
安装joomla是一件闹心的过程,经过多次实践,终于完成,感谢在网上提供了很多文章和帮助的网友,自己的心得也不能独享,奉献给大家!
现在回想起来,其实都是MySQL和phpMyAdmin的字元校正闹的,按照以上步骤安装,joomla的数据库编码格式是utf8的,而且也不再用修改phpMyAdmin的配置,在phpMyAdmin下能够看到joomla数据能够正常显示,也可以用phpMyAdmin正常地导入和导出,joomla前台显示也完全正常!省去了以后的很多麻烦!

No comments: