Поддержка Проблемы и решения Хранение языковых версий файлов

  • Здравствуйте. Хочу создать англоязычную версию сайта с помощью плагина Polylang. Подскажите, где лучше хранить языковые версии файлов, чтобы в зависимости от языка подставлять их в шаблон страницы? Структура папок будет примерно такая:

    lang
    -ru
    —text1.php
    —text2.php
    -en
    —text1.php
    —text2.php

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Наверное немного не так сформулировал. С функцией pll_e() плагина Polylang я разобрался, но она подходит, если нужно перевести какие-то короткие фразы. А как быть, если нужно добавить языковой перевод большого текста с html-тегами?

    Модератор Yuri

    (@yube)

    Ну, если совсем правильно делать, то не должно быть большого языкозависимого текста в файлах-шаблонах. Либо фразы, либо нечто типа html-сниппетов, редактируемых из админки и являющихся типом записи, которую понимает плагин мультиязычия.

    А если с файлами-шаблонами, то как-то так:

    get_template_part(pll_current_language() .'/text1');
    

    имена (суб)директорий должны соответствовать слагу языка.

    Полностью согласен, что не должно быть большого текста, но это SEO-тексты в шаблонах вывода записей. Попробую ваш вариант.

    Модератор Yuri

    (@yube)

    Попробую ваш вариант.

    Он Ваш, я только показал, как можно поступить с директориями 🙂

    Понял, но все равно спасибо)
    И последний вопрос, который меня интересует. Это произвольные поля. Как сделать, чтобы какое-то поле выводилось на все языковые версии, а какое-то, чтобы заполнялось для каждой версии записи отдельно?

    Есть много плагинов на эту тему, может другой плагин больше подойдет для Вашей цели https://ru.wordpress.org/plugins/search/Multilanguage/

    Перевод произвольных полей организовал следующим образом. Верное ли это решение?

    <?php if(pll_current_language() == 'ru'): echo get_post_meta($post->ID, 'field', true); elseif(pll_current_language() == 'en'): echo get_post_meta($post->ID, 'field_en', true); endif; ?>

    Модератор Yuri

    (@yube)

    Верное ли это решение?

    Как учили классики марксизма-ленинизма, практика — критерий истины. Работает? Значит, верное.

    Я бы упростил 😉

    <?= get_post_meta($post->ID, 'field_' . pll_current_language(), true); ?>
    

    соотв. меты field_en и field_ru

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Тема «Хранение языковых версий файлов» закрыта для новых ответов.