让WordPress主题支持语言本地化(使用poedit软件实现中文翻译功能)
如果你的WordPress主题要提交到WordPress官方主题库,使用者来自世界各地的多种语言,那么,你就要让你的WordPress主题支持语言本地化,方便使用者进行语言翻译和制作语言包。
让WordPress主题支持语言本地化,主要流程为:让主题开启语言本地化功能,然后使用符合WordPress API 规范的写法来撰写需要翻译的内容,接着使用 poedit 生成语言包。下面倡萌将进行详细讲解。
让主题支持语言包
在主题的 functions.php 文件添加下面的代码:
add_action('after_setup_theme', 'my_theme_setup');
function my_theme_setup(){
load_theme_textdomain('wpdaxue', get_template_directory() . '/languages');
}
该代码是通过 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”,这个参数都需要添加到 __() 等函数中作为末位参数,它是用来检索被翻译字符串的唯一标识符。例如:
<?php
the_content( __( 'Click here to read more','wpdaxue' ) );
?>
如果去掉上面代码 __() 的末位参数‘wpdaxue’,对应的 'Click here to read more' 的翻译内容就没办法正常加载。
使用 POEdit 制作语言包
POEdit 是一款非常有用的语言包制作软件,你可以在 POEdit 官方下载,安装好以后,就是中文界面了。下面就简单演示一下操作过程。
新建编目
点击 文件 > 新建编目,会出现如下界面:
1.在”翻译属性”中按照下面的范例添加信息:
需要注意的是,“语言”就是输出语言的简码,比如简体中文为 zh_CN (注意大小写),然后字符集一般选择 UTF-8,复数形式一般填 nplurals=2; plural=(n!=1); 即可。
2.切换到“源路径”,由于前面我们创建的语言包路径为当前主题的 languages 目录,所以这里我们添加相对路径 ../ 即可,如下图:
3.添加“源关键字”,这个关键字就是要识别上面的几个翻译函数。
需要注意的是,_n、_x 和 _ex 这三个函数要添加对应的参数才能实现其功能,建议对应的写法为
- __
- _e
- _n:1,2
- _x:1,2c
- _ex:1,2c
填写完以后,点击“确认”,就创建好了编目。
导入需要翻译的字符串
点击“更新”按钮,如果你前面的步骤没有出错的话,就会自动搜索主题文件中需要翻译的条目,如下图:
翻译字符串
翻译完以后,将语言包保存到主题的语言目录 languages 中,这里特别要注意语言包的命名。它是使用 Gettext 代码来命名的,比如中文的 Gettext 语言代码为 zh ,国别代码为 CN,所以最终保存的简体中文语言包为 zh_CN.po,POEdit 会自动生成一个名为 zh_CN.mo 的文件。
po 和 mo 的最直接的区别在于:po文件是给人看的,也是可以直接通过 POEdit 编辑的,mo 文件则是给服务器识别的,是用来显示翻译内容所必需的。也就是说,你的主题语言目录中,可以没有po文件,但是必须有mo文件,否则服务器就没办法加载翻译!
你可以通过下面的链接了解更多 Gettext 代码:
- Gettext 语言代码
- Gettext 国别代码
让WordPress识别语言包
通过上面的步骤,我们已经创建好了语言包,那么WordPress如何才能识别语言包?打开WordPress根目录下的 wp-config.php 文件,找到 WPLANG,如果这里填入的是 zh_CN ,说明你使用的是简体中文版本的 WordPress,那么主题也会自动调用简体中文语言包 zh_CN.mo 。
/**
* WordPress 语言设置,中文版本默认为中文。
*
* 本项设定能够让 WordPress 显示您需要的语言。
* wp-content/languages 内应放置同名的 .mo 语言文件。
* 要使用 WordPress 简体中文界面,只需填入 zh_CN。
*/
define('WPLANG', 'zh_CN');
小结
在整个过程中,工作量最大的就是 “规范编译要翻译的内容”这个步骤,你必须有耐心,仔细地规范代码。熟悉 __()、_e()、_x、_ex 和 _n 的不同用法是难点所在。
本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/p/4762366.html,如需转载请自行联系原作者
让WordPress主题支持语言本地化(使用poedit软件实现中文翻译功能)相关推荐
- 让你的WordPress主题支持自定义菜单
WordPress 3+以后的版本已经支持自定义菜单功能,如果你的主题还不能支持这个功能话,我敢说你的主题Out啦,是不是想再In进来?那就认真继续阅读,让你的WordPress主题支持自定义菜单功能 ...
- WordPress主题LensNews模板源码,2.2版本多功能新闻积分商城主题
介绍 萨龙网络原创全新集新闻.画廊.视频.商城.积分和用户中心的多功能CMS主题lensnews,添加了众多功能和优化,响应式.多自定义类型文章.文章点赞.文章收藏.弹窗登录.简繁体切换.AJAX加载 ...
- StructBERT:将语言结构纳入深度语言理解的预训练中——中文翻译
STRUCTBERT:将语言结构纳入深度语言理解的预训练中 Wei Wang, Bin Bi, Ming Yan, Chen Wu, Zuyi Bao, Jiangnan Xia, Liwei Pen ...
- 【Ada语言学习笔记】参考手册中文翻译及注记——语言概述
我们在Concurrent & Distributed Systems课的实验中需要用到Ada语言. 通俗而笼统地讲,Ada语言是一种描述特别详尽的语言(highly specific),因此 ...
- wordpress主题_选择完美的WordPress主题–您应该考虑的9件事
wordpress主题 Most beginners feel overwhelmed when it comes to selecting a theme for their WordPress s ...
- 2023年10个最适合外贸网站的WordPress主题推荐
搭建外贸wordpress网站的时候,大家最经常问起的一个问题是:选择什么样的wordpress主题才是最合适的.外贸面对的是国外市场以及国外客户,选择国外外贸WordPress主题可以带来以下好处: ...
- wordpress最佳架构_金融网站的25个最佳WordPress主题
wordpress最佳架构 Are you a financial planner or business consultant who's looking to make a website wit ...
- wordpress用途_20个免费的多用途WordPress主题
当谈到WordPress主题时 ,可以选择一角钱,我们有适合高级开发人员的WordPress入门主题 . 我们还有精美的优质WordPress主题,您可以以可承受的价格负担得起. 当然,我们有易于自定 ...
- Avada多功能企业主题去授权无限制版本(更新V5.8.2)WordPress主题模板
源码下载:Avada多功能企业主题去授权无限制版本(更新V5.8.2)WordPress主题模板-小程序文档类资源-CSDN下载 Avada多功能企业主题去授权无限制版本(更新V5.8.2)WordP ...
- wp主题php修改,修改WordPress主题
不满足于WordPress默认功能的站长们都会对WordPress强大的扩展功能感到好奇,进而尝试自己修改主题.对WordPress主题进行修改时,没有必要精通PHP,你需要的,只是一点基础的HTML ...
最新文章
- bootstrap-less源码分析:行和列
- 元学习(meta learning) 最新进展综述论文,28页pdf
- 脑神经计算建模揭示前额叶皮层不同类型中间神经元在信息维持中的作用
- openpyxl模块介绍
- Linux性能测试 KSysguard工具
- 面试题整理 1:将一个字符串转换为整数
- Python 内建函数 max/min的高级用法
- 什么是区块链?什么是比特币?一文轻松看懂!
- 安卓4.4玩java_Android4.4运行过程中闪退java.lang.NoClassDefFoundError
- 数据中台技术及业务发展史与未来趋势展望
- restful 接口文档_第 16 篇:别再手动管理接口文档了
- Python爬虫之(一):爬虫简介
- 一套完整的 Java 线上故障排查技巧,建议收藏!
- qt定时器暂停与重新开始_Qt编写自定义控件22-蚂蚁线
- 先科机顶盒一直出现android,网络电视机顶盒停留在开机界面,无法开机的解决办法...
- r语言调用python_如何在Rstudio中使用python 语言 (图文详解)
- MPS2326 Constant-On-Time (COT) Step-Down Converter DC-DC
- JAVA生成纯色背景图-自定义大小-自定义颜色
- MySQL Bug一例-----ibuf cursor restoration fails
- Data URL和图片(前端细节优化)