Skip to main content

Languages

Плагин поддерживает перевод страниц в сборке через TranslatePress или WPML (оба провайдера живут в WP2LMS Pro). Доступна возможность добавления новых способов перевода через фильтр wp2lms/static_builder/translator_class.

Если активны оба плагина, побеждает WPML.

ITranslateStatic

Интерфейс определяет методы, которые должны возвращать строки в соответствии с текущим языком сборки:

  • get_title( StaticBuildEntity $build_entity ): string - заголовок страницы
  • get_config( StaticBuildEntity $build_entity ): array - конфигурация страницы для сборки
  • get_url( StaticBuildEntity $build_entity ): string - ссылка на страницу на сайте
  • get_url_for_depth_calculation( StaticBuildEntity $build_entity ): string - URL для расчёта глубины (../)
  • get_build_path( StaticBuildEntity $build_entity ): string - путь до страницы в сборке

TranslatorStaticDefault

Имплементирует ITranslateStatic и реализует методы для случая, когда перевод не требуется

TranslatorStaticTranslatePress

Имплементирует ITranslateStatic и реализует методы для случая, когда активен TranslatePress. Возвращаемые из методов значения основаны на текущем активном языке.

Все страницы на сайте переводятся как обычно в TranslatePress; дополнительно нужно настроить поддерживаемые сборкой переводы в общих настройках сборок на вкладке "Переводы". Настройка "Код языка" должна соответствовать "Ярлыку" языка из настроек TranslatePress.

TranslatorStaticWPML

Имплементирует ITranslateStatic для WPML (SitePress). Каждый язык — отдельный пост в группе trid; резолв через wpml_object_id. Пути сборки: src/{lang}/pages|modals/{slug}/.

Дополнительно в Pro при активном WPML:

  • Page Cache с sidecar {id}.lang и guard на wp2lms/page_cache/build
  • в meta box Static Build — только страницы default-языка
  • wp2turbo/static/modal_close_id → original (default-lang) ID для courseController.modal.close

Коды языков в ACF Builds Settings → translations должны совпадать с кодами WPML.

LanguagesController

Класс для работы с переводами. Получить его экземпляр всегда можно с помощью метода languages() в главном классе плагина

При инициализации класса, определяется текущий класс перевода, имплементирующий ITranslateStatic. Далее его можно получить из public readonly ITranslateStatic $translator и использовать для получения строк с нужным переводом

Методы класса:

  • is_multilang_active(): bool - возвращает true если мультиязычность включена, иначе false
  • get_current_language(): string - возвращает ярлык текущего языка
  • set_current_language( string $current_language ): void - устанавливает текущий активный язык
  • get_active_languages(): array - возвращает настройку языков из настроек сборок

Типичный пример работы с классом: sber_static_builder()->languages()->translator->{translate_method}