很久前用MediaWiki网站的时候发现中文Wiki站有一个很方便的简体/繁体转换功能,是MediaWiki自带的,我们用这种办法做了好几个站的繁体版本,还获得了不少港台海外用户来访问。
转用Drupal后,Drupal有更强大、更通用的多语言支持,但没有中文Wiki站那样的简体/繁体自动转换功能,我们自己也一直没有尝试做这种转换。
在商量准备做更多的实用查询词典类网站的时候,想到要是Drupal站也有简体/繁体转换这个功能就好了,这两天花了一些时间来尝试,还基本上可以成功!现在记录一些步骤和要点:
- 在一个现有的中文Drupal站中增加繁体正体语言(管理 » 配置 » 地区和语言);
批量设置的时候用drush dl drush_language添加drush language命令,然后用drush language-add zh-hant添加; - 简体中文依然是默认,English设置为不启用;
批量设置办法:drush language-disable en; - 简体中文的设置“路径前缀语言代码”设置为空;
批量设置办法:drush language-prefix zh-hans '' - 繁体中文的设置“路径前缀语言代码”设置为zh-hant;
批量设置办法:无需设置 - “管理 » 配置 » 地区和语言 » 语言”设置“用户界面文本语言检测”,勾选“网址”;
批量设置办法:drush ev '$negotation = array( LOCALE_LANGUAGE_NEGOTIATION_URL => 2);language_negotiation_set(LANGUAGE_TYPE_INTERFACE, $negotation);' - 配置“网址”的“URL片段确定语言”为“路径前缀”(默认就是这样);
批量设置办法:无需设置 - 如果安装了语言更新模块,可以使用“管理 » 配置 » 地区和语言 » 语言”的“更新翻译”功能来添加繁体翻译;
批量设置办法:drush en l10n_update -y(如果一个系列网站共用翻译库则只安装在一个站) - 修改内容类型设置,将“多语言支持”设置为“已启用”(如果是批量导入的内容类型,默认里面内容都是“不区分语种”,可以不改这里);
批量设置办法:drush vset language_content_type_page 1 - 查看“内容”,要把“简体中文”内容修改为“不区分语种”,页面数量少可以直接编辑修改,如果页面数量太多可以在数据库中批量修改(UPDATE `node` SET `language` ='und' WHERE `language` = 'zh-hans';UPDATE `url_alias` SET `language` ='und' WHERE `language` = 'zh-hans';);
- 修改“区块”设置,添加“语言切换器(用户界面文本)”都合适的位置。
批量设置办法:drush sql-query "update block set status='1', region='sidebar_first', weight='-20' where module ='locale' and delta = 'language' and theme = 'responsive_bartik';"
这样就完成了基本设置,另外还有一个重要工作是修改显示模板,用php来对简体的内容进行转换,这个有点复杂,我是在自建的“中文简体繁体转换的模块”中添加一个转换函数,然后在各个地方调用这个函数(PHP程序请看我另外一篇博文《一个独立可用的中文简体繁体转换PHP程序》)。
还剩下一些细节,例如:
- html.tpl.php修改:$head_title, <link rel="alternate" hreflang=...;
- page.tpl.php修改:对html.tpl.php进行全面转换后,本文件可以不改;
- node.tpl.php修改:对html.tpl.php进行全面转换后,本文件可以不改;
- Block的修改:对html.tpl.php进行全面转换后,可以不改;
- Views的修改:对html.tpl.php进行全面转换后,可以不改;
- xmlsitemap修改:xmlsitemap.page.inc,<xhtml:link rel="alternate" hreflang=...;
- robots.txt处理;
- 自动识别跳转;
- 百度站长、Google Webmaster Tools添加。
今天又花了一些时间把我的这个博客网站改为简体/繁体对照的站点了,以后还可以把已经建好的中文简体站点做这样的扩展,新建的站点可以直接从开始就设置为简体/繁体对照。
补充:已经这样处理的案例:
评论