gettext 3.4.1 → 3.4.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 30955d3f68dfd548513675212b0b2436aab9c105b24ebd82b02d905a24b33739
4
- data.tar.gz: 8f56bde4bf561174dadf631d7ccd434f31fe8945386b85f0fa274e544f8d4c7e
3
+ metadata.gz: 8b06a32f776c073ec316860952a830ed9941ce67ab34b0e1f111f1009ba8842d
4
+ data.tar.gz: 9736e8cf70f1faeb97daed575e020e3edd2bd76daab2f069cfaf103dbb0e51e6
5
5
  SHA512:
6
- metadata.gz: 1129a8825148863c28e8dec1ae2bcf86cc830a98836dcfa4baabeed83e45536389b2fa1e26275f4b54a7060826d6b966783a07e84cb126f1b906c0e77ee81bdf
7
- data.tar.gz: 816baa0a49fc068e0e14329828783a97b5122a3b8c6dae7cdefd67dc67f9d14ad9fefe28a90a9ee786ef69b926a80596325fb81cd683798d59dd3a8bb704de4b
6
+ metadata.gz: f3480005cc4f1a84ef2fbf53c25c5d198b871b5fed9885f4fd352a90815d78ad0bde1c76234fa5f10809c5b0c35e8f9c1518a51ec963e24d95fc7fd98b5ccecf
7
+ data.tar.gz: fc670a833c0d30e6d3c36b086e9298a39145ca105c9134a12667343f4c863a978b5820ef6c08b0dad35efd7a6a223c677d9085106d4f72241b0f8a0079196575
data/doc/text/news.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # News
2
2
 
3
+ ## 3.4.2: 2022-01-11 {#version-3-4-2}
4
+
5
+ ### Improvements
6
+
7
+ * Added support for fallback for specific locale.
8
+ e.g.: `fr_BE_Foo` -> `fr_BE` -> `fr`
9
+ [GitHub#90][Patch by Michaël Hoste]
10
+
11
+ * Added support for Ruby 3.1.
12
+ [GitHub#92][Reported by ahiru]
13
+
14
+ ### Thanks
15
+
16
+ * Michaël Hoste
17
+
18
+ * ahiru
19
+
3
20
  ## 3.4.1: 2021-09-08 {#version-3-4-1}
4
21
 
5
22
  ### Improvements
data/gettext.gemspec CHANGED
@@ -30,6 +30,7 @@ So you can use GNU gettext tools for maintaining.
30
30
  s.required_ruby_version = ">= 2.5.0"
31
31
 
32
32
  s.add_runtime_dependency("locale", ">= 2.0.5")
33
+ s.add_runtime_dependency("prime")
33
34
  s.add_runtime_dependency("text", ">= 1.3.0")
34
35
  s.add_development_dependency("kramdown")
35
36
  s.add_development_dependency("racc")
data/lib/gettext/mo.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  =begin
4
4
  mo.rb - A simple class for operating GNU MO file.
5
5
 
6
- Copyright (C) 2012-2017 Kouhei Sutou <kou@clear-code.com>
6
+ Copyright (C) 2012-2022 Sutou Kouhei <kou@clear-code.com>
7
7
  Copyright (C) 2003-2009 Masao Mutoh
8
8
  Copyright (C) 2002 Masahiro Sakai, Masao Mutoh
9
9
  Copyright (C) 2001 Masahiro Sakai
@@ -19,6 +19,8 @@
19
19
 
20
20
  require 'stringio'
21
21
 
22
+ require 'prime'
23
+
22
24
  module GetText
23
25
  class MO < Hash
24
26
  class InvalidFormat < RuntimeError; end;
@@ -168,19 +170,8 @@ module GetText
168
170
  ('1' * number) !~ /^1?$|^(11+?)\1+$/
169
171
  end
170
172
 
171
- begin
172
- require 'prime'
173
- def next_prime(seed)
174
- Prime.instance.find{|x| x > seed }
175
- end
176
- rescue LoadError
177
- def next_prime(seed)
178
- require 'mathn'
179
- prime = Prime.new
180
- while current = prime.succ
181
- return current if current > seed
182
- end
183
- end
173
+ def next_prime(seed)
174
+ Prime.instance.find{|x| x > seed }
184
175
  end
185
176
 
186
177
  HASHWORDBITS = 32
@@ -77,11 +77,12 @@ module GetText
77
77
  end
78
78
 
79
79
  def each_text_domains(klass) #:nodoc:
80
- lang = Locale.candidates[0]
81
- ClassInfo.related_classes(klass, @@gettext_classes).each do |target|
82
- if group = @@text_domain_group_pool[target]
83
- group.text_domains.each do |text_domain|
84
- yield text_domain, lang
80
+ Locale.candidates.each do |lang|
81
+ ClassInfo.related_classes(klass, @@gettext_classes).each do |target|
82
+ if group = @@text_domain_group_pool[target]
83
+ group.text_domains.each do |text_domain|
84
+ yield text_domain, lang
85
+ end
85
86
  end
86
87
  end
87
88
  end
@@ -9,5 +9,5 @@
9
9
  =end
10
10
 
11
11
  module GetText
12
- VERSION = "3.4.1"
12
+ VERSION = "3.4.2"
13
13
  end
@@ -19,11 +19,11 @@ msgstr ""
19
19
  "Content-Transfer-Encoding: 8bit\n"
20
20
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
21
21
 
22
- #: ../lib/gettext/text_domain_manager.rb:148
22
+ #: ../lib/gettext/text_domain_manager.rb:149
23
23
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
24
24
  msgstr "Третият параметър е грешен: value = %{number}"
25
25
 
26
- #: ../lib/gettext/text_domain_manager.rb:154
26
+ #: ../lib/gettext/text_domain_manager.rb:155
27
27
  msgid "ngettext: 3rd parameter should be a number, not nil."
28
28
  msgstr ""
29
29
 
@@ -21,11 +21,11 @@ msgstr ""
21
21
  " && (n%100<10 || n%100>=20) ? 1 : 2;\n"
22
22
  "X-Generator: KBabel 1.11.4\n"
23
23
 
24
- #: ../lib/gettext/text_domain_manager.rb:148
24
+ #: ../lib/gettext/text_domain_manager.rb:149
25
25
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
26
26
  msgstr ""
27
27
 
28
- #: ../lib/gettext/text_domain_manager.rb:154
28
+ #: ../lib/gettext/text_domain_manager.rb:155
29
29
  msgid "ngettext: 3rd parameter should be a number, not nil."
30
30
  msgstr ""
31
31
 
@@ -19,11 +19,11 @@ msgstr ""
19
19
  "Content-Transfer-Encoding: 8bit\n"
20
20
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
21
21
 
22
- #: ../lib/gettext/text_domain_manager.rb:148
22
+ #: ../lib/gettext/text_domain_manager.rb:149
23
23
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
24
24
  msgstr "El tercer paràmetre es erroni: valor = %{number}"
25
25
 
26
- #: ../lib/gettext/text_domain_manager.rb:154
26
+ #: ../lib/gettext/text_domain_manager.rb:155
27
27
  msgid "ngettext: 3rd parameter should be a number, not nil."
28
28
  msgstr ""
29
29
 
@@ -22,11 +22,11 @@ msgstr ""
22
22
  "X-Poedit-Language: Czech\n"
23
23
  "X-Poedit-Bookmarks: -1,-1,-1,-1,-1,-1,-1,-1,15,-1\n"
24
24
 
25
- #: ../lib/gettext/text_domain_manager.rb:148
25
+ #: ../lib/gettext/text_domain_manager.rb:149
26
26
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
27
27
  msgstr ""
28
28
 
29
- #: ../lib/gettext/text_domain_manager.rb:154
29
+ #: ../lib/gettext/text_domain_manager.rb:155
30
30
  msgid "ngettext: 3rd parameter should be a number, not nil."
31
31
  msgstr ""
32
32
 
@@ -23,12 +23,12 @@ msgstr ""
23
23
  "Content-Transfer-Encoding: 8bit\n"
24
24
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
25
25
 
26
- #: ../lib/gettext/text_domain_manager.rb:148
26
+ #: ../lib/gettext/text_domain_manager.rb:149
27
27
  #, fuzzy
28
28
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
29
29
  msgstr "Der 3. Parameter ist ungültig: value = %{number}"
30
30
 
31
- #: ../lib/gettext/text_domain_manager.rb:154
31
+ #: ../lib/gettext/text_domain_manager.rb:155
32
32
  msgid "ngettext: 3rd parameter should be a number, not nil."
33
33
  msgstr ""
34
34
 
@@ -19,12 +19,12 @@ msgstr ""
19
19
  "Content-Transfer-Encoding: 8bit\n"
20
20
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
21
21
 
22
- #: ../lib/gettext/text_domain_manager.rb:148
22
+ #: ../lib/gettext/text_domain_manager.rb:149
23
23
  #, fuzzy
24
24
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
25
25
  msgstr "Η τρίτη παράμετρος είναι λανθασμένη: value = %{number}"
26
26
 
27
- #: ../lib/gettext/text_domain_manager.rb:154
27
+ #: ../lib/gettext/text_domain_manager.rb:155
28
28
  msgid "ngettext: 3rd parameter should be a number, not nil."
29
29
  msgstr ""
30
30
 
@@ -21,12 +21,12 @@ msgstr ""
21
21
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
22
22
 
23
23
  # TODO: Should this be "parameter"?
24
- #: ../lib/gettext/text_domain_manager.rb:148
24
+ #: ../lib/gettext/text_domain_manager.rb:149
25
25
  #, fuzzy
26
26
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
27
27
  msgstr "Malĝusta tria parametro: valoro = %{number}"
28
28
 
29
- #: ../lib/gettext/text_domain_manager.rb:154
29
+ #: ../lib/gettext/text_domain_manager.rb:155
30
30
  msgid "ngettext: 3rd parameter should be a number, not nil."
31
31
  msgstr ""
32
32
 
@@ -20,12 +20,12 @@ msgstr ""
20
20
  "Content-Transfer-Encoding: 8bit\n"
21
21
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
22
22
 
23
- #: ../lib/gettext/text_domain_manager.rb:148
23
+ #: ../lib/gettext/text_domain_manager.rb:149
24
24
  #, fuzzy
25
25
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
26
26
  msgstr "tercer parámetro es erróneo: valor = %{número}"
27
27
 
28
- #: ../lib/gettext/text_domain_manager.rb:154
28
+ #: ../lib/gettext/text_domain_manager.rb:155
29
29
  msgid "ngettext: 3rd parameter should be a number, not nil."
30
30
  msgstr ""
31
31
 
@@ -20,12 +20,12 @@ msgstr ""
20
20
  "Content-Transfer-Encoding: 8bit\n"
21
21
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
22
22
 
23
- #: ../lib/gettext/text_domain_manager.rb:148
23
+ #: ../lib/gettext/text_domain_manager.rb:149
24
24
  #, fuzzy
25
25
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
26
26
  msgstr "Kolmas parameeter on vale: %{number}"
27
27
 
28
- #: ../lib/gettext/text_domain_manager.rb:154
28
+ #: ../lib/gettext/text_domain_manager.rb:155
29
29
  msgid "ngettext: 3rd parameter should be a number, not nil."
30
30
  msgstr ""
31
31
 
@@ -21,12 +21,12 @@ msgstr ""
21
21
  "Content-Transfer-Encoding: 8bit\n"
22
22
  "Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
23
23
 
24
- #: ../lib/gettext/text_domain_manager.rb:148
24
+ #: ../lib/gettext/text_domain_manager.rb:149
25
25
  #, fuzzy
26
26
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
27
27
  msgstr "Le 3ème paramètre (de valeur %{number}) est incorrect."
28
28
 
29
- #: ../lib/gettext/text_domain_manager.rb:154
29
+ #: ../lib/gettext/text_domain_manager.rb:155
30
30
  msgid "ngettext: 3rd parameter should be a number, not nil."
31
31
  msgstr ""
32
32
 
data/po/gettext.pot CHANGED
@@ -6,10 +6,10 @@
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: gettext 3.4.1\n"
9
+ "Project-Id-Version: gettext 3.4.2\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2021-09-08 13:05+0900\n"
12
- "PO-Revision-Date: 2021-09-08 13:05+0900\n"
11
+ "POT-Creation-Date: 2022-01-11 06:23+0900\n"
12
+ "PO-Revision-Date: 2022-01-11 06:23+0900\n"
13
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
15
15
  "Language: \n"
@@ -18,11 +18,11 @@ msgstr ""
18
18
  "Content-Transfer-Encoding: 8bit\n"
19
19
  "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
20
20
 
21
- #: ../lib/gettext/text_domain_manager.rb:148
21
+ #: ../lib/gettext/text_domain_manager.rb:149
22
22
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
23
23
  msgstr ""
24
24
 
25
- #: ../lib/gettext/text_domain_manager.rb:154
25
+ #: ../lib/gettext/text_domain_manager.rb:155
26
26
  msgid "ngettext: 3rd parameter should be a number, not nil."
27
27
  msgstr ""
28
28
 
@@ -21,11 +21,11 @@ msgstr ""
21
21
  " && (n%100<10 || n%100>=20) ? 1 : 2;\n"
22
22
  "X-Generator: KBabel 1.11.4\n"
23
23
 
24
- #: ../lib/gettext/text_domain_manager.rb:148
24
+ #: ../lib/gettext/text_domain_manager.rb:149
25
25
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
26
26
  msgstr ""
27
27
 
28
- #: ../lib/gettext/text_domain_manager.rb:154
28
+ #: ../lib/gettext/text_domain_manager.rb:155
29
29
  msgid "ngettext: 3rd parameter should be a number, not nil."
30
30
  msgstr ""
31
31
 
@@ -20,12 +20,12 @@ msgstr ""
20
20
  "Content-Transfer-Encoding: 8bit\n"
21
21
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
22
22
 
23
- #: ../lib/gettext/text_domain_manager.rb:148
23
+ #: ../lib/gettext/text_domain_manager.rb:149
24
24
  #, fuzzy
25
25
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
26
26
  msgstr "A harmadik paraméter hibás: value = %{number}"
27
27
 
28
- #: ../lib/gettext/text_domain_manager.rb:154
28
+ #: ../lib/gettext/text_domain_manager.rb:155
29
29
  msgid "ngettext: 3rd parameter should be a number, not nil."
30
30
  msgstr ""
31
31
 
@@ -20,11 +20,11 @@ msgstr ""
20
20
  "Content-Transfer-Encoding: 8bit\n"
21
21
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
22
22
 
23
- #: ../lib/gettext/text_domain_manager.rb:148
23
+ #: ../lib/gettext/text_domain_manager.rb:149
24
24
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
25
25
  msgstr ""
26
26
 
27
- #: ../lib/gettext/text_domain_manager.rb:154
27
+ #: ../lib/gettext/text_domain_manager.rb:155
28
28
  msgid "ngettext: 3rd parameter should be a number, not nil."
29
29
  msgstr ""
30
30
 
@@ -16,11 +16,11 @@ msgstr ""
16
16
  "Content-Transfer-Encoding: 8bit\n"
17
17
  "Plural-Forms: nplurals=1; plural=0;\n"
18
18
 
19
- #: ../lib/gettext/text_domain_manager.rb:148
19
+ #: ../lib/gettext/text_domain_manager.rb:149
20
20
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
21
21
  msgstr "ngettext: 3番目のパラメータが不正です。: value = %{number}"
22
22
 
23
- #: ../lib/gettext/text_domain_manager.rb:154
23
+ #: ../lib/gettext/text_domain_manager.rb:155
24
24
  msgid "ngettext: 3rd parameter should be a number, not nil."
25
25
  msgstr "ngettext: 3番目のパラメータがnilです。数値にしてください。"
26
26
 
@@ -20,11 +20,11 @@ msgstr ""
20
20
  "Content-Transfer-Encoding: 8bit\n"
21
21
  "Plural-Forms: nplurals=1; plural=0;\n"
22
22
 
23
- #: ../lib/gettext/text_domain_manager.rb:148
23
+ #: ../lib/gettext/text_domain_manager.rb:149
24
24
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
25
25
  msgstr ""
26
26
 
27
- #: ../lib/gettext/text_domain_manager.rb:154
27
+ #: ../lib/gettext/text_domain_manager.rb:155
28
28
  msgid "ngettext: 3rd parameter should be a number, not nil."
29
29
  msgstr ""
30
30
 
@@ -20,12 +20,12 @@ msgstr ""
20
20
  "Content-Transfer-Encoding: 8bit\n"
21
21
  "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
22
22
 
23
- #: ../lib/gettext/text_domain_manager.rb:148
23
+ #: ../lib/gettext/text_domain_manager.rb:149
24
24
  #, fuzzy
25
25
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
26
26
  msgstr "trešais parametrs ir kļūdains: vērtība = %{number}"
27
27
 
28
- #: ../lib/gettext/text_domain_manager.rb:154
28
+ #: ../lib/gettext/text_domain_manager.rb:155
29
29
  msgid "ngettext: 3rd parameter should be a number, not nil."
30
30
  msgstr ""
31
31
 
@@ -20,12 +20,12 @@ msgstr ""
20
20
  "Content-Transfer-Encoding: 8bit\n"
21
21
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
22
22
 
23
- #: ../lib/gettext/text_domain_manager.rb:148
23
+ #: ../lib/gettext/text_domain_manager.rb:149
24
24
  #, fuzzy
25
25
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
26
26
  msgstr "Tredje parameter er feil: verdi = %{number}"
27
27
 
28
- #: ../lib/gettext/text_domain_manager.rb:154
28
+ #: ../lib/gettext/text_domain_manager.rb:155
29
29
  msgid "ngettext: 3rd parameter should be a number, not nil."
30
30
  msgstr ""
31
31
 
@@ -20,11 +20,11 @@ msgstr ""
20
20
  "Content-Transfer-Encoding: 8bit\n"
21
21
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
22
22
 
23
- #: ../lib/gettext/text_domain_manager.rb:148
23
+ #: ../lib/gettext/text_domain_manager.rb:149
24
24
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
25
25
  msgstr ""
26
26
 
27
- #: ../lib/gettext/text_domain_manager.rb:154
27
+ #: ../lib/gettext/text_domain_manager.rb:155
28
28
  msgid "ngettext: 3rd parameter should be a number, not nil."
29
29
  msgstr ""
30
30
 
@@ -21,12 +21,12 @@ msgstr ""
21
21
  "Content-Transfer-Encoding: 8bit\n"
22
22
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
23
23
 
24
- #: ../lib/gettext/text_domain_manager.rb:148
24
+ #: ../lib/gettext/text_domain_manager.rb:149
25
25
  #, fuzzy
26
26
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
27
27
  msgstr "O 3º parâmetro está errado: value = %{number}"
28
28
 
29
- #: ../lib/gettext/text_domain_manager.rb:154
29
+ #: ../lib/gettext/text_domain_manager.rb:155
30
30
  msgid "ngettext: 3rd parameter should be a number, not nil."
31
31
  msgstr ""
32
32
 
@@ -21,12 +21,12 @@ msgstr ""
21
21
  "=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
22
22
  "X-Generator: KBabel 1.11.4\n"
23
23
 
24
- #: ../lib/gettext/text_domain_manager.rb:148
24
+ #: ../lib/gettext/text_domain_manager.rb:149
25
25
  #, fuzzy
26
26
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
27
27
  msgstr "Ошибка в третьем параметре: value = %{number}"
28
28
 
29
- #: ../lib/gettext/text_domain_manager.rb:154
29
+ #: ../lib/gettext/text_domain_manager.rb:155
30
30
  msgid "ngettext: 3rd parameter should be a number, not nil."
31
31
  msgstr ""
32
32
 
@@ -21,12 +21,12 @@ msgstr ""
21
21
  "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4"
22
22
  " && (n%100<10 || n%100>=20) ? 1 : 2;\n"
23
23
 
24
- #: ../lib/gettext/text_domain_manager.rb:148
24
+ #: ../lib/gettext/text_domain_manager.rb:149
25
25
  #, fuzzy
26
26
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
27
27
  msgstr "3. параметар је погрешан: вредност = %{number}"
28
28
 
29
- #: ../lib/gettext/text_domain_manager.rb:154
29
+ #: ../lib/gettext/text_domain_manager.rb:155
30
30
  msgid "ngettext: 3rd parameter should be a number, not nil."
31
31
  msgstr ""
32
32
 
@@ -19,11 +19,11 @@ msgstr ""
19
19
  "Content-Type: text/plain; charset=UTF-8\n"
20
20
  "Content-Transfer-Encoding: 8bit\n"
21
21
 
22
- #: ../lib/gettext/text_domain_manager.rb:148
22
+ #: ../lib/gettext/text_domain_manager.rb:149
23
23
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
24
24
  msgstr ""
25
25
 
26
- #: ../lib/gettext/text_domain_manager.rb:154
26
+ #: ../lib/gettext/text_domain_manager.rb:155
27
27
  msgid "ngettext: 3rd parameter should be a number, not nil."
28
28
  msgstr ""
29
29
 
@@ -24,12 +24,12 @@ msgstr ""
24
24
  "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
25
25
  "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
26
26
 
27
- #: ../lib/gettext/text_domain_manager.rb:148
27
+ #: ../lib/gettext/text_domain_manager.rb:149
28
28
  #, fuzzy
29
29
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
30
30
  msgstr "Третій параметр неправильний: value = %{number}"
31
31
 
32
- #: ../lib/gettext/text_domain_manager.rb:154
32
+ #: ../lib/gettext/text_domain_manager.rb:155
33
33
  msgid "ngettext: 3rd parameter should be a number, not nil."
34
34
  msgstr ""
35
35
 
@@ -20,12 +20,12 @@ msgstr ""
20
20
  "Content-Transfer-Encoding: 8bit\n"
21
21
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
22
22
 
23
- #: ../lib/gettext/text_domain_manager.rb:148
23
+ #: ../lib/gettext/text_domain_manager.rb:149
24
24
  #, fuzzy
25
25
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
26
26
  msgstr "Tham số thứ 3 sai: giá trị = %{number}"
27
27
 
28
- #: ../lib/gettext/text_domain_manager.rb:154
28
+ #: ../lib/gettext/text_domain_manager.rb:155
29
29
  msgid "ngettext: 3rd parameter should be a number, not nil."
30
30
  msgstr ""
31
31
 
@@ -23,12 +23,12 @@ msgstr ""
23
23
  "Plural-Forms: nplurals=1; plural=0;\n"
24
24
  "X-Generator: KBabel 1.9.1\n"
25
25
 
26
- #: ../lib/gettext/text_domain_manager.rb:148
26
+ #: ../lib/gettext/text_domain_manager.rb:149
27
27
  #, fuzzy
28
28
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
29
29
  msgstr "第三个参数错误:value = %{number}"
30
30
 
31
- #: ../lib/gettext/text_domain_manager.rb:154
31
+ #: ../lib/gettext/text_domain_manager.rb:155
32
32
  msgid "ngettext: 3rd parameter should be a number, not nil."
33
33
  msgstr ""
34
34
 
@@ -22,12 +22,12 @@ msgstr ""
22
22
  "X-Poedit-Language: Chinese\n"
23
23
  "X-Poedit-Country: TAIWAN\n"
24
24
 
25
- #: ../lib/gettext/text_domain_manager.rb:148
25
+ #: ../lib/gettext/text_domain_manager.rb:149
26
26
  #, fuzzy
27
27
  msgid "ngettext: 3rd parmeter is wrong: value = %{number}"
28
28
  msgstr "第三个参数錯誤:value = %{number}"
29
29
 
30
- #: ../lib/gettext/text_domain_manager.rb:154
30
+ #: ../lib/gettext/text_domain_manager.rb:155
31
31
  msgid "ngettext: 3rd parameter should be a number, not nil."
32
32
  msgstr ""
33
33
 
@@ -13,4 +13,8 @@ class Simple
13
13
  def test_formatted_string
14
14
  _("one is %d.") % 1
15
15
  end
16
+
17
+ def test_plural
18
+ n_("There is an apple.", "There are %{num} apples.", 5) % {:num => 5}
19
+ end
16
20
  end
Binary file
data/test/po/fr/test1.po CHANGED
@@ -13,6 +13,7 @@ msgstr ""
13
13
  "MIME-Version: 1.0\n"
14
14
  "Content-Type: text/plain; charset=utf-8\n"
15
15
  "Content-Transfer-Encoding: ENCODING\n"
16
+ "Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
16
17
 
17
18
  #: simple.rb:10
18
19
  msgid "language"
@@ -21,3 +22,9 @@ msgstr "french"
21
22
  #: simple.rb:14
22
23
  msgid "one is %d."
23
24
  msgstr "FRENCH:ONE IS %d."
25
+
26
+ #: simple.rb:18
27
+ msgid "There is an apple."
28
+ msgid_plural "There are %{num} apples."
29
+ msgstr[0] "FRENCH:Il y a une pomme."
30
+ msgstr[1] "FRENCH:Il y a %{num} pommes."
@@ -0,0 +1,24 @@
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR ORGANIZATION
3
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
+ #
5
+ #, fuzzy
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: PACKAGE VERSION\n"
9
+ "POT-Creation-Date: 2002-01-01 02:24:56+0900\n"
10
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12
+ "Language-Team: LANGUAGE <LL@li.org>\n"
13
+ "MIME-Version: 1.0\n"
14
+ "Content-Type: text/plain; charset=utf-8\n"
15
+ "Content-Transfer-Encoding: ENCODING\n"
16
+ "Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
17
+
18
+ #: simple.rb:10
19
+ msgid "language"
20
+ msgstr "french-Belgium"
21
+
22
+ #: simple.rb:14
23
+ msgid "one is %d."
24
+ msgstr "FRENCH-BELGIUM:ONE IS %d."
@@ -0,0 +1,20 @@
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR ORGANIZATION
3
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
+ #
5
+ #, fuzzy
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: PACKAGE VERSION\n"
9
+ "POT-Creation-Date: 2002-01-01 02:24:56+0900\n"
10
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12
+ "Language-Team: LANGUAGE <LL@li.org>\n"
13
+ "MIME-Version: 1.0\n"
14
+ "Content-Type: text/plain; charset=utf-8\n"
15
+ "Content-Transfer-Encoding: ENCODING\n"
16
+ "Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
17
+
18
+ #: simple.rb:10
19
+ msgid "language"
20
+ msgstr "french-Belgium-Foo"
data/test/test_gettext.rb CHANGED
@@ -59,6 +59,29 @@ class TestGetText < Test::Unit::TestCase
59
59
  assert_equal("nomsgstr", _("nomsgstr"))
60
60
  end
61
61
 
62
+ def test_fallbacks
63
+ bindtextdomain("test1", "locale")
64
+ test = Simple.new
65
+
66
+ # Translation present in all candidates
67
+ GetText.set_current_locale("fr_BE_Foo")
68
+ assert_equal("french-Belgium-Foo", test.test)
69
+ GetText.set_current_locale("fr_BE")
70
+ assert_equal("french-Belgium", test.test)
71
+ GetText.set_current_locale("fr")
72
+ assert_equal("french", test.test)
73
+
74
+ # Translation Missing in fr_BE_Foo (fallback to fr_BE)
75
+ GetText.set_current_locale("fr_BE_Foo")
76
+ assert_equal("FRENCH-BELGIUM:ONE IS 1.", test.test_formatted_string)
77
+
78
+ # Translation Missing in fr_BE_Foo *and* fr_BE (both languages fallback to fr)
79
+ GetText.set_current_locale("fr_BE_Foo")
80
+ assert_equal("FRENCH:Il y a 5 pommes.", test.test_plural)
81
+ GetText.set_current_locale("fr_BE")
82
+ assert_equal("FRENCH:Il y a 5 pommes.", test.test_plural)
83
+ end
84
+
62
85
  def test_empty
63
86
  bindtextdomain("test1", "locale")
64
87
  assert_equal("japanese", gettext("language"))
@@ -53,9 +53,11 @@ class TestLocalePath < Test::Unit::TestCase
53
53
  testdir = File.dirname(File.expand_path(__FILE__))
54
54
  path = GetText::LocalePath.new("test1", "#{testdir}/locale")
55
55
  assert_equal({
56
- "ja" => "#{testdir}/locale/ja/LC_MESSAGES/test1.mo",
57
- "fr" => "#{testdir}/locale/fr/LC_MESSAGES/test1.mo",
58
- "zh_Hant" => "#{testdir}/locale/zh_Hant/LC_MESSAGES/test1.mo"
56
+ "ja" => "#{testdir}/locale/ja/LC_MESSAGES/test1.mo",
57
+ "fr" => "#{testdir}/locale/fr/LC_MESSAGES/test1.mo",
58
+ "fr_BE" => "#{testdir}/locale/fr_BE/LC_MESSAGES/test1.mo",
59
+ "fr_BE_Foo" => "#{testdir}/locale/fr_BE_Foo/LC_MESSAGES/test1.mo",
60
+ "zh_Hant" => "#{testdir}/locale/zh_Hant/LC_MESSAGES/test1.mo"
59
61
  },
60
62
  path.locale_paths)
61
63
  assert_equal("#{testdir}/locale/ja/LC_MESSAGES/test1.mo",
@@ -66,6 +68,12 @@ class TestLocalePath < Test::Unit::TestCase
66
68
  path.current_path(Locale::Tag.parse("ja_JP.UTF-8")))
67
69
  assert_equal(nil,
68
70
  path.current_path(Locale::Tag.parse("en")))
71
+ assert_equal("#{testdir}/locale/fr/LC_MESSAGES/test1.mo",
72
+ path.current_path(Locale::Tag.parse("fr")))
73
+ assert_equal("#{testdir}/locale/fr_BE/LC_MESSAGES/test1.mo",
74
+ path.current_path(Locale::Tag.parse("fr-BE")))
75
+ assert_equal("#{testdir}/locale/fr_BE_Foo/LC_MESSAGES/test1.mo",
76
+ path.current_path(Locale::Tag.parse("fr-BE-Foo")))
69
77
  assert_equal("#{testdir}/locale/zh_Hant/LC_MESSAGES/test1.mo",
70
78
  path.current_path(Locale::Tag.parse("zh-Hant")))
71
79
  end
@@ -73,7 +81,7 @@ class TestLocalePath < Test::Unit::TestCase
73
81
  def test_supported_locales
74
82
  testdir = File.dirname(File.expand_path(__FILE__))
75
83
  path = GetText::LocalePath.new("test1", "#{testdir}/locale")
76
- assert_equal ["fr", "ja", "zh_Hant"], path.supported_locales
84
+ assert_equal ["fr", "fr_BE", "fr_BE_Foo", "ja", "zh_Hant"], path.supported_locales
77
85
 
78
86
  path = GetText::LocalePath.new("plural", "#{testdir}/locale")
79
87
  assert_equal ["cr", "da", "fr", "ir", "ja", "la", "li", "po", "sl"], path.supported_locales
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.1
4
+ version: 3.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-09-08 00:00:00.000000000 Z
12
+ date: 2022-01-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: locale
@@ -25,6 +25,20 @@ dependencies:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: 2.0.5
28
+ - !ruby/object:Gem::Dependency
29
+ name: prime
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
28
42
  - !ruby/object:Gem::Dependency
29
43
  name: text
30
44
  requirement: !ruby/object:Gem::Requirement
@@ -1563,6 +1577,8 @@ files:
1563
1577
  - test/locale/fr/LC_MESSAGES/plural_error.mo
1564
1578
  - test/locale/fr/LC_MESSAGES/test1.mo
1565
1579
  - test/locale/fr/LC_MESSAGES/test2.mo
1580
+ - test/locale/fr_BE/LC_MESSAGES/test1.mo
1581
+ - test/locale/fr_BE_Foo/LC_MESSAGES/test1.mo
1566
1582
  - test/locale/ir/LC_MESSAGES/plural.mo
1567
1583
  - test/locale/ja/LC_MESSAGES/_.mo
1568
1584
  - test/locale/ja/LC_MESSAGES/backslash.mo
@@ -1595,6 +1611,8 @@ files:
1595
1611
  - test/po/fr/plural_error.po
1596
1612
  - test/po/fr/test1.po
1597
1613
  - test/po/fr/test2.po
1614
+ - test/po/fr_BE/test1.po
1615
+ - test/po/fr_BE_Foo/test1.po
1598
1616
  - test/po/hello.pot
1599
1617
  - test/po/ir/plural.po
1600
1618
  - test/po/ja/_.edit.po
@@ -1695,7 +1713,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1695
1713
  - !ruby/object:Gem::Version
1696
1714
  version: '0'
1697
1715
  requirements: []
1698
- rubygems_version: 3.3.0.dev
1716
+ rubygems_version: 3.4.0.dev
1699
1717
  signing_key:
1700
1718
  specification_version: 4
1701
1719
  summary: Gettext is a pure Ruby libary and tools to localize messages.