1. 苏葳的备忘录首页
  2. 软件

WordPress主题汉化中的一个问题

wordpress 汉化下载了中文版的wordpress,然后使用了一个英文版的主题,自然,页面上有许多英文。不要紧,改成中文就好了。兴冲冲打开主题目录下的php代码,把里面的英文词句翻成中文。然而在有一串评论前的“Leave a Reply”却找不到。是不是在wordpress主程序里?一搜,果然,在comments-template.php里出现两次。可是,页面上的“近期评论”,”近期文章”之类,都已经是中文了呀,难道找的位置不对?

这时,才想到认真研究下wordpress汉化的问题。

wordpress使用GNU的gettext方式进行汉化。在wp-content下有languages目录,里面有zh_CN.po文件是汉化对应表。而在wordpress内所有字串代码,都加有__()或_e()函数。前者返回本地化的串。后者直接打印本地化的串。查看zh_CN.po,里面有Leave a Reply且有对应中文串。而在前面的注释行也正确指出了comments-template.php文件中的两次出现Leave a Reply的行数。看来,代码这部份没什么问题啊?为什么其它部份汉化正确而这句不行呢?

试着将这两处改为中文,刷新页面,倒,没有变化,还是英文,看来找错了地方,冤枉了wordpress。

那就还是在主题文件夹里。再搜索,发现了comments.php,里面有Leave a Reply,以前虽然看到过,但是认为是其它标记而忽略了。改了,再试,成功了。看来还真是在这里。

那么如何汉化这个主题呢?WP的主题汉化也有一套规则。由于此英文主题未提供languages模板(没有XXX.pot文件),而代码中也未加__或_e等函数,以常规方式汉化有些麻烦。首先要将所有主题代码中的字串表示加上__或_e,然后用poedit抽取字串,然后汉化,最后保存到主题上的languages文件夹下的zh_CN.po文件中,并编译成zh_CN.mo文件。同时代码里也要略作改动。

既然确认了所有未汉化字串都在主题目录下,而不需改动wordpress主程序,省事起见,就直接在代码中翻成中文好了,因为省掉了多余的处理,据说效率还会高一些。

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/457.html

发表评论

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