You are here

主菜单(Primary links)的多语言化(Drupal中英文建站手记)

g089h515r806 的头像
Submitted by g089h515r806 on 星期日, 2009-05-03 02:53

现在翻译菜单项,我们这里使用主菜单(一级菜单),对于第一个菜单项“首页”,我们对其进行编辑,在为这个菜单项设置语言选项的下拉框中,我们使用了默认的“所有语言”选项。导航到翻译的搜索界面,搜索“首页”,将其翻译为英文的“Home”。这样就实现了菜单项的翻译。对于菜单项A、菜单项B采用同样的策略,而对于菜单项“关于我们”,我们将它的语言置为“简体中文”,同时添加另一个菜单项“Contact US”,将它的语言置为英文,同时路径设为node/18,也就是对应于node/1的翻译。

       对于菜单项A,菜单项B以及它们的子菜单项,我把它们翻译为英文以后,在中英文之间切换,总是显示中文的内容,英文的没有显示出来.从这一点来看,翻译菜单项最简单的方式,并不是我们这里采用,而是创建两个菜单,一个用于中文,一个用于英文.将两个菜单对应的区块指定到同一个区域中,这样就可以实现同样的功能了,而且会少遇到问题.

       在我们清空缓存,刷新翻译字符串以后,问题还是存在,这个时候怎么办呢,我们将在主菜单下面多添加6个菜单项,并将它们用于英文,而将菜单项A、B等6个菜单项用于中文。

 

       一个非常奇怪的事情发生了,当我添加了一个菜单项“Item A”的时候,把它的路径指定为taxonomy/term/1,把它拖到了菜单项A的下面,这样菜单项B就变为了“Item B”;当我把“Item A”拖到“菜单项A”上时,“菜单项A”就变为了“Item A”;当我将“Item A”与“子菜单项A1”、“子菜单项A2”并列的时候,它们也变为了英语;“子菜单项B1”、“子菜单项B2”也这样变过来了。注意,此时页面的语言为英语。所以我看到了这个奇怪的现象。

       我们把后来添加的“Item A”禁用,这样整个菜单项都被翻译为了英文。在这里面我们采用了混合的方式。

 

       这样整个菜单就翻译完成了。但是还有一点,那就是点击菜单项A时,里面的内容还是包含了中英文的,怎么办,这个时候我们就需要修改Views的设置了。由于我们的分类内容的显示,是由view taxonomy_term控制的,让我们编辑这个view,向里面添加一个语言的过滤器。也就是导航到admin/build/views/edit/taxonomy_term,这里面我们添加过滤器,选择“Node translation: Language”,再选择“Is one of” “Current user's languageCurrent user's languageCurrent user's language”,保存设置。这样当我们访问“菜单项A”时,就显示中文了,当我们选择“Item A” 时就显示英文了

 

       这样我们就实现了主菜单的翻译,我们之所以采用这种方式翻译,而不是说采用“创建两个导航菜单”的方式,主要是想利用现有的这种主菜单和次级菜单之间的这种级联关系,当我们点击“菜单项A”时,“子菜单项A1”、“子菜单项A2”会自动地显示出来。如果我们采用后一种方式的话,也就是创建两个导航菜单,那么我们就需要使用第3方模块,或者自己编写代码来实现同样的效果了;而这不是我们学习的重点。当然,我们在翻译主菜单的时候,也遇到了这样或者那样的问题,凭着经验和运气,我们最终实现了想要的效果。

Drupal版本: