Sha256: a9a4db6f0ad161bb919c09646d1731b3f7801df3a3950b01b39258924cd16c10

Contents?: true

Size: 1.41 KB

Versions: 20

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true

require 'i18n/tasks/translators/base_translator'

module I18n::Tasks::Translators
  class YandexTranslator < BaseTranslator
    def initialize(*)
      begin
        require 'yandex-translator'
      rescue LoadError
        raise ::I18n::Tasks::CommandError, "Add gem 'yandex-translator' to your Gemfile to use this command"
      end
      super
    end

    protected

    def translate_values(list, **options)
      list.map { |item| translator.translate(item, options) }
    end

    def options_for_translate_values(from:, to:, **options)
      options.merge(
        from: to_yandex_compatible_locale(from),
        to: to_yandex_compatible_locale(to)
      )
    end

    def options_for_html
      { format: 'html' }
    end

    def options_for_plain
      { format: 'plain' }
    end

    def no_results_error_message
      I18n.t('i18n_tasks.yandex_translate.errors.no_results')
    end

    private

    # Convert 'es-ES' to 'es'
    def to_yandex_compatible_locale(locale)
      return locale unless locale.include?('-')

      locale.split('-', 2).first
    end

    def translator
      @translator ||= Yandex::Translator.new(api_key)
    end

    def api_key
      @api_key ||= begin
        key = @i18n_tasks.translation_config[:yandex_api_key]
        fail ::I18n::Tasks::CommandError, I18n.t('i18n_tasks.yandex_translate.errors.no_api_key') if key.blank?

        key
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 3 rubygems

Version Path
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/i18n-tasks-1.0.14/lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-1.0.13 lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-1.0.12 lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-1.0.11 lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-1.0.10 lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-1.0.9 lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-1.0.8 lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-1.0.7 lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-1.0.6 lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-1.0.5 lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-1.0.4 lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-1.0.3 lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-1.0.2 lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-1.0.1 lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-1.0.0 lib/i18n/tasks/translators/yandex_translator.rb
i18n-youdao-tasks-0.9.37 lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-0.9.37 lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-0.9.36 lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-0.9.35 lib/i18n/tasks/translators/yandex_translator.rb
i18n-tasks-0.9.34 lib/i18n/tasks/translators/yandex_translator.rb