3 @@default_language = :en
4 mattr_reader :default_language
6 @@reserved_keys = [ :limit ]
7 mattr_reader :reserved_keys
9 def add_reserved_key(*key)
10 (@@reserved_keys += key.flatten).uniq!
12 alias :add_reserved_keys :add_reserved_key
19 @@current_language = nil
21 @@current_language || default_language
24 def current_language=(language)
25 load_languages! if defined? RAILS_ENV && RAILS_ENV == 'development'
27 language = language.to_sym if language.respond_to? :to_sym
28 @@current_language = @@languages[language] ? language : nil
31 def use_language(language)
32 start_language = current_language
33 self.current_language = language
35 self.current_language = start_language
39 current_language == default_language
43 @@languages[current_language] || {}
46 def translate(string, key, *args)
47 return if reserved_keys.include? key
48 target = translations[key] || string
49 interpolate_string(target.dup, *args.dup)
53 language_files.each do |file|
54 key = File.basename(file, '.*').to_sym
55 @@languages[key] = YAML.load_file(file).symbolize_keys
61 def interpolate_string(string, *args)
62 string.gsub(/\{\w+\}/) { args.shift }
66 Dir[File.join(RAILS_ROOT, 'lang', '*.{yml,yaml}')]