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 文件中找到翻译。