gettext 3.4.0 → 3.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/doc/text/news.md +39 -0
  3. data/gettext.gemspec +3 -1
  4. data/lib/gettext/mo.rb +5 -14
  5. data/lib/gettext/text_domain_manager.rb +6 -5
  6. data/lib/gettext/tools/parser/erubi.rb +88 -0
  7. data/lib/gettext/tools/xgettext.rb +6 -0
  8. data/lib/gettext/version.rb +2 -2
  9. data/locale/ja/LC_MESSAGES/gettext.mo +0 -0
  10. data/po/bg/gettext.edit.po +13 -9
  11. data/po/bg/gettext.po +3 -0
  12. data/po/bs/gettext.edit.po +13 -9
  13. data/po/bs/gettext.po +3 -0
  14. data/po/ca/gettext.edit.po +13 -9
  15. data/po/ca/gettext.po +3 -0
  16. data/po/cs/gettext.edit.po +13 -9
  17. data/po/cs/gettext.po +3 -0
  18. data/po/de/gettext.edit.po +13 -9
  19. data/po/de/gettext.po +3 -0
  20. data/po/el/gettext.edit.po +13 -9
  21. data/po/el/gettext.po +3 -0
  22. data/po/eo/gettext.edit.po +13 -9
  23. data/po/eo/gettext.po +3 -0
  24. data/po/es/gettext.edit.po +13 -9
  25. data/po/es/gettext.po +3 -0
  26. data/po/et/gettext.edit.po +13 -9
  27. data/po/et/gettext.po +3 -0
  28. data/po/fr/gettext.edit.po +13 -9
  29. data/po/fr/gettext.po +3 -0
  30. data/po/gettext.pot +16 -12
  31. data/po/hr/gettext.edit.po +13 -9
  32. data/po/hr/gettext.po +3 -0
  33. data/po/hu/gettext.edit.po +13 -9
  34. data/po/hu/gettext.po +3 -0
  35. data/po/it/gettext.edit.po +13 -9
  36. data/po/it/gettext.po +3 -0
  37. data/po/ja/gettext.edit.po +14 -10
  38. data/po/ja/gettext.po +4 -1
  39. data/po/ko/gettext.edit.po +13 -9
  40. data/po/ko/gettext.po +3 -0
  41. data/po/lv/gettext.edit.po +13 -9
  42. data/po/lv/gettext.po +3 -0
  43. data/po/nb/gettext.edit.po +13 -9
  44. data/po/nb/gettext.po +3 -0
  45. data/po/nl/gettext.edit.po +13 -9
  46. data/po/nl/gettext.po +3 -0
  47. data/po/pt_BR/gettext.edit.po +13 -9
  48. data/po/pt_BR/gettext.po +3 -0
  49. data/po/ru/gettext.edit.po +13 -9
  50. data/po/ru/gettext.po +3 -0
  51. data/po/sr/gettext.edit.po +13 -9
  52. data/po/sr/gettext.po +3 -0
  53. data/po/sv/gettext.edit.po +13 -9
  54. data/po/sv/gettext.po +3 -0
  55. data/po/uk/gettext.edit.po +13 -9
  56. data/po/uk/gettext.po +3 -0
  57. data/po/vi/gettext.edit.po +13 -9
  58. data/po/vi/gettext.po +3 -0
  59. data/po/zh/gettext.edit.po +13 -9
  60. data/po/zh/gettext.po +3 -0
  61. data/po/zh_TW/gettext.edit.po +13 -9
  62. data/po/zh_TW/gettext.po +3 -0
  63. data/test/fixtures/erb/case.rhtml +16 -0
  64. data/test/fixtures/simple.rb +4 -0
  65. data/test/locale/fr/LC_MESSAGES/test1.mo +0 -0
  66. data/test/locale/fr_BE/LC_MESSAGES/test1.mo +0 -0
  67. data/test/locale/fr_BE_Foo/LC_MESSAGES/test1.mo +0 -0
  68. data/test/po/fr/test1.po +7 -0
  69. data/test/po/fr_BE/test1.po +24 -0
  70. data/test/po/fr_BE_Foo/test1.po +20 -0
  71. data/test/po/ja/_.po +15 -0
  72. data/test/test_gettext.rb +23 -0
  73. data/test/test_locale_path.rb +12 -4
  74. data/test/test_parser.rb +62 -0
  75. data/test/tools/test_xgettext.rb +85 -0
  76. metadata +39 -4
data/test/test_parser.rb CHANGED
@@ -24,6 +24,7 @@
24
24
  require "tempfile"
25
25
  require "gettext/tools/parser/ruby"
26
26
  require "gettext/tools/parser/erb"
27
+ require "gettext/tools/parser/erubi"
27
28
 
28
29
  require "gettext/tools/xgettext"
29
30
 
@@ -215,6 +216,67 @@ class TestGetTextParser < Test::Unit::TestCase
215
216
 
216
217
  assert_target("Hello", ["#{path}:8"])
217
218
  end
219
+
220
+ def test_case
221
+ path = fixture_path("erb", "case.rhtml")
222
+ @ary = GetText::ErbParser.parse(path)
223
+
224
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0.0')
225
+ assert_target("Hello", ["#{path}:11"])
226
+ assert_target("World", ["#{path}:14"])
227
+ else
228
+ assert_target("Hello", ["#{path}:11"])
229
+ assert_nil(@ary.detect {|elem| elem.msgid == 'World'}) # Not detected. see PR #91
230
+ end
231
+ end
232
+ end
233
+
234
+ class TestErubiParser < self
235
+ include Helper::Path
236
+
237
+ def test_detect_encoding
238
+ euc_file = Tempfile.new("euc-jp.rhtml")
239
+ euc_file.open
240
+ euc_file.puts("<%#-*- coding: euc-jp -*-%>")
241
+ euc_file.close
242
+
243
+ euc_file_content = File.read(euc_file.path)
244
+ encoding = GetText::ErubiParser.new(euc_file.path).detect_encoding(euc_file_content)
245
+
246
+ assert_equal("EUC-JP", encoding)
247
+ end
248
+
249
+ def test_ascii
250
+ path = fixture_path("erb", "ascii.rhtml")
251
+ @ary = GetText::ErubiParser.parse(path)
252
+
253
+ assert_target 'aaa', ["#{path}:8"]
254
+ assert_target "aaa\n", ["#{path}:11"]
255
+ assert_target 'bbb', ["#{path}:12"]
256
+ assert_plural_target "ccc1", "ccc2", ["#{path}:13"]
257
+ end
258
+
259
+ def test_non_ascii
260
+ path = fixture_path("erb", "non_ascii.rhtml")
261
+ @ary = GetText::ErubiParser.parse(path)
262
+
263
+ assert_target('わたし', ["#{path}:12"])
264
+ end
265
+
266
+ def test_minus
267
+ path = fixture_path("erb", "minus.rhtml")
268
+ @ary = GetText::ErubiParser.parse(path)
269
+
270
+ assert_target("Hello", ["#{path}:8"])
271
+ end
272
+
273
+ def test_case
274
+ path = fixture_path("erb", "case.rhtml")
275
+ @ary = GetText::ErubiParser.parse(path)
276
+
277
+ assert_target("Hello", ["#{path}:11"])
278
+ assert_target("World", ["#{path}:14"]) # Detected with Erubi
279
+ end
218
280
  end
219
281
 
220
282
  def test_xgettext_parse
@@ -118,6 +118,91 @@ EOP
118
118
  end
119
119
  end
120
120
 
121
+ class TestParser < self
122
+ # Default ERB parser (don't find anything after "case")
123
+ def test_erb
124
+ rhtml = <<-EOR
125
+ <div>
126
+ <%= _('Hello') %>
127
+ <% case 1 %>
128
+ <% end %>
129
+ <%= _('World') %>
130
+ </div>
131
+ EOR
132
+
133
+ File.open(@rhtml_file_path, "w") do |rhtml_file|
134
+ rhtml_file.puts(rhtml)
135
+ end
136
+
137
+ @xgettext.run(
138
+ "--output", @pot_file_path,
139
+ @rhtml_file_path
140
+ )
141
+
142
+ pot_content = File.read(@pot_file_path)
143
+
144
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0.0')
145
+ expected_content = <<-EOP
146
+ #{header}
147
+ #: ../templates/xgettext.rhtml:2
148
+ msgid "Hello"
149
+ msgstr ""
150
+
151
+ #: ../templates/xgettext.rhtml:5
152
+ msgid "World"
153
+ msgstr ""
154
+ EOP
155
+ else
156
+ # "World" not detected. see PR #91
157
+ expected_content = <<-EOP
158
+ #{header}
159
+ #: ../templates/xgettext.rhtml:2
160
+ msgid "Hello"
161
+ msgstr ""
162
+ EOP
163
+ end
164
+
165
+ assert_equal(expected_content, pot_content)
166
+ end
167
+
168
+ # Optional Erubi parser (find text after "case")
169
+ def test_erubi
170
+ rhtml = <<-EOR
171
+ <div>
172
+ <%= _('Hello') %>
173
+ <% case 1 %>
174
+ <% end %>
175
+ <%= _('World') %>
176
+ </div>
177
+ EOR
178
+
179
+ File.open(@rhtml_file_path, "w") do |rhtml_file|
180
+ rhtml_file.puts(rhtml)
181
+ end
182
+
183
+ @xgettext.run(
184
+ "--output", @pot_file_path,
185
+ '--require', 'gettext/tools/parser/erubi',
186
+ '--parser', 'GetText::ErubiParser',
187
+ @rhtml_file_path
188
+ )
189
+
190
+ pot_content = File.read(@pot_file_path)
191
+ expected_content = <<-EOP
192
+ #{header}
193
+ #: ../templates/xgettext.rhtml:2
194
+ msgid "Hello"
195
+ msgstr ""
196
+
197
+ #: ../templates/xgettext.rhtml:5
198
+ msgid "World"
199
+ msgstr ""
200
+ EOP
201
+
202
+ assert_equal(expected_content, pot_content)
203
+ end
204
+ end
205
+
121
206
  class TestEncoding < self
122
207
  def test_different_encoding_from_current_locale
123
208
  rhtml = <<-EOR
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gettext
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 3.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
@@ -9,8 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-08-27 00:00:00.000000000 Z
12
+ date: 2022-05-20 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: erubi
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: locale
16
30
  requirement: !ruby/object:Gem::Requirement
@@ -25,6 +39,20 @@ dependencies:
25
39
  - - ">="
26
40
  - !ruby/object:Gem::Version
27
41
  version: 2.0.5
42
+ - !ruby/object:Gem::Dependency
43
+ name: prime
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
28
56
  - !ruby/object:Gem::Dependency
29
57
  name: text
30
58
  requirement: !ruby/object:Gem::Requirement
@@ -184,6 +212,7 @@ files:
184
212
  - lib/gettext/tools/msginit.rb
185
213
  - lib/gettext/tools/msgmerge.rb
186
214
  - lib/gettext/tools/parser/erb.rb
215
+ - lib/gettext/tools/parser/erubi.rb
187
216
  - lib/gettext/tools/parser/glade.rb
188
217
  - lib/gettext/tools/parser/gtk_builder_ui_definitions.rb
189
218
  - lib/gettext/tools/parser/ruby.rb
@@ -1531,6 +1560,7 @@ files:
1531
1560
  - test/fixtures/backslash.rb
1532
1561
  - test/fixtures/erb/ascii.rhtml
1533
1562
  - test/fixtures/erb/ascii.rxml
1563
+ - test/fixtures/erb/case.rhtml
1534
1564
  - test/fixtures/erb/minus.rhtml
1535
1565
  - test/fixtures/erb/non_ascii.rhtml
1536
1566
  - test/fixtures/glade/2.glade
@@ -1563,6 +1593,8 @@ files:
1563
1593
  - test/locale/fr/LC_MESSAGES/plural_error.mo
1564
1594
  - test/locale/fr/LC_MESSAGES/test1.mo
1565
1595
  - test/locale/fr/LC_MESSAGES/test2.mo
1596
+ - test/locale/fr_BE/LC_MESSAGES/test1.mo
1597
+ - test/locale/fr_BE_Foo/LC_MESSAGES/test1.mo
1566
1598
  - test/locale/ir/LC_MESSAGES/plural.mo
1567
1599
  - test/locale/ja/LC_MESSAGES/_.mo
1568
1600
  - test/locale/ja/LC_MESSAGES/backslash.mo
@@ -1595,6 +1627,8 @@ files:
1595
1627
  - test/po/fr/plural_error.po
1596
1628
  - test/po/fr/test1.po
1597
1629
  - test/po/fr/test2.po
1630
+ - test/po/fr_BE/test1.po
1631
+ - test/po/fr_BE_Foo/test1.po
1598
1632
  - test/po/hello.pot
1599
1633
  - test/po/ir/plural.po
1600
1634
  - test/po/ja/_.edit.po
@@ -1677,7 +1711,8 @@ files:
1677
1711
  - test/tools/test_xgettext.rb
1678
1712
  homepage: https://ruby-gettext.github.io/
1679
1713
  licenses:
1680
- - Ruby or LGPLv3+
1714
+ - Ruby
1715
+ - LGPL-3.0+
1681
1716
  metadata: {}
1682
1717
  post_install_message:
1683
1718
  rdoc_options: []
@@ -1694,7 +1729,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1694
1729
  - !ruby/object:Gem::Version
1695
1730
  version: '0'
1696
1731
  requirements: []
1697
- rubygems_version: 3.3.0.dev
1732
+ rubygems_version: 3.4.0.dev
1698
1733
  signing_key:
1699
1734
  specification_version: 4
1700
1735
  summary: Gettext is a pure Ruby libary and tools to localize messages.