我正在尝试对我当前正在构建的站点实施本地化。我的目标是使用i18n Extension for Twig,因为那是我选择的模板引擎。
但是,当我添加扩展名时,该站点只是崩溃了,屏幕变白了,并返回了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();
答案 0 :(得分:4)
在使用WordPress和Timber时,您无需使用Tiwig的i18n扩展名,如Timber文档中的Internationalization Guide所述:
Twig拥有自己的i18n扩展名,可以为您提供
{% trans %}
标签来定义可翻译的块,但是不需要使用它,因为有了Timber,您便拥有了全部。>
这意味着在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文件中找到翻译。