上次帮别人做WP站点时,对方要求双语言撰写的功能(而非机器翻译)。他的要求很多,不过我也学到了不少东西,在此共享。
Qtranslate的优点
刚开始试用的是 xlanguage ,用它撰写的多语言Blog实际上每个文章的不同语言版本都是一个独立的 Post,这样会带来一个问题:由于他们其实不是同一post,所以针对他们的评论也是相互独立的,这会让评论者迷惑。
试用了几个插件之后,觉得留德华人秦谦开发的 qTranslate 比较合适,它的思路比较好,用类似<!–:en–><!–:–>的语句将相应语言内容封装,再用php判断当前页面的语言状态,然后显示相应容器中的内容。这样,当阅读文章时,无论切换到哪个版本都可以看见这篇文章的所有评论,不会造成迷惑。而且他可以将标签、分类等后台可编辑的内容都多语言化。更酷的是,它可以实现后台的多语言化(用户需安装相应语言文件)。
qTranslate 的具体介绍有很多,我就不做重复介绍了。
不同语言下使用不同CSS控制字体
后来对方指出,在韩语下的字体太大,并且标题字体要使用某韩文字体(Win系统自带,估计类似于黑体在中文 Win 系统中的地位)。这确实是个难题,因为如果在韩文的 Post 里使用font标签定义字体大小,那对Blog作者将是件十分麻烦的事,而且 font 标签显然不能用于标题。这就意味着要对英文和韩文使用不同的 CSS,如你所知,同一文章的不同语言版本是在同一篇 post 里的,也就是说,css 是同时影响英文和韩文的。
如何实现?我想到了如下方法:
- 在韩文版本下,链接里会有“/ko/”,设想自动判断地址栏的这个文字,然后加载不同的CSS。
- 在韩文下,对post和标题部分使用不同于英文的 class 或 id,然后在CSS里定义这些特殊类的属性。
最终,我采用了第二种方法,因为我不知道如何实现第一种方法:-),而第二种方法,我在插件的技术文档里找到了这句
<?php if(qtrans_getLanguage()==’en’): ?>
<?php endif; ?>
把相应的内容放在这个php语句里,可用来在某语言下显示某特定内容,用于Wordpress里需要在php里修改源代码的网页内容。
最终示意图如下:
最后,实现了在不同语言下的不同字体样式:
好东西,分享了哈
@Jessy, 欢迎分享
博主
采用查询字符串模式 (?lang=en)
采用路径前缀模式 (默认,在 URL 之前放置 /en/ )
采用子域名模式 (http://en.yoursite.com)
我想使用第三种模式,子域模式 (http://en.yoursite.com)请问具体如何设置,找了好久也没找到具体设置方法,特来求助!谢谢!
这个没试过,你试着把 http://www.yousite.com/en 在域名设置里定向到 en.yousite.com试试?
要是和globe translate一样可以选择自动翻译就好了
@john, 这个插件的定位不同吧,毕竟自动翻译的不准确,严谨的网站——比如企业网站——是不会使用这种方法的。个人意见
@john, 才发现你的网站,挺有意思的,另一个web OS
啊呀呀呀呀呀呀呀 Qtranslate的优点和不同语言下使用不同CSS控制字体背后的浅蓝色背景如何做到的? 啊呀呀呀呀呀 对于你的BLOG的风格我现在开始五体投地。。颜色搭配真好
@YesCola, 呵呵过奖,你可以用FF+firebug看下啊,我是对内容部分的 h2 定义了background 和 border:
background:#EFF7FF none repeat scroll 0 0;
border-left:2px solid #249DDD;
@danny, 感谢~~~~~~~ 正在研究
我那好像不许要翻译,国外的人很少
@zwwooooo, 我的也不需要的,其实这个折腾也不是为自己折腾
路过。。很少玩博客~
@快播电影, 汗,你玩的是网站
膜拜折腾帝…
@mice, 爱卿平身
测试时区
又多了一个折腾帝,支持支持
建议给回复加上ctrl+enter
@derek, 本来就是折腾帝啊。恩,好建议,这个功能马上加上去
折腾无罪但这个用处不大,你还期望有国外要看你的博客呀,呵
@yesureadmin, 不是,这是帮国际友人做的博客,他要求的,没办法,呵呵
@danny, “国际友人”,哈哈,笑死我了……我说,你这个文章凌晨4点多怎么发的??
@泥_巴, 不是国际友人么,哈哈。我时区设置错误了,明天改
先沙发了~~
@小杰, 你的 Blog 真是办的不错