欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

宁皓网 Drupal 8:多语言 有大用

使用 Drupal 8 创建多语言的网站。

语言
1)添加语言

现在我的这个 Drupal 网站的语言是简体中文,因为这是我在安装 Drupal 的时候选择的语言,如果你想让网站有多个语言的版本 .. 可以去添加这些需要的语言 ..

登录到 Drupal 以后,打开 配置 .. 在地区和语言 这个区域 .. 找到 语言 .. 这个是核心自带的 Language 模块提供的功能 ..

现在我的网站只支持一种语言,就是这个 Chinese Simplified .. 也是简体的中文 .. 如果你愿意,可以去编辑一下这个语言的名字 .. 点一下它后面的 编辑 .. 把语言名称设置成 简体中文 .. 再保存一下 ..

然后我想让网站有一个英文的版本 .. 可以先去添加一下这种语言 .. 点一下 添加语言 .. 打开这个语言的列表 .. 找到 English .. 再点一下 添加语言 ..

这样 Drupal 会自动到 Drupal 的官方去下载并且导入这种语言的翻译 .. 下面我们再去添加一种语言 .. 这次选择 Chinese Traditional .. 繁体中文 .. 保存一下 ..

Drupal 会自动到 Drupal 的官方网站下载这个语言的翻译,然后把繁体导入到我们自己的网站上来 ... 修改一下这个语言的名称 .. 修改成 繁體中文 .. 再保存一下 ..

现在我们的网站就有了三种语言 .. 现在默认使用的是简体中文 .. 如果你想让网站变成英文版的,可以选择 English .. 再保存一下 ..

你会发现,现在界面上的文字就都变成了英文的了 .. 再试一下 繁體中文 .. 保存 .. 现在界面上的文字就是 繁体中文 .. 我们再把网站修改成原来的 简体中文 ..

2)切换语言

现在我们的网站有三个语言的版本,Drupal 给我们提供了一些方法,可以让用户切换到想要使用的语言... 先打开 结构 .. 区块 .. 找到一个区域, 比如 Sidebar first .. 放置区块 ..

找到一个名字是 语言切换 的区块 .. 它就是一个可以切换语言用的小工具 .. 放置区块 .. 再保存一下 .. 然后调整一下在这个区域上的区块的显示顺序 .. 再点一下 保存 ..

回到前台的页面 .. 在边栏上会显示这个语言切换器 .. 用户可以在这里选择想要使用的语言 .. 当前是简体中文 .. 点一下 English .. 现在 Drupal 界面上的文字就会变成英文版的了 .. 注意页面地址的变化 ..

这里有个 en,它表示的就是当前选择的语言 .. 英文的代码就是 en .. 再试一下 繁体中文 ... 现在这个地址上的语言代码就又变成了 zh-hant ..

我们再把它切换回原来的 简体中文 .. 它的语言代号是 zh-hans .. 这个语言的代号会包含在所有的页面上 ..

3)检测并切换语言的方法

现在 Drupal 判断用户选择的语言的方法是通过这个内容地址上的语言代码 .. zh-hans 就是简体中文 .. en 就是英文 .. 这个检测选择语言的方法我们也可以去配置一下 ..

在配置 ... 语言 .. 这里 .. 有一个 检测及选择 .. 这里列出的就是 Drupal 检测语言用的方法 .. 默认只勾选了这个 网址 ,也就是通过网址上的语言代码来判断用户选择的语言 ..

点一下它后面的 配置 .. 在这里可以修改表示语言的代号 .. 另我们也可以为每一种语言单独设置一下域名 ..

再回到这个检测语言的配置界面 .. 在这里你可以找到一些其它的方法 .. 比如 用户 .. 这种方法可以让用户在个人帐号里自己去配置想要使用的语言 ..

还有浏览器 .. 可以根据用户使用的浏览器的语言版本来决定网站的语言版本 .. 比如现在我想让用户可以自己配置想要使用的语言 .. 这里可以勾选一下用户 ..

保存 .. 然后打开一个用户的个人资料的编辑界面 .. 这里会有一个 语言设置 .. 用户可以自己选择想要使用的网站语言 ..

比如简体中文 .. 再保存一下 ...

下面我们可以去修改一下网站的默认的语言 .. 打开 配置 .. 语言 .. 选中 English .. 再保存一下 ..

现在,再去打开一个页面 ... 网站界面上的语言会是简体中文 .. 因为这是用户在个人资料里选择要使用的语言 ...

下面我们再去把网站默认的语言改成原来的 简体中文 .. 然后 保存一下 ..

翻译
4)加入社区翻译团队

我们看到的界面上的字符其实都是 Drupal 社区成员手工翻译的 .. 原本应该都是一些英文字符 .. 来自不同国家的社区成员,把它翻译成了多种语言 ...

先在 drupal.org 上申请一个帐号,登录一下 ..

然后在 localize.drupal.org 这个网站上, 你可以加入到某种语言的翻译团队,然后一起翻译 Drupal 项目 .. 打开这个 Chinese Simplified .. 这里显示的就是简体中文的翻译界面 ..

你可以选择想要翻译的项目 .. 默认是 Drupal 的核心 .. 然后可以选择发行的版本 .. Status 现在是 Untranslated .. 所以下面显示的都是在 Drupal 核心里面没有被翻译的字符串 ..

左边儿是英文原版的字符串 .. 在右边你可以添加它的中文翻译 .. 比如这个 Add @entity-type 字符串 .. Add 是添加的意思 .. 注意 @ 后面的东西一般我们不去翻译,因为它会在程序里面表示特别的意思 ..

所以,它可以翻译成 添加 @entity-type ..

然后再保存一下 ... 这样你的翻译就会显示在这里,社区的其它用户会看到你的翻译 .. 有权限的用户如果觉得你翻译的合理,他会让你的翻译通过审查 .. 这样任何使用简体中文 Drupal 的用户的网站界面上,都会使用你的翻译了 ...

https://localize.drupal.org/translate/languages/zh-hans

5)使用 poedit 线下翻译

我们可以在 http://localize.drupal.org 上面提交自己的翻译,或者可以把项目的翻译导出到本地 .. 然后使用 poedit  ( http://poedit.net )这个软件线下去翻译 .. 翻译完成以后,我们可以把它再批量的导入到 localize.drupal.org 上面,跟社区的其它成员共享你的翻译 ..

在你选择的语言的翻译界面这里,点一下 Export ... 然后选择你想导出的项目的翻译 .. 比如我想翻译一下 Display Suite 这个模块 .. 先搜索一下 .. 再选择一下发行的版本 ..

然后再勾选一下 Add Chinese, Simplified suggestions .. 再点一下 Export Gettext file .. 这样会给我们导出这个项目的语言文件 ..

这种文件的格式是 .po ... 在电脑上安装了 poedit 以后可以打开这种文件 .. 选中想要翻译的字符 .. 然后在 翻译 这里,可以输入你自己的翻译 ..

比如这个 Edit block config .. 可以翻译成 编辑区块配置 ..

完成以后 .. 保存一下 ..

我们可以把自己的翻译好的这个文件再导入到 localize.drupal.org 上面 .. 点一下这个 Import .. 选择一下翻译好的 .po 文件 ..

注意在 Status 这里,现在选择的是 Store as approved translations .. 意思就是存储为审查通过的翻译 .. 一般人没有这个权限 .. 所以我们需要选择下面这个 ..

这样我们提交的翻译需要有权限的用户审核一下 ..

再点一下 Import 按钮 .. 这里会提示我们一共导入了多个条翻译的字符 .. 重复的字符翻译会被过滤掉,不会被保存 ...

https://poedit.net

6)用户界面翻译

Drupal 核心带的 Interface Translation 模块也给我们提供了一个可以翻译界面上字符的界面 .. 打开 配置 .. 在地区和语言 这个区域里,可以找到 用户界面翻译 ..

在这个界面上我们也可以去添加或者修改界面上的翻译 .. 这里可以选择 显示没有翻译的字符 .. 然后过滤一下 .. 在下面你可以去为这些字符串添加自己的翻译 ..

或者,我们可以在界面上发现了没有翻译的字符串,然后在这里可以去搜索一下 .. 比如在 报告 这里 .. 有一个 Get a status report about your site's operation ...

复制一下这个字符串 .. 回到这个翻译界面 . 然后搜索一下它 .. 找到以后,在右边儿添加自己的翻译 ... 查看网站运行的状态报告 ..

保存一下 .. 再回到之前的这个界面 .. 刷新 .. 你会发现,之前显示英文字符的这个地方 .. 已经被翻译成了简体中文 ...

如果你发现有些字符串翻译的不太合适,也可以使用这种方法去修改已有的翻译 ...

7)翻译内容

网站上的内容我们也可以翻译成多个语言的版本,比如文章,页面,用户,评论等等 .. 先去安装一个模块 .. 打开 扩展 .. 在 多语言 这个区域里面,勾选一下 Content Translation .. 再去安装一下它 ..

然后打开 配置 .. 在地区和语言这里,打开内容翻译 .. 先去配置一下可以被翻译的内容 .. 比如我想翻译网站上的文章内容 .. 可以选择 内容 .. 然后再勾选一下可以被翻译的内容的类型 ...

勾选一下 基本页面 这个内容类型 .. 然后会显示可以被翻译的一些东西 ... 再保存一下 .. 打开 内容 的管理界面 .. 添加一个新的内容 .. 类型是 页面 ..

输入标题 .. 比如 故事 .. 再输入内容的正文 .. 这是我们的故事 .. 这里可以让我们选择这个内容的语言版本 .. 默认是简体中文 .. 点一下 保存并发布 ..

在这个内容页面上,会有一个 翻译 标签 .. 打开它可以去给这个内容添加其它的语言版本 .. 或者也可以在内容的管理界面 .. 找到这个内容 .. 点开这个操作的按钮 .. 选择 翻译 ..

现在我想给这个内容添加一个英文的版本 .. 点一下 English 语言的后面的 添加 .. 这样会在英文界面下显示这个内容的编辑界面 ..

你可以在这里去翻译这个内容 .. 这个内容英文版的标题可以是 Story .. 再翻译一下它的正文 .. This is our story.

再点一下 Save and keep published ..

现在网站的语言版本是英文的 .. 所以这个页面上显示的内容就是这个内容的英文版的 .. 再去切换一下网站的语言 .. 选择简体中文 ..

这样这个页面上显示的就是这个内容的简体中文版 ..

再试一下 繁体中文 ... 因为我们并没有为这个内容添加它的繁体中文的翻译 .. 所在现在显示的就是这个内容的原版 ... 这里就是简体中文版的内容 ...

8)翻译配置

网站上有一些配置信息我们也可以去翻译一下,这样我们就可以为不同语言版本的网站添加不同的配置了 .. 比如你可能希望让网站在不同的语言版下面有一个不一样的名字 .. 让不同版本的网站使用不同的日期格式 .. 设置不同的图像样式等等 .. 这些东西就可以在 Drupal 的配置翻译里面实现 ..

先去安装一个模块 .. 打开 扩展 .. 在多语言这里,勾选一下 Configuration Translation .. 安装一下这个模块 ..

然后打开 配置 .. 在地区和语言这里,打开 配置翻译 .. 在这里会列出可以被翻译成不同语言版本的配置 .. 比如我想翻译一下网站的名字 .. 找到 System information .. 系统信息 这个配置 .. 点一下它后面的 翻译 ..

先编辑一下它的简体中文版 .. 中文版的网站名字我们可以设置成 宁皓网 .. 再保存一下 .. 然后 找到 English .. 点一下 添加 ..

英文版的网站名字 .. 我们把它设置成 ninghao .. 再保存一下这个翻译 ..

回到前台页面 .. 现在是简体中文版 .. 所以网站的名字是 宁皓网 ..

再切换一下网站的语言 .. 设置成 English .. 在英文版这里,我们的网站的名字就会是 ninghao 这个拼音 ..

视图
9)创建多语言的视图

下面我们去创建一个多语言的视图 .. 打开 结构 .. 视图 .. 添加一个新的视图 .. 名字可以是 page list ... 要显示的是 内容 .. 内容的类型是 基本页面 ..

因为之前我们设置过这种内容类型,可以被翻译成多个语言的版本 .. 生成一个页面 .. 保存并编辑 .. 再查看一下这个视图页面 ..

你会发现,这个内容列表里面,会同时包含英文内容还有中文内容 .. 这个 Story 跟 故事 其实是一个内容 .. 只不过是不同的语言版本 .. 这个 Story 其实就是 故事 这个页面的英文版 ...

我们希望在中文状态下显示内容的中文版 .. 在 英文 状态下显示内容的英文版 ..

回到之前我们创建的视图 .. 给它添加一个过滤条件 .. 找到这个 翻译语言 ... 添加并配置 .. 然后勾选一下 .. 为页面所选的界面语言 ..

应用 .. 再保存一下这个视图 .. 回到这个视图的前台页面 .. 刷新一下 ..

现在,这个内容列表里,只会显示一个中文的内容,因为当前我们选择的网站语言是 简体中文 ..

再去切换一下 .. 选择 English .. 现在这个内容列表里面,只会显示 英文版的内容 ...

10)翻译视图

在视图上经常出现的一些标签我们也可以去翻译成多种语言 .. 比如这个页面视图的标题 .. 要修改一下中文标题 .. 输入 页面列表 .. 应用 .. 再保存 ..

在这个视图里面,有一个 翻译视图 这个标签 .. 打开它 .. 给这个视图添加一个英文版的 .. 点击 English 的后面, 添加 ..

打开它的 Master 显示设置 .. 在这里会显示一些可以被翻译的标签 .. 比如在暴露表单上的标签 .. 分页器 ..

还有在字段上的标签等等 ..

这里我们先设置一下视图的标题 .. 英文状态下,这个视图里的页面的标题是 Page list ... 保存一下 .. 回到这个视图的前台页面 ..

刷新 .. 现在是中文版 .. 它的标题是 页面列表 .. 再把网站切换成英文版的 ..

现在这个页面的标题就变成了 Page list ...

来自  https://ninghao.net/course/3740#toc


普通分类: