Discourse: многоязычный пост

discourse-multilingual-post

Плагин для Discourse, позволяющий создавать несколько локализованных версий содержимого поста.

Этот плагин является концептуальным прототипом: без возможности локализации заголовков тем он не очень полезен.

Как использовать

В посте используйте блоки [lang=xx]:

[lang=en]
Hello World!
[/lang]
[lang=fr]
Bonjour monde !
[/lang]
[lang=de]
Hallo Welt !
[/lang]

Результат:

Hallo Welt !

Коды стран должны состоять из двух букв (регионы не поддерживаются).

Как это работает

При отображении поста плагин ищет один блок [lang=xx] для показа. Поиск прекращается, как только найден:

  1. блок, установленный для языка пользователя (выбранного в Discourse)
  2. блок, установленный для языка по умолчанию экземпляра Discourse
  3. первый блок

Репозиторий

https://github.com/sylque/discourse-multilingual-post

13 лайков

Команда Discourse, есть ли у кого-нибудь идея, как я могу локализовать заголовки тем?

Я хочу сделать следующее:

  • Определить порядок языков, например «en,fr,de»
  • Разрешить пользователям писать заголовки тем в таком формате: Hello World#Bonjour monde#Hallo Welt
  • При отображении заголовка темы в Discourse модифицировать его, оставляя только нужный язык

Однако я не нашёл клиентского хука для изменения заголовка. Есть ли у кого-нибудь идеи?

6 лайков

Вы рассматривали возможность обработки заголовков в Rails? Язык по умолчанию — существующий, а дополнительные заголовки — это пользовательские поля темы. Затем вы изменяете сериализаторы, чтобы отправлять заголовок выбранного языка в полезной нагрузке.

8 лайков

Отличная работа!

Я бы поддержал это. Я считаю, что для заголовков правильным решением является серверная сторона.

На самом деле я сейчас занимаюсь разработкой многоязычного плагина (почти готов), который позволяет переводить:

  1. Теги
  2. Названия категорий
  3. Описания категорий

А также включает панель администратора для управления языками и локалями и множество других функций, таких как фильтры языкового контента, специфичные для пользователей.

Здесь есть возможности для объединения усилий.

14 лайков

Привет! Мне очень нравится этот плагин и его простота. Мне кажется, что он стал бы ещё полезнее, если бы поддерживал оформление страниц на Discourse (FAQ/Правила, Условия использования, Политика конфиденциальности), поскольку заголовки всё равно переводятся. Я пытался форкнуть проект и доработать его самостоятельно, но, честно говоря, я абсолютный новичок. Хотя у меня есть ощущение, что его нужно переписать с использованием decorateWidget() вместо decorateCooked().

1 лайк

Добавление оформления для статических страниц Discourse (FAQ/Правила, Пользовательское соглашение, Политика конфиденциальности) было бы отличным дополнением. Однако я не уверен, что decorateWidget имеет возможность работать со статическими страницами. Кто-нибудь, есть ли какие-то подсказки по этому поводу?