Wordpress - Timber - ошибка локализации

У меня проблемы с правильной работой функции локализации / перевода.

Я использую следующие компоненты:

Wordpress 4.4.2
Timber -> Twig

Шаблон работает нормально. Кажется, что просто местное расположение не работает.

Во время своего исследования я наткнулся на этот пост на github, который кажется неполным, поскольку там ничего не говорится о том, как его настроить ... https://github.com/jarednova/timber/wiki/Text-Cookbook#internationalization

В итоге я использовал следующий код, который по какой-то причине не работает:

/functions.php

class StarterSite extends TimberSite {

function __construct() {
    add_theme_support( 'post-formats' );
    add_theme_support( 'post-thumbnails' );
    add_theme_support( 'menus' );
    add_theme_support( 'widgets' );
    add_filter( 'timber_context', array( $this, 'add_to_context' ) );
    add_filter( 'get_twig', array( $this, 'add_to_twig' ) );
    add_action( 'init', array( $this, 'register_post_types' ) );
    add_action( 'init', array( $this, 'register_taxonomies' ) );

    $this->register_theme_locals();
    parent::__construct();
}

function register_theme_locals(){
    $path = get_template_directory() . '/languages';
    $result = load_theme_textdomain('panther', $path );

    if ( $result )
        return;

    $locale = apply_filters( 'theme_locale', get_locale(), 'panther' );
    die( "Could not find $path/$locale.mo" );
}
.
.
.

/templates/base.twig

<button type="submit" class="btn btn-info">
    <i class="fa fa-search"></i> {{__('Search', 'panther')}}
</button>

/languages/en_US.po

msgid ""
msgstr ""
"Project-Id-Version: Panther 0.1.20150828\n"
"Report-Msgid-Bugs-To: http://webklex.com/support/theme/panther\n"
"POT-Creation-Date: 2015-11-20 12:58:54+00:00\n"
"PO-Revision-Date: Mon Feb 01 2016 21:29:54 GMT+0100 (CET)\n"
"Last-Translator: admin <[email protected]>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
"Language: English\n"
"Plural-Forms: nplurals=2; plural=n != 1\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-Basepath: .\n"
"X-Poedit-SearchPath-0: ..\n"
"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
"__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
"_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
"esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
"esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
"X-Loco-Target-Locale: en_US\n"
"X-Generator: Loco - https://localise.biz/"

#: templates/base.twig:72
msgctxt "submit button"
msgid "Search"
msgstr "Search EN"

Для устранения проблемы скинул перевод. Вот результат:  введите описание изображения здесь

Если я визуализирую представление / страницу, я все равно получаю непереведенную строку:

введите описание изображения здесь

Я проверил, был ли загружен правильный язык, и да, это произошло. Я даже проверил, вызывается ли правильная функция перевода (не NOOP), и да, даже правильная функция была вызвана ..

Я как бы потерялся здесь. Так что, если кто-нибудь знает, что я делаю не так или что происходит, пожалуйста, дайте мне знать.


person ThatMSG    schedule 03.02.2016    source источник
comment
Вы пытались переместить вызов load_theme_textdomain в ловушку after_setup_theme, как рекомендовано на странице Codex для этой функции ? В настоящее время кажется, что он вызывается из functions.php, что может быть слишком рано.   -  person Gchtr    schedule 18.04.2016
comment
тебе удалось это разобрать.   -  person weaveoftheride    schedule 18.05.2016
comment
Привет, Мурлык и Эндрю, извини, что ответил так поздно .. Да, я попробовал, и он все тот же. И нет, я так и не нашел решения .. Думаю, я ошибся где-то еще .. Не знаю :)   -  person ThatMSG    schedule 11.06.2016
comment
Итак, {{ __('Search', 'panther') }} ничего не выводит? Вы удостоверились, что __() присутствует в Twig? До Timber 1.x.x вам приходилось использовать TimberHelper::function_wrapper для включения функции __(). Но поскольку функции перевода Timber 1.0-rc2 по умолчанию доступны в Twig . Вы пробовали обновить Timber до последней версии и посмотреть, работает ли это?   -  person Gchtr    schedule 14.06.2016


Ответы (1)


Просто сделайте это простым способом:

function panther_theme_setup() {
    load_theme_textdomain('panther', get_template_directory() . '/languages');
}
add_action( 'after_setup_theme', 'panther_theme_setup' ); //this is recommended

А для редактирования / обновления языковых файлов я лично использую плагин «LOCO Translate», с тех пор мне не нужна другая программа, с которой можно было бы возиться.

Источник: я, но и здесь: https://developer.wordpress.org/reference/functions/load_theme_textdomain/

person Frizzant    schedule 13.09.2019