Module: TranslationDiff::Languages

Defined in:
lib/translation_diff/languages.rb

Overview

What each provider translates, captured from the vendor and shipped; unknown means no opinion, never a refusal.

Defined Under Namespace

Classes: Refresh, Set

Constant Summary collapse

DIRECTORY =
File.expand_path("../../data/languages", __dir__).freeze
SHIPPED =

Derived from the directory itself: shipping a new file makes it load without editing this list too.

Dir.children(DIRECTORY).grep(/\.json\z/).map { |file| File.basename(file, ".json").to_sym }.sort.freeze
NOT_SHIPPED =

Amazon needs AWS credentials most maintainers lack; LibreTranslate's list is one private instance's own.

%i[amazon libretranslate].freeze

Class Method Summary collapse

Class Method Details

.for(provider) ⇒ Object



18
19
20
21
22
23
# File 'lib/translation_diff/languages.rb', line 18

def for(provider)
  name = provider.to_s
  return nil unless SHIPPED.include?(name.to_sym)

  sets[name] ||= Set.load(File.join(DIRECTORY, "#{name}.json"))
end

.supports?(provider, from:, to:) ⇒ Boolean

nil, not false: a provider we ship no data for must never refuse a pair.

Returns:

  • (Boolean)


11
12
13
14
15
16
# File 'lib/translation_diff/languages.rb', line 11

def supports?(provider, from:, to:)
  set = self.for(provider)
  return nil if set.nil? # rubocop:disable Style/ReturnNilInPredicateMethodDefinition

  set.supports_source?(from) && set.supports_target?(to)
end