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



285
286
287
288
# File 'lib/jekyll-multiple-languages-plugin.rb', line 285

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

Instance Method Details

#render(context) ⇒ Object

render



295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
# File 'lib/jekyll-multiple-languages-plugin.rb', line 295

def render(context)
  if      "#{context[@key]}" != "" # Check for page variable
    key = "#{context[@key]}"
  else
    key =            @key
  end
  
  key = Liquid::Template.parse(key).render(context)  # Parses and renders some Liquid syntax on arguments (allows expansions)
  
  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