Class: FastGettext::TranslationRepository::Merge

Inherits:
Base
  • Object
show all
Defined in:
lib/fast_gettext/translation_repository/merge.rb

Overview

Responsibility:

- merge data from multiple repositories into one hash structure
- can be used instead of searching for translations in multiple domains
- requires reload when current locale is changed

Instance Attribute Summary

Attributes inherited from Base

#name, #options

Instance Method Summary collapse

Constructor Details

#initialize(name, options = {}) ⇒ Merge

Returns a new instance of Merge.



10
11
12
13
14
15
16
# File 'lib/fast_gettext/translation_repository/merge.rb', line 10

def initialize(name, options={})
  clear
  super(name, options)
  options.fetch(:chain, []).each do |repo|
    add_repo(repo)
  end
end

Instance Method Details

#[](key) ⇒ Object



53
54
55
# File 'lib/fast_gettext/translation_repository/merge.rb', line 53

def [](key)
  @data[key]
end

#add_repo(repo) ⇒ Object



46
47
48
49
50
51
# File 'lib/fast_gettext/translation_repository/merge.rb', line 46

def add_repo(repo)
  raise "Unsupported repository" unless repo_supported?(repo)
  @repositories << repo
  load_repo(repo)
  true
end

#available_localesObject



18
19
20
# File 'lib/fast_gettext/translation_repository/merge.rb', line 18

def available_locales
  @repositories.flat_map(&:available_locales).uniq
end

#clearObject



57
58
59
60
# File 'lib/fast_gettext/translation_repository/merge.rb', line 57

def clear
  @repositories = []
  @data = {}
end

#plural(*keys) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/fast_gettext/translation_repository/merge.rb', line 29

def plural(*keys)
  @repositories.each do |r|
    result = r.plural(*keys)
    return result unless result.compact.empty?
  end
  []
end

#pluralisation_ruleObject



22
23
24
25
26
27
# File 'lib/fast_gettext/translation_repository/merge.rb', line 22

def pluralisation_rule
  @repositories.each do |r|
    result = r.pluralisation_rule and return result
  end
  nil
end

#reloadObject



37
38
39
40
41
42
43
44
# File 'lib/fast_gettext/translation_repository/merge.rb', line 37

def reload
  @data = {}
  @repositories.each do |r|
    r.reload
    load_repo(r)
  end
  super
end