class FastGettext::TranslationRepository::Merge
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
Public Class Methods
new(name, options={})
click to toggle source
Calls superclass method
FastGettext::TranslationRepository::Base::new
# 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
Public Instance Methods
[](key)
click to toggle source
# File lib/fast_gettext/translation_repository/merge.rb, line 53 def [](key) @data[key] end
add_repo(repo)
click to toggle source
# 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_locales()
click to toggle source
# File lib/fast_gettext/translation_repository/merge.rb, line 18 def available_locales @repositories.flat_map(&:available_locales).uniq end
clear()
click to toggle source
# File lib/fast_gettext/translation_repository/merge.rb, line 57 def clear @repositories = [] @data = {} end
plural(*keys)
click to toggle source
# 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_rule()
click to toggle source
# 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
reload()
click to toggle source
Calls superclass method
FastGettext::TranslationRepository::Base#reload
# 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
Protected Instance Methods
load_repo(r)
click to toggle source
# File lib/fast_gettext/translation_repository/merge.rb, line 68 def load_repo(r) @data = r.all_translations.merge(@data) end
repo_supported?(repo)
click to toggle source
# File lib/fast_gettext/translation_repository/merge.rb, line 64 def repo_supported?(repo) repo.respond_to?(:all_translations) end