蛋疼WP: 瞎折腾多语言插件Qtranslate

上次帮别人做WP站点时,对方要求双语言撰写的功能(而非机器翻译)。他的要求很多,不过我也学到了不少东西,在此共享。

Qtranslate的优点

刚开始试用的是 xlanguage ,用它撰写的多语言Blog实际上每个文章的不同语言版本都是一个独立的 Post,这样会带来一个问题:由于他们其实不是同一post,所以针对他们的评论也是相互独立的,这会让评论者迷惑。

试用了几个插件之后,觉得留德华人秦谦开发的 qTranslate 比较合适,它的思路比较好,用类似<!–:en–><!–:–>的语句将相应语言内容封装,再用php判断当前页面的语言状态,然后显示相应容器中的内容。这样,当阅读文章时,无论切换到哪个版本都可以看见这篇文章的所有评论,不会造成迷惑。而且他可以将标签、分类等后台可编辑的内容都多语言化。更酷的是,它可以实现后台的多语言化(用户需安装相应语言文件)。

qTranslate 的具体介绍有很多,我就不做重复介绍了。

不同语言下使用不同CSS控制字体

后来对方指出,在韩语下的字体太大,并且标题字体要使用某韩文字体(Win系统自带,估计类似于黑体在中文 Win 系统中的地位)。这确实是个难题,因为如果在韩文的 Post 里使用font标签定义字体大小,那对Blog作者将是件十分麻烦的事,而且 font 标签显然不能用于标题。这就意味着要对英文和韩文使用不同的 CSS,如你所知,同一文章的不同语言版本是在同一篇 post 里的,也就是说,css 是同时影响英文和韩文的。

如何实现?我想到了如下方法:

  1. 在韩文版本下,链接里会有“/ko/”,设想自动判断地址栏的这个文字,然后加载不同的CSS。
  2. 在韩文下,对post和标题部分使用不同于英文的 class 或 id,然后在CSS里定义这些特殊类的属性。

最终,我采用了第二种方法,因为我不知道如何实现第一种方法:-),而第二种方法,我在插件的技术文档里找到了这句

<?php if(qtrans_getLanguage()==’en’): ?>

<?php endif; ?>

把相应的内容放在这个php语句里,可用来在某语言下显示某特定内容,用于Wordpress里需要在php里修改源代码的网页内容。

最终示意图如下:

最后,实现了在不同语言下的不同字体样式:

具体效果参见这里 ,主题是他自选的,我只负责后期的改造,这其中也得到了 Z大的指导,感谢 Z大

25 Comments to This Post

Add a Comment