fluke/devops-service/core/devops-messages.rb

54 lines
1.2 KiB
Ruby
Raw Normal View History

2015-09-22 12:19:15 +03:00
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?
2015-09-22 15:01:32 +03:00
@@messages.deep_merge!(messages)
2015-09-22 12:19:15 +03:00
end
def translate key, params={}
msg = @@messages
key.split(".").each do |msgk|
2015-09-22 15:01:32 +03:00
msg = msg[msgk]
2015-09-22 12:19:15 +03:00
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|
2016-03-28 00:16:11 +03:00
msg = msg.gsub("%{#{k}}", v.to_s)
2015-09-22 12:19:15 +03:00
end
end
msg
end
alias_method :t, :translate
private
def read_file file_path
YAML.load_file(file_path)
end
def lang_key
locale = DevopsConfig.config && DevopsConfig.config['messages.lang']
locale || "en"
2015-09-22 12:19:15 +03:00
end
end
end
end