qTranslate停止更新后,多语言WordPress网站的升级策略

qTranslate是一款很不错的多语言插件,我曾经在很多项目中采用它,还写过博客整理了一些经验(点这里)。但可惜的是作者已停止更新这款插件,在WordPress主程序升级到3.9以及以后版本时,强行继续使用这款插件,会导致编辑器的可视化与文本之间无法正常切换,JS报错。如果你的WP网站离不开qTranslate,那就不能随便升级主程序了。

是时候更换插件了,我把我的十几个还在使用中的多语言WordPress网站项目分为两类,对于商业需求大,自定义文章类型多、自定义字段多的网站,我改用了WPML这款收费插件。其他的自定义文章类型、自定义字段少的网站,我把qTranslate替换成qTranslate-x – 一款后继者在继续开发和维护的qTranslate插件。

首先介绍一下大名鼎鼎的WPML和qTranslate之间的本质区别:

qTranslate是通过给同一篇文章、字段等增加“<!–en:–><!–:–>”这样的语言识别标签,然后通过PHP、JS等脚本识别字符串来切换语言的。使用qTranslate后,你的WordPress网站所有的文章,包括自定义类型的文章,都会被套上语言识别标签。如果要实现菜单、自定义字段等到翻译,也是一样要手动给这些内容套上语言识别标签。从某种程度上来说,你的数据库是被“污染”了。

而WPML则比较“干净”,他是通过不同文章之间的关联来实现语言切换的。比如文章A是某篇内容的英语版,文章B是这篇内容的中文版,WPML把两者关联起来,实现语言切换;如果要增加这篇内容的日语版,那么WPML会为你建立文章C,然后实现三者关联。对于自定义字段就更简单了 – 本来ABC就是三篇独立的文章,自定义字段自然是独立的,强大的WPML甚至允许你设置ABC之间每个自定义字段的同步。

qTranslate轻便小巧,而且是免费的。WPML的是收费插件(199美金),功能设置令人眼花,但如果你已经开始熟悉它,你会赞叹它强大的功能令它物超所值。

了解了两者的区别,那么有钱又想要完善自己网站功能的开发者,自然会选择WPML作为后续方案。WPML可以到WPML的官网购买后下载。个人建议不要贪便宜去官网以外的网站购买,其安全性不好说,更重要的是WPML的客服对开发者来说是一项重要服务,没有了官方的支持,网站出问题可是很头疼的事情。而且WPML几乎每个月都有版本更新,功能一直在不断完善,本人有很多切身体验,购买正版才能享受到其便利。

把qTranslate替换成WPML还是颇费周折的

在设置好WPML后你需要逐篇的清理文章中qTranslate留下的语言识别标签,并且把各个语种的内容新建文章另行保存。这个过程比较痛苦,但完成后你的网站数据库应该会“干净”不少,程序调用起来也会更加流畅。WPML的使用经验,百度上能找到的文章不多,英文好的朋友可以上谷歌搜索。WPML官网也有强大的support论坛,几乎任何问题都能直接搜索到答案。不愧为一款著名的收费软件,商业上已经做得很完善了,因此有问题就去查论坛,很方便。

如果你不想费那么多周折,只想在保留WordPress升级可能的前提下继续使用qTranslate,那么你可以选用qTranslate-x

在qTranslate的作者放弃更新后,有不少个人和团队都在尝试继承这款插件的维护和更新(国外的技术氛围就是好)。如果你在WP后台搜索一下,可以找到两款插件,一款叫qTranslate-plus,一款是qTranslate-x,评分都是五颗星。在比较和试用了两者之后我推荐使用qTranslate-x。

首先,如果你关闭qTranslate,然后直接启用qTranslate-plus或者qTranslate-x,网站都会报错,因为这两款插件的语言代码调用函数都不再是qtrans_generateLanguageSelectCode(),而是各有其名:
qTranslate-plus要求改成ppqtrans_generateLanguageSelectCode()
qTranslate-x要求改成qtranxf_generateLanguageSelectCodeit()
但qTranslate-x在后台给了一个兼容模式的设置选项,在Settings – languages – Advanced Settings找到这个“Compatibility Functions”
qTranslate-x兼容模式设置
只要在这里打勾,你不需要修改主题里面的旧函数名,网站就能恢复正常了。这一点“x”比“plus”贴心多了。
如果你观察一下Advanced Settings下提供的功能选项,会发现“x”的开发者给插件增加了很多实用或不实用的新功能,而“plus”相对于旧qTranslate只能说是维持原状而已。

另一个让我决定用“x”的原因是,x的页面编辑界面做得更简洁,见图:
qTranslate-x的编辑界面

而“plus”的页面编辑界面怎么看都显得比较山寨,开发人员的审美也很重要啊!
qTranslate-Plus的编辑界面

最后,使用Gravity Forms表单插件的开发者,也有需要qTranslate继续支持的需求。我一直在用的“qTranslate support for GravityForms“经过升级后已经支持qTranslate-x。
这下看来“x”真的完败了“plus”

所以如果你不愿花钱买昂贵的WPML,只想简单地使qTranslate在升级后的WordPress也能不出状况,只需要卸载qTranslate,然后安装qTranslate-x,就可以了。

qTranslate-x官方网站:https://wordpress.org/plugins/qtranslate-x/

本站所有文章均为原创,欢迎转载,请注明文章出处:https://blog.brain1981.com/1062.html。百度不可信,搜索请谨慎。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以获取本文的最新版本。

关注我们的微信公众号-JennyStudio 本站记录了近几年的工作中遇到的一些技术问题和解决过程,“作品集”还收录了本人的大部分作品展示。除了本博客外,我们的工作室网站 – JennyStudio,内有更多作品回顾和展示。
您也可以扫描左边的二维码,关注我们的微信公众号,在微信上查看我们的案例。

7 关于 “qTranslate停止更新后,多语言WordPress网站的升级策略” 的评论

  1. song

    您好:WPMLPHP中静态怎么翻译成别的语言(比如说默认的语言是日语,想把其中php里面的日语改成中文,请问怎么改?),插件WPML Multilingual CMSWPML String TranslationWPML Translation Management

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注