La versión 6.5 de WordPress incorpora mejoras de rendimiento para las traducciones multilingües internacionalizadas (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 开始,为了默认合并多个语言环境的翻译,它已经成为首选语言功能插件.

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

renovado.l10n.php 翻译文件格式

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

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

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

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

图片[1]-WordPress 6.5 版本对国际化(I18N)多语言翻译的性能进行了改进。-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

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

生成 PHP 翻译文件

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

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

图片[2]-WordPress 6.5 版本对国际化(I18N)多语言翻译的性能进行了改进。-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

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

图片[3]-WordPress 6.5 版本对国际化(I18N)多语言翻译的性能进行了改进。-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

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

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

图片[4]-WordPress 6.5 版本对国际化(I18N)多语言翻译的性能进行了改进。-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

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

hacer uso de$l10n全局变量

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

缓存的语言文件路径列表

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

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

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

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

要了解更多信息,请查看Registro oficial.


Contacte con nosotros
¿No puede leer el artículo? ¡Póngase en contacto con nosotros para obtener una respuesta gratuita! Ayuda gratuita para sitios personales y de pequeñas empresas
Tel: 020-2206-9892
QQ咨询:1025174874
(iii) Correo electrónico: info@361sale.com
Horario de trabajo: de lunes a viernes, de 9:30 a 18:30, días festivos libres
© Declaración de reproducción
Este artículo fue escrito por Harry
EL FIN
Si le gusta, apóyela.
felicitaciones0 compartir (alegrías, beneficios, privilegios, etc.) con los demás
comentarios compra de sofás

Por favor, inicie sesión para enviar un comentario

    Sin comentarios