wordpress 插件 汉化
http://blog.wpjam.com/article/localizing-a-wordpress-plugin-using-poedit/
翻译或者说本地化 WordPress 插件和主题可以让更多的国家和地区的人使用,而 WordPress 对 i18n 的支持使这一切都变得非常简单,插件和主题的作者非常容易就能让人们把他们的插件翻译成各种语言。
这篇日志首先将会详细讲解应该如何修改插件和主题,使得插件和主题能够被翻译。然后将介绍一个叫做 poEdit 的翻译软件,通过它来 本地化 WordPress 插件和主题。
WordPres 插件和主题本地化的好处和 .po 文件
WordPress 插件和主题有越多的语言版本,就会有越多的不同国家的人下载和使用。
如果 WordPress 插件和主题很流行,很多人使用,就会有用户把它翻译成不同的语言以方便其他地区的人能够使用它。当然最麻烦最原始的翻译方法就是逐行逐字的翻译源代码。不过现在采用的是简单轻便的翻译方法:通过 .po 文件。
通过 .po 文件,任何人都能翻译你的插件或者主题,只要他熟悉插件使用的原始语言。并且 .po文件还有一个好处就是,如果源代码作了任何修改,翻译者不必查看源代码来重新翻译,因为所有需要翻译的文本都会自动保存在一个后缀名为 .po 文件中,翻译者所需要做的只是重新更新下.po 文件,翻译新增或修改的部分。
下面以插件为例,详细讲解 WordPress 插件和主题翻译的所有过程:
本地化的准备工作
WordPress 使用 GNU gettext 机制来实现本地化。WordPress 有两个可以被调用的函数:_e 和__。为了使得插件或者主题能够被翻译,每次输出文本的时候,都应该使用这两个函数。
- 这两个函数使用方法是:
__($message, $domain)和_e($message, $domain) _e和__的区别是:_e直接输出文本,而__是返回文本,需要自己输出,所以__一般用在字符串连接当中。- 这两个函数都用
$message作为第一个参数和$domain作为第二个参数。第一个参数就是要输出的文本,而第二个参数$domain不是可选的,它应该是一个和你插件或者主题对应的唯一的名字,举个例子,如果你开发一个叫做 Related Posts 的插件,这里$domain就是related_posts,$domain一般是在load_plugin_textdomain函数中定义,下面有具体介绍。
导入本地化文件
在确保输出的文本可以被本地化之后,你必须设置你的插件或者主题的 .mo 文件的路径(.mo 是编译后的 .po 文件,它是在 poEdit 保存的时候会自动产生的)。
在你插件中的代码大致如下所示:
load_plugin_textdomain('your-plugin-domain', "/wp-content/plugins/your-plugin-directory/");
- 函数具体语法:
load_plugin_textdomain($domain, $path) $domain变量就是前面__和_e函数中使用的第二个参数。$path是定义 .mo 文件的路径。可以使用相对于ABSPATH的相对路径。如果插件没有自己的目录,这里也可以设置为空。
这里需要注意的一件事情是,产生的任何 .mo 文件都应该以 $domain 变量的值作为文件名的前缀。如果插件的 $domain 是 related_posts 的话,那么 .mo 文件将会被命名为 related_posts-zh_CN.mo(假设插件被翻译成中文)。
使用 poEdit 进行翻译
WordPress Codex 已经有一个非常好的如何使用 poEdit 翻译插件或者主题的 step-by-step 教程,但是我这里将通过一个实例展示这些步骤。
第一步:下载 poEdit
第二步:找一个插件翻译:这里以我写的插件 Related Posts 作为例子。
第三步:打开 poEdit 并打开菜单 File -> New catalog…
在弹出的 ‘Settings’ 对话框中,输入你项目的名称,并设置字符集为 UTF-8。

第四步:输入插件的路径
在刚才的 ‘Settings’ 对话框,点击 ‘Paths’ 标签页并点击建立新条目的图标。假设插件在自己的子目录下并且你会把 .po 保存在子目录中,输入”.”(这将告诉 poEdit 去扫描当前目录和所有子目录)。

第五步:设置适当的关键字
因为 WordPress 使用 _e 和 __ 函数来本地化,所以你应该让 poEdit 知道这就是它应该查找的。点击 ‘Keywords’ 标签页并输入 _e 和 __ 作为关键字,你可以通过点击 ‘New Item’ 图标输入关键字。

第六步:点击 OK 并开始翻译
点击 “Okay” 按钮并保存 .po 文件到你的插件目录下。
在你保存 .po 文件之后,会有一个窗口弹出并告诉你所有它找到相匹配的文本。

如果你不准备翻译该插件,你可以保存.po 文件并把它和插件一起分发出去,让别人能够直接使用它进行翻译。
第七步:翻译插件
一旦所有需要翻译的文本都找到了,就该开始翻译插件了。你所做的就是只要简单的找到你想翻译的文本,并增加你自己的语言。

上面的 poEdit 界面就是插件翻译界面。
第八步:保存 Catalog
还记得前面提到的 $domain 吗?举个例子,我想生成一个西班牙文的翻译文件,我将会保存这个文件并以 $domain 作为前缀,然后语言和地区代码作为后缀。在这里,$domain 是related_posts 并且语言和地区代码是 es_ES。所以文件名应该为:related_posts-es_ES。
通过保存新文件,我将自动生成一个可以让别人使用的 .po的文件,和一个可以被 WordPress 直接读取来本地化插件的 .mo 文件。
现在如果用户已经在他们的 wp-config.php 文件中设置了适当的 WPLANG 的值,他们插件的选项和输出的文本将会使他们当地的语言。
总结
本地化一个 WordPress 插件是让更多地区用户使用你的插件的一个非常好的方法。本地化首先需要插件作者保证插件能够真正本地化,最后翻译者使用 PoEdit 进行翻译。
备注:
对于 WordPress 插件,建议大家使用 PoEdit 进行汉化。直接修改源代码也是可以的,但没有注意编码格式的话,可能会导致插件设置页面出现乱码。而且,插件升级之后旧文件被新文件覆盖,汉化也随之消失……使用 PoEdit 一般不会出现这些问题。
那么,使用 PoEdit 进行汉化的原理是什么呢?WordPress 使用 GNU gettext 机制来汉化,关键之处在于两个函数『 _e 和 __ 』。 PoEdit 通过识别并提取调用了这两个函数里的字符串,然后你只需要输入那些字符串所对应的中文语句,其他的交给 PoEdit 就行了,所有翻译的语句都会在 .po 文件中。
世界上只有两种插件不能被汉化:这种和那种。对于这种插件,他本身就是中文,当然不需要汉化啦。而那种插件呢,由于作者在编写插件过程中没有调用函数『 _e 和 __ 』,使得 PoEdit 无法识别其中需要被汉化的字符串,因此那种插件就不能被汉化。
PoEdit 汉化时注意一点:一般来说 PHP 函数或过程可以不用去看了(用『 _e 和 __ 』),你需要注意的是那些 HTML 代码。
wordpress 插件 汉化的更多相关文章
- wordpress插件汉化包,和使用教程
点击下载汉化包 解压后上传到该插件的 languages 目录即可
- Joomla插件汉化小程序
这两天在搞joomla插件,在看peter的视频,在此谢过他了.看到它汉化插件那个视频.反正闲着无聊,就写了一个Java小程序,方便使用joomla的人汉化插件.这个程序的方法很简单,你只要先运行ou ...
- IOS越狱插件汉化工具
提取插件文件“*.plist"进行制作汉化文件plist文件路径查看方法:安装插件后在cydia中查看该插件页底部“文件系统内容”使用文件管理软件提取(filza;ifile.....) 如 ...
- sublimeText3最新教程-自带插件汉化(sublime-text_build-3175_amd64)
一.可用注册码 1.更改dns 在linux下的目录是 /etc/hosts 在win7中,hosts文件的位置:C:\Windows\System32\drivers\etc 127.0.0 ...
- sublime text3083 破解 插件汉化
sublime text 注册码 1. Sublime Text 2.x 版本 —– BEGIN LICENSE —– Andrew Weber Single User License EA7E ...
- android studio 汉化 svn插件汉化。布局文件 属性 汉化 public.xml
android studio 汉化 SvnBundle.properties D:\Android Studio\plugins\svn4idea\lib resources_en.jar\org\j ...
- 常见问题:bootstrap datepicker日期插件汉化
引入简体中文js(bootstrap-datepicker.zh-CN.js),并在datepicker属性配置language为‘zh-CN’即可,示例如下: $(".form_datet ...
- WordPress 前端投稿/编辑发表文章插件 DJD Site Post(支持游客和已注册用户)汉化版 免费下载
插件简介 前面逍遥乐给大家推荐了 WordPress用户前端化专业版WP User Frontend Pro WordPress中文汉化插件v2.1.9 今天逍遥乐给大家带来的wordpress插件是 ...
- AE插件:能量激光描边光效特效Saber Mac汉化版
与大家分享一款非常好用的AE插件Saber插件汉化版.videocopilot saber是一款能量激光描边光效特效AE插件,可以帮助用户制作出能量激光.传送门.霓虹灯.电流.光束.光剑等效果.小编现 ...
随机推荐
- SQL实现分页存储过程
SQL分页存储过程的编写: --获得分页的DATASET资源 ALTER PROC sp_GetSource( @PageSize INT, --每页显示条数 @PageIndex INT, --页码 ...
- LCA(最近公共祖先)专题(不定期更新)
Tarjan(离线)算法 思路: 1.任选一个点为根节点,从根节点开始. 2.遍历该点u所有子节点v,并标记这些子节点v已被访问过. 3.若是v还有子节点,返回2,否则下一步. 4.合并v到u上. 5 ...
- 对称加密,API加密
用于API加密,双方约定好signature_key对请求的参数进行处理 处理步骤如下 把请求的数据生成为key=>value的形式,然后拼接生成arg_key arg_key加上双方约定的si ...
- [转] 我所经历的IBM SOA与系统整合
2006年,一汽大众新上来一位总经理,新加坡人,整个一国际背景高端管理人才,是德国人和中国人博弈后取得的胜利. 一汽大众过去是从总部到区域到终端一体化的大盘管理模式,很僵化很粘稠,不利用快速反应.于是 ...
- webAPI支持跨域
问题描述: 添加引用:右键项目→添加nuget包 在:App_Start/WebApiConfig.Register中添加如下一句话 //跨域配置 config.EnableCors(new Enab ...
- Wi-Fi基带芯片和Wi-Fi无线网卡设计方案
转:http://wenku.baidu.com/link?url=Q0ImC 0IIG7qrbB8DpGrrU3aOYvxNYCyHsxukspH8XMCDYMjYMPSJq_TCISC5amsNY ...
- 使用ASP.Net MVC5 Web API OData和Sencha Touch 开发WebAPP
使用ASP.Net MVC5 Web API OData和SenCha Touch 开发WebAPP Demo 效果 第一步 创建数据库 创建表 第二步 搭建MVC,并导入OData 第三步,写入We ...
- 20145230java实验报告1
20145230实验一JAVA开发环境熟悉 使用JDK编译.运行简单的JAVA程序 实验要求 •使用JDK编译.运行简单的Java程序: •使用IDEA 编辑.编译.运行.调试Java程序. 实验内容 ...
- QGIS3.0.3+Qt5.9+VS2015_x64编译
QGIS3.0.3+Qt5.9+VS2015_x64编译 参考:https://blog.csdn.net/u010670734/article/details/80241615 https://ww ...
- php flock 使用实例
php flock 使用实例 bool flock ( resource $handle , int $operation [, int &$wouldblock ] ) flock()允许执 ...