WordPress主题插件汉化教程

日期: 标签:WordPress教程
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我
文章目录

使用WordPress的朋友都知道WordPress的主题很多,去网上搜搜就能搜到一大把。有时候找到一个好主题,但是发现居然是英文主题,有点让人失望。今天,我将教你如何汉化英文WordPress主题,这里提供两种方法,你可以自行选择。开始之前,先准备好你要翻译的主题。这里也只以汉化主题为例,汉化插件方法相似。

方法一:使用Poedit生成语言包

最新版的Poedit pro已经支持WordPress主题和插件的翻译,可以不用进行以下第1步和第3步的操作,最新版的Poedit pro请自行到网上搜索下载。

1、生成语言包的好处是不必修改主题代码,不会引起不必要的代码错误。请先自行下载Poedit。安装过程你可以选择中文版,安装完毕,我们开始汉化主题。打开Poedit - 文件 - 新建消息目录文档,填写以下基本信息:

新建消息目录文档


新建消息目录文档


新建消息目录文档

工程信息可以随便填,路径添加一个点 . 即可,关键字添加 _e_n_x__ 即可,注意 __ 是两个半角下划线。设置好后确定,会弹出保存窗口,命名为zh_CN.po,保存到主题目录下即可,保存成功会弹出以下窗口,说明Poedit已经探测到这么多要翻译的英文了,确定即可。如果该窗口没有任何内容,说明该主题不支持Poedit翻译,请看方法二:

更新摘要

2、好了,下面的翻译工作你就自己完成吧,翻译好后保存即可。

开始翻译

3、翻译完了,先别乐,还有工作要做,请在主题目录下的functions.php中,将 ?> 改成:

function theme_init() {
    load_theme_textdomain('Ludou', get_template_directory());
}
add_action ('init', 'theme_init');
?>

如果你是要汉化插件,请在插件所有php文件中,将 ?> 改成:

// 插件路径,如/wp-content/plugins/login-to-view-all/
load_theme_textdomain('Ludou', '这里填上插件所在的目录路径');
?>

请将以上代码中的 Ludou 改成你的主题或插件的名称。打开主题任意一个文件,查找 _e,应该可以找到类似代码:_e('Tags', 'Ludou'); ,其中的Ludou就是主题名称,不同主题的名称是不一样的。

方法二:直接修改源代码

直接修改源代码的好处是,不需要服务器去解析汉化包,节省了一定的运行时间,也算是WordPress优化的一部分吧。如果你对PHP一窍不通,请不要擅自修改源代码,推荐使用方法一。

其实修改源代码的方法也很简单,用文本编辑器打开主题目录下的所有PHP文件,查找 _e ,应该可以找到很多类似代码:_e('Tags', 'Ludou'); 这其中Tags就是你要翻译的内容,Ludou一般是主题的名称,不同主题不一样,将这一句代码改成:echo '标签'; 这样Tags的翻译就完成,接着找下一个翻译吧。如果代码是这样类型的:<?php _e('Tags', 'Ludou'); ?> ,你完全可以直接替换成:标签,这样就略过了PHP解析这一步,在一定程度上可以加速WordPress。

接着用文本编辑器查找__,注意 __ 是两个半角下划线。也可以找到类似代码:__('No comments', 'Ludou') No comments就是你要翻译的内容,将这句代码改成:'没有评论'

修改代码的时候,最好改一个就保存一次,刷新你的博客,看主题是否可以正常工作,出现错误了就还原你刚才的操作,这样能够及时地发现错误,也能轻易地找出错误。另外,汉化的时候尽量只更改英文单词,不要去修改主题的其他代码,如 __('% comment', 'Ludou'),那么你只能将其改成 '% 条评论' 不要去除 %,否则你就破坏了主题的功能。

最后,修改好一个PHP文件之后,请用 UTF-8 编码将其另存为,覆盖原来的PHP文件,否则中文都是一堆乱码!

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/how-to-translate-wordpress-theme-and-plugin.html
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者。

72 条留言

点此留言
1 2 103
  1. 奔

    看看这个。

  2. 啊秋 啊秋

    学习了,正在学习做博客中。很高兴学到这个方法。

  3. 王鹏森 王鹏森

    这是第二次过来看这篇文章,然后决定去试一试

  4. wdong.com

    太简单了。

  5. 123

    真搞不懂啊,【如果你是要汉化插件,请在插件所有php文件中,将 ?> 改成:】
    插件自带语言包,翻译完成直接保存成相应的文件名就行了,为什么要该PHP文件,真搞不懂哦。原理不是这样吗?

    • Ludou

      @123 这些代码用于加载语言包,并不是语言包放在那里,就能用的。

  6. Chin Chin

    求教如何汉化主题设置呢

    • Ludou

      @Chin 方法一也可以。如果不行就方法二,打开主题目录下所有php文件,逐个查找翻译

  7. 王光卫中文博客 王光卫中文博客

    由主题制作教程下载就好了

  8. samesame

    谢谢你的文章

    想问 有没有方法可以把可翻译的语句 直接倒出来到文本编辑器 ,或Excel 之类的软件
    翻译好再倒回去的呢

    我试过用软件打开 .po 的纯文字档 但还是没法自动分出要翻译的部分 除非 一个一个要翻译的在头尾加个tab

    有工具有这个功能么
    谢谢

  9. xuexi

    Ludou

    我主题想加载官方默认的语言包,wp-content\languages zh_CN.po

    我用load_default_textdomain();没有效果哦。 应该怎么加载?

  10. 哈哈你猜猜 哈哈你猜猜

    有个问题Poedit 翻译了主题文件的.po .mo 以后如何让主题应用上?

    主站已经 define 中文了 然后应用了一个第三方主题
    主题是英文的 附带POT文件
    已经汉化 汉化后的文件.po .mo 我放到了 wp-content/languages/themes/
    前台没变化囧 文件改名为 XXX-zh_CN.mo XXX-zh_CN.po
    还有这里/wp-content/themes/XXX/languages/
    前台没变化需要再如何设置一下?T_T

  11. 哈哈你猜猜 哈哈你猜猜

    还是把翻译的合并到 wp-content/languages/的 zh_CN.po文件里?

  12. 哈哈你猜猜 哈哈你猜猜

    ╮(╯_╰)╭不行

  13. yutorpea

    load_theme_textdomain( 'quietlover', get_template_directory() . '/languages' );

    我在汉化underscores主题,用poedit,汉化完没生效= =

    原始文件中是如上写法,主题内有languages文件夹,这个要咋改?跟您写的不太一样…

    • 露兜

      @yutorpea poedit – 文件 – 从POT/PO文件新建,选择主题目录下的POT文件,然后保存为zh_CN.po,放到languages文件夹

  14. Yutorpea

    补充一下..内容是从主题自带的POT文件打开的..按理说一切都应该没问题..

    function quietlover_setup() {

    /*
    * Make theme available for translation.
    * Translations can be filed in the /languages/ directory.
    * If you're building a theme based on QuietLover, use a find and replace
    * to change 'quietlover' to the name of your theme in all the template files
    */
    load_theme_textdomain( 'quietlover', get_template_directory() . '/languages' );

    //接下去是一些其他的东西…

  15. Yutorpea

    The .mo files must use language-only filenames, like languages/de_DE.mo in your theme directory.

    额。找到答案了。并且已经生效。

    这种路径的翻译文件必须命名为 zh_CN.mo,而不是 主题名-zh_CN.mo 。

  16. 推理社 推理社

    还是不会

  17. 提问 提问

    请问,第二种方法:直接修改源代码。升级以后,还需要再次修改吧?

1 2

发表留言