Мультиязычный плагин 🌐

Я открыл PR, который (в основном) исправляет эту ошибку!

Он работает с названиями категорий, описаниями и подкатегориями, когда опция show_subcategory_list активна для категории!
Единственная оставшаяся проблема — подкатегории, когда show_subcategory_list отключена :purple_heart:

4 лайка

Если я хочу перевести категории, описания категорий и теги на моем форуме на 10 разных языков, мне придется создать и загрузить 3 × 10 = 30 отдельных файлов для конфигурации и обновлений.

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

categories:
  slug: 
    _de: Немецкое название
    _en: Английское название 
    .description:
       _de: Немецкое описание
       _en: Английское описание
tags:
  tag:
     ...

Это имело бы несколько преимуществ:

  • Все переводы можно обновлять одновременно
  • Переводчики видят контекст во время работы
  • Упрощение задач перевода с использованием больших языковых моделей

Кто-нибудь уже пробовал что-то подобное?

Не вижу ли я каких-либо недостатков?

Что касается первой реализации, я попробую написать плагин, который создаст и обновит все необходимые записи в Multilingual::CustomTranslation.

3 лайка

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

  • Я использую плагин и просто хочу, чтобы он продолжал работать.
  • Я использую плагин и хочу улучшить/изменить его функциональность или UX.
  • Я хочу улучшить многоязычные функции в Discourse, но не использую этот плагин (пожалуйста, объясните ниже).
  • Ни один из вышеперечисленных вариантов (пожалуйста, объясните ниже причину вашего голосования).
0 voters
2 лайка

Мой ответ «Я хочу улучшить мультиязычный функционал в Discourse, но не использовать этот плагин (пожалуйста, объясните ниже)» обусловлен тем, что мы только оцениваем варианты хорошей мультиязычной поддержки. Было бы здорово, если бы ваш инструмент оказался именно тем, что нам нужно.

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

У нас есть веб-сайт с одним доменом и двумя языками (немецкий, английский). Контент разделён по адресам domain.org/de/[название_сайта] и domain.org/en/[название_сайта].
У нас также есть форум Discourse на немецком языке на поддомене [немецкий_ключевое_слово]-forum.domain.org.
Теперь мы хотим добавить английскую версию форума.
К сожалению, английское ключевое слово, которое точно описывает тему и которое мы хотели бы использовать для английского форума ([английское_ключевое_слово]-forum.domain.org), отличается от немецкого. Немецкое ключевое слово не работает в английском контексте, а английское — в немецком.

Вопрос:
Возможно ли запустить один форум Discourse с разными поддоменами для разных языков, используя при этом единую систему управления учётными записями?
Или нам придётся создать совершенно новый английский форум со своим поддоменом и собственной системой управления учётными записями?

Под термином «единая система управления учётными записями» я подразумеваю единую базу данных пользователей и единый вход для обоих языков.
Есть ли возможность избежать необходимости двойной регистрации для пользователей, которые хотят использовать оба языка?

Или нам строго необходимо ограничиться одним доменом, если мы хотим предоставлять одинаковые учётные данные для разных языков одного и того же форума?

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

Например, как здесь:
https://meta.discourse.org/t/multilingual-plugin/*en/*142740/125
для английских постов и
https://meta.discourse.org/t/multilingual-plugin/*de/*142740/125
для немецких?

Извините, если мои вопросы показались слишком глупыми…

2 лайка

Короткий ответ: нет, это невозможно.

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

Да, для этого нужно разместить их на одном форуме. Если же вам действительно необходимо иметь два отдельных форума, вам придётся использовать провайдера идентификации, например Auth0 или Okta, который обеспечит аутентификацию для обоих форумов.

На данный момент это не является функцией плагина, однако это можно реализовать с помощью дополнительной работы. Для полного воплощения вашей задумки в любом случае потребуется дополнительная доработка. Вы можете отправить мне личное сообщение на coop.pavilion.tech.

2 лайка

Учитывая результаты этого опроса, я начну работу над следующей основной версией этого плагина в сентябре. Если у вас есть конкретные пожелания по функционалу, самое время их озвучить. В следующей версии плагина также будет доступна платная бизнес-подписка с поддержкой и другими преимуществами. Плагин останется на 100% открытым исходным кодом.

4 лайка

Вы можете развернуть два экземпляра и использовать Discourse Connect, чтобы назначить один из них сайтом, отвечающим за аутентификацию.

1 лайк

Поскольку финский и эстонский языки относятся к очень малой и сложной языковой семье, мне нужны переводы на основе ИИ для моих финских и эстонских пользователей. Услуги перевода на другие основные языки ужасно плохи.

Переводы на английский язык немного лучше, хотя.

4 лайка

Я пытаюсь использовать настройку multilingual guest language switcher footer visible, чтобы сделать основные языки сообщества быстро доступными в качестве языков интерфейса для гостей. Вот что я заметил:

  1. Панель со списком языков интерфейса отображается только тогда, когда multilingual guest language switcher установлено в footer, но не когда оно установлено в header.

    Поскольку эта панель также называется «footer» в названии настройки (хотя на самом деле она не находится в подвале страницы Discourse, а плавает над содержимым в правом нижнем углу окна), это может быть ожидаемым поведением. Однако на сайтах с большим количеством языков интерфейса (например, всех доступных в настоящее время в Discourse) было бы полезно иметь быстрый доступ к краткому списку основных языков сообщества независимо от расположения полного меню выбора языков для гостей. (К тому же, кнопка меню в заголовке выглядит намного чище, чем панель, плавающая над случайными частями содержимого страницы и перекрывающая их.)

    Возможно, при выборе header и выборе языков в multilingual guest language switcher footer visible их можно было бы переместить в начало меню и как-то выделить?

  2. Настройка позволяет изменить порядок языков, выбранных для краткого списка в панели:

    Однако панель, похоже, игнорирует этот порядок и вместо этого сортирует языки в алфавитном порядке по их двухбуквенному коду:
    скриншот панели переключения языков для гостей. Языки (в таком порядке): арабский, немецкий, английский (США), французский и итальянский, все перечислены на их родных языках: «اللغة العربية», «Deutsch», «English (US)», «Français», «Italiano» и «简体中文»

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

1 лайк

Кстати, когда переключатель языка гостя для нескольких языков установлен в значение «header», меню со списком языков не прокручивается (и не ограничено высотой окна браузера), поэтому некоторые языки невозможно выбрать, так как они оказываются ниже нижней границы окна браузера. (Обходное решение в Firefox: уменьшите масштаб с помощью Ctrl+колесо мыши, чтобы всё меню поместилось в окне браузера.)

Это относится к версии 0.2.9 (ba63f9a) плагина «Multilingual».

1 лайк

Похоже, предыдущий администратор нашего экземпляра уже загрузил файлы category_name.<код языка>.yml по адресу <базовый URL Discourse>/admin/multilingual/translations.

Однако они, похоже, не работают. Есть ли способ просмотреть или скачать их содержимое, чтобы я мог внести изменения и загрузить их снова?

Редактирование:

Теперь они работают. (Не знаю, что изменилось.) Мне всё же было бы интересно скачать их (или получить к ним доступ на сервере, если они находятся в файловой системе), на случай, если мне понадобится их изменить в будущем.

1 лайк

Привет! Я установил плагин discourse-multilingual на двух сайтах.
В файле i18n.js возникает ошибка: require is not defined:

Когда я отключил discourse-multilingual, ошибка не появлялась. Не могли бы вы подсказать, что может быть её причиной?

Спасибо.

Но я хочу:

Я столкнулся с ещё одной ошибкой в этой теме.

Я заменил 简体中文 на 한국어.
Появилась иконка карандаша, уведомляющая об изменении.
Но если посмотреть запись в истории правок, изменение языка темы не отображается.
Значения «До» и «После» идентичны, даже в режиме Raw.

Я думаю, что это тоже было проблемой в

1 лайк

Привет!

Извините, если вопрос покажется странным, но есть ли где-то возможность посмотреть плагин в действии? Я изучил документацию и прошёл по этой теме, но большинство ссылок на примеры сайтов либо не работают, либо изменились. Например: Pavilion и http://try.thepavilion.io/. Из-за этого я не могу проверить упомянутые примеры для плагина, переключателя локалей и т. д.

Если сейчас нет возможности протестировать его, не могли бы вы ответить на несколько вопросов? :slightly_smiling_face:

  • Могут ли пользователи выбрать предпочитаемый язык/языки при регистрации, чтобы контент форума автоматически фильтровался в соответствии с их выбором?
  • Можно ли заменить кнопку «LanguageSwitch» на иконку глобуса или что-то другое? Сейчас на ней отображается японский символ, но поскольку на моём форуме никто не использует этот язык, это может запутать пользователей или заставить их игнорировать кнопку.
  • Я понимаю, что категории и описания можно перевести (если я правильно понял), но работает ли это также для подкатегорий внутри подкатегорий? Кроме того, применимо ли это к таким элементам, как ссылки в заголовке бренда (плагин)? Например, можно ли перевести слово «Products» и перенаправлять пользователей на испанскую или английскую версию в зависимости от выбранного ими языка? Я спрашиваю, так как это очень популярный плагин, и мне интересно, поддерживается ли он мультиязычным плагином.

Извините за все вопросы! Я постарался разобраться во всём самостоятельно, изучив скриншоты и документацию.

Похоже, этот плагин несовместим с Discourse 3.5.0beta1 — мне пришлось отключить его, чтобы восстановить работу форума. В логах я ничего не нашёл, кроме следующего:

Уведомление об устаревании: метод add_to_serializer не следует использовать для прямого переопределения методов include_*?. Вместо этого используйте аргумент ключевого слова include_condition.
В файле /var/www/discourse/plugins/discourse-multilingual/plugin.rb:314: в блоке activate!

2 лайка

Я получаю ошибку 500 / Ой в текущей версии Discourse:

ArgumentError (неверное количество аргументов (передано 2, ожидалось 1))
app/controllers/extra_locales_controller.rb:44:in `url'

Стек вызовов

plugins/discourse-multilingual/extensions/extra_locales_controller.rb:21:in `bundle_js_hash'
app/controllers/extra_locales_controller.rb:44:in `url'
plugins/discourse-multilingual/lib/multilingual/locale_loader.rb:30:in `preload_tag_translations'
plugins/discourse-multilingual/plugin.rb:77:in `block (2 levels) in activate!'

Моя локаль установлена как de_DE.UTF-8.

Кстати: ссылка «Сообщить об ошибке» выше ведёт на пока неизвестный домен discourse.pluginmanager.org.

1 лайк

Этот плагин прямо сейчас определённо вызывает падение моего сайта.

1 лайк

Плагин обновлён, чтобы не вызывать сбоев в последней версии Discourse.

14 лайков