| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2016-03-27 23:37:57 +03:00
										 |  |  |         locale = DevopsConfig.config && DevopsConfig.config['messages.lang'] | 
					
						
							|  |  |  |         locale || "en" | 
					
						
							| 
									
										
										
										
											2015-09-22 12:19:15 +03:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |