构建一个基于 WordPress 的多语言电子商务方案多种多样,本文要介绍的是基于 WooCommerce(WordPress 电子商务插件,免费) 和 WPML(WordPress 多语言插件,付费) 的多语言网站构建方法。
使用哪些插件
搭建一个中英文,英文为默认语言的电子商务网站。
主干是 WordPress,在此基础上的要用到的插件如下:
- WooCommerce
- WPML Multilingual CMS – WPML 多语言 CMS(核心插件)
- WPML String Translation – WPML 字符串翻译 (Add-on 插件)
- WPML Translation Management – WPML 翻译管理 (Add-on 插件)
- WooCommerce Multilingual – 使 WooCommerce 支持 WPML 的插件,可使网店价格自动在多币种间切换
WooCommerce 和 WooCommerce Multilingual 为免费插件,可在 WordPress.org 下载,WPML 核心插件及 Add-on 插件为付费插件,需要每年支付一次费用才能持续获得升级支持,WooCommerce Multilingual 插件需要 WPML Translation Management 的支持,因此需要购买 79 美元一年的 package 。
测试主题
使用默认主题 Twenty Twelve 作为测试主题
测试环境
使用 windows 7 + wampserver 2.0g
Apache 版本:2.2.11
PHP 版本: 5.2.9-1
MySql 版本:5.1.32
搭建步骤
- 建立 wamp 测试环境
- 安装 WooCommerce 和测试数据
- 安装和配置 WPML 插件
- 使 WooCommerce 和 WPML 协同工作
装好 WordPress,配置好 WooCommerce 并添加数据 (或者导入测试数据) 后,就可以开始多语言化了。使用的插件是 WPML 多语言插件。
安装 WPML 多语言插件
需要用到 WPML 的核心插件和两个附加插件。
- WPML Multilingual CMS – WPML 多语言 CMS(核心插件,文件夹名称为 sitepress-multilingual-cms)
- WPML String Translation – WPML 字符串翻译 (Add-on 插件)
- WPML Translation Management – WPML 翻译管理 (Add-on 插件)
通过 Plugins->Add New->upload 将三个插件上传并安装激活。
配置 WPML
激活后,点击页面顶部的 「No thanks, I will configure myself」按钮进入配置界面。
首先,选择网站默认语言,如果网站已经有内容,请选择当前内容所使用的语言,点击 Next 按钮继续。
接下来,选择要支持的其它语言。例如,我要做中英文网站,所以勾选 Chinese (Simplified),点击 Next 按钮继续。
最后一步是一些基本设置:
Language switcher widget – 设置多语言切换按钮的样式以及显示位置,默认在 sidebar 中显示。 Language switcher style 的设置可以根据个人喜好来进行,我的设置偏好如下:
在右侧会显示一个预览窗口,按照上面设置,预览界面如下所示
显示语言切换按钮的方式有四种:
- 在 sidebar 中显示,你可以在 Appearance->Widgets 中找到 Language Selector 小工具,拖拽到 sidebar 中即可。
- 在 footer 中显示,勾选 Show language switcher in footer 。
- 在导航栏中显示,选中 Language switcher widget 的配置中的 Display the language switcher in the WP Menu 中选择一个菜单。
- 在任意位置显示,只需要将<?php do_action('icl_language_selector'); ?> 这句 php 代码拷贝到主题中即可。
点击 Finish 按钮完成设置。
设置管理界面语言
管理界面的语言默认是刚刚选中的 Default Language,如果你想更换语言,有两种方法
方法一:访问 WPML->Language,找到 Admin language,设置语言即可,更改会应用给所有管理员。
方法二:不想影响其它管理员?那就到自己的 profile 页面,找到 WPML language settings,选择语言,更改只针对当前登录的管理员用户。
URL 格式设置
每种语言应该使用什么样的 URL 格式,在 WPML->Language 中的 Language URL Format 中设置,支持三种格式:
- Different languages in directories – 不同语言在不同目录下,例如英文首页是 http://www.solagirl.net,则简体中文首页 url 就是 http://www.solagirl.net/zh-hans/
- A different domain per language – 不同语言在不同域名下,域名要先创建好。
- Language name added as a parameter – 将语言名称作为参数附加在 url 后面,例如简体中文首页 http://www.solagirl.net?lang=zh-hans
注意:语言名称是可以更改的,例如我想把简体中文改成中文,在后台设置中即可完成,单语言的 slug 是不可更改的,如果想把 zh-hans 换成 cn,就不那么简单。但也并非不可。
所以,请在添加另一种语言的内容前,想好要用什么样的格式,假设我要使用 http://www.solagirl.net/cn/这种格式,方法如下:
访问 WPML->Language,点击 Edit Language 链接。
点击 Add Language,添加新语言,设置如下 (下图是已经添加好的,新添加看图下注释)
- Language name: Chinese
- Translation (new) : 中文
- Translation (English): Chinese
- Flat: zh-hans.png/Use flag from WPML
- Default locale: zh_CN
- Encode URLs: No
- Language tag: zh-CN
点击保存完成添加,然后删除原来的 Chinese(Simplified) 语言,其实就是用新创建的语言替代了 WPML 默认定义的语言。
设置同步选项
安装 WooCommerce 后会产生 product 等 custom post type,要想翻译它们,需要设置一下 WPML 的同步选项。
访问 WPML->Translation Management->Multilingual Content Setup,一直向下拉滚动条会看到两行提示
You haven't set your synchronization preferences for these custom posts: Products, Variations, Orders, Coupons. Default value was selected.
You haven't set your synchronization preferences for these taxonomies: Tags, Product Categories, Product Tags, Shipping Classes, Tags. Default value was selected.
这两条提示告诉我们应该设置一下是否要翻译自定义文章类型和自定义分类,按照需要设置一下,保存。
Theme and plugins localization
设置如何翻译主题和插件。
第一项设置主题翻译方式,两个选项,一个要是使用 WPML 完成翻译,需要 WPML String Translation 插件支持。如果不装这个插件,就选第二项,直接使用主题自带的语言包,如果没有语言包可以自己翻译一下,推荐使用Codestyling Localization插件。
选择第一项后,应点击 Scan the theme for strings 扫描主题待翻译字符串,然后到 WPML->String Translation 下编辑翻译。
用 WPML 翻译插件同样可以使用插件自带语言包或者 WPML String Translation 插件,使用后者的方式为在底部插件列表选择要翻译的插件,点击 Scan the selected plugins for strings,然后到 WPML->String Translation 下编辑翻译。
如果你安装了 WPML String Translation 插件,并且有主题和插件的语言包,可以先将语言包放好,选择 Translate by WPML,然后扫描主题,这样就可以用 WPML 来随时修改翻译的文字了。
创建 WooCommerce 标准页面中文版
WooCommerce 的标准页面目前只有英文版,需要创建中文版才能正常使用,所以访问 Pages->All pages,会看到每个页面后面都有一个加号,点击加号就可以创建中文版,编辑方式跟编辑一篇新文章类似,输入标题,点击 Copy content from English 按钮将内容拷贝过来。
WooCommerce 核心页面的内容都是 shortcode,所以直接拷贝即可。其它页面,应自己填写对应的翻译。
注意当填写中文标题时,slug 会自动用标题填充,若不喜欢链接中有中文,请手动修改一下。
下图为创建 Cart 页面中文版的截图,将所有页面一一创建。
至此,关于 WPML 的配置基本结束,但网站还不能正常运转,产品页面目前还不能翻译成其它语言,也没有多币种支持,要让 WooCommerce 与 WPML 兼容,还需要安装 WooCommerce Multilingual 插件,具体内容将在下一篇文章中介绍。
翻译商品页面
访问 Products 页面,按照上面的方法创建产品的中文翻译,以便测试。
翻译配送和支付方式
配送和支付方式的翻译要依靠 WPML String Translation 插件完成,该插件的作用有两个:
- 创建和编辑语言包文件 (.po, .mo)
- 翻译 wp_options 表中的内容
而配送和支付方式的文字就存储在 wp_options 中。
首先,设置自动扫描需要翻译的 options 选项,找到 String Translation 界面中的 Auto register strings for translation,勾选第二项。
然后,加几个商品到购物车,结账,一直访问到出现付款方式的页面。这个自动注册的工作原理是一旦有 get_option() 函数调用,就会自动记录字符串,所以要实际的访问一下。
接下来,回到 String Translation 界面,点击 Select strings within context 的下拉菜单,就会发现 textdomain 多了一下,找到 woocommerce,就能看到配送和付款方式的字符串,将其一一翻译,点击 Save 的同时选中 Translation is complete 。
出于性能考虑,翻译完成后,应将 Auto register strings for translation 设置为 Disable 。
关于语言包
至少需要三个语言包:
- 主题语言包
- WooCommerce 中文语言包,上传至 wp-content/languages/woocommerce 目录下,这样插件升级时不会丢失
- WordPress 中文语言包,上传至 wp-content/languages 目录下
至此,网站就可以在中英文之间切换了。如果你只打算支持一种货币,那就基本完成了,剩下的事就是添加内容。如果你需要多币种支持,那还要安装 WooCommerce Multilingual 插件。