53 lines
1.2 KiB
Ruby
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.deep_merge!(messages)
|
|
end
|
|
|
|
def translate key, params={}
|
|
msg = @@messages
|
|
key.split(".").each do |msgk|
|
|
msg = msg[msgk]
|
|
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
|