Расширение Wordpress + Timber + Twig i18n - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь реализовать локализацию на сайте, который сейчас создаю.Моя цель - использовать расширение i18n для Twig, поскольку это мой шаблонный движок.

Однако, когда я добавляю расширение, сайт просто падает, экран становится белым и возвращает код ошибки 500.Лог говорит 408 тайм-аут.В той же функции, где я добавляю расширение, я также добавляю другое расширение, которое прекрасно работает.Я успешно установил расширения через Composer.(https://twig -extensions.readthedocs.io / en / latest / i18n.html )

Что я делаю не так?

Вот моя функция. 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();

1 Ответ

0 голосов
/ 04 декабря 2018

При работе с WordPress и Timber вам не нужно использовать расширение Twig i18n, как указано в Руководстве по интернационализации в документации Timber:

Twig имеет свои собственныеРасширение i18n, которое дает вам {% trans %} теги для определения переводимых блоков, но нет необходимости использовать его , потому что с Timber у вас есть все, что вам нужно.

Это означает, чтов ваших шаблонах Twig вы можете использовать все функции, которые вы обычно используете с обычными шаблонами WordPress.Вот пример для кнопки.

<button>{{ __('Submit', 'my-text-domain') }}</button>

Вы можете настроить свою тему для интернационализации, как в обычной теме WordPress.Следуйте разделу Интернационализация в Руководстве по темам.

Настройте style.css с текстовым доменом и путем к домену:

/**
 * Theme Name: My Theme
 * Author: Theme Author
 * Text Domain: my-text-domain
 * Domain Path: /languages
 */

Затем WordPress будет искать файл my-text-domain.pot в папке / languages ​​ вашей темы.Вы можете создать этот файл POT с Poedit Pro.Poedit Pro найдет переводы в вашем файле Twig.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...