forked from asonix/mastodon
* Change “Translate” button to only show up when a translation backend is configured Fixes #19346 * Add `translation` attribute to /api/v2/instance to expose whether the translation feature is enabled Fixes #19328
27 lines
832 B
Ruby
27 lines
832 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 translate(_text, _source_language, _target_language)
|
|
raise NotImplementedError
|
|
end
|
|
end
|