当前位置: 首页 > news >正文

wordpress之模板汉化

我的独立博客 夜の程序

wordpress的汉化机制

1. 在php文件中,需要汉化的地方使用__()或_e()函数进行标识;

2. 创建.po文件,进行翻译;

3. 将.po文件编译成.mo文件;

4. 向主题中加载.mo文件。

__()函数和__e()函数

这两个函数都接收字符串作为参数。例如:

1 
2 
__("Translate Me")
_e("Translate Me")

它们的区别在于:_()函数返回翻译后的字符串,而__e()函数打印出翻译后的字符串。其实__e()就相当于echo __()。

.po文件和.mo文件

.po文件用来对已标识的字符串进行汉化,它的格式如下:

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
10 
11
#: sidebar.php:22
msgid "Get updates by email"
msgstr "通过邮件订阅更新"

#: sidebar.php:33
msgid "Latest Posts"
msgstr "最新文章"

#: sidebar.php:37
msgid "Feed on"
msgstr "订阅"

msgid是用__()或_e()标识的字符串,msgstr是对应的翻译。

.mo文件二进制文件,它由.po文件生成,wordpress在生成网页时使用它来快速提取翻译后的字符串。

可以用poedit软件来快速方便地生成.po文件和.mo文件。

poedit的使用

poedit可以从它的主页下载。

如果主题目录中已经存在zh_CN.po文件,直接用poedit进行编辑即可;如果不存在则参见以下步骤:

1. 点击“文件-新建消息目录文档”。

2. 在弹出的对话框中填写“工程名称以及版本”、“团队”、“团队专用电子邮件”、“语言”、“字符集”、“源代码字符集”等信息。注意:不要填写“国家”,否则是否汉化会信赖于国家而不是信赖于语言。

3. 切换到“路径”选项卡,在“基本路径”中填入要汉化的主题的路径,在“路径”中加入一个"点(.)"。

4. 切换到“关键字”选项卡,在“关键字”中加入“__”和“_e”,这样poedit就会在所有php文件中查找由__()和_e()标识的字符串。

5. 点击确定后,弹出“另存为”对话框,把po文件命名为zh_CN.po。poedit会自动从所有php文件中提取出需要翻译的字符串,如下图所示,一项一项翻译就可以了。

在“编辑-首选-编辑器-行为”中勾上“保存时自动编译.mo文件”,则在保存时会自动生成zh_CN.mo文件。

若翻译完后又在php文件中添加或删除了要翻译的字符串,点击“类目-自源更新”,poedit会查找出相应的变更。

使用汉化主题

如果你用的是wordpress中文版,那么汉化完的主题就可以直接使用了;如果是英文版,则需要把wordpress安装目录的wp-config.php文件中的:

1 
2
3 
define ('WPLANG', '');
改成:
define ('WPLANG', 'zh_CN');
更多信息参见:
  • I18n for WordPress Developers
  • How to create a .po language translation

转载于:https://www.cnblogs.com/TrueNight_0/archive/2011/03/15/wordpress_template_localization.html

相关文章:

  • 虚拟主机运行Asp.net MVC2程序体验(在不同版本的 IIS 上使用 ASP.NET MVC(转),付程序示例 )...
  • SQL Server 的最大容量规范
  • VC命名规范
  • 一步一步学习C#中的多线程 --- 1、初识线程(2)--给线程传递参数
  • PL/SQL是什么
  • DDL触发器学习整理
  • quote symbol expected
  • SQL语句新建用户、对用户授权、删除用户实例
  • android文件下载!download!
  • SQL Server 2008 表变量参数(表值参数)用法
  • Java类加载器加载类顺序
  • UML类图小结
  • 系统动力学软件vensim之指数增长
  • 系统动力学软件vensim学习之一阶负反馈
  • 数字水印学习教程
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • [NodeJS] 关于Buffer
  • classpath对获取配置文件的影响
  • ComponentOne 2017 V2版本正式发布
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • TypeScript实现数据结构(一)栈,队列,链表
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 成为一名优秀的Developer的书单
  • 初探 Vue 生命周期和钩子函数
  • 高度不固定时垂直居中
  • 我有几个粽子,和一个故事
  • 我与Jetbrains的这些年
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • # Java NIO(一)FileChannel
  • ###C语言程序设计-----C语言学习(6)#
  • #pragma 指令
  • #每天一道面试题# 什么是MySQL的回表查询
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (1)bark-ml
  • (2022 CVPR) Unbiased Teacher v2
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (TOJ2804)Even? Odd?
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (七)理解angular中的module和injector,即依赖注入
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (原創) 未来三学期想要修的课 (日記)
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转载)从 Java 代码到 Java 堆
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .gitignore文件---让git自动忽略指定文件
  • .htaccess配置常用技巧