Module: Deliver::Languages

Defined in:
deliver/lib/deliver/languages.rb

Constant Summary collapse

ALL_LANGUAGES =
FastlaneCore::Languages::ALL_LANGUAGES

Class Method Summary collapse

Class Method Details

.detect_languages(options:, localized_values_keys: [], metadata_path: nil, ignore_validation: false) ⇒ Array<String>

Detects all enabled languages from various sources

Parameters:

  • options (Hash)

    The options hash containing language settings

  • localized_values_keys (Array<Symbol>) (defaults to: [])

    Keys to check for localized values in options

  • metadata_path (String, nil) (defaults to: nil)

    Path to metadata folder to check for language folders

  • ignore_validation (Boolean) (defaults to: false)

    Whether to ignore language directory validation

Returns:

  • (Array<String>)

    List of unique enabled language codes



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'deliver/lib/deliver/languages.rb', line 13

def self.detect_languages(options:, localized_values_keys: [], metadata_path: nil, ignore_validation: false)
  require_relative 'loader'

  enabled_languages = options[:languages] || []

  # Get all languages used in existing localized settings
  localized_values_keys.each do |key|
    current = options[key]
    next unless current && current.kind_of?(Hash)
    current.each do |language, value|
      enabled_languages << language unless enabled_languages.include?(language)
    end
  end

  # Check folder list if metadata_path is provided (an empty folder signifies a language is required)
  if 
    Loader.language_folders(, ignore_validation).each do |lang_folder|
      enabled_languages << lang_folder.basename unless enabled_languages.include?(lang_folder.basename)
    end
  end

  # Mapping to strings because :default symbol can be passed in
  enabled_languages
    .map(&:to_s)
    .uniq
end