gettext_i18n_rails-1.5.0/ 0000755 0000041 0000041 00000000000 12666364534 015301 5 ustar www-data www-data gettext_i18n_rails-1.5.0/lib/ 0000755 0000041 0000041 00000000000 12666364534 016047 5 ustar www-data www-data gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails.rb 0000644 0000041 0000041 00000002204 12666364534 022107 0 ustar www-data www-data require 'gettext_i18n_rails/version'
require 'gettext_i18n_rails/gettext_hooks'
module GettextI18nRails
IGNORE_TABLES = [/^sitemap_/, /_versions$/, 'schema_migrations', 'sessions', 'delayed_jobs']
end
# translate from everywhere
require 'fast_gettext'
Object.send(:include, FastGettext::Translation)
# make translations html_safe if possible and wanted
if "".respond_to?(:html_safe?)
require 'gettext_i18n_rails/html_safe_translations'
Object.send(:include, GettextI18nRails::HtmlSafeTranslations)
end
# set up the backend
require 'gettext_i18n_rails/backend'
I18n.backend = GettextI18nRails::Backend.new
# make I18n play nice with FastGettext
require 'gettext_i18n_rails/i18n_hacks'
# translate activerecord errors
if defined? Rails::Railtie # Rails 3+
# load active_model extensions at the correct point in time
require 'gettext_i18n_rails/railtie'
else
if defined? ActiveRecord
require 'gettext_i18n_rails/active_record'
elsif defined?(ActiveModel)
require 'gettext_i18n_rails/active_model'
end
end
# make bundle console work in a rails project
require 'gettext_i18n_rails/action_controller' if defined?(ActionController)
gettext_i18n_rails-1.5.0/lib/tasks/ 0000755 0000041 0000041 00000000000 12666364534 017174 5 ustar www-data www-data gettext_i18n_rails-1.5.0/lib/tasks/gettext_rails_i18n.rake 0000644 0000041 0000041 00000000112 12666364534 023547 0 ustar www-data www-data require File.join(File.dirname(__FILE__), "/../gettext_i18n_rails/tasks")
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/ 0000755 0000041 0000041 00000000000 12666364534 021564 5 ustar www-data www-data gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/active_record.rb 0000644 0000041 0000041 00000000434 12666364534 024723 0 ustar www-data www-data require 'gettext_i18n_rails/active_model/translation'
class ActiveRecord::Base
extend ActiveModel::Translation
def self.human_attribute_name(*args)
super(*args)
end
# method deprecated in Rails 3.1
def self.human_name(*args)
_(self.humanize_class_name)
end
end
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/base_parser.rb 0000644 0000041 0000041 00000001652 12666364534 024403 0 ustar www-data www-data require 'gettext_i18n_rails/gettext_hooks'
module GettextI18nRails
class BaseParser
def self.target?(file)
File.extname(file) == ".#{extension}"
end
def self.parse(file, _options = {}, msgids = [])
return msgids unless load_library
code = convert_to_code(File.read(file))
RubyGettextExtractor.parse_string(code, msgids, file)
rescue Racc::ParseError => e
$stderr.puts "file ignored: ruby_parser cannot read #{extension} files with 1.9 syntax --- #{file}: (#{e.message.strip})"
return msgids
end
def self.load_library
return true if @library_loaded
begin
require extension
rescue LoadError
puts "A #{extension} file was found, but #{extension} library could not be found, so nothing will be parsed..."
return false
end
require 'gettext_i18n_rails/ruby_gettext_extractor'
@library_loaded = true
end
end
end
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/i18n_hacks.rb 0000644 0000041 0000041 00000001040 12666364534 024034 0 ustar www-data www-data I18n::Config # autoload
module I18n
class Config
def locale
FastGettext.locale.gsub("_","-").to_sym
end
def locale=(new_locale)
FastGettext.locale=(new_locale)
end
end
# backport I18n.with_locale if it does not exist
# Executes block with given I18n.locale set.
def self.with_locale(tmp_locale = nil)
if tmp_locale
current_locale = self.locale
self.locale = tmp_locale
end
yield
ensure
self.locale = current_locale if tmp_locale
end unless defined? I18n.with_locale
end
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/slim_parser.rb 0000644 0000041 0000041 00000000456 12666364534 024436 0 ustar www-data www-data require 'gettext_i18n_rails/base_parser'
module GettextI18nRails
class SlimParser < BaseParser
def self.extension
"slim"
end
def self.convert_to_code(text)
Slim::Engine.new.call(text)
end
end
end
GettextI18nRails::GettextHooks.add_parser GettextI18nRails::SlimParser
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/model_attributes_finder.rb 0000644 0000041 0000041 00000013036 12666364534 027011 0 ustar www-data www-data require 'rails/version'
require 'rails' if Rails::VERSION::MAJOR > 2
module GettextI18nRails
#write all found models/columns to a file where GetTexts ruby parser can find them
def store_model_attributes(options)
file = options[:to] || 'locale/model_attributes.rb'
begin
File.open(file,'w') do |f|
f.puts "#DO NOT MODIFY! AUTOMATICALLY GENERATED FILE!"
ModelAttributesFinder.new.find(options).each do |model,column_names|
f.puts("_('#{model.humanize_class_name}')")
#all columns namespaced under the model
column_names.each do |attribute|
translation = model.gettext_translation_for_attribute_name(attribute)
f.puts("_('#{translation}')")
end
end
f.puts "#DO NOT MODIFY! AUTOMATICALLY GENERATED FILE!"
end
rescue
puts "[Error] Attribute extraction failed. Removing incomplete file (#{file})"
File.delete(file)
raise
end
end
module_function :store_model_attributes
class ModelAttributesFinder
# options:
# :ignore_tables => ['cars',/_settings$/,...]
# :ignore_columns => ['id',/_id$/,...]
# current connection ---> {'cars'=>['model_name','type'],...}
def find(options)
found = ActiveSupport::OrderedHash.new([])
models.each do |model|
attributes = model_attributes(model, options[:ignore_tables], options[:ignore_columns])
found[model] = attributes.sort if attributes.any?
end
found
end
def initialize
connection = ::ActiveRecord::Base.connection
@existing_tables = (Rails::VERSION::MAJOR >= 5 ? connection.data_sources : connection.tables)
end
# Rails < 3.0 doesn't have DescendantsTracker.
# Instead of iterating over ObjectSpace (slow) the decision was made NOT to support
# class hierarchies with abstract base classes in Rails 2.x
def model_attributes(model, ignored_tables, ignored_cols)
return [] if model.abstract_class? && Rails::VERSION::MAJOR < 3
if model.abstract_class?
model.direct_descendants.reject {|m| ignored?(m.table_name, ignored_tables)}.inject([]) do |attrs, m|
attrs.push(model_attributes(m, ignored_tables, ignored_cols)).flatten.uniq
end
elsif !ignored?(model.table_name, ignored_tables) && @existing_tables.include?(model.table_name)
model.columns.reject { |c| ignored?(c.name, ignored_cols) }.collect { |c| c.name }
else
[]
end
end
def models
if Rails::VERSION::MAJOR >= 3
Rails.application.eager_load! # make sure that all models are loaded so that direct_descendants works
descendants = ::ActiveRecord::Base.direct_descendants
# In rails 5+ user models are supposed to inherit from ApplicationRecord
if defined?(::ApplicationRecord)
descendants += ApplicationRecord.direct_descendants
descendants.delete ApplicationRecord
end
descendants
else
::ActiveRecord::Base.connection.tables \
.map { |t| table_name_to_namespaced_model(t) } \
.compact \
.collect { |c| c.superclass.abstract_class? ? c.superclass : c }
end.uniq.sort_by(&:name)
end
def ignored?(name,patterns)
return false unless patterns
patterns.detect{|p|p.to_s==name.to_s or (p.is_a?(Regexp) and name=~p)}
end
private
# Tries to find the model class corresponding to specified table name.
# Takes into account that the model can be defined in a namespace.
# Searches only up to one level deep - won't find models nested in two
# or more modules.
#
# Note that if we allow namespaces, the conversion can be ambiguous, i.e.
# if the table is named "aa_bb_cc" and AaBbCc, Aa::BbCc and AaBb::Cc are
# all defined there's no absolute rule that tells us which one to use.
# This method prefers the less nested one and, if there are two at
# the same level, the one with shorter module name.
def table_name_to_namespaced_model(table_name)
# First assume that there are no namespaces
model = to_class(table_name.singularize.camelcase)
return model if model != nil
# If you were wrong, assume that the model is in a namespace.
# Iterate over the underscores and try to substitute each of them
# for a slash that camelcase() replaces with the scope operator (::).
underscore_position = table_name.index('_')
while underscore_position != nil
namespaced_table_name = table_name.dup
namespaced_table_name[underscore_position] = '/'
model = to_class(namespaced_table_name.singularize.camelcase)
return model if model != nil
underscore_position = table_name.index('_', underscore_position + 1)
end
# The model either is not defined or is buried more than one level
# deep in a module hierarchy
return nil
end
# Checks if there is a class of specified name and if so, returns
# the class object. Otherwise returns nil.
def to_class(name)
# I wanted to use Module.const_defined?() here to avoid relying
# on exceptions for normal program flow but it's of no use.
# If class autoloading is enabled, the constant may be undefined
# but turn out to be present when we actually try to use it.
begin
constant = name.constantize
rescue NameError
return nil
rescue LoadError => e
$stderr.puts "failed to load '#{name}', ignoring (#{e.class}: #{e.message})"
return nil
end
return constant.is_a?(Class) ? constant : nil
end
end
end
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/haml_parser.rb 0000644 0000041 0000041 00000000467 12666364534 024415 0 ustar www-data www-data require 'gettext_i18n_rails/base_parser'
module GettextI18nRails
class HamlParser < BaseParser
def self.extension
"haml"
end
def self.convert_to_code(text)
Haml::Engine.new(text).precompiled()
end
end
end
GettextI18nRails::GettextHooks.add_parser GettextI18nRails::HamlParser
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/version.rb 0000644 0000041 0000041 00000000072 12666364534 023575 0 ustar www-data www-data module GettextI18nRails
Version = VERSION = '1.5.0'
end
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/active_model.rb 0000644 0000041 0000041 00000000145 12666364534 024544 0 ustar www-data www-data require 'gettext_i18n_rails/active_model/name'
require 'gettext_i18n_rails/active_model/translation'
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/html_safe_translations.rb 0000644 0000041 0000041 00000001033 12666364534 026651 0 ustar www-data www-data module GettextI18nRails
mattr_accessor :translations_are_html_safe
module HtmlSafeTranslations
# also make available on class methods
def self.included(base)
base.extend self
end
def _(*args)
html_safe_if_wanted super
end
def n_(*args)
html_safe_if_wanted super
end
def s_(*args)
html_safe_if_wanted super
end
private
def html_safe_if_wanted(text)
return text unless GettextI18nRails.translations_are_html_safe
text.to_s.html_safe
end
end
end
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/action_controller.rb 0000644 0000041 0000041 00000000620 12666364534 025627 0 ustar www-data www-data class ActionController::Base
def set_gettext_locale
requested_locale = params[:locale] || session[:locale] || cookies[:locale] || request.env['HTTP_ACCEPT_LANGUAGE'] || I18n.default_locale
locale = FastGettext.set_locale(requested_locale)
session[:locale] = locale
I18n.locale = locale # some weird overwriting in action-controller makes this necessary ... see I18nProxy
end
end
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/gettext_hooks.rb 0000644 0000041 0000041 00000001070 12666364534 024776 0 ustar www-data www-data module GettextI18nRails
module GettextHooks
# shoarter call / maybe the interface changes again ...
def self.add_parser(parser)
xgettext.add_parser(parser)
end
def self.xgettext
@xgettext ||= begin
require 'gettext/tools/xgettext' # 2.3+
GetText::Tools::XGetText
rescue LoadError
begin
require 'gettext/tools/rgettext' # 2.0 - 2.2
GetText::RGetText
rescue LoadError # # 1.x
require 'gettext/rgettext'
GetText::RGetText
end
end
end
end
end
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/ruby_gettext_extractor.rb 0000644 0000041 0000041 00000006171 12666364534 026736 0 ustar www-data www-data gem 'ruby_parser', '>= 3.7.1' # sync with gemspec
require 'ruby_parser'
gem 'sexp_processor'
require 'sexp_processor'
module RubyGettextExtractor
extend self
def parse(file, targets = []) # :nodoc:
parse_string(File.read(file), targets, file)
end
def parse_string(content, targets = [], file)
syntax_tree = RubyParser.for_current_ruby.parse(content, file)
processor = Extractor.new(targets)
processor.require_empty = false
processor.process(syntax_tree)
processor.results
end
class Extractor < SexpProcessor
attr_reader :results
def initialize(targets)
@targets = {}
@results = []
targets.each do |a|
k, _v = a
# things go wrong if k already exists, but this
# should not happen (according to the gettext doc)
@targets[k] = a
@results << a
end
super()
end
def extract_string(node)
case node.first
when :str
node.last
when :call
type, recv, meth, args = node
# node has to be in form of "string" + "other_string"
return nil unless recv && meth == :+
first_part = extract_string(recv)
second_part = extract_string(args)
first_part && second_part ? first_part.to_s + second_part.to_s : nil
else
nil
end
end
def extract_key_singular(args, separator)
key = extract_string(args) if args.size == 2 || args.size == 4
return nil unless key
key.gsub("\n", '\n').gsub("\t", '\t').gsub("\0", '\0')
end
def extract_key_plural(args, separator)
# this could be n_("aaa", "aaa plural", @retireitems.length)
# s(s(:str, "aaa"),
# s(:str, "aaa plural"),
# s(:call, s(:ivar, :@retireitems), :length))
# all strings arguments are extracted and joined with \004 or \000
arguments = args[0..(-2)]
res = []
arguments.each do |a|
next unless a.kind_of? Sexp
str = extract_string(a)
res << str if str
end
key = res.empty? ? nil : res.join(separator)
return nil unless key
key.gsub("\n", '\n').gsub("\t", '\t').gsub("\0", '\0')
end
def store_key(key, args)
if key
res = @targets[key]
unless res
res = [key]
@results << res
@targets[key] = res
end
res << "#{args.file}:#{args.line}"
end
end
def gettext_simple_call(args)
# args comes in 2 forms:
# s(s(:str, "Button Group Order:"))
# s(:str, "Button Group Order:")
# normalizing:
args = args.first if Sexp === args.sexp_type
key = extract_key_singular(args, "\004")
store_key(key, args)
end
def gettext_plural_call(args)
key = extract_key_plural(args, "\000")
store_key(key, args)
end
def process_call exp
_call = exp.shift
_recv = process exp.shift
meth = exp.shift
case meth
when :_, :p_, :N_, :pgettext, :s_
gettext_simple_call(exp)
when :n_
gettext_plural_call(exp)
end
until exp.empty? do
process(exp.shift)
end
s()
end
end
end
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/backend.rb 0000644 0000041 0000041 00000004507 12666364534 023506 0 ustar www-data www-data module GettextI18nRails
#translates i18n calls to gettext calls
class Backend
@@translate_defaults = true
cattr_accessor :translate_defaults
attr_accessor :backend
RUBY19 = (RUBY_VERSION > "1.9")
def initialize(*args)
self.backend = I18n::Backend::Simple.new(*args)
end
def available_locales
FastGettext.available_locales || []
end
def translate(locale, key, options)
if gettext_key = gettext_key(key, options)
translation =
plural_translate(gettext_key, options) || FastGettext._(gettext_key)
interpolate(translation, options)
else
result = backend.translate(locale, key, options)
(RUBY19 and result.is_a?(String)) ? result.force_encoding("UTF-8") : result
end
end
def method_missing(method, *args)
backend.send(method, *args)
end
protected
def gettext_key(key, options)
flat_key = flatten_key key, options
if FastGettext.key_exist?(flat_key)
flat_key
elsif self.class.translate_defaults
[*options[:default]].each do |default|
#try the scoped(more specific) key first e.g. 'activerecord.errors.my custom message'
flat_key = flatten_key default, options
return flat_key if FastGettext.key_exist?(flat_key)
#try the short key thereafter e.g. 'my custom message'
return default if FastGettext.key_exist?(default)
end
return nil
end
end
def plural_translate(gettext_key, options)
if options[:count]
translation = FastGettext.n_(gettext_key, options[:count])
discard_pass_through_key gettext_key, translation
end
end
def discard_pass_through_key(key, translation)
if translation == key
nil
else
translation
end
end
def interpolate(string, values)
if string.respond_to?(:%)
reserved_keys = if defined?(I18n::RESERVED_KEYS) # rails 3+
I18n::RESERVED_KEYS
else
I18n::Backend::Base::RESERVED_KEYS
end
options = values.except(*reserved_keys)
options.any? ? (string % options) : string
else
string
end
end
def flatten_key key, options
scope = [*(options[:scope] || [])]
scope.empty? ? key.to_s : "#{scope*'.'}.#{key}"
end
end
end
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/active_model/ 0000755 0000041 0000041 00000000000 12666364534 024217 5 ustar www-data www-data gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/active_model/translation.rb 0000644 0000041 0000041 00000002002 12666364534 027074 0 ustar www-data www-data module ActiveModel
module Translation
# CarDealer.sales_count -> s_('CarDealer|Sales count') -> 'Sales count' if no translation was found
def human_attribute_name(attribute, *args)
s_(gettext_translation_for_attribute_name(attribute))
end
def gettext_translation_for_attribute_name(attribute)
attribute = attribute.to_s
if attribute.ends_with?('_id')
humanize_class_name(attribute)
else
"#{inheritance_tree_root(self)}|#{attribute.split('.').map! {|a| a.humanize }.join('|')}"
end
end
def inheritance_tree_root(aclass)
return aclass unless aclass.respond_to?(:base_class)
base = aclass.base_class
if base.superclass.abstract_class?
if defined?(::ApplicationRecord) && base.superclass == ApplicationRecord
base
else
base.superclass
end
else
base
end
end
def humanize_class_name(name=nil)
name ||= self.to_s
name.underscore.humanize
end
end
end
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/active_model/name.rb 0000644 0000041 0000041 00000000403 12666364534 025461 0 ustar www-data www-data module ActiveModel
Name.class_eval do
def human(options={})
human_name = @klass.humanize_class_name
if count = options[:count]
n_(human_name, human_name.pluralize, count)
else
_(human_name)
end
end
end
end
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/railtie.rb 0000644 0000041 0000041 00000001416 12666364534 023544 0 ustar www-data www-data module GettextI18nRails
class Railtie < ::Rails::Railtie
config.gettext_i18n_rails = ActiveSupport::OrderedOptions.new
config.gettext_i18n_rails.msgmerge = nil
config.gettext_i18n_rails.msgcat = nil
config.gettext_i18n_rails.xgettext = nil
config.gettext_i18n_rails.use_for_active_record_attributes = true
rake_tasks do
begin
gem "gettext", ">= 3.0.2"
require 'gettext_i18n_rails/tasks'
rescue Gem::LoadError
# no gettext available, no tasks for you!
end
end
config.after_initialize do |app|
if app.config.gettext_i18n_rails.use_for_active_record_attributes
ActiveSupport.on_load :active_record do
require 'gettext_i18n_rails/active_model'
end
end
end
end
end
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/string_interpolate_fix.rb 0000644 0000041 0000041 00000001031 12666364534 026666 0 ustar www-data www-data needed = "".respond_to?(:html_safe) and
(
"".html_safe % {:x => '
'} == '
' or
not ("".html_safe % {:x=>'a'}).html_safe?
)
if needed
class String
alias :interpolate_without_html_safe :%
def %(*args)
if args.first.is_a?(Hash) and html_safe?
safe_replacement = Hash[args.first.map{|k,v| [k,ERB::Util.h(v)] }]
interpolate_without_html_safe(safe_replacement).html_safe
else
interpolate_without_html_safe(*args).dup # make sure its not html_safe
end
end
end
end
gettext_i18n_rails-1.5.0/lib/gettext_i18n_rails/tasks.rb 0000644 0000041 0000041 00000007430 12666364534 023242 0 ustar www-data www-data require "gettext/tools/task"
gem "gettext", ">= 3.0.2"
namespace :gettext do
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
(FastGettext.text_domain rescue nil) || ENV['TEXTDOMAIN'] || "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}")
end
def gettext_default_options
config = (Rails.application.config.gettext_i18n_rails.default_options if defined?(Rails.application))
config || %w[--sort-by-msgid --no-location --no-wrap]
end
def gettext_msgmerge_options
config = (Rails.application.config.gettext_i18n_rails.msgmerge if defined?(Rails.application))
config || gettext_default_options
end
def gettext_msgcat_options
config = (Rails.application.config.gettext_i18n_rails.msgcat if defined?(Rails.application))
config || gettext_default_options
end
def gettext_xgettext_options
config = (Rails.application.config.gettext_i18n_rails.xgettext if defined?(Rails.application))
config || gettext_default_options
end
require "gettext_i18n_rails/haml_parser"
require "gettext_i18n_rails/slim_parser"
task :setup => [:environment] do
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
task.msgmerge_options = gettext_msgmerge_options
task.msgcat_options = gettext_msgcat_options
task.xgettext_options = gettext_xgettext_options
end
end
desc "Create mo-files"
task :pack => [:setup] do
Rake::Task["gettext:mo:update"].invoke
end
desc "Update pot/po files"
task :find => [:setup] do
Rake::Task["gettext:po:update"].invoke
end
# This is more of an example, ignoring
# the columns/tables that mostly do not need translation.
# This can also be done with GetText::ActiveRecord
# but this crashed too often for me, and
# IMO which column should/should-not be translated does not
# belong into the model
#
# You can get your translations from GetText::ActiveRecord
# by adding this to you gettext:find task
#
# require 'active_record'
# gem "gettext_activerecord", '>=0.1.0' #download and install from github
# require 'gettext_activerecord/parser'
desc "write the model attributes to /model_attributes.rb"
task :store_model_attributes => :environment do
FastGettext.silence_errors
require 'gettext_i18n_rails/model_attributes_finder'
require 'gettext_i18n_rails/active_record'
storage_file = "#{locale_path}/model_attributes.rb"
puts "writing model translations to: #{storage_file}"
GettextI18nRails.store_model_attributes(
:to => storage_file,
:ignore_columns => [/_id$/, 'id', 'type', 'created_at', 'updated_at'],
:ignore_tables => GettextI18nRails::IGNORE_TABLES
)
end
desc "add a new language"
task :add_language, [:language] => :environment do |_, args|
language = args.language || ENV["LANGUAGE"]
# Let's do some pre-verification of the environment.
if language.nil?
puts "You need to specify the language to add. Either 'LANGUAGE=eo rake gettext:add_language' or 'rake gettext:add_language[eo]'"
next
end
language_path = File.join(locale_path, language)
mkdir_p(language_path)
Rake.application.lookup('gettext:find', _.scope).invoke
end
end
gettext_i18n_rails-1.5.0/MIT-LICENSE.txt 0000644 0000041 0000041 00000002070 12666364534 017552 0 ustar www-data www-data Copyright (C) 2013 Michael Grosser
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
gettext_i18n_rails-1.5.0/metadata.yml 0000644 0000041 0000041 00000013715 12666364534 017613 0 ustar www-data www-data --- !ruby/object:Gem::Specification
name: gettext_i18n_rails
version: !ruby/object:Gem::Version
version: 1.5.0
platform: ruby
authors:
- Michael Grosser
autorequire:
bindir: bin
cert_chain: []
date: 2016-02-29 00:00:00.000000000 Z
dependencies:
- !ruby/object:Gem::Dependency
name: fast_gettext
requirement: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: 0.9.0
type: :runtime
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: 0.9.0
- !ruby/object:Gem::Dependency
name: bump
requirement: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: gettext
requirement: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: 3.0.2
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: 3.0.2
- !ruby/object:Gem::Dependency
name: haml
requirement: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: rake
requirement: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: rails
requirement: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: ruby_parser
requirement: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: 3.7.1
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: 3.7.1
- !ruby/object:Gem::Dependency
name: sexp_processor
requirement: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: rspec
requirement: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: slim
requirement: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: sqlite3
requirement: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: wwtd
requirement: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
description:
email: michael@grosser.it
executables: []
extensions: []
extra_rdoc_files: []
files:
- MIT-LICENSE.txt
- lib/gettext_i18n_rails.rb
- lib/gettext_i18n_rails/action_controller.rb
- lib/gettext_i18n_rails/active_model.rb
- lib/gettext_i18n_rails/active_model/name.rb
- lib/gettext_i18n_rails/active_model/translation.rb
- lib/gettext_i18n_rails/active_record.rb
- lib/gettext_i18n_rails/backend.rb
- lib/gettext_i18n_rails/base_parser.rb
- lib/gettext_i18n_rails/gettext_hooks.rb
- lib/gettext_i18n_rails/haml_parser.rb
- lib/gettext_i18n_rails/html_safe_translations.rb
- lib/gettext_i18n_rails/i18n_hacks.rb
- lib/gettext_i18n_rails/model_attributes_finder.rb
- lib/gettext_i18n_rails/railtie.rb
- lib/gettext_i18n_rails/ruby_gettext_extractor.rb
- lib/gettext_i18n_rails/slim_parser.rb
- lib/gettext_i18n_rails/string_interpolate_fix.rb
- lib/gettext_i18n_rails/tasks.rb
- lib/gettext_i18n_rails/version.rb
- lib/tasks/gettext_rails_i18n.rake
homepage: http://github.com/grosser/gettext_i18n_rails
licenses:
- MIT
metadata: {}
post_install_message:
rdoc_options: []
require_paths:
- lib
required_ruby_version: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
required_rubygems_version: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
requirements: []
rubyforge_project:
rubygems_version: 2.4.5.1
signing_key:
specification_version: 4
summary: Simple FastGettext Rails integration.
test_files: []