记录在此备查。
- 界面多语言化
- 内置变量多语言化
- 内容多语言化
- 术语表多语言化
- 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 的翻译页面对菜单项进行翻译;
创建可翻译的多语言化菜单
- 启用模块:启用 i18n 模块的 Menu translation 模块;
- 访问 管理 > 站点构建 > 菜单 > 主链接(Primary links) > 增加菜单项(admin/build/menu-customize/primary-links/add)
- 创建可翻译菜单项:根据以下信息填写菜单创建表单后,点击“保存”
路径:<front>
菜单链接标题:首页
语言:所有语言
说明:将语言设置为所有语言的菜单项,会在所有语言界面下显示,可尝试在中英文界面之前进行切换,都能菜单项“首页”,不过在英文界面下也还是显示中文 - 搜索翻译项:访问 管理 > 站点构建 > 翻译 > 搜索(admin/build/translate/search),按照以下信息填写表单后,点击“搜索”
字符串包括:首页
将搜索限制在:菜单 - 从搜索结果中找到要翻译的菜单项目,点击后面的“编辑”链接
- 翻译菜单项:在翻译界面中,填写翻译内容,Home。然后点击保存翻译;
- 现在再在中英文之间进行切换,就可以看到,在中文界面下,主链接显示菜单项“首页”,在英文界面下,主链接显示菜单项“Home”
创建只在指定语言环境下显示的菜单
- 访问 管理 > 站点构建 > 菜单 > 主链接(Primary links) > 增加菜单项(admin/build/menu-customize/primary-links/add)
- 创建可翻译菜单项:根据以下信息填写菜单创建表单后,点击“保存”
路径:node
菜单链接标题:内容
语言:Chinese Simplified (简体中文)
说明:在这里为菜单语言项,该菜单只有在与当前语言环境一致时,才会显示出来。 - 重复第2步,使用以下信息创建一个英语菜单项路径:node
菜单链接标题:Node
语言:English (英语) - 现在再在中英文之间进行切换,就可以看到,在中文界面下,会显示语言设置为 Chinese Simplified (简体中文)的菜单项“内容”,在英文界面下,则会显示语言设置为 English (英文)的菜单项“Node”
使用多语言化变量设置不同的主链接/次链接
访问 管理 > 站点构建 > 菜单 > 设置(admin/build/menu/settings)页面,可以看到“主导航菜单来源”及“次级菜单来源”都被标识为“多语言化变量(This is a multilingual variable)”,这说明这两项值,在不同的语言环境下,可以设置不同的值,并被数据库分开保存。(更多关于多语言化变量请参考《站点变量(Variables)多语言化》)
在中文语言下,为主链接/次链接选择恰当的中文链接,在英文语言下,为主链接/次链接选择恰当的英文链接,从而实现在不同语言下,使用不同语言的菜单项,以此来实现 Drupal 网站中菜单的多语言化。
创建支持多语言化的区块
为 Drupal 创建多语言化支持的区块,需要 i18n 模块包中的 Block Translation 提供相应的支持。有两种方式可以实现区块的多语言化,一种是对区块(Blocks)中的字段进行翻译,另一种是为每一种语言创建一个对应的区块。本文将介绍这两种区块多语言化的方法。
准备工作:
- 下载 i18n 模块包,下载地址:http://drupal.org/project/i18n
- 模块管理页面:访问 管理 > 站点构建 > 模块(admin/build/modules)页面
- 启用模块:启用 Internationalization 模块、String Translation 模块 和 Block Translation 模块,并点击“保存设置”
创建基于字段翻译的多语言化区块
- 创建区块:访问 管理 > 站点构建 > 区块 > 添加区块(admin/build/blocks/add)
- 设置区块语言:在添加区块页面的 Multilingual settings 中,将语言设置为 Chinese Simplified(简体中文)
- 添加中文区块:在添加区块页面,填写以下中文信息,然后点击“保存区块”
区块描述:多语言化测试区块(描述)
区块标题:多语言化测试区块
区块内容:这是一个用于测试区块多语言化的区块 :D
注意:实际操作时,请根据你的需要为区块填写合适的描述、标题和内容等信息 - 分配区块:在区块管理页面(admin/build/blocks),找到刚创建的“多语言化测试区块(描述)”,将其分配到指定的区块,如左边栏,点击“保存区块”
- 搜索区块中的字段:访问 管理 > 站点构建 > 翻译 > 搜索(admin/build/translate/search),在页面的搜索框中搜索第3步中填写的信息,如"多语言化测试区块",将得到如下搜索结果
- 说明:基于字段的翻译好像不能对区块描述进行翻译,不过对区块标题和内容的多语言化翻译都是支持的。如果希望区块描述也能够被多语言化,可以参考第二种区块多语言化的方法
- 翻译区块中的字段:点击“编辑”进入字段翻译页面,填写翻译内容后点击“保存翻译”
- 重复第5,6步,完成区块内容的翻译
- 查看效果:在默认中文语言界面下,创建的区块显示如下图:
切换到英文语言界面下,创建的区块显示如下图:
为不同的语言创建对应的多语言区块
- 创建区块:访问 管理 > 站点构建 > 区块 > 添加区块(admin/build/blocks/add)
- 设置区块语言:在添加区块页面的 Multilingual settings 中,将语言设置为 All languages (Translatable)
- 添加区块:在添加区块页面,填写以下信息后,点击“保存区块”
区块描述:多语言化测试区块(描述)
区块标题:多语言化测试区块
区块内容:这是一个用于测试区块多语言化的区块 :D
注意:实际操作时,请根据你的需要为区块填写合适的描述、标题和内容等信息 - 添加其它语言区块(如英语):重复第2步,将语言设置为 English(英语),重复第3步,填写以下英文信息,然后点击“保存区块”
区块描述:Multilingual Test Block(Brief)
区块标题:Multilingual Test Block
区块内容:This is a multilingual test block, :D - 分配区块:在区块管理页面(admin/build/blocks),找到刚创建的“多语言化测试区块(描述)”和“Multilingual Test Block(Brief)”,将其分配到指定的区块,如左边栏,点击“保存区块”
- 查看效果:i18n 提供的 language section 机制会自动判断多语言项目(如区块)与当前语言的关系,只有与当前语言相同的内容才会显示出来。因此当网站界面语言为中文时,站点左边栏将会显示“多语言化测试区块”,当网站界面语言为英语时,则会显示 "Multilingual Test Block"
原始引用地址:http://lugir.com/book/export/html/432