class Jekyll::PotLocalizationPlugin

Attributes

site[R]
translations[R]

Public Instance Methods

add_translated_sites() click to toggle source
# File lib/jekyll/gettext/plugin.rb, line 141
def add_translated_sites
  default_language = languages.first
  translated_pages = []
  site.pages.reject! do |page|
    to_translate = page.data["translate"]
    if to_translate
      languages.each do |language|
        translated_pages << TranslatedPage.new(page, language, default_language)
      end
    end
    to_translate
  end
  site.pages.concat(translated_pages)
end
generate(site) click to toggle source
# File lib/jekyll/gettext/plugin.rb, line 101
def generate(site)
  @site = site
  site.pot_localization_plugin = self
  setup_translations
  add_translated_sites
end
languages() click to toggle source
# File lib/jekyll/gettext/plugin.rb, line 90
def languages
  unless site.config.include? "languages"
    site.config["languages"] = ["en"]
  end
  site.config["languages"]
end
po_file(language) click to toggle source
# File lib/jekyll/gettext/plugin.rb, line 97
def po_file(language)
  translations_folder + "/" + language + "/" + text_domain + ".po"
end
pot_file() click to toggle source
# File lib/jekyll/gettext/plugin.rb, line 86
def pot_file
  translations_folder + "/" + text_domain + ".pot"
end
renew_translations() click to toggle source
# File lib/jekyll/gettext/plugin.rb, line 124
 def renew_translations
   languages.each do |language|
     repos = [
       FastGettext::TranslationRepository.build(text_domain, :type=>:logger, :callback=>translations),
       FastGettext::TranslationRepository.build(text_domain, :path => translations_folder, :type => :po)
     ]
     FastGettext.add_text_domain(text_domain, :type=>:chain, :chain=>repos)
   end
   FastGettext.text_domain = text_domain
end
save_translations(translations) click to toggle source
# File lib/jekyll/gettext/plugin.rb, line 156
    def save_translations(translations)
      if translations.empty?
        return
      end
      site.config["exclude"] ||= []
      unless site.config["exclude"].include? pot_file
        site.config["exclude"] << pot_file 
      end
      File.open(pot_file, 'w') do |file|
        file.write('msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ' + languages.first + '\n"
"X-Generator: ' + self.class.name + '\n"

')
        file.print(GetPomo::PoFile.to_text(translations))
      end
    end
setup_translations() click to toggle source
# File lib/jekyll/gettext/plugin.rb, line 108
def setup_translations
  @translations = TranslationLogger.new
  
  renew_translations

  Hooks.register(:site, :pre_render) do |_site, payload|
    renew_translations
  end
  
  Hooks.register(:site, :post_write) do |_site, payload|
    if _site == site and not translations.nil?
      save_translations translations.translations
    end
  end
end
text_domain() click to toggle source
# File lib/jekyll/gettext/plugin.rb, line 79
def text_domain
  unless site.config.include? "text_domain"
    site.config["text_domain"] = "website"
  end
  site.config["text_domain"]
end
translations_folder() click to toggle source

use the “translations_folder” tag from the _config.yml or default “_i18n”

# File lib/jekyll/gettext/plugin.rb, line 137
def translations_folder
  site.in_source_dir(site.config["translations_folder"] || "_i18n")
end