class Liquid::I18n
Constants
- DEFAULT_LOCALE
- TranslationError
Attributes
path[R]
Public Class Methods
new(path = DEFAULT_LOCALE)
click to toggle source
# File lib/liquid/i18n.rb, line 13 def initialize(path = DEFAULT_LOCALE) @path = path end
Public Instance Methods
locale()
click to toggle source
# File lib/liquid/i18n.rb, line 22 def locale @locale ||= YAML.load_file(@path) end
translate(name, vars = {})
click to toggle source
# File lib/liquid/i18n.rb, line 17 def translate(name, vars = {}) interpolate(deep_fetch_translation(name), vars) end
Also aliased as: t
Private Instance Methods
deep_fetch_translation(name)
click to toggle source
# File lib/liquid/i18n.rb, line 35 def deep_fetch_translation(name) name.split('.').reduce(locale) do |level, cur| level[cur] || raise(TranslationError, "Translation for #{name} does not exist in locale #{path}") end end
interpolate(name, vars)
click to toggle source
# File lib/liquid/i18n.rb, line 28 def interpolate(name, vars) name.gsub(/%\{(\w+)\}/) do # raise TranslationError, "Undefined key #{$1} for interpolation in translation #{name}" unless vars[$1.to_sym] (vars[Regexp.last_match(1).to_sym]).to_s end end