32 lines
		
	
	
		
			902 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			902 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
class TranslationService
 | 
						|
  class Error < StandardError; end
 | 
						|
  class NotConfiguredError < Error; end
 | 
						|
  class TooManyRequestsError < Error; end
 | 
						|
  class QuotaExceededError < Error; end
 | 
						|
  class UnexpectedResponseError < Error; end
 | 
						|
 | 
						|
  def self.configured
 | 
						|
    if ENV['DEEPL_API_KEY'].present?
 | 
						|
      TranslationService::DeepL.new(ENV.fetch('DEEPL_PLAN', 'free'), ENV['DEEPL_API_KEY'])
 | 
						|
    elsif ENV['LIBRE_TRANSLATE_ENDPOINT'].present?
 | 
						|
      TranslationService::LibreTranslate.new(ENV['LIBRE_TRANSLATE_ENDPOINT'], ENV['LIBRE_TRANSLATE_API_KEY'])
 | 
						|
    else
 | 
						|
      raise NotConfiguredError
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def self.configured?
 | 
						|
    ENV['DEEPL_API_KEY'].present? || ENV['LIBRE_TRANSLATE_ENDPOINT'].present?
 | 
						|
  end
 | 
						|
 | 
						|
  def supported?(_source_language, _target_language)
 | 
						|
    false
 | 
						|
  end
 | 
						|
 | 
						|
  def translate(_text, _source_language, _target_language)
 | 
						|
    raise NotImplementedError
 | 
						|
  end
 | 
						|
end
 |