引子:
下午空了想改改模板,发现没办法直接在浏览器显示中文,搞不定,直觉是在本地处理汉字后按照unicode存储,浏览器当utf8来输出,所以乱码。换了换FireFox的编码方式为GBK,自己改上去的中文能显示了,其他的中文不显示了,Oh~yeah,问题找到了,解决。
上wordpress中文论坛逛了一会,解决办法如下:
- 编辑好php文件之后,存档的时候选择编码方式utf8
这个解决方案的思维模式是转移矛盾,把麻烦事转移到开发者身上。
权衡了几分钟之后,决定否了,原因在于:
不管是用editplus或者zend,的确都可以在“另存为”选项里自定义字符集,但是对于习惯在CuteFtp的编辑器下直接修改代码的开发人员来说,这是个无法回避的问题,因为不能自定义字符集了。
上个厕所回来发现在awflasher这套TES模板里有地方明明就显示了中文,却没在模板里找到汉字,郁闷了。
翻出代码开始跟,希望能找到转码函数直接调来用用,结果在模板中发现了aw调用了wp中的翻译函数开转,跟到函数内部看到的现象是:汉字和英文有个索引。
矛盾指向wp-includes\languages下pot,mo,po三个文件,维护着具体的E文单词,中文单词的对照表,顺便附带所属的文件名和单词所在行号。
理不清这三个文件鸡和蛋的关系,google了一把。乖乖,还真让我给找到了:
[摘文]WordPress及其插件汉化
by icyleaf in October 25th, 20071.WordPress汉化手册 From 一起游
概述WordPress使用GNU gettext这一本地化框架,可以方便的在代码中标记哪些文字可以被本地化,翻译者所需要做的是收集这些被标记的文字然后将其翻译为自己的母语。在这一过程中不需要更改代码,也不需要了解这些代码是怎样运行的。
这些可被本地化的文字一般都有特殊的标记,在WP中,分别有一下三种形式2.如何汉化 po 文件及编译成 mo 文件 From 行云流水 | Yorick’s Blog
我们在使用 WordPress 及其插件时,经常可以找到汉化的版本,一般是通过一个汉化过(翻译过)的 mo 文件来实现( WordPress 仅可识别 mo 文件),实际上不单 WordPress ,包括很多桌面应用程序都是是依靠 po 文件或 mo 文件来实现多语言版本。如果原作者提供了一个 po 文件或 mo 文件,那么我们就可以通过相关工具来自行汉化,或者翻译成其他语言版本。因为 mo 文件不能直接编辑,所以我们得编辑 po 文件,若仅有 mo 文件,那么就应该先把它转换成 po 文件后再进行编辑翻译。
3.在后台切换WordPress语言 From Yskin‘s blog
插件的原理是设置$locale变量。WordPress的get_locale()函数会先读取这个变量,如果不存在才会去检查常量WPLANG。所以,本插件只要设置一下全局变量$locale,就可以绕过常量WPLANG,控制WordPress的语言。不过,当有插件使用load_plugin_textdomain()函数载入自己的语言包的时候,就会调用get_locale()函数。所以,我们的插件需要成为第一个载入的插件。
4.解决WordPress解析.mo语言文件失败 From cnzzr.cn
Wordpress在64位的CPU下(linux系统)运行时,由于PHP-gettext解析.mo语言文件出错,以至于Wordpress在使用中文版本时失败。这是由于PHP-gettext在加载.mo文件时,没有正确匹配验证位导致stream自动关闭。
相关工具
PoEdit:是一个跨平台、具有图形化界面的POT文件生成和PO文件编辑器,可在Windows、Linux 和 Mac OS X 上使用。
GNU gettext:也可以跨平台使用,和poEdit最大的区别就是gettext不具有图形化界面,一些操作需要通过命令行形式完成,而且部分步骤需要手工完成。
Po2Mo:一款 GUI 界面的转化程序,该程序是调用 msgfmt.exe 和 msgunfmt.exe 文件,从而进行po 、mo 文件互转。文件是用C#写的,需要.Net 2.0环境。
想起前两天刚把窝弄好aw说过不久准备发布这套模板的中文release了,呵呵,可是我等不及了,既然工具什么的都有了,何不自己先弄弄呢。


分享到做啥
分享到收客
