用英语说泥嚎

今天我给博客加上了英语版本的页面。

WordPress的多语言问题

虽然WordPress很久之前就通过gettext支持了多语言,但是它还是没有原生提供创建多语言博客的方法。如果你懒的话,其实也不用考虑什么多语言支持问题,直接把随便什么语言的文章往一个博客里面写就完事了。如果文章少的话这样是最方便的;但是对我来说,这个方法的缺点多到有些难以忍受:

  • 无法自动在文章边上显示其不同语言版本的链接
  • WordPress UI文字只能显示为特定语言
  • 字体回退会变得很糟糕(如果你使用CJK语系的语言的话,你一定知道我在说什么)
  • 我写了Twenty Twelve zh-CN这个子主题来解决默认主题里面大部分中文文本的渲染问题,但是这些东西并不适合英文文本

所以我经过好几年的深思熟虑,决定安装一个多语言插件。WordPress的多语言插件有两种主流实现思路:

  1. 把所有语言的版本加上内部数据一次塞进数据库里的同一个post,前端显示时再过滤出需要的部分(例如WPML
  2. 利用WordPress Multisite机制来创建不同语言对应的站点,然后把它们互相链接起来(例如MultilingualPressMultisite Language Switcher

两种方法各有千秋。方法一设置简便,但是你哪天如果想删掉那个插件,文章内容就会变成一堆乱七八糟的东西,得手工清理。方法二一开始的设置过程复杂得多,但是你如果把插件删掉了,文章至少还能看。WPML和MultilingualPress 2我在工作中都用过,个人还是觉得后者比前者好一点。MultilingualPress 3至今没有推出免费版本(虽然他们说2019年年末会发布),MultilingualPress 2又和新的古腾堡编译器不是很兼容,所以我决定这次试一试Multisite Language Switcher。这么做其实风险挺大的,Multisite Language Switcher看起来并没有人非常活跃地维护,但是它至少免费又开源,我还能要求些什么呢?

启用WordPress Multisite

简单来说,Multisite这功能允许你在一个WordPress里面创建多个互相独立的博客网站。这是个老功能了,自从我用WordPress开始大概就存在了。虽说如此,要在一个九年历史的老博客上大动干戈毕竟是个很危险的事情。Multisite允许你用两种方法之一来访问一个站点:路径前缀( https://blog.example.com/custom-path/ )或者子域名( https://custom-subdomain.blog.example.com )。子域名对于我这种只是想要一个多语言博客的人来说似乎有点太浪费了,而且我还得去改我的反向代理配置,所以我选择使用路径前缀方式。那么问题来了:WordPress如果检测到你的博客里面写过内容,就不再允许你选择路径前缀方式了,因为它怕你有文章的自定义永久链接和站点URL冲突。我有信心我的博客不会遇到这种鬼故事,所以我绕过了这个检测机制,强行启用了路径前缀方式。

丑话说在前头

备份,备份,备份。WordPress安装目录和数据库都要备份。Multisite安装是回不了头的,出了问题只能靠备份恢复。

准备工作

暂时禁用所有插件。

wp-config.php 最前面写上:

在当前启用的主题的  functions.php 最后面写上:

这样一来,路径前缀方式会被强制启用。

安装过程

打开WordPress后台,选择“工具”->“网络设置”。确认你需要的选项以后,点击安装。

安装后的扫尾工作

系统会提示你修改  wp-config.php.htaccess 两个文件,按提示完成,然后重新登录。如果一切正常,你会看到一个新的WordPress仪表盘。

现在你可以重新启用插件了,既可以对整个网络启用,也可以对单个博客启用。

安装完成以后,你原来的站点可能会被自动加上一个 blog 之类的前缀,所以原来的永久链接可能就没法使用了。如果想要把这个前缀删掉,需要两个步骤:

  1. 在管理网络->站点->所有站点,找到你原来那个站点,点击编辑,在设置标签页下方找到”Permalink Structure“,删掉 /blog 之类的前缀,然后保存更改
  2. 前往你原来那个站点的仪表盘,在设置->永久链接页面,检查选项是否正确,然后点击保存更改

Multisite Language Switcher

相比于其它商业插件,Multisite Language Switcher对新手挺不友好的。它能用,但是需要注意几点:

  • 检查它的设置页面顶上是否出现了所有语言的博客列表;如果没有,你需要把你加为所有博客的管理员
  • 你要在每个语言的博客里面都去保存一下Multisite Language Switcher的设置
  • 如果要翻译一篇文章,可以直接在所有文章的列表页点击链接图标,或者直接去目标语言的博客创建新文章,然后在编辑器右侧边栏的多站点语系切换小工具里面输入原文的标题
  • 如果要在文章页面上显示到其它语种版本的链接,需要在主题设置里面添加一个小工具
  • 分类目录和标签可能会出问题,需要手工检查一下
  • 如果你使用了文章内容导入功能,编辑永久链接按钮可能会没法用;可以用编辑器页面底部的”别名”选项来修改永久链接

参考: