jam*_*lin 12 php wordpress wordpress-theming internationalization po
我知道如何通过使用Poedit生成.po和.mo文件来创建主题和模板的翻译.但是,由于模板名称是在每个模板文件顶部的PHP注释中编写的,因此无法按照我的看法进行翻译.
WordPress模板标题:
/**
* Template Name: Three columns
*
* @package WordPress
*/
Run Code Online (Sandbox Code Playgroud)
模板名称以某种方式由Wordpress解析,用于在创建页面时填充模板选择下拉列表.
所以我的问题是:有没有办法翻译WordPress模板名称?WordPress还会查找我可以在模板文件中设置的任何特定变量吗?还是只是不可能?
Nik*_*lov 13
我最近偶然发现了这一点.以下是我如何解决这个问题:
首先,添加(如果您已经没有)Text Domain: mytext_domain到您的主题,实际文本域style.css在哪里mytext_domain.
然后在主题的某个地方添加一个虚拟调用到翻译函数(最好是在模板名称声明下添加它,所以你不知道为什么要放它):
/**
* Template Name: Three columns
*
* @package WordPress
*/
__( 'Three columns', 'mytext_domain' );
Run Code Online (Sandbox Code Playgroud)
这样做的原因是因为WordPress将您的模板名称传递给translate()函数,但由于转换器插件解析您的代码,因此他们不知道您的模板名称应该是.po(或者是.mo?)文件的一部分.__()修复问题的虚拟调用.
你Text Domain为style.css 添加声明的原因是因为这是WordPress在解析模板名称时查找主题的textdomain的地方.
我无法给你确切的消息来源,因为我真的只是探索核心代码,直到我弄清楚它是如何工作的,以及如何能够翻译我的模板名称.
PP:我不确定Poedit是如何工作的 - 如果你手工添加你的翻译,你可能不需要虚拟调用 - 只需测试有没有它并使用最适合你的:)
更好的方法:
Text Domain: theme-slug如果您还没有将标题添加到style.css文件中.
通过查看develop.svn主干来获取官方WordPress开发人员包的结账:http://develop.svn.wordpress.org/trunk/
在那里,你会找到一个名为/ tools/i18n的目录.在该目录中是一个makepot.php文件.您可以将它用于主题,如下所示:
> php makepot.php wp-theme /path/to/your/theme/directory theme-slug.pot
这将使用最新的WordPress代码为您创建POT文件.它从头文件中获取字符串,从所有WordPress i18n函数中获取所有内容.这也意味着您不需要像其他答案所暗示的那样创建任何"假"字符串.
确保你svn update每隔一段时间做一次,因为i18n工具和核心中继代码可以每隔一段时间更新一次.
请注意,使用i18n工具时,他们需要在行李箱结账时使用.你不能在文件系统中移动它们,因为它们依赖于WordPress函数来对文件进行一些解析,所以它们有相对的包含路径将树备份到WordPress核心/ src目录中.作为整体的主干目录需要完整,以使工具正常工作.但是,trunk目录可以取消配置,你不需要有WordPress的工作安装,它只需要一些WordPress代码来正确解析文件.
| 归档时间: |
|
| 查看次数: |
2690 次 |
| 最近记录: |