You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
862 B
31 lines
862 B
# 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 languages |
|
{} |
|
end |
|
|
|
def translate(_text, _source_language, _target_language) |
|
raise NotImplementedError |
|
end |
|
end
|
|
|