用英语说泥嚎

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

WordPress的多语言问题

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

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

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

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

两种方法各有千秋方法一设置简便但是你哪天如果想删掉那个插件文章内容就会变成一堆乱七八糟的东西得手工清理方法二一开始的设置过程复杂得多但是你如果把插件删掉了文章至少还能看WPMLMultilingualPress 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的设置
  • 如果要翻译一篇文章可以直接在所有文章的列表页点击链接图标或者直接去目标语言的博客创建新文章然后在编辑器右侧边栏的多站点语系切换小工具里面输入原文的标题
  • 如果要在文章页面上显示到其它语种版本的链接需要在主题设置里面添加一个小工具
  • 分类目录和标签可能会出问题需要手工检查一下
  • 如果你使用了文章内容导入功能编辑永久链接按钮可能会没法用可以用编辑器页面底部的别名选项来修改永久链接

参考