让WordPress主题支持语言本地化(使用poedit软件实现中文翻译功能)

简介:

如果你的WordPress主题要提交到WordPress官方主题库,使用者来自世界各地的多种语言,那么,你就要让你的WordPress主题支持语言本地化,方便使用者进行语言翻译和制作语言包。

让WordPress主题支持语言本地化,主要流程为:让主题开启语言本地化功能,然后使用符合WordPress API 规范的写法来撰写需要翻译的内容,接着使用 poedit 生成语言包。下面倡萌将进行详细讲解。

让主题支持语言包

在主题的 functions.php 文件添加下面的代码:

  1. add_action('after_setup_theme', 'my_theme_setup');
  2. function my_theme_setup(){
  3.     load_theme_textdomain('wpdaxue', get_template_directory() . '/languages');
  4. }

该代码是通过 load_theme_textdomain() 函数来定义主题的语言路径,其中包含了两个参数,第一个“wpdaxue”是 textdomain ,第二个“get_template_directory() . '/languages' ”则指明主题的语言存放路径为 当前主题的 languages 目录。只要将语言包存放在这个目录,就可以生效。

规范编译要翻译的内容

要让你的主题的文本内容支持自动翻译,需要你做好规范符合 WordPress API 的书写。WordPress常用下面几个函数来包裹需要翻译的内容:

  • __()
  • _e()
  • _x()
  • _ex()
  • _n()

倡萌已经介绍过《WordPress翻译中 __()、_e()、_x、_ex 和 _n 的用法及区别》,但是在实际使用中,我们还需要注意以上函数的末位参数 。也就是在上一步中,我们通过 load_theme_textdomain() 函数定义了第一个参数 $domain 为“wpdaxue”,这个参数都需要添加到 __() 等函数中作为末位参数,它是用来检索被翻译字符串的唯一标识符。例如:

  1. <?php  
  2. the_content( __( 'Click here to read more','wpdaxue' ) ); 
  3. ?>

如果去掉上面代码 __() 的末位参数‘wpdaxue’,对应的 'Click here to read more' 的翻译内容就没办法正常加载。

使用 POEdit 制作语言包

POEdit 是一款非常有用的语言包制作软件,你可以在 POEdit 官方下载,安装好以后,就是中文界面了。下面就简单演示一下操作过程。

新建编目

点击 文件 > 新建编目,会出现如下界面:

1.在”翻译属性”中按照下面的范例添加信息:

wpdaxue.com-201304549

需要注意的是,“语言”就是输出语言的简码,比如简体中文为 zh_CN (注意大小写),然后字符集一般选择 UTF-8,复数形式一般填 nplurals=2; plural=(n!=1); 即可。

2.切换到“源路径”,由于前面我们创建的语言包路径为当前主题的 languages 目录,所以这里我们添加相对路径 ../ 即可,如下图:

wpdaxue.com-201304550

3.添加“源关键字”,这个关键字就是要识别上面的几个翻译函数。

wpdaxue.com-201304551

需要注意的是,_n、_x 和 _ex 这三个函数要添加对应的参数才能实现其功能,建议对应的写法为

  • __
  • _e
  • _n:1,2
  • _x:1,2c
  • _ex:1,2c

填写完以后,点击“确认”,就创建好了编目。

导入需要翻译的字符串

点击“更新”按钮,如果你前面的步骤没有出错的话,就会自动搜索主题文件中需要翻译的条目,如下图:

wpdaxue.com-201304552

翻译字符串

wpdaxue.com-201304553

翻译完以后,将语言包保存到主题的语言目录 languages 中,这里特别要注意语言包的命名。它是使用 Gettext 代码来命名的,比如中文的 Gettext 语言代码为 zh ,国别代码为 CN,所以最终保存的简体中文语言包为 zh_CN.po,POEdit 会自动生成一个名为 zh_CN.mo 的文件。

po 和 mo 的最直接的区别在于:po文件是给人看的,也是可以直接通过 POEdit 编辑的,mo 文件则是给服务器识别的,是用来显示翻译内容所必需的。也就是说,你的主题语言目录中,可以没有po文件,但是必须有mo文件,否则服务器就没办法加载翻译!

你可以通过下面的链接了解更多 Gettext 代码:

让WordPress识别语言包

通过上面的步骤,我们已经创建好了语言包,那么WordPress如何才能识别语言包?打开WordPress根目录下的 wp-config.php 文件,找到 WPLANG,如果这里填入的是 zh_CN ,说明你使用的是简体中文版本的 WordPress,那么主题也会自动调用简体中文语言包 zh_CN.mo 。

  1. /**
  2.  * WordPress 语言设置,中文版本默认为中文。
  3.  *
  4.  * 本项设定能够让 WordPress 显示您需要的语言。
  5.  * wp-content/languages 内应放置同名的 .mo 语言文件。
  6.  * 要使用 WordPress 简体中文界面,只需填入 zh_CN。
  7.  */
  8. define('WPLANG', 'zh_CN');

小结

在整个过程中,工作量最大的就是 “规范编译要翻译的内容”这个步骤,你必须有耐心,仔细地规范代码。熟悉 __()、_e()、_x、_ex 和 _n 的不同用法是难点所在。




本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/p/4762366.html,如需转载请自行联系原作者

相关文章
|
1月前
|
JavaScript 搜索推荐 前端开发
WordPress主题推荐
作为网站的基础,WordPress主题对网站加载速度具有重要影响。一个设计不好,代码杂乱的WordPress主题会严重影响网站加载速度,进而影响网站排名。相反,一个设计良好,代码简洁的WP主题会加载很快,有助于提升网页排名。如果你想创建一个精美的WordPress网站,选择一个优秀的主题至关重要。然而,在追求美观的同时,绝不能忽视性能和速度。在本文中,我们已经为你整理了一些速度快且适合SEO的WordPress主题。
83 4
WordPress主题推荐
|
3天前
|
前端开发 定位技术 SEO
基于WordPress开发的高颜值的自适应主题,支持白天与黑夜模式
环境要求 WordPress >=6.0PHP >=7.4 主题特性 支持白天与暗黑模式 全局无刷新加载 支持博客、CMS、企业三种布局 内置 WP 优化策略 内置前台用户中心 支持 QQ / Github / Gitee / 微博登录 支持缩略图伪静态 全局顶部滚动公告 图形及极验验证码支持 自定义 SMTP 支持 一键全站变灰 网页压缩成一行 后台防恶意登录 内置出色的 SEO 功能 评论 ajax 加载 文章点赞、打赏、海报生成、分享 Twemoji 集成 丰富的广告位 丰富的小工具 自动百度链接提交 众多页面模板(读者墙 / 归档 / 书籍推荐 / 站点导航 / 标签 / 站点地图
15 5
|
4月前
|
PHP SEO
WordPress 主题和插件
WordPress 主题和插件
81 0
|
6月前
WordPress主题安装
WordPress主题安装
|
2月前
|
前端开发 Java
WordPress动漫图片主题cxudy模板
WordPress多功能CX-UDY图片主题代码分享
24 1
|
3月前
|
数据库 数据安全/隐私保护 SEO
如何像我这样创建一个酷炫且能赚钱的网站(使用宝塔安装WordPress搭建子比主题)
如何像我这样创建一个酷炫且能赚钱的网站(使用宝塔安装WordPress搭建子比主题)
42 0
如何像我这样创建一个酷炫且能赚钱的网站(使用宝塔安装WordPress搭建子比主题)
|
3月前
|
前端开发
wordpress博客趣主题个人静态网页模板
博客趣wordpress页面模板适合个人博客,个人模板等内容分享。
81 0
|
9月前
|
Cloud Native 关系型数据库 MySQL
云原生之部署wordpress博客及设置圣诞主题风格
云原生之部署wordpress博客及设置圣诞主题风格
97 1
|
9月前
|
人工智能 缓存 前端开发
别找了,很适合新手站长的wordpress 主题:puock 主题,支持博客风格,CMS 风格,企业风格
puock 主题的特点有三个,第一它集成了博客风格,CMS 风格,企业风格,这三种风格,你可以自由设置与选择;第二它的后台项目比较多,什么幻灯片与公告,全局的公告,CMS 布局,企业布局等等,可以说一个主题可以当三个用。
240 2
|
12月前
|
前端开发 JavaScript SEO
WordPress 主题与插件有什么区别?
WordPress是一个广泛使用的开源内容管理系统(CMS),因为它非常灵活且易于使用。WordPress的灵活性主要来自于它的主题和插件。WordPress主题和插件都可以扩展和定制WordPress的功能,但它们之间有很大的区别。在本文中,北京六翼带大家讨论WordPress主题和插件之间的区别。