现在菜单也被翻译了,还剩下最后一个问题,那就是首页,我们在里面做了硬编码,有些汉字还没有翻译过来。让我们继续前进,将这个页面也完全的翻译为英文。
我们发现,当访问“Item A”的时候,页面的标题是中文的,怎么办呢,这个不翻译了,我们把这个标题去下来就可以了,默认是没有的,我那天多事,就把它加了进来,好像是这样的。导航到admin/build/views/edit/taxonomy_term,在这里编辑第一个Argument,“Taxonomy: Term ID (with depth)”,把下面的“title”置为空。那么可能会有人问,如果我想翻译这个标题,怎么办呢?有多种方式,前面的所给的你都可以尝试一下,我们就不在这个小问题上多讲了。
专注于首页,我们来看一下,page-front,tpl.php中的这段代码,:
<div class="left clear-block" style="width: 45%; float: left;">
<h3>部门A新闻</h3>
<div class="admin-panel">
<h4>子部门A1新闻</h4>
<?php print zp_news(2) ?>
</div>
<div class="admin-panel">
<h4>子部门A2新闻</h4>
<?php print zp_news(3) ?>
</div>
</div>
<div class="right clear-block" style="width: 45%; float: left; margin-left: 20px; ">
<h3>部门B新闻</h3>
<div class="admin-panel">
<h4>子部门B1新闻</h4>
<?php print zp_news(5) ?>
</div>
<div class="admin-panel">
<h4>子部门B2新闻</h4>
<?php print zp_news(6) ?>
</div>
可能又有人说我hardcoding了,刚开始学习Drupal的时候,就是这样,先不做这样的争论。看一下怎么把它实现为可翻译的吧。
这个时候我们就需要对这些汉字进行一些处理了,需要为它们使用t()函数。拿“部门A新闻”来说,我们就需要把它改造为<?php print t(“部门A新闻”)?>,但是t()函数中包含的应该为英文,默认为英文的,比便是我们把简体中文设置为了默认语言,在这里仍然需要为其使用英文。比如,我们把“部门A新闻”翻译为了“Department A’s News”,那么这段代码就应该为<?php print t(“Department A’s News”)?>,我们修改了page-front.tpl.php文件以后,还需要导航到翻译的搜索界面,搜索“Department A’s News”,并将其翻译为“部门A新闻”。
对于page-front.tpl.php文件中的其它简体中文,也需要这样处理。
注意,当我们导航到翻译的搜索界面,admin/build/translate/search,进行搜索时,比如搜索“Department A’s News”,并没有搜索到我们的字符串,不要着急,刷新翻译,再进行搜索,还是找不到,这个时候我们就想到缓存了,清空缓存数据,再进行搜索,还是没有。扩大搜索范围,搜索“Department”,仍然没有找到我们刚才新增的字符串。
怎么回事呢?我们访问首页,发现这几个字符串还在,然后回过头来,再次搜索字符串“Department”,这次找到了。注意,我们访问了首页,这样就可以搜索到首页中硬编码的英文字符串了,记住这一点。如果某一个页面,从未被访问过,那么里面的字符串,你在翻译的搜索界面是搜索不到的。
这样我们的这个网站都被翻译成了英文。希望大家照着这里的描述一步一步地实践一下,先跑通了,慢慢来。有些配置选项,我在这里没有介绍到,大家可以在下面实验一下。记住这里讲到的方法。加上Drupal专业开发指南中的第18章,你就可以掌握Drupal多语言网站的技巧了。