国际化是开发主题的过程,因此可以很容易地将其翻译成其他语言。国际化通常缩写为国际18n
(因为字母i和n之间有18个字母)。
WordPress在世界各地使用,在英语不是主要语言的国家。WordPress插件中的字符串需要以特殊的方式进行编码,以便可以轻松地翻译成其他语言。作为开发人员,您可能无法为所有用户提供本地化;然而,翻译人员可以成功地本地化主题,而无需修改源代码本身。
为了使主题中的文本易于翻译,文本不应硬编码在主题中,而应通过WordPress中的一个本地化函数作为参数传递。
除非翻译人员修改了效率不高的源代码,否则无法翻译以下示例。
<h1>设置页面</h1>
通过将字符串传递给本地化函数,可以很容易地对其进行解析以进行翻译。
<h1><?php_e(“设置页”);?></h1>
WordPress使用获取文本库可以在PHP中添加翻译。在WordPress中,您应该使用WordPres本地化函数,而不是与PHP gettext兼容的本地翻译函数。
文本域是国际化函数中使用的第二个参数。文本域是一个唯一的标识符,允许WordPress区分所有加载的翻译。文本域只需要为主题和插件定义。
WordPress.org上托管的主题文本域必须与主题URL的slug匹配(wordpress.org/themes/<slug>
).这是必需的,以便translate.wordpress.org正确工作。
文本域名必须使用破折号而不是下划线,并且必须是小写。例如,如果主题的名称我的主题
定义在样式表
或包含在名为我的主题
文本域应该是我的主题
.
文本域用于三个不同的位置:
- 在
样式表
主题标题 - 作为本地化函数中的参数
- 使用加载翻译时作为参数
加载主题文本域()
或load_child_theme_textdomain()
style.css主题标题
文本域将添加到样式表
标头,以便即使主题未启用,也可以翻译类似描述的主题元数据。文本域应与在以下情况下使用的域相同加载文本域.
例子:
/**主题名称:我的主题*作者:主题作者*文本域:my-theme*/
域路径
当翻译保存在其他目录中时,需要域路径语言
. 这样WordPress就知道在主题未激活时在何处查找翻译。例如,如果.mo文件位于languages文件夹中,则Domain Path将为/语言
并且必须用第一个斜杠书写。默认为语言
主题中的文件夹。
例子:
/**主题名称:我的主题*作者:主题作者*文本域:my-theme*域路径:/languages*/
将文本域添加到字符串
应该将文本域作为参数添加到所有本地化函数中,以便翻译正常工作。
示例1:
__(“发布”)
应该变成
__(“帖子”,“我的主题”)
示例2:
_e(“发布”)
应该成为
_e(“帖子”,“我的主题”)
示例3:
_n(“%s帖子”,“%s贴子”,$count)
应该变成
_n(“%s帖子”,“%s贴子”,$count,“我的主题”)
文本域应该作为字符串而不是变量传递给本地化函数。它允许解析工具区分文本域。不可执行操作的示例:
__('翻译我。',$text_domain);
正在加载翻译
WordPress中的翻译保存在.po型
和.mo(毫米)
需要加载的文件。可以使用函数加载load_theme_textdomain()
或load_child_theme_textdomain()
。此负载{地区}.mo
从主题的基本目录或{文本域}-{地区}.mo
从中的WordPress主题语言文件夹/wp-content/语言/主题/
.
从4.6版开始,WordPress会自动检查wp含量
对于来自的翻译translate.wordpress.org。这意味着通过translate.wordpress.org翻译的插件不需要load_plugin_textdomain()
不再。如果您不想添加load_plugin_textdomain()
调用插件时,应设置至少需要:
将readme.txt中的字段设置为4.6。
要了解有关不同语言和国家代码的更多信息,请参阅语言列表.
当心
- 将MO文件命名为
{地区}.mo
(例如de_de.po和de_de.mo),如果将翻译添加到主题文件夹。 - 将MO文件命名为
{文本域}-{地区}.mo
(例如my-theme-de_de.po&my-theme-de_de.mo),如果您要将翻译添加到WordPress主题语言文件夹。
例子:
函数my_theme_load_theme_textdomain(){load_theme_textdomain('my-theme',get_template_directory()。'/语言);}add_action('after_setup_theme','my_theme_load_theme_textdomain');
理想情况下,此函数应在主题的函数.php
.
语言包
如果您对语言包以及如何将导入translate.wordpress.org正在工作,请阅读关于翻译的元手册页面.
现在您的翻译已经加载,您可以使用国际化函数开始编写主题中的每个字符串。
检查国际化第页,位于通用API手册以获取更多信息和最佳实践。