「Performance Translations」(高效翻译)的功能插件

 

在过去的一年里,WordPress 开发者仔细分析了 WordPress 现有的 i18n 系统的性能,并最终创建了一个新的名为「Performance Translations」(高效翻译)的功能插件:

该插件提供了一个全面改进的性能更好的语言包加载系统,在经过成千上万用户的测试之后,WordPress 6.5 核心代码中已经内置了该插件的功能。

这个新功能在加载语言包文件时更快,并且使用的内存更少,并且还支持同时加载多个语言环境,这使得语言环境切换也变得更快。除此之外,它还支持包含在 PHP 格式的翻译文件,这样既可利用 OPCache 对其进行加速。

新的.l10n.php 翻译文件格式

 

现在从 WordPress.org 下载的语言包里面,除了原来就有的 .mo 和 .po 文件之外,可能还会多出一个 .l10n.php 新文件 ,如果有该格式的文件,WordPress 6.5 就优先通过它来加载语言包,该文件使得翻译加载更快,并用到的内存更少。

这是一个渐进式的增强,意思是如果只有 .mo 文件而没有 .l10n.php 文件,WordPress 依旧通过加载 .mo 文件来加载语言包,反之亦然,因此理论上现在语言包里面可以只有 .l10n.php 文件,但是目前 WordPress 还是需要有对应的 .mo 和 .po 文件,主要用于语言包的更新检查,不过这个限制将来会得到解决。

如何生成新的 .l10n.php  文件

 

如果要生成新的 PHP 翻译文件,GlotPress 的 4.0 版(translate.WordPress.org 的支持插件)已经支持新 .l10n.php 格式。

除此之外,WP-CLI 2.10.0 ( i18n-command2.6.0) 也提供了一个新的命令 wp i18n make-php,可以根据 .po 文件创建翻译 PHP 文件:

# Create PHP files for all PO files in the current directory.
$ wp i18n make-php .

# Create a PHP file from a single PO file in a specific directory.
$ wp i18n make-php example-plugin-de_DE.po languages

如果是 WordPress 插件开发者,还可以使用新 WP_Translation_File 类将文件转换 .mo 为翻译 PHP 文件:

$contents = WP_Translation_File::transform( $mofile, 'php' );
if ( $contents ) {
	file_put_contents( $path_to_php_file, $contents );
}

禁用 .l10n.php  文件

 

如果出于某种原因想禁用翻译 PHP 文件的支持,可以使用新的 translation_file_format filter 来改变翻译文件的首选格式(默认是 php):

add_filter('translation_file_format', fn () => 'mo');

此外 WordPress 6.5 还提供了一个新的 filter load_translation_file,可以用它来更改翻译文件的路径。

$l10n 全局变量

 

我们知道 WordPress 使用全局变量 $l10n 来存储已加载的翻译,在 WordPress 6.5 之前,这个全局变量是 MO 类的实例,它用于读取 .mo 文件提供的翻译字符串,随着 WordPress 6.5 的更新,$l10n 全局变量将改为 WP_Translations 类的实例。

WP_Translations 类充当了一个桥梁,维持了与 MO 类相似的特性和接口,以确保向后兼容性。通过这种方式,WordPress 可以透明地处理新的 PHP 翻译文件格式,同时保持对旧的 .mo 文件格式的支持。

缓存语言文件路径列表

 

此外,WordPress 6.5 还有个优化改进,在 6.5 之前,像 get_available_languages() 这样的函数 和 WP_Textdomain_Registry 这样的类,每次都是直接使用 glob() 函数搜索 .mo 文件,这可能导致一些性能问题,特别是在拥有很多翻译或在文件系统较慢的环境中的网站上。

因此,WordPress 6.5 引入了新的缓存机制,通过 WP_Textdomain_Registry 类集中查找翻译文件,然后将其存储在 group 为 translations 的对象缓存中,缓存键的格式为 cached_mo_files_<hash>,其中 <hash> 是扫描目录的 MD5 哈希值,例如 wp-content/languages,并且每当更新语言包时,缓存就会被清除。


原创文章,作者:速盾高防cdn,如若转载,请注明出处:https://www.sudun.com/ask/31950.html

(0)
速盾高防cdn's avatar速盾高防cdn
上一篇 2024年3月25日 下午11:00
下一篇 2024年3月25日 下午11:56

相关推荐

  • 如何在云服务器上开启代理服务?

    在当今的网络行业中,代理服务已经成为了必不可少的一部分。它不仅可以为我们提供更加安全和稳定的网络环境,还能够帮助我们解决一些常见的问题。但是,对于许多人来说,在云服务器上开启代理服…

    行业资讯 2024年4月9日
    0
  • 谷城网页定制,谷城网站开发

    谷城网是云服务器行业的巨头,有着悠久的历史。其发展历程波澜壮阔、令人惊喜,服务内容的推出更是丰富多彩、眼花缭乱,与其他云服务器平台的对比分析更是引发了业界的热议,以下是它的评测和使…

    行业资讯 2024年4月5日
    0
  • 商务邮局的功能与使用方法详解

    商务邮局是如今网络行业中必不可少的一项工具,它拥有多种功能,可以帮助我们更加高效地管理电子邮件。但是你是否了解商务邮局的具体功能和使用方法呢?在这篇文章中,我们将为你详细介绍商务邮…

    行业资讯 2024年4月12日
    0
  • 网页木马原理分析,网页木马攻击的过程和原理

    网站木马是具有高度破坏性的恶意程序,可能会对您的网站造成重大损害和影响。为了保护您网站的安全,必须及时检测并清除木马。市场上有很多好的网站木马检测工具,但是为您的网站选择合适的工具…

    行业资讯 2024年4月13日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注