Идеи такие:
Сайт состоит из блога wordpress и форумов phpbb.
На верхнем уровне — блог , в нем периодически публикуются наиболее значимые идеи, разработанные участниками и другие новости с форумов. Статьи блога дублируются на двух языках. За координацию отвечает плагин Polylang или наподобие. Эта часть трудностей не представляет.
Сама работа ведется в рамках форумов. Планируется привлечение к работе большого количества как русскоязычных, так и англоязычных волонтеров. Использование только одного из языков отрежет значительную часть аудитории. В связи с этим нужно как-то организовать совместную работу. Если бы никто чужих языков не знал, можно было бы просто создать два отдельных форума и координировать их через блог. Но, поскольку некоторые пользователи будут двуязычными, им будет интересно публиковать одну и ту же тему на двух языках и получать ответы сразу с двух сторон.
Вариант 1. Простой. Делаем два полностью независимых форума с разными базами сообщений. В этом случае, хотелось бы как-то синхронизировать учетные записи, чтобы двуязычные пользователи могли пользоваться обоими.
Вариант 2. Сложный.
Вносятся изменения непосредственно в phpbb:
Структуры данных
При добавлении языка создаются новые таблицы:
- Код: Выделить всё
phpbb_ topics _ names _*
phpbb_posts_ content _*
phpbb_posts_ subjects _*
Структура таблиц:
- Код: Выделить всё
ID | REVISION |STATUS | TRANS | AUTHOR | TIME | COMMENT
ID – идентификатор поста/темы/топика
REVISION – версия перевода
STATUS – статус перевода (оригинал, автоматический, человек или зафиксирован)
TRANS – текст перевода
AUTHOR – автор перевода
TIME – дата/время перевода
COMMENT – комментарий переводчика
Запросы перевода
Для управления процессом перевода, добавляется таблица запросов перевода phpbb_posts_ requests
Структура таблицы:
- Код: Выделить всё
ID | USER_ID | LANG_ID
ID – идентификатор поста/темы/топика
USER_ID – идентификатор пользователя, запросившего перевод
LANG_ID – идентификатор языка, для которого запрошен перевод
Создается таблица языковых настроек пользователей phpbb_user_lang.
Структура таблицы:
- Код: Выделить всё
USER_ID | LANG_ID | USER_LEVEL | SHOW
USER_ID – идентификатор пользователя
LANG_ID – идентификатор языка
USER_LEVEL – уровень владения этим языком (нет, начальный, средний, профессиональный, носитель)
SHOW – как показывать посты на этом языке: только оригинал / оригинал и перевод / только перевод
Параметры forum_name и forum_desc меняются редко, поэтому можно воспользоваться методом, который предлагает Alg в расширении Quick Language, описание.
Как это работает
При создании темы, пользователь старается, как можно более полно заполнить другие языки. Поля, которые не смог заполнить пользователь, заполняются автоматически с помощью google translate API.
Оригинальный текст попадает в phpbb_posts, переводные части расходятся по таблицам phpbb_ topics _ names _*, phpbb_posts_ content _*и phpbb_posts_ subjects _*. Поскольку мы не редактируем phpbb_posts, оригинал также попадает в переводные таблицы со статусом «оригинал», чтобы было понятно на каком языке он написан. Поле текстовых данных в переводных таблицах в этом случае не заполняются, а используются данные из стандартных таблиц (phpbb_posts и т.п).
Если носитель не понимает что там напереводил google, а ему хочется принять участие в беседе, он может нажать кнопку «запрос перевода», привлекая переводчиков к сообщению. phpbb_posts_ requests используется для контроля количества запросов. Если запросов раньше не было, добавляется запись.
Пользователи могут свободно создавать и редактировать перевод сообщений на другие языки по вики-технологии. Пользователи из группы «переводчик» могут блокировать варианты перевода, если считают их удовлетворительными.
Редактирование и склейка
Редактирование исходного сообщения и склейка запрещаются, если сообщение уже переведено на другой язык другим пользователем. Если перевод осуществлен самостоятельно, редактирование разрешается.
Необходимость переводить каждое сообщение может показаться избыточной. Но с большинством простых вопросов и предложений справится google. С другой стороны, такой подход располагает пользователей писать емкие, продуманные сообщения. Самостоятельный перевод позволяет более рационально взглянуть на проблему. Специфика моего форума такова, что это крайне полезно.
Хотелось бы услышать ваше мнение по поводу организации многоязычных форумов и предлагаемым мною решениям.