使用Drupal创建多语言站点

记录在此备查。

  • 界面多语言化
  • 内置变量多语言化
  • 内容多语言化
  • 术语表多语言化
  • CCK多语言化
  • 菜单多语言化
  • 区块多语言化

 

界面多语言化

1.启用 Locale 模块并导入中文语言包


2.访问configuration-->Regional and language --> Languages,列出所有语言。点后面的"Edit"按钮,进入编辑语言界面,将“路径前缀(Path prefix language code)”设置为 "en",点击“保存语言”;


3.在"Languages"页面,点右上角"Detection and selection"面板,在每一列"Determine the language from the URL (Path prefix or domain)"后面打勾,即使用URL决定语言,点击后面的"设置"为"Path prefix"(路径前缀)


4.进入"Structure-->Blocks",选择"Language switcher (User interface text)",放到合适的区域,比如sidebar等,我在这里使用了一个自定义函数"render_menu_block($fmodule_name, $fblock_name)"把这个切换语言块放到了页面最顶端。

注意:(1)如果在第2步中将默认语言设置为“简体中文”,但未在第3步中为英文语言设置路径前缀,则不能正确执行语言切换
           (2)若没有正确配置第4步的操作,“语言转换”区块将不会显示

5.刷新网站,在页面顶端出现语言切换链接,点击“简体中文”和“English”的链接,试试语言的切换,发现就可以切换了。

 

        相信大家也发现了,在切换语言时,尽管界面语言都进行了中英文的切换,但是像“网站标题”这样存储在数据库里面的配置项,却没能被翻译过来。Locale 能够做到界面内容的翻译已经很不错,至于网站变量的多语言化,以及术语表、内容、CCK、菜单、区块等元素的多语言化,就交给接下来要介绍的 i18n 模块来做吧。

 

内置变量多语言化

 

        上一节我们已经使用 Drupal 核心的 Locale 模块为 Drupal 站点启用了多语言的功能,并且对 Drupal 界面进行了翻译。不过还遗留了一点点小问题,就是 Drupal 的站点标题没有翻译过来。
 

        Drupal 中的一些文本和配置存储在数据库的variables表中。比如“站点名称”和“站点口号”这样的配置文本,Drupal 核心的 Locale 模块不能实现这些配置变量的多语言化。因此创建一个更彻底的多语言站点,还需要用到 Internationalization(i18n)模块,i18n 模块提供了 Drupal 变量多语言化的功能。
 
  要实现对 Drupal 变量的多语言化操作,需要知道要翻译的变量的名称,这一步可以通过搜索 Drupal 数据库的 variables 表来实现。
 
  当你确定要对哪些变量进行多语言化操作时,你只需要按照以下格式,将变量添加到 settings.php 文件中即可。以下添加了 Drupal 站点的一些常见变量:

1,启用international (i18n)模块,还需要启动依赖模块Variable

连接:https://drupal.org/project/i18n

https://drupal.org/project/variable

 

2,修改settings,添加变量

 

/**
  * Multilingual settings
  *
* This is a collection of variables that can be set up for each language when i18n is enabled.
  * These are the basic ones for Drupal core, but you can add your own here.
  */

$conf['i18n_variables'] = array(

  // Site name, slogan, mission, etc..
   'site_name',
   'site_slogan',
   'site_mission',
   'site_footer',
   'anonymous',

  // Different front page for each language
   'site_frontpage',

  // Primary and secondary links
   'menu_primary_links_source',
   'menu_secondary_links_source',

  // Contact form information
   'contact_form_information',

  // For theme variables, read more below
   'theme_settings',
   'theme_garland_settings',

);

        当启用了 i18n 模块,并且向 settings.php 配置文件中添加了以上代码之后,可以在 管理 > 站点设置 > 语言 > Multilingual system > Variables(admin/settings/languages/i18n/variables)页面中,看到可以实现多语言化的变量名称及翻译状态。

3,进入configuration --> site information,在不同的语言下修改内容,保存,即可看到不同语言下的文字。

(注:responsive模式下的"top option text"需要在apperance --> settings --> responsive --> responsive menu,更改top option text)

 

为内容创建不同语言的翻译版本

1,启用Content translation模块

2,"structure --> content type",选择一个内容类型点击"Edit",选择下面的"Publishing options" --> "Multilingual support",选择第三项"Enabled, with translation",即允许当前内容类型使用多语言

3,创建一个文档(在创建页面选择一种语言)

4,发布后点击"Translate"翻译该文档,即可为当前文档实现多语言。

 

菜单与主链接/次链接多语言化

        只使用 Drupal 核心所提供的功能,还不能菜单项的多语言化/翻译。不过使用 i18n 模块包中提供的 Menu translation 模块,可能很好的实现菜单、主链接/次链接的多语言化功能。

  i18n 模块包中的 Menu translation 模块,提供了以下特性:

  • 允许创建菜单时为菜单设置语言项(如中文、英文等等),设置了语言的菜单项只会在与当前使用语言一致时才会显示;
  • 可以为未设置语言项的菜单内容进行多语言化。实现可通过 Drupal 的翻译页面对菜单项进行翻译;

创建可翻译的多语言化菜单

  1. 启用模块:启用 i18n 模块的 Menu translation 模块;
  2. 访问 管理 > 站点构建 > 菜单 > 主链接(Primary links) > 增加菜单项(admin/build/menu-customize/primary-links/add)
  3. 创建可翻译菜单项:根据以下信息填写菜单创建表单后,点击“保存”
    路径:<front>
    菜单链接标题:首页
    语言:所有语言
    说明:将语言设置为所有语言的菜单项,会在所有语言界面下显示,可尝试在中英文界面之前进行切换,都能菜单项“首页”,不过在英文界面下也还是显示中文
  4. 搜索翻译项:访问 管理 > 站点构建 > 翻译 > 搜索(admin/build/translate/search),按照以下信息填写表单后,点击“搜索”
    字符串包括:首页
    将搜索限制在:菜单
  5. 从搜索结果中找到要翻译的菜单项目,点击后面的“编辑”链接
  6. 翻译菜单项:在翻译界面中,填写翻译内容,Home。然后点击保存翻译;
  7. 现在再在中英文之间进行切换,就可以看到,在中文界面下,主链接显示菜单项“首页”,在英文界面下,主链接显示菜单项“Home”

创建只在指定语言环境下显示的菜单

  1. 访问 管理 > 站点构建 > 菜单 > 主链接(Primary links) > 增加菜单项(admin/build/menu-customize/primary-links/add)
  2. 创建可翻译菜单项:根据以下信息填写菜单创建表单后,点击“保存”
    路径:node
    菜单链接标题:内容
    语言:Chinese Simplified (简体中文)
    说明:在这里为菜单语言项,该菜单只有在与当前语言环境一致时,才会显示出来。
  3. 重复第2步,使用以下信息创建一个英语菜单项路径:node
    菜单链接标题:Node
    语言:English (英语)
  4. 现在再在中英文之间进行切换,就可以看到,在中文界面下,会显示语言设置为 Chinese Simplified (简体中文)的菜单项“内容”,在英文界面下,则会显示语言设置为 English (英文)的菜单项“Node”

使用多语言化变量设置不同的主链接/次链接

  访问 管理 > 站点构建 > 菜单 > 设置(admin/build/menu/settings)页面,可以看到“主导航菜单来源”及“次级菜单来源”都被标识为“多语言化变量(This is a multilingual variable)”,这说明这两项值,在不同的语言环境下,可以设置不同的值,并被数据库分开保存。(更多关于多语言化变量请参考《站点变量(Variables)多语言化》)

  在中文语言下,为主链接/次链接选择恰当的中文链接,在英文语言下,为主链接/次链接选择恰当的英文链接,从而实现在不同语言下,使用不同语言的菜单项,以此来实现 Drupal 网站中菜单的多语言化。

 

 

 

创建支持多语言化的区块

 

为 Drupal 创建多语言化支持的区块,需要 i18n 模块包中的 Block Translation 提供相应的支持。有两种方式可以实现区块的多语言化,一种是对区块(Blocks)中的字段进行翻译,另一种是为每一种语言创建一个对应的区块。本文将介绍这两种区块多语言化的方法。

准备工作:

  1. 下载 i18n 模块包,下载地址:http://drupal.org/project/i18n
  2. 模块管理页面:访问 管理 > 站点构建 > 模块(admin/build/modules)页面
  3. 启用模块:启用 Internationalization 模块、String Translation 模块 和 Block Translation 模块,并点击“保存设置”

创建基于字段翻译的多语言化区块

  1. 创建区块:访问 管理 > 站点构建 > 区块 > 添加区块(admin/build/blocks/add)
  2. 设置区块语言:在添加区块页面的 Multilingual settings 中,将语言设置为 Chinese Simplified(简体中文)
  3. 添加中文区块:在添加区块页面,填写以下中文信息,然后点击“保存区块”
    区块描述:多语言化测试区块(描述)
    区块标题:多语言化测试区块
    区块内容:这是一个用于测试区块多语言化的区块 :D
    注意:实际操作时,请根据你的需要为区块填写合适的描述、标题和内容等信息
  4. 分配区块:在区块管理页面(admin/build/blocks),找到刚创建的“多语言化测试区块(描述)”,将其分配到指定的区块,如左边栏,点击“保存区块”
  5. 搜索区块中的字段:访问 管理 > 站点构建 > 翻译 > 搜索(admin/build/translate/search),在页面的搜索框中搜索第3步中填写的信息,如"多语言化测试区块",将得到如下搜索结果
  1. 说明:基于字段的翻译好像不能对区块描述进行翻译,不过对区块标题和内容的多语言化翻译都是支持的。如果希望区块描述也能够被多语言化,可以参考第二种区块多语言化的方法
  2. 翻译区块中的字段:点击“编辑”进入字段翻译页面,填写翻译内容后点击“保存翻译”
  1. 重复第5,6步,完成区块内容的翻译
  2. 查看效果:在默认中文语言界面下,创建的区块显示如下图:
    区块多语言化-中文
    切换到英文语言界面下,创建的区块显示如下图:
    区块多语言化-英文

为不同的语言创建对应的多语言区块

  1. 创建区块:访问 管理 > 站点构建 > 区块 > 添加区块(admin/build/blocks/add)
  2. 设置区块语言:在添加区块页面的 Multilingual settings 中,将语言设置为 All languages (Translatable)
  3. 添加区块:在添加区块页面,填写以下信息后,点击“保存区块”
    区块描述:多语言化测试区块(描述)
    区块标题:多语言化测试区块
    区块内容:这是一个用于测试区块多语言化的区块 :D
    注意:实际操作时,请根据你的需要为区块填写合适的描述、标题和内容等信息
  4. 添加其它语言区块(如英语):重复第2步,将语言设置为 English(英语),重复第3步,填写以下英文信息,然后点击“保存区块”
    区块描述:Multilingual Test Block(Brief)
    区块标题:Multilingual Test Block
    区块内容:This is a multilingual test block, :D
  5. 分配区块:在区块管理页面(admin/build/blocks),找到刚创建的“多语言化测试区块(描述)”和“Multilingual Test Block(Brief)”,将其分配到指定的区块,如左边栏,点击“保存区块”
  6. 查看效果:i18n 提供的 language section 机制会自动判断多语言项目(如区块)与当前语言的关系,只有与当前语言相同的内容才会显示出来。因此当网站界面语言为中文时,站点左边栏将会显示“多语言化测试区块”,当网站界面语言为英语时,则会显示 "Multilingual Test Block"

原始引用地址:http://lugir.com/book/export/html/432

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值