Select Enable API and search for Google Cloud Translator API. Look for the enable button and click it to enable the API. Note that there is no free tier for the Google Translator API so it may prompt you to enable billing.
Once you’re done, click on credentials in the left menu
Я использую саморазмещённую версию LibreTranslate, которая раньше работала отлично, но сейчас я получаю множество повторяющихся ошибок «Job exception: The translator service is currently not available» (Исключение задания: сервис перевода в настоящее время недоступен). Я проверил URL-адрес, который раньше работал без проблем. Если открыть этот URL, страница веб-интерфейса LibreTranslate отображается корректно. API-токен не требуется, так как мой экземпляр LibreTranslate является приватным и не доступен из интернета.
Вот трассировка стека:
Сообщение (548 дубликатов)
Исключение задания: сервис перевода в настоящее время недоступен.
Трассировка стека
/var/www/discourse/plugins/discourse-translator/services/discourse_translator/libretranslate.rb:168:in `result'
/var/www/discourse/plugins/discourse-translator/services/discourse_translator/libretranslate.rb:85:in `detect'
/var/www/discourse/plugins/discourse-translator/plugin.rb:120:in `block in execute'
/var/www/discourse/lib/distributed_mutex.rb:53:in `block in synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:34:in `synchronize'
/var/www/discourse/plugins/discourse-translator/plugin.rb:119:in `execute'
/var/www/discourse/app/jobs/base.rb:305:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.0.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:292:in `block in perform'
/var/www/discourse/app/jobs/base.rb:288:in `each'
/var/www/discourse/app/jobs/base.rb:288:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:202:in `execute_job'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:170:in `block (2 levels) in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:177:in `block in invoke'
/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:179:in `block in invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:182:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:169:in `block in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_retry.rb:113:in `local'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq.rb:44:in `block in <module:Sidekiq>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:263:in `stats'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_logger.rb:13:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_retry.rb:80:in `global'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:124:in `block in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_logger.rb:39:in `prepare'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:123:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:168:in `process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:78:in `process_one'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:68:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/component.rb:8:in `watchdog'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/component.rb:17:in `block in safe_thread'
Вариант локализации «Hindi» пока недоступен в «Discourse». Однако перевод на «Hindi» доступен через другие сервисы (я использую «Microsoft Azure»).
Как тогда настроить автоматический перевод всех/любых постов, не на «Hindi», на «Hindi», даже если интерфейс Discourse остаётся на английском? Возможно ли это вообще?
Я подумываю о добавлении этого переводчика на наш форум. Однако у меня есть два основных опасения:
1. Можно ли изменять переводы?
Я хочу убедиться, что определённые термины переводятся нужным образом. Для этого мне нужна возможность просматривать доступные переводы и при необходимости вносить в них изменения.
2. Когда пост будет переведён заново?
Некоторые сообщения на форуме редактируются довольно часто. Как мне гарантировать, что каждая исправленная опечатка не приведёт к непомерным затратам на перевод? Кроме того, как обеспечить, чтобы новые изменения точно отражались в переводах?
Полагаю, это невозможно, так как потребовалось бы вмешательство на уровне поставщика услуг (Microsoft/Google). Если только переведённый контент не подпадает под функцию замены слов, тогда можно воспользоваться ею.
Вот предложение по улучшению:
Автоматически переводить первый пост на английский язык, если он написан на другом языке.
Добавить кнопку для перевода всей темы сразу.
Включить функцию автоматического перевода для всего форума на уровне пользователя. Это означает, что если пользователь укажет в своём профиле, что он говорит, например, только на румынском, то весь контент будет переводиться на румынский. Если он укажет, что владеет несколькими языками, посты будут переводиться только в том случае, если они не на этих языках.
Уведомление на вашем скриншоте использует оригинальное название темы вашего поста, поэтому сейчас оно «верное». В будущем мы обеспечим перевод уведомлений (названий тем).
Что касается поста выше, наша машинная система перевода дала сбой: пост был ошибочно определен как «испанский (es)», а затем переведён некорректно. Это исправлено. Мы работаем над улучшением переводов, используя более качественные промпты.
Я получил эту ошибку при установке плагина discourse-translator. Моя версия Discourse — 3.5.0.beta1.
I, [2025-04-24T01:33:20.510994 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
82: from /usr/local/bin/bundle:25:in `<main>'
81: from /usr/local/bin/bundle:25:in `load'
80: from /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.5.18/exe/bundle:20:in `<top (required)>'
....
10: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/lazy_load_hooks.rb:87:in `with_execution_control'
9: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/lazy_load_hooks.rb:94:in `block in execute_hook'
8: from /var/www/discourse/config/application.rb:249:in `block in <class:Application>'
7: from /var/www/discourse/lib/plugin.rb:6:in `initialization_guard'
6: from /var/www/discourse/config/application.rb:249:in `block (2 levels) in <class:Application>'
5: from /var/www/discourse/config/application.rb:249:in `each'
4: from /var/www/discourse/lib/plugin/instance.rb:629:in `notify_after_initialize'
3: from /var/www/discourse/lib/plugin/instance.rb:629:in `each'
2: from /var/www/discourse/lib/plugin/instance.rb:631:in `block in notify_after_initialize'
1: from /var/www/discourse/plugins/discourse-translator/plugin.rb:40:in `block in activate!'
/var/www/discourse/plugins/discourse-translator/lib/discourse_translator/inline_translation.rb:86:in `inject': protected method `register_topic_preloader_associations' called for an instance of Plugin::Instance (NoMethodError)