首页 视频课程 主题开发课程第01章、开发准备 WordPress国际化,多语言支持

WordPress国际化,多语言支持

2022-12-12 / 434阅

WordPress是世界的,如果你的主题插件要发布其它语言版本,就需要了解WordPress的多语言机制。本节一起来学习下WordPress的多语言功能。

国际化的意思是让你的主题或者插件支持多语言功能,本地化是把支持的主题或插件翻译为本土语言。

多语言文件

  • POT(便携式对象模板)文件,就是原始语言的文件
  • PO(便携式对象)文件,可以查看的语言文件,可以对照修改
  • MO(机器对象)文件,机器识别的语言文件

如何生产POT文件

  • 使用WP-CLI命令生产,本课程不涉及WP-CLI命名,所以不讲解
  • 使用软件生产,常用的是Poedit 。学这个就行了,方便使用

文件命名

将翻译后的文件另存为 my-plugin-{locale}.mo. 语言环境是语言代码和/或国家代码。例如,德语的语言环境是 de_DE. 从上面的代码示例中,文本域是“my-plugin”,因此德语 MO 和 PO 文件应命名 my-plugin-de_DE.mo 为 my-plugin-de_DE.po

文件内容示例

#: plugin-name.php:123
msgid "Page Title" //这是原文
msgstr "" //这是翻译后的内容 

设置本地语言

需要设置本地语言,可以在WP-CONFIG.PHP文件中使用下面的代码:

define ('WPLANG', 'fr_FR'); 

语言文本域

不通的主题可以使用不同的文本域。文本域就是一个标志,说明你的内容应该按照什么标志来翻译。

文本域名必须使用破折号,不能使用下划线,并且必须是小写。例如,如果主题的名称My Theme 定义在 中,style.css 或者它包含在名为my-theme文本域的文件夹中,则应为my-theme.

文本域用于三个不同的地方:

  • style.css主题标题中
  • 作为本地化函数中的参数
  • load_theme_textdomain()使用或  加载翻译时作为参数load_child_theme_textdomain()

文本域被添加到style.css标题中,这样即使主题未启用,也可以翻译主题元数据(如描述)。文本域应与加载文本域时使用的域相同。

/*
* Theme Name: My Theme
* Author: Theme Author
* Text Domain: my-theme
*/ 

自定义语言文件位置,这是为了让 WordPress 在主题未激活时知道在哪里可以找到翻译。例如,如果 .mo 文件位于 languages 文件夹中,那么域路径将/languages并且必须用第一个斜杠书写。默认为languages主题中的文件夹。

/*
* Theme Name: My Theme
* Author: Theme Author
* Text Domain: my-theme
* Domain Path: /languages
*/ 

使用示例

__( 'Post', 'my-theme' ); //用于翻译Post 

多语言函数

  • __() //翻译内容不输出
  • _e() //翻译内容直接输出
  • _x() //根据上下文翻译,不输出
  • _ex() //根据上下文翻译,直接输出
  • _n() //涉及复数处理
  • _nx() //涉及复数处理
  • _n_noop() //将来再翻译,先点位
  • _nx_noop() //将来再翻译,先点位
  • translate_nooped_plural() //把点位的翻译出来

翻译和转义函数

需要翻译和用于 html 标签属性的字符串必须进行转义。

  • esc_html__()
  • esc_html_e()
  • esc_html_x()
  • esc_attr__()
  • esc_attr_e()
  • esc_attr_x()

日期函数

  • number_format_i18n()
  • date_i18n()

JS中的多语言函数

  • __()
  • _x()
  • _n()
  • _nx()
  • sprintf()

详细的函数使用请看视频演示。

阅读文章或者观看视频过程中有任何问题,请下方留言或者联系我Q248758228

大家谈论
    我的见解
    目录