gettext_i18n_rails 1.8.1 → 1.12.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 03205ca066f3c898e4da0ec0a8262e4fd0127498b5c975c0b5b2935062d146f5
4
- data.tar.gz: c1d50f46d8a6e4805d3ddec69c4a1965fdafdc5b06ecea0534c2cb1e7cec4b45
3
+ metadata.gz: 21ca313fab159243b410640c4fdd81980a9f9a9c9f7500b904b1b520cd25a596
4
+ data.tar.gz: 63f42039049902975af11131868ee12906d137151f43bdd5e86551fadc733080
5
5
  SHA512:
6
- metadata.gz: 660ee38d092d0538f4ced161e32c0976edbf58c2ce5a4230b32729787103728f18ba6e5435ef185314ff4696762c929c1578c2c240a5ce5ca35fe79d259ba824
7
- data.tar.gz: 7fa2d67dbe95ab585c01dd3f8c988f20a23f3d46cfadc99da0b04acd41d87deb5d932a859a7d7dda6f90d137df661c704458d5091db0e2d084a389b39eba47db
6
+ metadata.gz: d07bbab9c35abdb23b4e208b22c08c9be2051ac64dfa043c9a47013ca6ff92c8741356b950df53e809d90003c44db6183e9167e34a83856242c6a0d80c113486
7
+ data.tar.gz: aba525c859c885518513c71d2086d2bfe1cb65fa48c3781bf8ac64a9e1d8009626519011b4011d7b51f9ca10ab9a8e1ffb71dcc269586fe97ecf82ceb0afa7de
@@ -7,7 +7,7 @@ module ActiveModel
7
7
 
8
8
  def gettext_translation_for_attribute_name(attribute)
9
9
  attribute = attribute.to_s
10
- if attribute.ends_with?('_id')
10
+ if attribute.end_with?('_id')
11
11
  humanize_class_name(attribute)
12
12
  else
13
13
  "#{inheritance_tree_root(self)}|#{attribute.split('.').map! {|a| a.humanize }.join('|')}"
@@ -5,8 +5,6 @@ module GettextI18nRails
5
5
  cattr_accessor :translate_defaults
6
6
  attr_accessor :backend
7
7
 
8
- RUBY19 = (RUBY_VERSION > "1.9")
9
-
10
8
  def initialize(*args)
11
9
  self.backend = I18n::Backend::Simple.new(*args)
12
10
  end
@@ -16,13 +14,20 @@ module GettextI18nRails
16
14
  end
17
15
 
18
16
  def translate(locale, key, options)
19
- if gettext_key = gettext_key(key, options)
20
- translation =
21
- plural_translate(gettext_key, options) || FastGettext._(gettext_key)
22
- interpolate(translation, options)
23
- else
24
- result = backend.translate(locale, key, options)
25
- (RUBY19 and result.is_a?(String)) ? result.force_encoding("UTF-8") : result
17
+ I18n.with_locale(locale) do
18
+ if gettext_key = gettext_key(key, options)
19
+ translation =
20
+ plural_translate(gettext_key, options) || FastGettext._(gettext_key)
21
+ interpolate(translation, options)
22
+ else
23
+ result = backend.translate(locale, key, options)
24
+ if result.is_a?(String)
25
+ result = result.dup if result.frozen?
26
+ result.force_encoding("UTF-8")
27
+ else
28
+ result
29
+ end
30
+ end
26
31
  end
27
32
  end
28
33
 
@@ -6,13 +6,10 @@ module GettextI18nRails
6
6
  File.extname(file) == ".#{extension}"
7
7
  end
8
8
 
9
- def self.parse(file, _options = {}, msgids = [])
10
- return msgids unless load_library
9
+ def self.parse(file, options = {}, _msgids = [])
10
+ return _msgids unless load_library
11
11
  code = convert_to_code(File.read(file))
12
- RubyGettextExtractor.parse_string(code, msgids, file)
13
- rescue Racc::ParseError => e
14
- $stderr.puts "file ignored: ruby_parser cannot read #{extension} files with 1.9 syntax --- #{file}: (#{e.message.strip})"
15
- return msgids
12
+ GetText::RubyParser.new(file, options).parse_source(code)
16
13
  end
17
14
 
18
15
  def self.libraries
@@ -37,7 +34,7 @@ module GettextI18nRails
37
34
  return false
38
35
  end
39
36
 
40
- require 'gettext_i18n_rails/ruby_gettext_extractor'
37
+ require 'gettext/tools/parser/ruby'
41
38
  @library_loaded = loaded
42
39
  end
43
40
  end
@@ -1,22 +1,14 @@
1
1
  module GettextI18nRails
2
2
  module GettextHooks
3
- # shoarter call / maybe the interface changes again ...
3
+ # shorter call / maybe the interface changes again ...
4
4
  def self.add_parser(parser)
5
5
  xgettext.add_parser(parser)
6
6
  end
7
7
 
8
8
  def self.xgettext
9
9
  @xgettext ||= begin
10
- require 'gettext/tools/xgettext' # 2.3+
10
+ require 'gettext/tools/xgettext'
11
11
  GetText::Tools::XGetText
12
- rescue LoadError
13
- begin
14
- require 'gettext/tools/rgettext' # 2.0 - 2.2
15
- GetText::RGetText
16
- rescue LoadError # # 1.x
17
- require 'gettext/rgettext'
18
- GetText::RGetText
19
- end
20
12
  end
21
13
  end
22
14
  end
@@ -9,7 +9,11 @@ module GettextI18nRails
9
9
  def self.convert_to_code(text)
10
10
  case @library_loaded
11
11
  when "haml"
12
- Haml::Engine.new(text).precompiled()
12
+ if Haml::VERSION.split('.').first.to_i <= 5
13
+ Haml::Engine.new(text).precompiled()
14
+ else
15
+ Haml::Engine.new.call(text)
16
+ end
13
17
  when "hamlit"
14
18
  Hamlit::Engine.new.call(text)
15
19
  end
@@ -65,6 +65,8 @@ module GettextI18nRails
65
65
 
66
66
  def models
67
67
  if Rails::VERSION::MAJOR >= 3
68
+ # Ensure autoloaders are set up before we attempt to eager load!
69
+ Rails.application.autoloaders.each(&:setup) if Rails.application.respond_to?(:autoloaders)
68
70
  Rails.application.eager_load! # make sure that all models are loaded so that direct_descendants works
69
71
  descendants = ::ActiveRecord::Base.direct_descendants
70
72
 
@@ -1,3 +1,3 @@
1
1
  module GettextI18nRails
2
- Version = VERSION = '1.8.1'
2
+ Version = VERSION = '1.12.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gettext_i18n_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.1
4
+ version: 1.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-10 00:00:00.000000000 Z
11
+ date: 2023-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fast_gettext
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rake
70
+ name: hamlit
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rails
84
+ name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -95,35 +95,35 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: ruby_parser
98
+ name: rails
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 3.7.1
103
+ version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 3.7.1
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: sexp_processor
112
+ name: ruby_parser
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: 3.7.1
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: '0'
124
+ version: 3.7.1
125
125
  - !ruby/object:Gem::Dependency
126
- name: rspec
126
+ name: sexp_processor
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ">="
@@ -137,7 +137,7 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: slim
140
+ name: rspec
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
@@ -151,7 +151,7 @@ dependencies:
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: sqlite3
154
+ name: slim
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - ">="
@@ -165,7 +165,7 @@ dependencies:
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
- name: wwtd
168
+ name: sqlite3
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - ">="
@@ -178,7 +178,7 @@ dependencies:
178
178
  - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
- description:
181
+ description:
182
182
  email: michael@grosser.it
183
183
  executables: []
184
184
  extensions: []
@@ -199,7 +199,6 @@ files:
199
199
  - lib/gettext_i18n_rails/i18n_hacks.rb
200
200
  - lib/gettext_i18n_rails/model_attributes_finder.rb
201
201
  - lib/gettext_i18n_rails/railtie.rb
202
- - lib/gettext_i18n_rails/ruby_gettext_extractor.rb
203
202
  - lib/gettext_i18n_rails/slim_parser.rb
204
203
  - lib/gettext_i18n_rails/string_interpolate_fix.rb
205
204
  - lib/gettext_i18n_rails/tasks.rb
@@ -209,7 +208,7 @@ homepage: http://github.com/grosser/gettext_i18n_rails
209
208
  licenses:
210
209
  - MIT
211
210
  metadata: {}
212
- post_install_message:
211
+ post_install_message:
213
212
  rdoc_options: []
214
213
  require_paths:
215
214
  - lib
@@ -224,8 +223,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
224
223
  - !ruby/object:Gem::Version
225
224
  version: '0'
226
225
  requirements: []
227
- rubygems_version: 3.0.3
228
- signing_key:
226
+ rubygems_version: 3.3.3
227
+ signing_key:
229
228
  specification_version: 4
230
229
  summary: Simple FastGettext Rails integration.
231
230
  test_files: []
@@ -1,137 +0,0 @@
1
- gem 'ruby_parser', '>= 3.7.1' # sync with gemspec
2
- require 'ruby_parser'
3
-
4
- gem 'sexp_processor'
5
- require 'sexp_processor'
6
-
7
- module RubyGettextExtractor
8
- extend self
9
-
10
- def parse(file, targets = []) # :nodoc:
11
- parse_string(File.read(file), targets, file)
12
- end
13
-
14
- def parse_string(content, targets = [], file)
15
- syntax_tree = RubyParser.for_current_ruby.parse(content, file)
16
-
17
- processor = Extractor.new(targets)
18
- processor.require_empty = false
19
- processor.process(syntax_tree)
20
-
21
- processor.results
22
- end
23
-
24
- class Extractor < SexpProcessor
25
- attr_reader :results
26
-
27
- def initialize(targets)
28
- @targets = {}
29
- @results = []
30
-
31
- targets.each do |a|
32
- k, _v = a
33
- # things go wrong if k already exists, but this
34
- # should not happen (according to the gettext doc)
35
- @targets[k] = a
36
- @results << a
37
- end
38
-
39
- super()
40
- end
41
-
42
- def extract_string(node)
43
- case node.first
44
- when :str
45
- node.last
46
- when :call
47
- type, recv, meth, args = node
48
- # node has to be in form of "string" + "other_string"
49
- return nil unless recv && meth == :+
50
-
51
- first_part = extract_string(recv)
52
- second_part = extract_string(args)
53
-
54
- first_part && second_part ? first_part.to_s + second_part.to_s : nil
55
- else
56
- nil
57
- end
58
- end
59
-
60
- def extract_key_singular(args, separator)
61
- key = extract_string(args) if args.size == 2 || args.size == 4
62
-
63
- return nil unless key
64
- key.gsub("\n", '\n').gsub("\t", '\t').gsub("\0", '\0')
65
- end
66
-
67
- def extract_key_plural(args, separator)
68
- # this could be n_("aaa", "aaa plural", @retireitems.length)
69
- # s(s(:str, "aaa"),
70
- # s(:str, "aaa plural"),
71
- # s(:call, s(:ivar, :@retireitems), :length))
72
- # all strings arguments are extracted and joined with \004 or \000
73
- arguments = args[0..(-2)]
74
-
75
- res = []
76
- arguments.each do |a|
77
- next unless a.kind_of? Sexp
78
- str = extract_string(a)
79
- res << str if str
80
- end
81
-
82
- key = res.empty? ? nil : res.join(separator)
83
-
84
- return nil unless key
85
- key.gsub("\n", '\n').gsub("\t", '\t').gsub("\0", '\0')
86
- end
87
-
88
- def store_key(key, args)
89
- if key
90
- res = @targets[key]
91
-
92
- unless res
93
- res = [key]
94
- @results << res
95
- @targets[key] = res
96
- end
97
-
98
- res << "#{args.file}:#{args.line}"
99
- end
100
- end
101
-
102
- def gettext_simple_call(args)
103
- # args comes in 2 forms:
104
- # s(s(:str, "Button Group Order:"))
105
- # s(:str, "Button Group Order:")
106
- # normalizing:
107
- args = args.first if Sexp === args.sexp_type
108
-
109
- key = extract_key_singular(args, "\004")
110
- store_key(key, args)
111
- end
112
-
113
- def gettext_plural_call(args)
114
- key = extract_key_plural(args, "\000")
115
- store_key(key, args)
116
- end
117
-
118
- def process_call exp
119
- _call = exp.shift
120
- _recv = process exp.shift
121
- meth = exp.shift
122
-
123
- case meth
124
- when :_, :p_, :N_, :pgettext, :s_
125
- gettext_simple_call(exp)
126
- when :n_
127
- gettext_plural_call(exp)
128
- end
129
-
130
- until exp.empty? do
131
- process(exp.shift)
132
- end
133
-
134
- s()
135
- end
136
- end
137
- end