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если мультиязычность включена, иначеfalseget_current_language(): string- возвращает ярлык текущего языкаset_current_language( string $current_language ): void- устанавливает текущий активный языкget_active_languages(): array- возвращает настройку языков из настроек сборок
Типичный пример работы с классом: sber_static_builder()->languages()->translator->{translate_method}