黑李白的wordpress模版汉化心得

昨晚突发奇想,自己要汉化一个中文模版出来给朋友用,朋友是做书法的,需要一个企业站。于是我就上国外的网站寻找色调合适,功能贴近的wordpress模版。

     我找到了一个模版,觉得无从下手,看了这篇文章又问了我的朋友keelii(职业前端),所以给大家些初期提示。

这是我当时看的模版汉化的启蒙教程:http://www.wopus.org/wordpress-deepin/themes-translate/865.html

再按照我朋友给的提示,我用DW汉化了整个模版的英文内容,问题出来了。就是我确认模版全部汉化,而且全部UTF8但还是边栏那里有乱码,上网一查。得出以下结果:希望对大家有帮助!

wordpress主题汉化过程中不得不说的问题,PHP与UTF8可恶的BOM

最近几天在尝试使用WORDPRESS 建站, 由于对自己功底的自信. (毕竟也当过几年程序员了) 自然是上手非常快,WP这东西还真是不错内置的插件机制非常好. 加上国外大批的FANS为他开发各式各样的插件. 用他来做小网站真是太方便了,唯一欠缺的就是负载能力差,不过谁blog会有几万数据呢?而且大量插件中也有一些cache和静态化插件也能抵挡了.....

这WORDPRESS主题(模版)资源自然是国外的更多一些,浏览多个主题站选了一些看着比较合我意的就开始着手汉化了。基本上一切顺利上站测试的时候。发现中文乱码,这个好解决因为这些主题都是国外FNAS提供的,基本没有考虑到我们国内用户,都是采用开发者本地系统的默认编码也就是我们经常在记事本和其他编辑器上看到的“ANSI”.我们中文系统上就是gb2312了。 打开记事本另存为utf-8的就可以了。

这下都好了,中文也显示正常了。   且慢! 我这页面怎么和screenshot.png (效果预览图片) 有点不太一样呢。仔细观察发现原来是页面开始的位置好像多了一行,于是打开源代码分析,编码utf8没错,页面开始位置也没有多余的代码而且这个空行显然出现在页面开始但是页面开始部分的代码我都自己经过自己重写了还是不行,为什么会多出一个空行呢?百思不得其解。就这个问题和几个web设计的朋友交流也没有找到答案,但是在聊天时我把网站的页面代码通过QQ复制时发现了问题。 就是在 <!DOCTYPE html PUBLIC "..."> 之前有一个类似于空格的字符,该字符只有复制文本到QQ这样的richbox里才可以看到在文本编辑器里根本看不到。从他出现的位置分析,我开始认为是程序或模版中在执行header.php之前有不规范的输出。因为我这个人好改,wp也没放过根据自己的需求改了一些地方。在反复分析过数次之后我打消了这个念头,因为当我换上英文原版后bug自然消失了,显然问题还是出在主题文件上。

可以确定自己书写代码无误,文件格式无误,最后我把焦点集中在了文件编码上,经过搜索整理了一些资料后才明白原来bug的根源不是别的,就是我想都没去想的PHP自己。我们编辑保存的UTF8的编码文件在文件开头有会有一个 “Byte Order Mark”简称 BOM 这还是缘于与utf-16一脉相承的原因。 但是BOM对于utf8并不是必须的。而PHP的bug正在于此,我们的PHP现在还无法识别utf8文件开头的BOM,所以一个我们肉眼看不见的伪空格就实现了。

既然找到了病根对症下药即可。 但是我该如何去除这文件开头的BOM呢? 现在记事本已经不能再用了因为它根本就没有这个功能,我还是用我的editplus举例:工具 -〉配置用户工具... -〉文件 -〉默认编码方式选“utf-8” ,utf-8标识选“总是删除签名” -〉确定。   打开模版文件从新编辑保存一切ok 传到网站上那该死的空行马上消失了。(Notepad++ 也是非常好用,更直观一些.)

总结:一个小编码问题蒸腾了我半天时间,虽说有所收获,但还属学艺不精。后来在网上根据结论去反搜了一下有很多朋友遇到同样的问题,有了相同答案。看来我这搜索打法还是没练好,要是先搜到答案就不用绕个大弯了。

作者:jim.ma

2011-06-11 12:481