Package: ruby-gettext-i18n-rails Version: 0.9.4-1 Severity: grave Debian Release: 8.0 Tags: patch
The rake task is incompatible with with ruby-gettext version 3. This was fixed in v1.0.0. commit d1b02f734f9e0c96de50d1a58e8170ce6ec457ac Author: Kouhei Sutou <k...@clear-code.com> Date: Mon Sep 16 18:42:13 2013 +0900 Use GetText::Tools::Task introduced since gettext 3.0.0 and commit 6c83ce9255122ddb0c28ec5ca96e5a1975a8e0c8 Author: grosser <grosser.mich...@gmail.com> Date: Sun Sep 29 17:47:38 2013 -0700 bump gettext requirement Attached is a squashed and (kind of) minimized patch of both commits. As a site notice: the package needs to be rebuild for compatibility with Ruby 2.1, as it just provides GEM specs for Ruby 1.9.1 and 1.8. Jan-Marek
diff --git a/lib/gettext_i18n_rails/tasks.rb b/lib/gettext_i18n_rails/tasks.rb index 4d1a0d0..2f7121f 100644 --- a/lib/gettext_i18n_rails/tasks.rb +++ b/lib/gettext_i18n_rails/tasks.rb @@ -1,55 +1,48 @@ +require "gettext/tools/task" +gem "gettext", ">= 3.0.2" + namespace :gettext do - def load_gettext - require 'gettext' - require 'gettext/utils' + def locale_path + path = FastGettext.translation_repositories[text_domain].instance_variable_get(:@options)[:path] rescue nil + path || File.join(Rails.root, "locale") end - desc "Create mo-files for L10n" - task :pack => :environment do - load_gettext - GetText.create_mofiles(true, locale_path, locale_path) + def text_domain + # if your textdomain is not 'app': require the environment before calling e.g. gettext:find OR add TEXTDOMAIN=my_domain + ENV['TEXTDOMAIN'] || (FastGettext.text_domain rescue nil) || "app" end - desc "Update pot/po files." - task :find => :environment do - load_gettext - $LOAD_PATH << File.join(File.dirname(__FILE__),'..','..','lib') # needed when installed as plugin - - require "gettext_i18n_rails/haml_parser" - require "gettext_i18n_rails/slim_parser" + # do not rename, gettext_i18n_rails_js overwrites this to inject coffee + js + def files_to_translate + Dir.glob("{app,lib,config,#{locale_path}}/**/*.{rb,erb,haml,slim}") + end - if GetText.respond_to? :update_pofiles_org - if defined?(Rails.application) - msgmerge = Rails.application.config.gettext_i18n_rails.msgmerge - end - msgmerge ||= %w[--sort-output --no-location --no-wrap] + $LOAD_PATH << File.join(File.dirname(__FILE__),'..','..','lib') # needed when installed as plugin + + require "gettext_i18n_rails/haml_parser" + require "gettext_i18n_rails/slim_parser" + + GetText::Tools::Task.define do |task| + task.package_name = text_domain + task.package_version = "1.0.0" + task.domain = text_domain + task.po_base_directory = locale_path + task.mo_base_directory = locale_path + task.files = files_to_translate + task.enable_description = false + if defined?(Rails.application) + msgmerge = Rails.application.config.gettext_i18n_rails.msgmerge + end + msgmerge ||= %w[--sort-output --no-location --no-wrap] + task.msgmerge_options = msgmerge + end - GetText.update_pofiles_org( - text_domain, - files_to_translate, - "version 0.0.1", - :po_root => locale_path, - :msgmerge => msgmerge - ) - else #we are on a version < 2.0 - puts "install new GetText with gettext:install to gain more features..." - #kill ar parser... - require 'gettext/parser/active_record' - module GetText - module ActiveRecordParser - module_function - def init(x);end - end - end + desc "Create mo-files for L10n" + task :pack => [:environment, "gettext:gettext:mo:update"] do + end - #parse files.. (models are simply parsed as ruby files) - GetText.update_pofiles( - text_domain, - files_to_translate, - "version 0.0.1", - locale_path - ) - end + desc "Update pot/po files." + task :find => [:environment, "gettext:gettext:po:update"] do end # This is more of an example, ignoring @@ -92,35 +84,9 @@ namespace :gettext do puts "You need to specify the language to add. Either 'LANGUAGE=eo rake gettext:add_languange' or 'rake gettext:add_languange[eo]'" next end - pot = File.join(locale_path, "#{text_domain}.pot") - if !File.exists? pot - puts "You don't have a pot file yet, you probably should run 'rake gettext:find' at least once. Tried '#{pot}'." - next - end - - # Create the directory for the new language. - dir = File.join(locale_path, language) - puts "Creating directory #{dir}" - Dir.mkdir dir - - # Create the po file for the new language. - new_po = File.join(locale_path, language, "#{text_domain}.po") - puts "Initializing #{new_po} from #{pot}." - system "msginit --locale=#{language} --input=#{pot} --output=#{new_po}" - end - def locale_path - path = FastGettext.translation_repositories[text_domain].instance_variable_get(:@options)[:path] rescue nil - path || File.join(Rails.root, "locale") - end - - def text_domain - # if your textdomain is not 'app': require the environment before calling e.g. gettext:find OR add TEXTDOMAIN=my_domain - ENV['TEXTDOMAIN'] || (FastGettext.text_domain rescue nil) || "app" - end - - # do not rename, gettext_i18n_rails_js overwrites this to inject coffee + js - def files_to_translate - Dir.glob("{app,lib,config,#{locale_path}}/**/*.{rb,erb,haml,slim}") + language_path = File.join(locale_path, language) + mkdir_p(language_path) + ruby($0, "gettext:find") end end diff --git a/Gemfile b/Gemfile index 5e9255d..904b67b 100644 --- a/Gemfile +++ b/Gemfile @@ -3,7 +3,7 @@ gemspec gem 'appraisal' gem 'bump' -gem 'gettext' +gem 'gettext', '>= 3.0.2' gem 'haml' gem 'rails' gem 'rake' diff --git a/Gemfile.lock b/Gemfile.lock index 2f253c5..570ec89 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -43,7 +43,7 @@ GEM diff-lcs (1.1.3) erubis (2.7.0) fast_gettext (0.7.0) - gettext (2.3.7) + gettext (3.0.2) levenshtein locale haml (3.1.7) @@ -119,7 +119,7 @@ PLATFORMS DEPENDENCIES appraisal bump - gettext + gettext (>= 3.0.2) gettext_i18n_rails! haml rails diff --git a/Readme.md b/Readme.md index 8e2c5c9..53d56df 100644 --- a/Readme.md +++ b/Readme.md @@ -31,7 +31,7 @@ Add `gettext` if you want to find translations or build .mo files<br/> Add `ruby_parser` if you want to find translations inside haml/slim files # Gemfile - gem 'gettext', '>=1.9.3', :require => false, :group => :development + gem 'gettext', '>=3.0.2', :require => false, :group => :development gem 'ruby_parser', :require => false, :group => :development #### Rails 2