timber / wp-i18n-twig
使用 WP-CLI 提取 WordPress 的 Twig 文件翻译
Requires
- twig/twig: ^3.0
- wp-cli/i18n-command: ^2.5
Requires (Dev)
- slevomat/coding-standard: ^8.14
- wp-cli/wp-cli-tests: ^4.2
README
在 Twig/Timber 模板中解析 WordPress 翻译一直是古怪且不太方便的。尤其是在 WordPress 开始从多个来源获取翻译(主题样式表、{block,theme}.json、块编辑器 JS、PHP 文件)并且现在也以多种格式输出(po、php)之后。
WP-CLI 是创建/更新 POT 文件的推荐方式,因此 timber/wp-i18n-twig
通过覆盖默认的 wp i18n make-pot
提供了(几乎原生)的 Twig 翻译提取。
安装
由于 WP-CLI 默认命令不应该被覆盖,安装 timber/wp-i18n-twig
有两种有效的方法
全局
如果您想与全局安装的 wp
(例如 /usr/local/bin/wp
)一起使用,您必须将其作为 WP-CLI 软件包安装
wp package install timber/wp-i18n-twig
本地
您还可以使用 composer 在项目级别安装此软件包,并从本地 vendor/bin/wp
运行 WP-CLI
composer require timber/wp-i18n-twig
用法
用法与 wp i18n make-pot
命令相同。
wp i18n make-pot /path/to/my/theme languages/my-theme.pot
--debug
标志在您想要检查已解析的模板(并监视解析错误)时很有用
wp i18n make-pot /path/to/my/theme languages/my-theme.pot --debug
有关更多信息,请参阅 wp i18n
命令文档
为了匹配 wp i18n make-pot
的行为,已添加 --skip-twig
标志,以便在需要跳过 Twig 文件提取时使用。
翻译
timber/wp-i18n-twig
处理与 wp i18n
相同的翻译函数和功能范围 功能
在您的 Twig 模板中添加翻译者注释的方式类似于 PHP,将其放在与翻译字符串相同的行或其前面的行
{# translators: Translators 1! #} {{ __( 'hello world', 'foo-theme' ) }} {# Translators: Translators 2! #} {{ __( 'foo', 'foo-theme' ) }} {# translators: this should get extracted. #} {{ __( 'baba', 'foo-theme' ) }} {# translators: boo #} {# translators: this should get extracted too. #} {# some other comment #} {{__( 'bubu', 'foo-theme' ) }}
自定义标签
当与 Twig 一起工作时,您可能需要注册自定义标签的流行 Twig 库(例如 {% dump %}
、{% cache %}
等)。timber/wp-i18n-twig
将自动加载以下标签的令牌解析器
- 来自 symfony/twig-brigde 的标签
{% dump %}
{% form_theme %}
{% stopwatch %}
{% trans_default_domain %}
{% trans %}
- 来自 twigphp/cache-extra 的标签
{% cache %}
- 来自 symfony/ux 的标签
{% component %}
{% props %}
重要
为了加载令牌解析器,您必须使用本地版本的 timber/wp-i18n-twig
(vendor/bin/wp
)。
限制
为了使此软件包在任何 Twig 环境中工作,模板不会编译成 PHP,而只会解析。这个主要好处是它(几乎)没有配置需求(自定义过滤器、函数、模板位置)。
然而,由于 Twig 是高度可配置的,因此仍有一些(较小的)限制。
- 除了支持的标签之外的自定义标签会导致解析错误。
- 不支持使用非默认的区块/注释/变量标签,并且可能永远都不会支持。