class Codebreaker::Localization
Attributes
lang[RW]
Public Class Methods
new(app_type, external_path = false, lang = :en)
click to toggle source
# File lib/codebreaker/localization.rb, line 7 def initialize(app_type, external_path = false, lang = :en) @lang = lang apply_external_path(external_path) select_application(app_type) candidates_to_load merge_localizations end
Public Instance Methods
all()
click to toggle source
# File lib/codebreaker/localization.rb, line 20 def all localizations.keys end
localization()
click to toggle source
# File lib/codebreaker/localization.rb, line 15 def localization return localizations[:en] unless localizations[lang] localizations[lang] end
Private Instance Methods
apply_external_path(external_path)
click to toggle source
# File lib/codebreaker/localization.rb, line 26 def apply_external_path(external_path) if external_path && Dir.glob("#{external_path}/*/*.yml").empty? raise ArgumentError, 'Invalid external path.' end @external_path = external_path || false end
candidates_to_load()
click to toggle source
# File lib/codebreaker/localization.rb, line 47 def candidates_to_load @ymls_paths = Dir.glob("#{localizations_dir}/#{@app_dir}/*.yml") end
localizations()
click to toggle source
# File lib/codebreaker/localization.rb, line 51 def localizations @localizations ||= {} end
localizations_dir()
click to toggle source
# File lib/codebreaker/localization.rb, line 33 def localizations_dir return @external_path if @external_path File.expand_path('./locale/.', File.dirname(__FILE__)) end
merge_localizations()
click to toggle source
# File lib/codebreaker/localization.rb, line 55 def merge_localizations localizations loaded_ymls = candidates_to_load.map { |file| YAML.load(File.open(file, 'r')) } loaded_ymls.each { |loaded_yml| @localizations.update(loaded_yml) } end
select_application(app_type)
click to toggle source
# File lib/codebreaker/localization.rb, line 42 def select_application(app_type) raise 'Unknown application type.' unless authorized_apps.include?(app_type) @app_dir = app_type.to_s end