Возможности аддона: - Перевод названий тем (С помощью Google Translate) - Новый ББ-Код [lang] (Должно быть минимум 2 в сообщении) При создании темы, если пользователь вводит название темы на русском - оно автоматически переводится на английский язык, и наоборот. Также учел пожелания юзеров в прошлых аддонах и добавил Repository. Там одна функция - перевод текста с помощью Google Translate. Пример использования в шаблонах <xf:set var="$text" value="{$xf.app.em.getRepository('DCS\TranslatorTitleThreads:Translator').getTranslatedText('Hello World!', 'ru')}"/> HTML <xf:set var="$text" value="{$xf.app.em.getRepository('DCS\TranslatorTitleThreads:Translator').getTranslatedText('Hello World!', 'ru')}"/> Вывод: Настройки аддона - Переводить RU заголовок при изменении EN заголовка: Если включено, при изменении "En title" будет переводится и русский заголовок. ББ-Код lang Используется так. Если человек выбрал русский язык - ему покажется только содержимое тега [lang=ru] , если английский - соответственно [lang=en] Также существует проверка на кол-во тегов [lang] , оно должно быть четным и для разных языков. Если, к примеру, написать так: Или же так: Выйдет ошибка: Вид темы с разными языками С русским: С английским: Скачать
Было бы неплохо вместо лишних запросов в БД, использовать систему кэширования, в виде Memcached или Redis. Ради того, чтобы получить переведённый заголовок обращаться к бд, если это можно реализовать проще - нецелесообразно, как по мне. В DCS\TranslatorTitleThreads\XF\Entity\Post; про валидацию наличия двух тегов - жесть. Можно было обойтись без этой проверки и всего лишь одним BB-кодом, только при его рендере, получать язык визитора и в соответствии с этим — отдавать уже нужный перевод части текста в этом BB-коде (при этом не забывая про кэш). Костыль. И насчёт использования переводчика в шаблонах, во первых тянуть целый репозиторий для этого неправильно (да и в целом, репозиторий, по задумке, должен в себе содержать взаимодействие с базой данных, а не полезные функции, утилки) Было бы лучше расширить имеющийся у ксенфоро шаблонизатор, добавив свою функцию или фильтр. В первом случае, так же принимать изначальный текст, и код языка для перевода, во втором же, можно так же, подтянуть язык визитора и перевести выделенный текст. Задумка неплохая. Но реализация подкачала :)