什么是国际化
在开发WordPress主题中,国际化是指WordPress主题很容易翻译成其他语言。国际化通常缩写为i18n(因为字母i和n之间有18个字母)。
为什么说国际化很重要
WordPress在世界各地都在使用,在那些英语不是主要语言的国家。WordPress插件中的字符串需要以一种特殊的方式进行编码,以便轻松地翻译成其他语言。作为一名开发人员,您可能无法为所有用户提供本地化;然而,翻译人员可以成功地本地化主题,而无需修改源代码本身。
在国内,WordPress在外贸站方面使用较多,既然是做外贸,支持国际化就是必要的功能了。
如何将WordPress主题国际化
为了使主题中的文本能够轻松翻译,文本不应在主题中进行硬编码,而应通过WordPress中的一个本地化函数作为参数传递。
以下示例无法翻译,除非翻译人员修改了源代码,这不是很有效。
<h1>Settings Page</h1>
通过将字符串传递给本地化函数,可以很容易地对其进行解析和翻译。
<h1><?php _e( 'Settings Page' ); ?></h1>
WordPress 使用 gettext 库来添加 PHP 中的翻译。在WordPress中,您应该使用WordPress本地化功能,而不是本地的 PHP gettext 兼容翻译功能。
Text Domain
文本域是国际化函数中使用的第二个参数。文本域是一个唯一的标识符,允许WordPress区分所有加载的翻译。只需要为主题和插件定义文本域。
WordPress.org上托管的主题-文本域必须与主题URL的段塞相匹配(wordpress.org/themes/<glug>)。这是必要的,这样translate.wordpress.org的翻译才能正常工作。
文本域名必须使用破折号而不是下划线,并且必须小写。例如,如果主题的名称My theme是在style.css中定义的,或者它包含在名为My theme的文件夹中,那么文本域应该是My theme。
文本域用于三个不同的位置:
1.在style.css主题标头中
2. 作为本地化函数中的自变量
3. 使用 load_theme_textdomain() 或 load_child_theme_textdomain()
style.css theme header - style.css 主题头部声明
文本域被添加到style.css头中,这样即使在主题未启用的情况下,也可以翻译像描述这样的主题元数据。文本域应与加载文本域时使用的域相同。
举个例子:
/*
* Theme Name: My Theme
* Author: Theme Author
* Text Domain: my-theme
*/
Domain Path - 域路径
当翻译保存在语言以外的目录中时,需要域路径。这是为了让WordPress知道在主题未激活时在哪里可以找到翻译。例如,如果.mo文件位于languages文件夹中,则域路径将为/languages,并且必须使用第一个斜杠写入。默认为主题中的语言文件夹。
举个例子:
/*
* Theme Name: My Theme
* Author: Theme Author
* Text Domain: my-theme
* Domain Path: /languages
*/
在 Domain 中添加字符串
文本域应该作为参数添加到所有本地化函数中,以便翻译正确工作。
__( 'Post' )
应当改为:
__( 'Post', 'my-theme' )
例子2:
_e( 'Post' )
应当改为:
_e( 'Post', 'my-theme' )
例子3:
_n( '%s post', '%s posts', $count )
应当改为:
_n( '%s post', '%s posts', $count, 'my-theme' )
文本域应该作为字符串而不是变量传递给本地化函数。它允许解析工具区分文本域。错误的示例:
__( 'Translate me.' , $text_domain );
加载翻译
WordPress中的翻译保存在需要加载的 .po 和 .mo 文件中。可以使用函数 load_theme_textdomain() 或 load_child_theme_textdomain() 这将从主题的基本目录或 {text-domain}-{locale}.mo 来自 /wp-content/languages/themes/ 中的WordPress主题语言文件夹。
注意:
如果将翻译添加到主题文件夹,请将MO文件命名为{locale}.mo(例如de_de.po&de_de.mo)。
将您的MO文件命名为{text-domain}-{locale}.mo(例如 my-theme-de_de.po & my-themede_de.mo ),如果您要将翻译添加到WordPress主题语言文件夹中。
举个例子:
function my_theme_load_theme_textdomain() {
load_theme_textdomain( 'my-theme', get_template_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'my_theme_load_theme_textdomain' );
这段代码一般放在主题的 functions.php 文件中。
-
WordPress函数:esc_html_x 带上下文的转义翻译WordPress函数:esc_html_x 带上下文的转义翻译
-
WordPress函数:esc_attr__ 转义属性及翻译WordPress函数:esc_attr__ 转义属性及翻译
-
WordPress函数:esc_attr_e 属性转义、翻译、显示WordPress函数:esc_attr_e 属性转义、翻译、显示
-
WordPress函数:esc_attr_x 带上下文的转义属性,翻译显示WordPress函数:esc_attr_x 带上下文的转义属性,翻译显示
-
WP Multilang WordPress翻译插件WP Multilang插件的主要功能是提供多语言支持,使用户能够创建多语言版本的网站,满足不同语言用户的需求。
-
WordPress公司官网主题在众多的WordPress企业官网主题中,追格公司推出了多款关于WordPress企业官网主题作品。我们之前已经分享过一些关于追格的企业官网主题,包括收费和免费版本,这些主题都因其独特的设计和出色的功能而深受用户喜爱。
暂无评论,抢个沙发...