WordPress 6.5 版本对国际化(I18N)多语言翻译的性能进行了改进。

WordPress 6.5 版本进行了多项国际化(i18n)方面的改进,本开发者说明将重点关注这些改进。

性能改进的本地化翻译系统

在过去的一年里,WordPress 的贡献者们认真研究了现有的国际化(i18n)系统的性能,并最终创建了一个名为“Performance Translations”的新功能插件。这个插件提供了一个经过彻底优化的系统,可以显著提高性能。经过数千名Beta测试人员的测试和去年年底的合并公告,这个新的库现在已经包含在 WordPress 6.5 中了!有关所有详细信息,请阅读#59656 

Performant Translations 插件依然非常有用,并且将持续维护,以提供在核心解决方案中无法获得的独特附加功能。目前,如果没有存在 PHP 文件,该插件会自动将任何 .mo 文件转换为 PHP 文件。这对于那些翻译不是来自 translate.wordpress.org 或者只存在于本地服务器的网站非常有帮助。

这个新库让加载二进制 .mo 文件更快,同时减少了内存的使用。它甚至支持同时加载多个语言环境,因此网站语言切换速度更快。此外,它还支持 PHP 文件中的翻译,避免使用二进制文件格式,并且可以利用 OPCache 缓存(如果可用)。

实际上,新库的速度非常快,以至于从 WordPress 6.5 开始,为了默认合并多个语言环境的翻译,它已经成为首选语言功能插件

尽管这主要是一个悄无声息的、向后兼容的底层更改,但仍然有一些需要注意的事项:

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

当您从WordPress.org下载语言包时,除了您熟悉的.mo.po文件之外,您可能会注意到一个新文件,即.l10n.php。如果您的.mo翻译文件有对应的.l10n.php文件,系统将加载后者,从而实现更快的速度和更低的内存消耗。

这是一个渐进式的改进,因此即使只有一个.mo文件而没有对应的PHP文件,翻译仍然会按照预期加载。反之亦然!这意味着理论上您可以只使用.l10n.php翻译文件,而即时翻译加载等功能仍将正常工作。目前,WordPress仍然需要相应的.po文件和.mo文件来执行更新检查等操作。不过,这个限制未来可能会被解决,请参阅#60554了解更多信息。

注意:如果您在wp-content/languages目录中没有看到任何.l10n.php翻译文件,这可能是因为语言包已经有一段时间没有更新,因此没有新的翻译可用。

以下是 WordPress 6.5 支持的 PHP 翻译文件示例:

WordPress 6.5 版本对国际化(I18N)多语言翻译的性能进行了改进。

注意:这里的 EOT 代表“传输结束”字符(U+0004,或在 PHP 中表示为“\4”)。它与 gettext 中用于将上下文与单数字符串连接在一起的分隔符相同。

生成 PHP 翻译文件

如果您希望自己生成这些 PHP 翻译文件,现在 GlotPress 的 4.0 版本已经支持新的 .l10n.php 格式,这是一个用于支持 translate.wordpress.org 的插件。

此外,WP-CLI 2.10.0i18n-command 2.6.0)提供了一个新的 wp i18n make-php 命令,可从给定的 .po 文件创建这些 PHP 文件。例如:

WordPress 6.5 版本对国际化(I18N)多语言翻译的性能进行了改进。

如果您正在开发处理翻译的 WordPress 插件,现在还可以使用新的 WP_Translation_File 类将 .mo 文件转换为 PHP 文件。例如:

WordPress 6.5 版本对国际化(I18N)多语言翻译的性能进行了改进。

用于自定义此行为的新过滤器

如果您因某种原因想要禁用对 PHP 文件的支持,例如,如果您的项目尚未包含任何 PHP 文件,并且希望避免额外的文件查找操作,那么您可以使用新的 translation_file_format 过滤器来更改首选格式(默认为 PHP),示例如下:

WordPress 6.5 版本对国际化(I18N)多语言翻译的性能进行了改进。

现有的 load_textdomain_mofile 过滤器仍然可用于过滤 .mo 文件的路径,以加载特定文本域的翻译。但是,这个过滤器仅适用于 .mo 文件。如果您需要过滤翻译文件的路径(无论是 .l10n.php 文件还是 .mo 文件),请使用新的 load_translation_file 过滤器。

使用$l10n全局变量

在以前的 WordPress 版本中,当加载翻译时,WordPress 会将 MO 类的实例存储在 $l10n 全局变量中。然而,在 WordPress 6.5 中,这将被一个新的 WP_Translations 类的实例所取代,它具有类似的功能。如果您的项目在某种方式上直接使用了这个全局变量或者 MO 类,那么您需要关注这个变化。

缓存的语言文件路径列表

这是另一个轻微的性能改进,但与前面介绍的新本地化库无关。

过去,WordPress 在 get_available_languages()WP_Textdomain_Registry 等地方直接使用 glob() 函数来检索特定目录下的所有 .mo 文件。这对于及时加载翻译以及了解安装了哪些翻译非常重要。然而,在具有大量语言文件的站点上,glob() 操作可能会变得非常耗时。

因此,在 #58919 / [57287] 中引入了新的缓存机制。现在,文件查找已经集中处理在 WP_Textdomain_Registry 中,并将结果存储在对象缓存中的 translations 组中。缓存键的格式为 cached_mo_files_<hash>,其中 <hash> 是扫描目录的 MD5 哈希值,例如 wp-content/languages。每当更新语言包时都会清除缓存。

此外,除了 .l10n.php 文件之外,查找现在还会扫描 .mo 文件,以防站点上仅存在前者。

要了解更多信息,请查看官方日志


联系我们
文章看不懂?联系我们为您免费解答!免费助力个人,小企站点!
电话:020-2206-9892
QQ咨询:1025174874
邮件:info@361sale.com
工作时间:周一至周五,9:30-18:30,节假日休息
发布者:光子波动,转转请注明出处:https://www.361sale.com/6152/

(0)
上一篇 2024年 3月 20日 下午7:17
下一篇 2024年 3月 21日 上午10:12

相关推荐

  • 为什么您的WordPress网站需要Akismet Anti-spam和Jetpack

    WordPress是一个强大的内容管理系统,但随着网站流量的增加,它也容易成为垃圾评论和安全攻击的目标。这就是为什么安装像Akismet Anti-spam和Jetpack这样的插件至关重要的原因。 Akismet Anti-spam: 防止垃圾评论 主要功能: 为什么安装它: 免费与付费: Jetpack 功能和作用: 通过使用这些工具,您可以显著提高Wo…

    2023年 12月 28日
    00124
  • 如何更改 WordPress 管理员密码

    为什么需要重置 WordPress 密码 出于安全考虑,更改密码这是必须定期进行的操作,尤其是当你在多个平台上使用相同的密码时。定期更新密码能有效降低安全风险。除了这些安全考虑之外,还有其他几个可能需要你更改WordPress密码的原因: 如何重置丢失的 WordPress 密码(3 种方法) 1. 如何通过登录屏幕重置 WordPress 密码 2. 通过…

    2024年 4月 14日 WordPress
    0024
  • WordPress 数据库深入解析:存储、检索与管理网站内容

    WordPress 使用数据库来存储、检索和显示你在网站上创建的所有内容。包括帖子、页面、评论等。 数据库还用于存储有关你网站用户的信息以及为您的网站提供支持的各种网站选项。 WordPress 使用名为MySQL 的数据库管理系统。 MySQL 是一个免费的开源数据库管理系统,许多流行的 Web 应用程序都使用它。 与你的 WordPress 数据库交互 …

    2024年 3月 30日 WordPress
    0050
  • 如何在 WordPress 中自动为图像添加水印

    为什么在 WordPress 中为图像添加水印? 水印是覆盖在图片上的半透明徽标、文字或图案。水印的设计明显但微妙,这样用户在浏览照片时就不会受到干扰,但如果不购买,就无法下载和使用这些文件。这可以防止他人未经授权使用你的图像,从而防止图像被盗。 你还可以使用自己网站的Logo、URL 或标语作为水印,以提高品牌知名度,让用户更容易记住他们是在哪里看到图片的…

    3天前 WordPress
    0010
  • 如何为不同用户隐藏 WordPress 管理栏

    WordPress 管理栏是一个有用的工具,但有的Web 开发人员会隐藏它以保留网站设计,有的还可能禁用它以防止其他用户访问 WordPress 仪表板,下面来了解下有些什么方法隐藏 WordPress 管理栏? 如何隐藏所有用户的管理栏? Hide Admin Bar插件可移除所有管理栏。按下面步骤进行激活: 从“已安装插件中”找到Hide Admin B…

    2024年 4月 10日 WordPress
    0034

发表回复

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

联系我们

020-2206-9892

QQ咨询:1025174874

邮件:info@361sale.com

工作时间:周一至周五,9:30-18:30,节假日休息

客服微信