42 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			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 configuration.deepl[:api_key].present?
 | |
|       TranslationService::DeepL.new(
 | |
|         configuration.deepl[:plan],
 | |
|         configuration.deepl[:api_key]
 | |
|       )
 | |
|     elsif configuration.libre_translate[:endpoint].present?
 | |
|       TranslationService::LibreTranslate.new(
 | |
|         configuration.libre_translate[:endpoint],
 | |
|         configuration.libre_translate[:api_key]
 | |
|       )
 | |
|     else
 | |
|       raise NotConfiguredError
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def self.configured?
 | |
|     configuration.deepl[:api_key].present? || configuration.libre_translate[:endpoint].present?
 | |
|   end
 | |
| 
 | |
|   def self.configuration
 | |
|     Rails.configuration.x.translation
 | |
|   end
 | |
| 
 | |
|   def languages
 | |
|     {}
 | |
|   end
 | |
| 
 | |
|   def translate(_text, _source_language, _target_language)
 | |
|     raise NotImplementedError
 | |
|   end
 | |
| end
 |