WordPress 语言文件

本文被收录到:

WordPress 开发文档

WordPress是一款能让您建立出色网站、博客或应用程序的开源软件。美观的设计,强大的功能,助您自由发挥心中所想。WordPress既是免费的,也是无价的。全世界 43% 的网站都在使用WordPress,小到兴趣博客,大到新闻网站。

目录

一,WordPress 创建语言文件

通常 WordPress 的语言文件在 ./wp-content/languages 下,文件的扩展名,是“mo”和“po”,

po文件

用程序msginit来分析pot文件,生成各语言对应的po文件,比如中文就是zh_CN.po,法语就是fr.po文件。

PO是Portable Object(可移植对象)的缩写形式,它是面向翻译人员的、提取于源代码的一种资源文件。

po文件可以用任何编辑器如poEdit,vi,Emacs,editplus打开,交给翻译人员来将其中的文字翻译成本国语言。

mo文件

用msgfmt将.po文件编译成mo文件,这是一个二进制文件,不能直接编辑。

MO是Machine Object(机器对象)的缩写形式,它是面向计算机的、由.po文件通过GNU gettext工具包编译而成的二进制文件,应用程序通过读取.mo文件使自身的界面转换成用户使用的语言,如简体中文。

创建一个 po 文件:

bash
msgid ""
msgstr ""

#. translators: %s: wp-config.php
#: wp-admin/includes/network.php:463
msgid "You should back up your existing %s file."
msgstr "您应备份现有的 %s 文件。"

#. translators: %s: wp-config.php
#: wp-admin/includes/network.php:463
msgid "dada"
msgstr "哒哒"

msgid "dodo"
msgstr "兜兜"

使用命令生成“mo”文件:

msgfmt -o languages/zh_CN.mo languages/zh_CN.po

二,载入本地化语言文件

WordPress 做一个多语言网站,或者让我们的主题支持多种语言,那么就可以使用 load_theme_textdomain() 函数来定义主题的语言路径,只要将语言放到该目录下面且命名正确,就可以生效。 load_theme_textdomain() 位于 wp-includes/l10n.php

在主题的functions.php中加入以下代码:

add_action('after_setup_theme', 'la_theme_setup');
function la_theme_setup(){
    load_theme_textdomain('la_theme', get_template_directory() . '/languages');
}

三,使用语言文件

1.字符串翻译 要使字符串在您的插件中可翻译,请将原始字符串包装在__()函数调用中,如下所示:

$text = __( 'Hello, SitePoint Readers!', 'espw-plugin' );

如果要向浏览器回显字符串,而不是echo语言构造,请使用_e函数:

_e( 'Hello, SitePoint Readers!', 'espw-plugin' );

2.使用占位符 作为PHP和WordPress开发人员,我假设您知道什么是placeholders 。 您可以快速浏览sprintf和printf() PHP文档以获得更多信息。 如果要在字符串中使用变量(例如下面的示例),则应使用占位符。

echo 'Your city is $city.'

正确的方法是如下使用printf()函数:

printf(
  __( 'Your city is %s.', 'espw-plugin' ),
  $city
);

浏览WordPress插件存储库中托管的一些插件的代码,我确实看到了类似这样的信息:

echo __('Your city is $city', 'espw-plugin');
_e('Your city is $city', 'espw-plugin');

尽管字符串现在可以翻译了,但是PHP变量$city也可以翻译。

这是一种不好的做法,因为翻译人员可能会错误地更改变量或将恶意代码注入插件代码库中,这最终会使插件发生故障。

sprintf函数与printf相似,因为它们使用占位符格式化字符串,而printf输出格式化的字符串,而sprintf返回该字符串。

示例:以下代码将格式化的字符串分配给变量$text 。

$text = sprintf( __('Your city is %s.', 'espw-plugin'), $city );


声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
真诚赞赏,手留余香
赞赏
搜神记
766 文章
4 教程
8 项目
随机推荐
Debian11 安装笔记2:编译安装PHP
MySQL 表名预处理
阿里云内容安全 API 签名机制
WordPress RESTful API 的授权方式
WordPress 主题激活和取消激活钩子
Land APP 小程序
使用 MySQL 线程池对压力测试的影响
Node.js 内置模块