gettext 3.3.8 → 3.4.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (165) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/Rakefile +1 -3
  4. data/doc/text/news.md +132 -0
  5. data/gettext.gemspec +7 -5
  6. data/lib/gettext/mo.rb +5 -14
  7. data/lib/gettext/po_entry.rb +31 -21
  8. data/lib/gettext/po_parser.rb +65 -59
  9. data/lib/gettext/text_domain_manager.rb +6 -5
  10. data/lib/gettext/tools/msgcat.rb +9 -2
  11. data/lib/gettext/tools/msginit.rb +11 -6
  12. data/lib/gettext/tools/msgmerge.rb +11 -6
  13. data/lib/gettext/tools/parser/erubi.rb +88 -0
  14. data/lib/gettext/tools/task.rb +3 -5
  15. data/lib/gettext/tools/xgettext.rb +15 -4
  16. data/lib/gettext/version.rb +3 -3
  17. data/locale/ja/LC_MESSAGES/gettext.mo +0 -0
  18. data/po/bg/gettext.edit.po +80 -75
  19. data/po/bg/gettext.po +6 -0
  20. data/po/bs/gettext.edit.po +80 -75
  21. data/po/bs/gettext.po +6 -0
  22. data/po/ca/gettext.edit.po +80 -75
  23. data/po/ca/gettext.po +6 -0
  24. data/po/cs/gettext.edit.po +80 -75
  25. data/po/cs/gettext.po +6 -0
  26. data/po/de/gettext.edit.po +80 -75
  27. data/po/de/gettext.po +6 -0
  28. data/po/el/gettext.edit.po +80 -75
  29. data/po/el/gettext.po +6 -0
  30. data/po/eo/gettext.edit.po +80 -75
  31. data/po/eo/gettext.po +6 -0
  32. data/po/es/gettext.edit.po +80 -75
  33. data/po/es/gettext.po +6 -0
  34. data/po/et/gettext.edit.po +80 -75
  35. data/po/et/gettext.po +6 -0
  36. data/po/fr/gettext.edit.po +80 -75
  37. data/po/fr/gettext.po +6 -0
  38. data/po/gettext.pot +92 -83
  39. data/po/hr/gettext.edit.po +80 -75
  40. data/po/hr/gettext.po +6 -0
  41. data/po/hu/gettext.edit.po +80 -75
  42. data/po/hu/gettext.po +6 -0
  43. data/po/it/gettext.edit.po +80 -75
  44. data/po/it/gettext.po +6 -0
  45. data/po/ja/gettext.edit.po +81 -76
  46. data/po/ja/gettext.po +7 -1
  47. data/po/ko/gettext.edit.po +80 -75
  48. data/po/ko/gettext.po +6 -0
  49. data/po/lv/gettext.edit.po +80 -75
  50. data/po/lv/gettext.po +6 -0
  51. data/po/nb/gettext.edit.po +80 -75
  52. data/po/nb/gettext.po +6 -0
  53. data/po/nl/gettext.edit.po +80 -75
  54. data/po/nl/gettext.po +6 -0
  55. data/po/pt_BR/gettext.edit.po +80 -75
  56. data/po/pt_BR/gettext.po +6 -0
  57. data/po/ru/gettext.edit.po +80 -75
  58. data/po/ru/gettext.po +6 -0
  59. data/po/sr/gettext.edit.po +80 -75
  60. data/po/sr/gettext.po +6 -0
  61. data/po/sv/gettext.edit.po +80 -72
  62. data/po/sv/gettext.po +6 -0
  63. data/po/uk/gettext.edit.po +80 -75
  64. data/po/uk/gettext.po +6 -0
  65. data/po/vi/gettext.edit.po +80 -75
  66. data/po/vi/gettext.po +6 -0
  67. data/po/zh/gettext.edit.po +80 -75
  68. data/po/zh/gettext.po +6 -0
  69. data/po/zh_TW/gettext.edit.po +80 -75
  70. data/po/zh_TW/gettext.po +6 -0
  71. data/samples/cgi/po/helloerb1.pot +3 -3
  72. data/samples/cgi/po/helloerb2.pot +3 -3
  73. data/samples/cgi/po/hellolib.pot +3 -3
  74. data/samples/cgi/po/main.pot +3 -3
  75. data/samples/po/bg/hello_gtk_builder.edit.po +15 -0
  76. data/samples/po/bg/hello_gtk_builder.po +12 -0
  77. data/samples/po/bs/hello_gtk_builder.edit.po +15 -0
  78. data/samples/po/bs/hello_gtk_builder.po +12 -0
  79. data/samples/po/ca/hello_gtk_builder.edit.po +15 -0
  80. data/samples/po/ca/hello_gtk_builder.po +12 -0
  81. data/samples/po/cs/hello_gtk_builder.edit.po +15 -0
  82. data/samples/po/cs/hello_gtk_builder.po +12 -0
  83. data/samples/po/de/hello_gtk_builder.edit.po +15 -0
  84. data/samples/po/de/hello_gtk_builder.po +12 -0
  85. data/samples/po/el/hello_gtk_builder.edit.po +15 -0
  86. data/samples/po/el/hello_gtk_builder.po +12 -0
  87. data/samples/po/eo/hello_gtk_builder.edit.po +15 -0
  88. data/samples/po/eo/hello_gtk_builder.po +12 -0
  89. data/samples/po/es/hello_gtk_builder.edit.po +15 -0
  90. data/samples/po/es/hello_gtk_builder.po +12 -0
  91. data/samples/po/fr/hello_gtk_builder.edit.po +15 -0
  92. data/samples/po/fr/hello_gtk_builder.po +12 -0
  93. data/samples/po/hello.pot +3 -3
  94. data/samples/po/hello2.pot +4 -4
  95. data/samples/po/hello_glade2.pot +8 -5
  96. data/samples/po/hello_gtk2.pot +4 -4
  97. data/samples/po/hello_gtk_builder.pot +18 -4
  98. data/samples/po/hello_noop.pot +4 -4
  99. data/samples/po/hello_plural.pot +4 -4
  100. data/samples/po/hello_tk.pot +4 -4
  101. data/samples/po/hr/hello_gtk_builder.edit.po +15 -0
  102. data/samples/po/hr/hello_gtk_builder.po +12 -0
  103. data/samples/po/hu/hello_gtk_builder.edit.po +15 -0
  104. data/samples/po/hu/hello_gtk_builder.po +12 -0
  105. data/samples/po/it/hello_gtk_builder.edit.po +15 -0
  106. data/samples/po/it/hello_gtk_builder.po +12 -0
  107. data/samples/po/ja/hello_gtk_builder.edit.po +15 -0
  108. data/samples/po/ja/hello_gtk_builder.po +12 -0
  109. data/samples/po/ko/hello_gtk_builder.edit.po +15 -0
  110. data/samples/po/ko/hello_gtk_builder.po +12 -0
  111. data/samples/po/lv/hello_gtk_builder.edit.po +15 -0
  112. data/samples/po/lv/hello_gtk_builder.po +12 -0
  113. data/samples/po/nb/hello_gtk_builder.edit.po +15 -0
  114. data/samples/po/nb/hello_gtk_builder.po +12 -0
  115. data/samples/po/nl/hello_gtk_builder.edit.po +15 -0
  116. data/samples/po/nl/hello_gtk_builder.po +12 -0
  117. data/samples/po/pt_BR/hello_gtk_builder.edit.po +15 -0
  118. data/samples/po/pt_BR/hello_gtk_builder.po +12 -0
  119. data/samples/po/ru/hello_gtk_builder.edit.po +15 -0
  120. data/samples/po/ru/hello_gtk_builder.po +12 -0
  121. data/samples/po/sr/hello_gtk_builder.edit.po +15 -0
  122. data/samples/po/sr/hello_gtk_builder.po +12 -0
  123. data/samples/po/sv/hello_gtk_builder.edit.po +15 -0
  124. data/samples/po/sv/hello_gtk_builder.po +12 -0
  125. data/samples/po/uk/hello_gtk_builder.edit.po +15 -0
  126. data/samples/po/uk/hello_gtk_builder.po +12 -0
  127. data/samples/po/vi/hello_gtk_builder.edit.po +15 -0
  128. data/samples/po/vi/hello_gtk_builder.po +12 -0
  129. data/samples/po/zh/hello_gtk_builder.edit.po +15 -0
  130. data/samples/po/zh/hello_gtk_builder.po +12 -0
  131. data/samples/po/zh_TW/hello_gtk_builder.edit.po +15 -0
  132. data/samples/po/zh_TW/hello_gtk_builder.po +12 -0
  133. data/src/po_parser.ry +48 -42
  134. data/test/fixtures/erb/case.rhtml +16 -0
  135. data/test/fixtures/simple.rb +4 -0
  136. data/test/locale/fr/LC_MESSAGES/test1.mo +0 -0
  137. data/test/locale/fr_BE/LC_MESSAGES/test1.mo +0 -0
  138. data/test/locale/fr_BE_Foo/LC_MESSAGES/test1.mo +0 -0
  139. data/test/locale/ja/LC_MESSAGES/_.mo +0 -0
  140. data/test/po/_.pot +3 -3
  141. data/test/po/backslash.pot +6 -4
  142. data/test/po/fr/test1.po +7 -0
  143. data/test/po/fr_BE/test1.po +24 -0
  144. data/test/po/fr_BE_Foo/test1.po +20 -0
  145. data/test/po/hello.pot +3 -3
  146. data/test/po/ja/_.edit.po +3 -3
  147. data/test/po/ja/_.po +15 -0
  148. data/test/po/ja/hello.edit.po +0 -1
  149. data/test/po/non_ascii.pot +4 -4
  150. data/test/po/np_.pot +3 -3
  151. data/test/po/ns_.pot +3 -3
  152. data/test/po/p_.pot +3 -3
  153. data/test/po/s_.pot +3 -3
  154. data/test/po/untranslated.pot +4 -4
  155. data/test/test_gettext.rb +23 -0
  156. data/test/test_locale_path.rb +12 -4
  157. data/test/test_parser.rb +62 -0
  158. data/test/test_po_entry.rb +20 -4
  159. data/test/test_po_parser.rb +44 -1
  160. data/test/tools/test_msgcat.rb +21 -1
  161. data/test/tools/test_msginit.rb +7 -2
  162. data/test/tools/test_msgmerge.rb +41 -3
  163. data/test/tools/test_xgettext.rb +100 -3
  164. metadata +49 -15
  165. data/test/fixtures/gtk_builder_ui_definitions.ui~ +0 -68
@@ -17,3 +17,18 @@ msgstr ""
17
17
  "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4"
18
18
  " && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19
19
  "\n"
20
+
21
+ #: ../hello_gtk_builder.ui:7
22
+ msgid "window1"
23
+ msgstr ""
24
+
25
+ #: ../hello_gtk_builder.ui:16
26
+ msgid ""
27
+ "first line\n"
28
+ "second line\n"
29
+ "third line"
30
+ msgstr ""
31
+
32
+ #: ../hello_gtk_builder.ui:28
33
+ msgid "<Hello world>"
34
+ msgstr ""
@@ -17,3 +17,15 @@ msgstr ""
17
17
  "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4"
18
18
  " && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19
19
  "\n"
20
+
21
+ msgid "window1"
22
+ msgstr ""
23
+
24
+ msgid ""
25
+ "first line\n"
26
+ "second line\n"
27
+ "third line"
28
+ msgstr ""
29
+
30
+ msgid "<Hello world>"
31
+ msgstr ""
@@ -17,3 +17,18 @@ msgstr ""
17
17
  "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4"
18
18
  " && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19
19
  "\n"
20
+
21
+ #: ../hello_gtk_builder.ui:7
22
+ msgid "window1"
23
+ msgstr ""
24
+
25
+ #: ../hello_gtk_builder.ui:16
26
+ msgid ""
27
+ "first line\n"
28
+ "second line\n"
29
+ "third line"
30
+ msgstr ""
31
+
32
+ #: ../hello_gtk_builder.ui:28
33
+ msgid "<Hello world>"
34
+ msgstr ""
@@ -17,3 +17,15 @@ msgstr ""
17
17
  "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4"
18
18
  " && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19
19
  "\n"
20
+
21
+ msgid "window1"
22
+ msgstr ""
23
+
24
+ msgid ""
25
+ "first line\n"
26
+ "second line\n"
27
+ "third line"
28
+ msgstr ""
29
+
30
+ msgid "<Hello world>"
31
+ msgstr ""
@@ -16,3 +16,18 @@ msgstr ""
16
16
  "Content-Transfer-Encoding: 8bit\n"
17
17
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
18
18
  "\n"
19
+
20
+ #: ../hello_gtk_builder.ui:7
21
+ msgid "window1"
22
+ msgstr ""
23
+
24
+ #: ../hello_gtk_builder.ui:16
25
+ msgid ""
26
+ "first line\n"
27
+ "second line\n"
28
+ "third line"
29
+ msgstr ""
30
+
31
+ #: ../hello_gtk_builder.ui:28
32
+ msgid "<Hello world>"
33
+ msgstr ""
@@ -16,3 +16,15 @@ msgstr ""
16
16
  "Content-Transfer-Encoding: 8bit\n"
17
17
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
18
18
  "\n"
19
+
20
+ msgid "window1"
21
+ msgstr ""
22
+
23
+ msgid ""
24
+ "first line\n"
25
+ "second line\n"
26
+ "third line"
27
+ msgstr ""
28
+
29
+ msgid "<Hello world>"
30
+ msgstr ""
@@ -17,3 +17,18 @@ msgstr ""
17
17
  "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4"
18
18
  " && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19
19
  "\n"
20
+
21
+ #: ../hello_gtk_builder.ui:7
22
+ msgid "window1"
23
+ msgstr ""
24
+
25
+ #: ../hello_gtk_builder.ui:16
26
+ msgid ""
27
+ "first line\n"
28
+ "second line\n"
29
+ "third line"
30
+ msgstr ""
31
+
32
+ #: ../hello_gtk_builder.ui:28
33
+ msgid "<Hello world>"
34
+ msgstr ""
@@ -17,3 +17,15 @@ msgstr ""
17
17
  "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4"
18
18
  " && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19
19
  "\n"
20
+
21
+ msgid "window1"
22
+ msgstr ""
23
+
24
+ msgid ""
25
+ "first line\n"
26
+ "second line\n"
27
+ "third line"
28
+ msgstr ""
29
+
30
+ msgid "<Hello world>"
31
+ msgstr ""
@@ -16,3 +16,18 @@ msgstr ""
16
16
  "Content-Transfer-Encoding: 8bit\n"
17
17
  "Plural-Forms: nplurals=1; plural=0;\n"
18
18
  "\n"
19
+
20
+ #: ../hello_gtk_builder.ui:7
21
+ msgid "window1"
22
+ msgstr ""
23
+
24
+ #: ../hello_gtk_builder.ui:16
25
+ msgid ""
26
+ "first line\n"
27
+ "second line\n"
28
+ "third line"
29
+ msgstr ""
30
+
31
+ #: ../hello_gtk_builder.ui:28
32
+ msgid "<Hello world>"
33
+ msgstr ""
@@ -16,3 +16,15 @@ msgstr ""
16
16
  "Content-Transfer-Encoding: 8bit\n"
17
17
  "Plural-Forms: nplurals=1; plural=0;\n"
18
18
  "\n"
19
+
20
+ msgid "window1"
21
+ msgstr ""
22
+
23
+ msgid ""
24
+ "first line\n"
25
+ "second line\n"
26
+ "third line"
27
+ msgstr ""
28
+
29
+ msgid "<Hello world>"
30
+ msgstr ""
@@ -16,3 +16,18 @@ msgstr ""
16
16
  "Content-Transfer-Encoding: 8bit\n"
17
17
  "Plural-Forms: nplurals=1; plural=0;\n"
18
18
  "\n"
19
+
20
+ #: ../hello_gtk_builder.ui:7
21
+ msgid "window1"
22
+ msgstr ""
23
+
24
+ #: ../hello_gtk_builder.ui:16
25
+ msgid ""
26
+ "first line\n"
27
+ "second line\n"
28
+ "third line"
29
+ msgstr ""
30
+
31
+ #: ../hello_gtk_builder.ui:28
32
+ msgid "<Hello world>"
33
+ msgstr ""
@@ -16,3 +16,15 @@ msgstr ""
16
16
  "Content-Transfer-Encoding: 8bit\n"
17
17
  "Plural-Forms: nplurals=1; plural=0;\n"
18
18
  "\n"
19
+
20
+ msgid "window1"
21
+ msgstr ""
22
+
23
+ msgid ""
24
+ "first line\n"
25
+ "second line\n"
26
+ "third line"
27
+ msgstr ""
28
+
29
+ msgid "<Hello world>"
30
+ msgstr ""
@@ -16,3 +16,18 @@ msgstr ""
16
16
  "Content-Transfer-Encoding: 8bit\n"
17
17
  "Plural-Forms: nplurals=1; plural=0;\n"
18
18
  "\n"
19
+
20
+ #: ../hello_gtk_builder.ui:7
21
+ msgid "window1"
22
+ msgstr ""
23
+
24
+ #: ../hello_gtk_builder.ui:16
25
+ msgid ""
26
+ "first line\n"
27
+ "second line\n"
28
+ "third line"
29
+ msgstr ""
30
+
31
+ #: ../hello_gtk_builder.ui:28
32
+ msgid "<Hello world>"
33
+ msgstr ""
@@ -16,3 +16,15 @@ msgstr ""
16
16
  "Content-Transfer-Encoding: 8bit\n"
17
17
  "Plural-Forms: nplurals=1; plural=0;\n"
18
18
  "\n"
19
+
20
+ msgid "window1"
21
+ msgstr ""
22
+
23
+ msgid ""
24
+ "first line\n"
25
+ "second line\n"
26
+ "third line"
27
+ msgstr ""
28
+
29
+ msgid "<Hello world>"
30
+ msgstr ""
data/src/po_parser.ry CHANGED
@@ -2,9 +2,9 @@
2
2
  #
3
3
  # po_parser.ry - ruby version of msgfmt
4
4
  #
5
- # Copyright (C) 2002-2008 Masao Mutoh <mutomasa at gmail.com>
6
- # Copyright (C) 2012-2017 Kouhei Sutou <kou@clear-code.com>
7
- # Copyright (C) 2012-2013 Haruka Yoshihara <yoshihara@clear-code.com>
5
+ # Copyright (C) 2002-2008 Masao Mutoh <mutomasa at gmail.com>
6
+ # Copyright (C) 2012-2023 Sutou Kouhei <kou@clear-code.com>
7
+ # Copyright (C) 2012-2013 Haruka Yoshihara <yoshihara@clear-code.com>
8
8
  #
9
9
  # You may redistribute it and/or modify it under the same
10
10
  # license terms as Ruby or LGPL.
@@ -24,7 +24,7 @@ class GetText::POParser
24
24
  msgctxt
25
25
  : MSGCTXT string_list
26
26
  {
27
- @msgctxt = unescape(val[1])
27
+ @msgctxt = val[1]
28
28
  }
29
29
  ;
30
30
 
@@ -36,9 +36,8 @@ class GetText::POParser
36
36
  single_message
37
37
  : MSGID string_list MSGSTR string_list
38
38
  {
39
- msgid_raw = val[1]
40
- msgid = unescape(msgid_raw)
41
- msgstr = unescape(val[3])
39
+ msgid = val[1]
40
+ msgstr = val[3]
42
41
  use_message_p = true
43
42
  if @fuzzy and not msgid.empty?
44
43
  use_message_p = (not ignore_fuzzy?)
@@ -48,11 +47,15 @@ class GetText::POParser
48
47
  else
49
48
  $stderr.print _("Warning: fuzzy message was used.\n")
50
49
  end
51
- $stderr.print " #{@po_file}: msgid '#{msgid_raw}'\n"
50
+ $stderr.print " #{@po_file}: msgid '#{msgid}'\n"
52
51
  end
53
52
  end
54
53
  @fuzzy = false
55
- on_message(msgid, msgstr) if use_message_p
54
+ if use_message_p
55
+ on_message(msgid, msgstr)
56
+ else
57
+ clear
58
+ end
56
59
  result = ""
57
60
  }
58
61
 
@@ -144,31 +147,26 @@ require "gettext/po"
144
147
  @report_warning
145
148
  end
146
149
 
147
- def unescape(orig)
148
- ret = orig.gsub(/\\n/, "\n")
149
- ret.gsub!(/\\t/, "\t")
150
- ret.gsub!(/\\r/, "\r")
151
- ret.gsub!(/\\"/, "\"")
152
- ret
150
+ def unescape(string)
151
+ string.gsub(/\\(.)/) do
152
+ escaped_character = $1
153
+ case escaped_character
154
+ when "t"
155
+ "\t"
156
+ when "r"
157
+ "\r"
158
+ when "n"
159
+ "\n"
160
+ else
161
+ escaped_character
162
+ end
163
+ end
153
164
  end
154
165
  private :unescape
155
166
 
156
- def unescape_string(string)
157
- string.gsub(/\\\\/, "\\")
158
- end
159
- private :unescape_string
160
-
161
167
  def parse(str, data)
162
- @translator_comments = []
163
- @extracted_comments = []
164
- @references = []
165
- @flags = []
166
- @previous = []
167
- @comments = []
168
+ clear
168
169
  @data = data
169
- @fuzzy = false
170
- @msgctxt = nil
171
- @msgid_plural = nil
172
170
 
173
171
  str = str.strip
174
172
  @q = []
@@ -202,7 +200,7 @@ require "gettext/po"
202
200
  @q.push [:COMMENT, $&]
203
201
  str = $'
204
202
  when /\A\"(.*)\"/
205
- @q.push [:STRING, unescape_string($1)]
203
+ @q.push [:STRING, unescape($1)]
206
204
  str = $'
207
205
  else
208
206
  #c = str[0,1]
@@ -254,15 +252,7 @@ require "gettext/po"
254
252
  @data.set_comment(msgid, format_comment(@comments))
255
253
  end
256
254
 
257
- @translator_comments = []
258
- @extracted_comments = []
259
- @references = []
260
- @flags = []
261
- @previous = []
262
- @references = []
263
- @comments.clear
264
- @msgctxt = nil
265
- @msgid_plural = nil
255
+ clear
266
256
  end
267
257
 
268
258
  def format_comment(comments)
@@ -274,7 +264,11 @@ require "gettext/po"
274
264
  end
275
265
 
276
266
  def on_comment(comment)
277
- @fuzzy = true if (/fuzzy/ =~ comment)
267
+ if comment.start_with?(POFormat::FLAG_MARK)
268
+ content = comment[POFormat::FLAG_MARK.size..-1]
269
+ flags = parse_flags_line(content)
270
+ @fuzzy = flags.include?("fuzzy")
271
+ end
278
272
  if @data.instance_of?(PO)
279
273
  if comment == "#"
280
274
  @translator_comments << ""
@@ -289,7 +283,7 @@ require "gettext/po"
289
283
  when POFormat::REFERENCE_COMMENT_MARK
290
284
  @references.concat(parse_references_line(content))
291
285
  when POFormat::FLAG_MARK
292
- @flags.concat(parse_flags_line(content))
286
+ @flags.concat(flags)
293
287
  when POFormat::PREVIOUS_COMMENT_MARK
294
288
  @previous << content
295
289
  else
@@ -358,7 +352,19 @@ require "gettext/po"
358
352
  end
359
353
 
360
354
  def parse_flags_line(line)
361
- line.split(/\s+/)
355
+ line.split(",").collect(&:strip)
356
+ end
357
+
358
+ def clear
359
+ @translator_comments = []
360
+ @extracted_comments = []
361
+ @references = []
362
+ @flags = []
363
+ @previous = []
364
+ @references = []
365
+ @comments = []
366
+ @msgctxt = nil
367
+ @msgid_plural = nil
362
368
  end
363
369
  ---- footer
364
370
 
@@ -0,0 +1,16 @@
1
+ <%
2
+ require 'gettext'
3
+ include GetText
4
+ bindtextdomain("helloerb", :path => "locale")
5
+ %>
6
+ <html>
7
+ <head>
8
+ <title></title>
9
+ </head>
10
+ <body>
11
+ <%= _('Hello') %>
12
+ <% case 1 %>
13
+ <% end %>
14
+ <%= _('World') %>
15
+ </body>
16
+ </html>
@@ -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
Binary file
data/test/po/_.pot CHANGED
@@ -6,10 +6,10 @@
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: _ 3.3.8\n"
9
+ "Project-Id-Version: _ 3.4.4\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2021-06-09 11:31+0900\n"
12
- "PO-Revision-Date: 2021-06-09 11:31+0900\n"
11
+ "POT-Creation-Date: 2023-06-11 06:20+0900\n"
12
+ "PO-Revision-Date: 2023-06-11 06:20+0900\n"
13
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
15
15
  "Language: \n"
@@ -1,16 +1,18 @@
1
1
  # SOME DESCRIPTIVE TITLE.
2
2
  # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
- # This file is distributed under the same license as the PACKAGE package.
3
+ # This file is distributed under the same license as the backslash package.
4
4
  # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
5
  #
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: PACKAGE VERSION\n"
10
- "POT-Creation-Date: 2012-08-19 22:58+0900\n"
11
- "PO-Revision-Date: 2012-08-19 22:58+0900\n"
9
+ "Project-Id-Version: backslash 3.4.4\n"
10
+ "Report-Msgid-Bugs-To: \n"
11
+ "POT-Creation-Date: 2023-06-11 06:20+0900\n"
12
+ "PO-Revision-Date: 2023-06-11 06:20+0900\n"
12
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
15
+ "Language: \n"
14
16
  "MIME-Version: 1.0\n"
15
17
  "Content-Type: text/plain; charset=UTF-8\n"
16
18
  "Content-Transfer-Encoding: 8bit\n"
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/po/hello.pot CHANGED
@@ -6,10 +6,10 @@
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: hello 3.1.7\n"
9
+ "Project-Id-Version: hello 3.4.4\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2015-09-22 14:05+0900\n"
12
- "PO-Revision-Date: 2015-09-22 14:05+0900\n"
11
+ "POT-Creation-Date: 2023-06-11 06:20+0900\n"
12
+ "PO-Revision-Date: 2023-06-11 06:20+0900\n"
13
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
15
15
  "Language: \n"
data/test/po/ja/_.edit.po CHANGED
@@ -5,7 +5,7 @@
5
5
  msgid ""
6
6
  msgstr ""
7
7
  "Project-Id-Version: PACKAGE VERSION\n"
8
- "PO-Revision-Date: 2018-06-17 07:37+0900\n"
8
+ "PO-Revision-Date: 2023-10-22 06:37+0900\n"
9
9
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
10
10
  "Language-Team: LANGUAGE <LL@li.org>\n"
11
11
  "MIME-Version: 1.0\n"
@@ -84,8 +84,8 @@ msgid "#"
84
84
  msgstr ""
85
85
 
86
86
  #: ../fixtures/_.rb:96
87
- msgid "\taaa'bbb\\ccc"
88
- msgstr ""
87
+ msgid "\\taaa'bbb\\ccc"
88
+ msgstr "AAA"
89
89
 
90
90
  #: ../fixtures/_.rb:100
91
91
  msgid ""
data/test/po/ja/_.po CHANGED
@@ -133,3 +133,18 @@ msgstr "ONE LINE"
133
133
  msgid ""
134
134
  "one new line\n"
135
135
  msgstr ""
136
+
137
+ msgid "in_symbol_array"
138
+ msgstr ""
139
+
140
+ msgid "hello world"
141
+ msgstr ""
142
+
143
+ msgid "in_string_array"
144
+ msgstr ""
145
+
146
+ msgid "Hello"
147
+ msgstr ""
148
+
149
+ msgid "World"
150
+ msgstr ""
@@ -7,7 +7,6 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: hello 3.1.7\n"
9
9
  "Report-Msgid-Bugs-To: \n"
10
- "POT-Creation-Date: 2015-09-22 14:05+0900\n"
11
10
  "PO-Revision-Date: 2015-09-22 14:06+0900\n"
12
11
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
12
  "Language-Team: Japanese\n"
@@ -1,15 +1,15 @@
1
1
  # SOME DESCRIPTIVE TITLE.
2
2
  # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
- # This file is distributed under the same license as the gettext package.
3
+ # This file is distributed under the same license as the non_ascii package.
4
4
  # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
5
  #
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: gettext 3.0.0\n"
9
+ "Project-Id-Version: non_ascii 3.4.4\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2013-08-30 22:00+0900\n"
12
- "PO-Revision-Date: 2013-08-30 22:00+0900\n"
11
+ "POT-Creation-Date: 2023-06-11 06:20+0900\n"
12
+ "PO-Revision-Date: 2023-06-11 06:20+0900\n"
13
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
15
15
  "Language: \n"
data/test/po/np_.pot CHANGED
@@ -6,10 +6,10 @@
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: np_ 3.3.8\n"
9
+ "Project-Id-Version: np_ 3.4.4\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2021-06-09 11:31+0900\n"
12
- "PO-Revision-Date: 2021-06-09 11:31+0900\n"
11
+ "POT-Creation-Date: 2023-06-11 06:20+0900\n"
12
+ "PO-Revision-Date: 2023-06-11 06:20+0900\n"
13
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
15
15
  "Language: \n"