fluke/devops-service/core/devops-messages.rb
2015-09-22 12:19:15 +03:00

53 lines
1.2 KiB
Ruby

require 'yaml'
module Devops
class Messages
@@messages = {}
class << self
def init
lang = lang_key
file = File.expand_path("../../messages/#{lang}.yml", __FILE__)
merge(file)
rescue => e
puts "Can not load messages from '#{file}'"
exit -6
end
def merge file
lang = lang_key
messages = read_file(file)[lang]
raise "It is undefined main key '#{lang}' in file '#{file}'" if messages.nil?
@@messages.merge!(messages)
end
def translate key, params={}
msg = @@messages
key.split(".").each do |msgk|
msg = msg[key]
raise "Invalid message key '#{key}'" if msg.nil?
end
raise "Invalid message value with key '#{key}', it must be a string" unless msg.is_a?(String)
unless msg.nil?
params.each do |k, v|
msg = msg.gsub('%{#{k}}', v)
end
end
msg
end
alias_method :t, :translate
private
def read_file file_path
YAML.load_file(file_path)
end
def lang_key
DevopsConfig.config["messages.lang"] || "en"
end
end
end
end