diff --git a/app/controllers/discourse_translator/translator_controller.rb b/app/controllers/discourse_translator/translator_controller.rb index bffe9ff0..2205c508 100644 --- a/app/controllers/discourse_translator/translator_controller.rb +++ b/app/controllers/discourse_translator/translator_controller.rb @@ -41,14 +41,10 @@ def translate begin title_json = {} detected_lang, translation = - "DiscourseTranslator::Provider::#{SiteSetting.translator_provider}".constantize.translate( - post, - ) + DiscourseTranslator::Provider::TranslatorProvider.get.translate(post) if post.is_first_post? _, title_translation = - "DiscourseTranslator::Provider::#{SiteSetting.translator_provider}".constantize.translate( - post.topic, - ) + DiscourseTranslator::Provider::TranslatorProvider.get.translate(post.topic) title_json = { title_translation: title_translation } end render json: { translation: translation, detected_lang: detected_lang }.merge(title_json), diff --git a/app/jobs/regular/detect_translatable_language.rb b/app/jobs/regular/detect_translatable_language.rb index 033a0625..65f4480b 100644 --- a/app/jobs/regular/detect_translatable_language.rb +++ b/app/jobs/regular/detect_translatable_language.rb @@ -11,7 +11,7 @@ def execute(args) translatable = args[:type].constantize.find_by(id: args[:translatable_id]) return if translatable.blank? begin - translator = "DiscourseTranslator::Provider::#{SiteSetting.translator_provider}".constantize + translator = DiscourseTranslator::Provider::TranslatorProvider.get translator.detect(translatable) rescue ::DiscourseTranslator::Provider::ProblemCheckedTranslationError # problem-checked translation errors gracefully diff --git a/app/jobs/regular/translate_translatable.rb b/app/jobs/regular/translate_translatable.rb index bdf4d7d5..20db120f 100644 --- a/app/jobs/regular/translate_translatable.rb +++ b/app/jobs/regular/translate_translatable.rb @@ -11,7 +11,7 @@ def execute(args) target_locales = SiteSetting.automatic_translation_target_languages.split("|") target_locales.each do |target_locale| - "DiscourseTranslator::Provider::#{SiteSetting.translator_provider}".constantize.translate( + DiscourseTranslator::Provider::TranslatorProvider.get.translate( translatable, target_locale.to_sym, ) diff --git a/app/jobs/scheduled/automatic_translation_backfill.rb b/app/jobs/scheduled/automatic_translation_backfill.rb index dfb9e1e0..b7fe5bbb 100644 --- a/app/jobs/scheduled/automatic_translation_backfill.rb +++ b/app/jobs/scheduled/automatic_translation_backfill.rb @@ -67,8 +67,7 @@ def backfill_locales end def translator - @translator_klass ||= - "DiscourseTranslator::Provider::#{SiteSetting.translator_provider}".constantize + @translator_klass ||= DiscourseTranslator::Provider::TranslatorProvider.get end def translate_records(type, record_ids, target_locale) diff --git a/app/services/discourse_translator/provider/translator_provider.rb b/app/services/discourse_translator/provider/translator_provider.rb new file mode 100644 index 00000000..3e5de694 --- /dev/null +++ b/app/services/discourse_translator/provider/translator_provider.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module DiscourseTranslator + module Provider + class TranslatorProvider + def self.get + "DiscourseTranslator::Provider::#{SiteSetting.translator_provider}".constantize + end + end + end +end