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

У меня та же проблема. Моя версия Discourse — 3.5.0.beta2-dev, плагин discourse-multilingual — последняя версия.


Стек вызовов:

app/controllers/extra_locales_controller.rb:39:in `bundle_js_hash'
plugins/discourse-multilingual/extensions/extra_locales_controller.rb:25:in `bundle_js_hash'
app/controllers/extra_locales_controller.rb:44:in `url'
plugins/discourse-multilingual/lib/multilingual/locale_loader.rb:26:in `preload_custom_locale'
plugins/discourse-multilingual/plugin.rb:76:in `block (2 levels) in activate!'
lib/plugin/instance.rb:729:in `block in register_html_builder'
lib/discourse_plugin_registry.rb:230:in `block in build_html'
lib/discourse_plugin_registry.rb:230:in `map'
lib/discourse_plugin_registry.rb:230:in `build_html'
app/helpers/application_helper.rb:572:in `build_plugin_html'
app/views/layouts/application.html.erb:24

Кто-нибудь знает, как решить эту проблему?

1 лайк

Я использую конфигурационный файл custom names.yml, чтобы изменить English (US) на English, но это сломалось из-за ошибки. Трассировка:

ActionView::Template::Error (Unknown bundle: custom-language)
app/controllers/extra_locales_controller.rb:39:in `bundle_js_hash'
app/controllers/extra_locales_controller.rb:44:in `url'
lib/plugin/instance.rb:729:in `block in register_html_builder'
lib/discourse_plugin_registry.rb:230:in `block in build_html'
lib/discourse_plugin_registry.rb:230:in `map'
lib/discourse_plugin_registry.rb:230:in `build_html'
app/helpers/application_helper.rb:572:in `build_plugin_html'
app/views/layouts/application.html.erb:24
lib/topic_list_responder.rb:15:in `block (2 levels) in respond_with_list'
lib/topic_list_responder.rb:8:in `respond_with_list'
app/controllers/list_controller.rb:347:in `block (2 levels) in <class:ListController>'
app/controllers/list_controller.rb:316:in `public_send'
app/controllers/list_controller.rb:316:in `top'
app/controllers/application_controller.rb:427:in `block in with_resolved_locale'
app/controllers/application_controller.rb:427:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:409:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
lib/middleware/default_headers.rb:13:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/processing_request.rb:12:in `call'
lib/middleware/request_tracker.rb:385:in `call'
1 лайк

После обновления Discourse теперь отображается баннер со следующим сообщением:

[Уведомление администратора] Один из ваших тем или плагинов требует обновления для совместимости с предстоящими изменениями в ядре Discourse. (id:discourse.component-template-overrides) Обнаруженный плагин: ‘discourse-multilingual’

Похоже, что до июня 2025 года в этот плагин потребуется внести некоторые технические изменения.

5 лайков

Есть ли какие-либо обновления от разработчиков по этому вопросу?

1 лайк

Есть какие-то идеи, почему мой форум изменил язык на английский после активации многоязычного плагина? Я отключил плагин, но язык всё ещё английский.

1 лайк

Мне удалось успешно следовать этому руководству, чтобы добавить переводы для категорий.
Но мне не удалось заставить работать переводы для тегов.

Вот что у меня есть в файле tag.ja.yml:

discussions: Дискуссии
questions: Вопросы
self-intro: Самопрезентация
showcase: Демонстрация работ
other: Другое
guidelines: Руководство
updates: Обновления

А вот что получилось при переключении языка интерфейса на японский:

Буду признателен за любую помощь, спасибо!

1 лайк

@angus Есть способ исправить двойные запятые? @Arkshine нашёл решение здесь, удалив старый CSS:

1 лайк

Мой Discourse завис на загрузке. Я предполагаю, что это ошибка технических изменений?

Пост: Discourse Stuck on Loading (Logs) - #6 by joshhabka

1 лайк

@angus Вы знаете, как полностью удалить все оставшиеся файлы и настройки этого многоязычного плагина?

1 лайк

@Angus, пожалуйста, посмотрите новую ошибку с плагином: «500» при сохранении поста при добавлении языкового тега. Спасибо за разработку этого плагина :slight_smile:

1 лайк

Привет,
Я попытался установить плагин Multilingual на свой локальный форум Discourse.
Я клонировал его с помощью следующей команды в папке плагинов:

git clone https://github.com/paviliondev/discourse-multilingual

Но я не могу найти вкладку Multilingual в моих настройках администратора. Она появляется только в меню плагинов, но не содержит всех настроек. Что мне делать?

Это выдает следующее уведомление об устаревании:
Уведомление об устаревании: add_to_serializer не следует использовать для прямого переопределения методов include_*?. Вместо этого используйте аргумент ключа include_condition.
В /workspace/discourse/plugins/discourse-multilingual/plugin.rb:188:in block in activate!

Локальный лог сервера
  • Выполнение задачи: bin/rake db:create db:migrate

Уведомление об устаревании: add_to_serializer не следует использовать для прямого переопределения методов include_?. Вместо этого используйте аргумент ключа include_condition.
В /workspace/discourse/plugins/discourse-multilingual/plugin.rb:188:in block in activate!
Уведомление об устаревании: add_to_serializer не следует использовать для прямого переопределения методов include_
?. Вместо этого используйте аргумент ключа include_condition.
В /workspace/discourse/plugins/discourse-multilingual/plugin.rb:193:in block in activate!
Уведомление об устаревании: add_to_serializer не следует использовать для прямого переопределения методов include_?. Вместо этого используйте аргумент ключа include_condition.
В /workspace/discourse/plugins/discourse-multilingual/plugin.rb:199:in block in activate!
Уведомление об устаревании: add_to_serializer не следует использовать для прямого переопределения методов include_
?. Вместо этого используйте аргумент ключа include_condition.
В /workspace/discourse/plugins/discourse-multilingual/plugin.rb:312:in block in activate!
Уведомление об устаревании: add_to_serializer не следует использовать для прямого переопределения методов include_?. Вместо этого используйте аргумент ключа include_condition.
В /workspace/discourse/plugins/discourse-multilingual/plugin.rb:314:in block in activate!
База данных ‘discourse_development’ уже существует
Уведомление об устаревании: add_to_serializer не следует использовать для прямого переопределения методов include_
?. Вместо этого используйте аргумент ключа include_condition.
В /workspace/discourse/plugins/discourse-multilingual/plugin.rb:188:in block in activate!
Уведомление об устаревании: add_to_serializer не следует использовать для прямого переопределения методов include_?. Вместо этого используйте аргумент ключа include_condition.
В /workspace/discourse/plugins/discourse-multilingual/plugin.rb:193:in block in activate!
Уведомление об устаревании: add_to_serializer не следует использовать для прямого переопределения методов include_
?. Вместо этого используйте аргумент ключа include_condition.
В /workspace/discourse/plugins/discourse-multilingual/plugin.rb:199:in block in activate!
Уведомление об устаревании: add_to_serializer не следует использовать для прямого переопределения методов include_?. Вместо этого используйте аргумент ключа include_condition.
В /workspace/discourse/plugins/discourse-multilingual/plugin.rb:312:in block in activate!
Уведомление об устаревании: add_to_serializer не следует использовать для прямого переопределения методов include_
?. Вместо этого используйте аргумент ключа include_condition.
В /workspace/discourse/plugins/discourse-multilingual/plugin.rb:314:in block in activate!

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

  • Выполнение задачи: bin/ember-cli -u

Область: все 16 проектов рабочей области
Файл блокировки актуален, шаг разрешения пропущен
Уже актуально
Готово за 1.4с с использованием pnpm v9.15.7
Ember CLI запущен с PID: 57615
I, [2025-04-25T12:45:00.214872 #57627] INFO – : Обновление списка Gem
Запуск наблюдателя за изменениями CSS
[ember-cli] Настройка ‘staticAddonTrees’ по умолчанию будет равна true в следующей версии Embroider и не может быть отключена. Чтобы подготовиться к этому, установите ‘staticAddonTrees: true’ в конфигурации Embroider.
[ember-cli] Настройка ‘staticAddonTestSupportTrees’ по умолчанию будет равна true в следующей версии Embroider и не может быть отключена. Чтобы подготовиться к этому, установите ‘staticAddonTestSupportTrees: true’ в конфигурации Embroider.
Уведомление об устаревании: add_to_serializer не следует использовать для прямого переопределения методов include_?. Вместо этого используйте аргумент ключа include_condition.
В /workspace/discourse/plugins/discourse-multilingual/plugin.rb:188:in block in activate!
Уведомление об устаревании: add_to_serializer не следует использовать для прямого переопределения методов include_
?. Вместо этого используйте аргумент ключа include_condition.
В /workspace/discourse/plugins/discourse-multilingual/plugin.rb:193:in block in activate!
Уведомление об устаревании: add_to_serializer не следует использовать для прямого переопределения методов include_?. Вместо этого используйте аргумент ключа include_condition.
В /workspace/discourse/plugins/discourse-multilingual/plugin.rb:199:in block in activate!
Уведомление об устаревании: add_to_serializer не следует использовать для прямого переопределения методов include_
?. Вместо этого используйте аргумент ключа include_condition.
В /workspace/discourse/plugins/discourse-multilingual/plugin.rb:312:in block in activate!
Уведомление об устаревании: add_to_serializer не следует использовать для прямого переопределения методов include_*?. Вместо этого используйте аргумент ключа include_condition.
В /workspace/discourse/plugins/discourse-multilingual/plugin.rb:314:in block in activate!
I, [2025-04-25T12:45:03.044278 #57627] INFO – : прослушивание на addr=127.0.0.1:3000 fd=29
[ember-cli] Проксирование на http://127.0.0.1:3000
[ember-cli] построение…
I, [2025-04-25T12:45:04.243153 #57627] INFO – : запуск 1 контролируемого sidekiq
[ember-cli] …[ConfigLoader]
I, [2025-04-25T12:45:04.554744 #57627] INFO – : главный процесс готов
I, [2025-04-25T12:45:04.667840 #57910] INFO – : Загрузка Sidekiq с идентификатором процесса 57910
I, [2025-04-25T12:45:04.680493 #57914] INFO – : worker=0 готов
I, [2025-04-25T12:45:04.686440 #57919] INFO – : worker=1 готов
I, [2025-04-25T12:45:04.686445 #57924] INFO – : worker=2 готов
[ember-cli] …[Babel: discourse-widget-hbs > applyPatches]
[ember-cli] …[Babel: ember-source > applyPatches]
[ember-cli] …[Babel: dialog-holder > applyPatches]
[ember-cli] …[embroider-template-compile-stage1 > applyPatches]
[ember-cli] …[Babel: select-kit > applyPatches]
[ember-cli] …[@embroider/compat/app]
[ember-cli] …[@embroider/webpack]
[ember-cli] …[@embroider/webpack]
[ember-cli] …[@embroider/webpack]
[ember-cli] …[SourceMapConcat]
[ember-cli] …[Babel: admin > applyPatches]
[ember-cli] …[SourceMapConcat]
[ember-cli] …[Babel: discourse-plugins > applyPatches]
[ember-cli] …[TemplateCompiler > applyPatches]
[ember-cli] …[Babel: discourse-plugins > applyPatches]
[ember-cli] …[SourceMapConcat]
[ember-cli] …[Babel: discourse-plugins > applyPatches]
[ember-cli] …[TemplateCompiler > applyPatches]
[ember-cli] …[Babel: discourse-plugins > applyPatches]
[ember-cli] …[SourceMapConcat]
[ember-cli] …[Babel: discourse-plugins > applyPatches]
[ember-cli]
[ember-cli] Сборка успешна (31766 мс) – обслуживание на http://localhost:4200/
[ember-cli]
[ember-cli] Самые медленные узлы (время >= 5%) | Всего (среднее)
[ember-cli] -±
[ember-cli] @embroider/webpack (1) | 21608 мс
[ember-cli] Babel: discourse-plugins (29) | 4506 мс (155 мс)
[ember-cli] broccoli-persistent-filter:Mapper (36) | 1628 мс (45 мс)
[ember-cli]
[ember-cli] (node:57634) [DEP0060] Предупреждение об устаревании: API util._extend устарел. Пожалуйста, используйте Object.assign() вместо него.
[ember-cli] (Используйте node --trace-deprecation ..., чтобы показать, где было создано предупреждение)

2 лайка

Это привело к неработоспособности приложения. Вам следует обновить его до последней версии:

Я был вынужден отключить этот плагин из-за следующей ошибки:

ActionView::Template::Error (Файл 'locales/i18n.js' не найден в пути загрузки.)

locales/i18n.js был удалён в PERF: Compile main locale bundles just-in-time (#32335) · discourse/discourse@c62a4a4 · GitHub

2 лайка

Привет, @angus,

Есть ли какие-то новости о том, когда будет доступна версия, совместимая с Discourse 3.4?

В данный момент мы пытаемся установить плагин на наш экземпляр Discourse 3.4.3, но сталкиваемся с рядом ошибок из-за несовместимости.

Заранее спасибо за помощь!

Из-за PERF: Compile main locale bundles just-in-time (#32335) · discourse/discourse@c62a4a4 · GitHub плагин discourse-multilingual нельзя использовать. Планируете ли вы это исправить?

3 лайка

Здравствуйте. Касательно изменения интерфейса настроек администратора: куда мы можем добавить файлы перевода?

Редактирование: переходя по URL (/admin/multilingual/languages), можно открыть меню, однако прямых гиперссылок из нового интерфейса настроек администратора нет…
Если в этот модуль будет внесено обновление, надеюсь, что настройки будут адаптированы под новый интерфейс.

Я использовал tag вместо этого плагина. Но это работает только в фильтре тегов.

Думаю, стоит сделать форк для обновления исходного кода — автор слишком долго не обновлял проект…

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

Поэтому понятно, что этот плагин больше не поддерживается, так как почти все его функции теперь доступны в Discourse по умолчанию.

РЕДАКТИРОВАНИЕ: Обратите внимание, что не все текущие функции плагина Multilingual доступны в Discourse нативно на данный момент, например:

  • Вы не можете скрывать темы на страницах категорий в зависимости от настройки «Языки контента» в профиле пользователя.

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

4 лайка