Class: Jekyll::LocalizeTag

Inherits:
Liquid::Tag
  • Object
show all
Defined in:
lib/jekyll-multiple-languages-plugin.rb

Overview

class LocalizeTag

Localization by getting localized text from YAML files. User must use the “t” or “translate” liquid tags.

Instance Method Summary collapse

Constructor Details

#initialize(tag_name, key, tokens) ⇒ LocalizeTag

initialize



256
257
258
259
# File 'lib/jekyll-multiple-languages-plugin.rb', line 256

def initialize(tag_name, key, tokens)
  super
  @key = key.strip
end

Instance Method Details

#render(context) ⇒ Object

render



266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
# File 'lib/jekyll-multiple-languages-plugin.rb', line 266

def render(context)
  if      "#{context[@key]}" != "" # Check for page variable
    key = "#{context[@key]}"
  else
    key =            @key
  end
  
  site = context.registers[:site] # Jekyll site object
  
  lang = site.config['lang']
  
  unless site.parsed_translations.has_key?(lang)
    puts              "Loading translation from file #{site.source}/_i18n/#{lang}.yml"
    site.parsed_translations[lang] = YAML.load_file("#{site.source}/_i18n/#{lang}.yml")
  end
  
  translation = site.parsed_translations[lang].access(key) if key.is_a?(String)
  
  if translation.nil? or translation.empty?
     translation = site.parsed_translations[site.config['default_lang']].access(key)
    
    puts "Missing i18n key: #{lang}:#{key}"
    puts "Using translation '%s' from default language: %s" %[translation, site.config['default_lang']]
  end
  
  translation
end