WordPress + Timber + Twig i18n 扩展
Wordpress + Timber + Twig i18n extension
我正在尝试对当前正在建设的网站实施本地化。我的目标是为 Twig 使用 i18n 扩展,因为这是我选择的模板引擎。
但是,当我添加扩展程序时,网站崩溃了,屏幕变白,并返回 500 错误代码。日志显示 408 超时。在我添加扩展的同一个函数中,我还添加了另一个扩展,效果很好。我已经通过 Composer 成功安装了扩展。 (https://twig-extensions.readthedocs.io/en/latest/i18n.html)
我做错了什么?
这是我的 function.php
<?php
/**
* Timber starter-theme
* https://github.com/timber/starter-theme
*
* @package WordPress
* @subpackage Timber
* @since Timber 0.1
*/
Timber::$dirname = array( 'templates');
/** Start Timber! */
class StarterSite extends Timber\Site {
/** Add timber support. */
public function __construct() {
add_theme_support( 'post-formats' );
add_theme_support( 'post-thumbnails' );
add_filter( 'timber_context', array( $this, 'add_to_context' ) );
add_filter( 'get_twig', array( $this, 'add_to_twig' ) );
add_filter('show_admin_bar', '__return_false');
define( 'WP_DEBUG', true );
parent::__construct();
}
function add_to_context( $context ) {
$context['site'] = $this;
return $context;
}
public function add_to_twig( $twig ) {
$twig->addExtension( new Twig_Extension_StringLoader() );
$twig->addExtension( new Twig_Extensions_Extension_I18n() ); // This line breaks the site
return $twig;
}
}
new StarterSite();
使用 WordPress 和 Timber 时,您不需要使用 Twig 的 i18n 扩展,如 Timber 文档中的 Internationalization Guide 所述:
Twig has its own i18n extension that gives you {% trans %}
tags to define translatable blocks, but there’s no need to use it, because with Timber, you have all you need.
这意味着在您的 Twig 模板中,您可以使用通常用于普通 WordPress 模板的所有功能。这是按钮的示例。
<button>{{ __('Submit', 'my-text-domain') }}</button>
您可以像在普通 WordPress 主题中一样设置国际化主题。按照主题手册中的 Internationalization 部分进行操作。
使用文本域和域路径设置 style.css:
/**
* Theme Name: My Theme
* Author: Theme Author
* Text Domain: my-text-domain
* Domain Path: /languages
*/
然后,WordPress 将在您主题的 /languages 文件夹中查找 my-text-domain.pot 文件.您可以使用 Poedit Pro 生成该 POT 文件。 Poedit Pro 将在您的 Twig 文件中找到翻译。
我正在尝试对当前正在建设的网站实施本地化。我的目标是为 Twig 使用 i18n 扩展,因为这是我选择的模板引擎。
但是,当我添加扩展程序时,网站崩溃了,屏幕变白,并返回 500 错误代码。日志显示 408 超时。在我添加扩展的同一个函数中,我还添加了另一个扩展,效果很好。我已经通过 Composer 成功安装了扩展。 (https://twig-extensions.readthedocs.io/en/latest/i18n.html)
我做错了什么?
这是我的 function.php
<?php
/**
* Timber starter-theme
* https://github.com/timber/starter-theme
*
* @package WordPress
* @subpackage Timber
* @since Timber 0.1
*/
Timber::$dirname = array( 'templates');
/** Start Timber! */
class StarterSite extends Timber\Site {
/** Add timber support. */
public function __construct() {
add_theme_support( 'post-formats' );
add_theme_support( 'post-thumbnails' );
add_filter( 'timber_context', array( $this, 'add_to_context' ) );
add_filter( 'get_twig', array( $this, 'add_to_twig' ) );
add_filter('show_admin_bar', '__return_false');
define( 'WP_DEBUG', true );
parent::__construct();
}
function add_to_context( $context ) {
$context['site'] = $this;
return $context;
}
public function add_to_twig( $twig ) {
$twig->addExtension( new Twig_Extension_StringLoader() );
$twig->addExtension( new Twig_Extensions_Extension_I18n() ); // This line breaks the site
return $twig;
}
}
new StarterSite();
使用 WordPress 和 Timber 时,您不需要使用 Twig 的 i18n 扩展,如 Timber 文档中的 Internationalization Guide 所述:
Twig has its own i18n extension that gives you
{% trans %}
tags to define translatable blocks, but there’s no need to use it, because with Timber, you have all you need.
这意味着在您的 Twig 模板中,您可以使用通常用于普通 WordPress 模板的所有功能。这是按钮的示例。
<button>{{ __('Submit', 'my-text-domain') }}</button>
您可以像在普通 WordPress 主题中一样设置国际化主题。按照主题手册中的 Internationalization 部分进行操作。
使用文本域和域路径设置 style.css:
/**
* Theme Name: My Theme
* Author: Theme Author
* Text Domain: my-text-domain
* Domain Path: /languages
*/
然后,WordPress 将在您主题的 /languages 文件夹中查找 my-text-domain.pot 文件.您可以使用 Poedit Pro 生成该 POT 文件。 Poedit Pro 将在您的 Twig 文件中找到翻译。