gettext 3.2.9 → 3.4.9
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 +4 -4
- data/README.md +276 -198
- data/Rakefile +7 -4
- data/doc/text/news.md +451 -0
- data/gettext.gemspec +10 -7
- data/lib/gettext/locale_path.rb +17 -9
- data/lib/gettext/mo.rb +12 -19
- data/lib/gettext/po.rb +4 -4
- data/lib/gettext/po_entry.rb +47 -27
- data/lib/gettext/po_parser.rb +65 -59
- data/lib/gettext/text_domain.rb +1 -1
- data/lib/gettext/text_domain_manager.rb +6 -5
- data/lib/gettext/tools/msgcat.rb +9 -2
- data/lib/gettext/tools/msginit.rb +226 -54
- data/lib/gettext/tools/msgmerge.rb +24 -6
- data/lib/gettext/tools/parser/erb.rb +9 -1
- data/lib/gettext/tools/parser/erubi.rb +88 -0
- data/lib/gettext/tools/parser/glade.rb +38 -40
- data/lib/gettext/tools/parser/gtk_builder_ui_definitions.rb +129 -0
- data/lib/gettext/tools/parser/ruby.rb +288 -221
- data/lib/gettext/tools/task.rb +4 -5
- data/lib/gettext/tools/xgettext.rb +21 -10
- data/lib/gettext/version.rb +3 -3
- data/locale/bg/LC_MESSAGES/gettext.mo +0 -0
- data/locale/bs/LC_MESSAGES/gettext.mo +0 -0
- data/locale/ca/LC_MESSAGES/gettext.mo +0 -0
- data/locale/cs/LC_MESSAGES/gettext.mo +0 -0
- data/locale/de/LC_MESSAGES/gettext.mo +0 -0
- data/locale/el/LC_MESSAGES/gettext.mo +0 -0
- data/locale/eo/LC_MESSAGES/gettext.mo +0 -0
- data/locale/es/LC_MESSAGES/gettext.mo +0 -0
- data/locale/et/LC_MESSAGES/gettext.mo +0 -0
- data/locale/fr/LC_MESSAGES/gettext.mo +0 -0
- data/locale/hr/LC_MESSAGES/gettext.mo +0 -0
- data/locale/hu/LC_MESSAGES/gettext.mo +0 -0
- data/locale/it/LC_MESSAGES/gettext.mo +0 -0
- data/locale/ja/LC_MESSAGES/gettext.mo +0 -0
- data/locale/ko/LC_MESSAGES/gettext.mo +0 -0
- data/locale/lv/LC_MESSAGES/gettext.mo +0 -0
- data/locale/nb/LC_MESSAGES/gettext.mo +0 -0
- data/locale/nl/LC_MESSAGES/gettext.mo +0 -0
- data/locale/pt_BR/LC_MESSAGES/gettext.mo +0 -0
- data/locale/ru/LC_MESSAGES/gettext.mo +0 -0
- data/locale/sr/LC_MESSAGES/gettext.mo +0 -0
- data/locale/uk/LC_MESSAGES/gettext.mo +0 -0
- data/locale/vi/LC_MESSAGES/gettext.mo +0 -0
- data/locale/zh/LC_MESSAGES/gettext.mo +0 -0
- data/locale/zh_TW/LC_MESSAGES/gettext.mo +0 -0
- data/po/bg/gettext.edit.po +81 -572
- data/po/bg/gettext.po +7 -409
- data/po/bs/gettext.edit.po +81 -572
- data/po/bs/gettext.po +7 -409
- data/po/ca/gettext.edit.po +81 -572
- data/po/ca/gettext.po +7 -409
- data/po/cs/gettext.edit.po +81 -572
- data/po/cs/gettext.po +7 -409
- data/po/de/gettext.edit.po +81 -572
- data/po/de/gettext.po +7 -409
- data/po/el/gettext.edit.po +81 -572
- data/po/el/gettext.po +7 -409
- data/po/eo/gettext.edit.po +81 -572
- data/po/eo/gettext.po +7 -409
- data/po/es/gettext.edit.po +81 -572
- data/po/es/gettext.po +7 -409
- data/po/et/gettext.edit.po +81 -572
- data/po/et/gettext.po +7 -409
- data/po/fr/gettext.edit.po +81 -572
- data/po/fr/gettext.po +7 -409
- data/po/gettext.pot +93 -645
- data/po/hr/gettext.edit.po +81 -572
- data/po/hr/gettext.po +7 -409
- data/po/hu/gettext.edit.po +81 -572
- data/po/hu/gettext.po +7 -409
- data/po/it/gettext.edit.po +81 -572
- data/po/it/gettext.po +7 -409
- data/po/ja/gettext.edit.po +83 -574
- data/po/ja/gettext.po +9 -411
- data/po/ko/gettext.edit.po +81 -572
- data/po/ko/gettext.po +7 -409
- data/po/lv/gettext.edit.po +81 -572
- data/po/lv/gettext.po +7 -409
- data/po/nb/gettext.edit.po +81 -572
- data/po/nb/gettext.po +7 -409
- data/po/nl/gettext.edit.po +81 -572
- data/po/nl/gettext.po +7 -409
- data/po/pt_BR/gettext.edit.po +81 -572
- data/po/pt_BR/gettext.po +7 -409
- data/po/ru/gettext.edit.po +81 -572
- data/po/ru/gettext.po +7 -409
- data/po/sr/gettext.edit.po +81 -572
- data/po/sr/gettext.po +7 -409
- data/po/sv/gettext.edit.po +81 -572
- data/po/sv/gettext.po +7 -409
- data/po/uk/gettext.edit.po +81 -572
- data/po/uk/gettext.po +7 -409
- data/po/vi/gettext.edit.po +81 -572
- data/po/vi/gettext.po +7 -409
- data/po/zh/gettext.edit.po +81 -572
- data/po/zh/gettext.po +7 -409
- data/po/zh_TW/gettext.edit.po +81 -572
- data/po/zh_TW/gettext.po +7 -409
- data/samples/cgi/po/helloerb1.pot +3 -3
- data/samples/cgi/po/helloerb2.pot +3 -3
- data/samples/cgi/po/hellolib.pot +3 -3
- data/samples/cgi/po/main.pot +3 -3
- data/samples/po/bg/hello_gtk_builder.edit.po +15 -0
- data/samples/po/bg/hello_gtk_builder.po +12 -0
- data/samples/po/bs/hello_gtk_builder.edit.po +15 -0
- data/samples/po/bs/hello_gtk_builder.po +12 -0
- data/samples/po/ca/hello_gtk_builder.edit.po +15 -0
- data/samples/po/ca/hello_gtk_builder.po +12 -0
- data/samples/po/cs/hello_gtk_builder.edit.po +15 -0
- data/samples/po/cs/hello_gtk_builder.po +12 -0
- data/samples/po/de/hello_gtk_builder.edit.po +15 -0
- data/samples/po/de/hello_gtk_builder.po +12 -0
- data/samples/po/el/hello_gtk_builder.edit.po +15 -0
- data/samples/po/el/hello_gtk_builder.po +12 -0
- data/samples/po/eo/hello_gtk_builder.edit.po +15 -0
- data/samples/po/eo/hello_gtk_builder.po +12 -0
- data/samples/po/es/hello_gtk_builder.edit.po +15 -0
- data/samples/po/es/hello_gtk_builder.po +12 -0
- data/samples/po/fr/hello_gtk_builder.edit.po +15 -0
- data/samples/po/fr/hello_gtk_builder.po +12 -0
- data/samples/po/hello.pot +3 -3
- data/samples/po/hello2.pot +4 -4
- data/samples/po/hello_glade2.pot +8 -5
- data/samples/po/hello_gtk2.pot +4 -4
- data/samples/po/hello_gtk_builder.pot +18 -4
- data/samples/po/hello_noop.pot +4 -4
- data/samples/po/hello_plural.pot +4 -4
- data/samples/po/hello_tk.pot +4 -4
- data/samples/po/hr/hello_gtk_builder.edit.po +15 -0
- data/samples/po/hr/hello_gtk_builder.po +12 -0
- data/samples/po/hu/hello_gtk_builder.edit.po +15 -0
- data/samples/po/hu/hello_gtk_builder.po +12 -0
- data/samples/po/it/hello_gtk_builder.edit.po +15 -0
- data/samples/po/it/hello_gtk_builder.po +12 -0
- data/samples/po/ja/hello_gtk_builder.edit.po +15 -0
- data/samples/po/ja/hello_gtk_builder.po +12 -0
- data/samples/po/ko/hello_gtk_builder.edit.po +15 -0
- data/samples/po/ko/hello_gtk_builder.po +12 -0
- data/samples/po/lv/hello_gtk_builder.edit.po +15 -0
- data/samples/po/lv/hello_gtk_builder.po +12 -0
- data/samples/po/nb/hello_gtk_builder.edit.po +15 -0
- data/samples/po/nb/hello_gtk_builder.po +12 -0
- data/samples/po/nl/hello_gtk_builder.edit.po +15 -0
- data/samples/po/nl/hello_gtk_builder.po +12 -0
- data/samples/po/pt_BR/hello_gtk_builder.edit.po +15 -0
- data/samples/po/pt_BR/hello_gtk_builder.po +12 -0
- data/samples/po/ru/hello_gtk_builder.edit.po +15 -0
- data/samples/po/ru/hello_gtk_builder.po +12 -0
- data/samples/po/sr/hello_gtk_builder.edit.po +15 -0
- data/samples/po/sr/hello_gtk_builder.po +12 -0
- data/samples/po/sv/hello_gtk_builder.edit.po +15 -0
- data/samples/po/sv/hello_gtk_builder.po +12 -0
- data/samples/po/uk/hello_gtk_builder.edit.po +15 -0
- data/samples/po/uk/hello_gtk_builder.po +12 -0
- data/samples/po/vi/hello_gtk_builder.edit.po +15 -0
- data/samples/po/vi/hello_gtk_builder.po +12 -0
- data/samples/po/zh/hello_gtk_builder.edit.po +15 -0
- data/samples/po/zh/hello_gtk_builder.po +12 -0
- data/samples/po/zh_TW/hello_gtk_builder.edit.po +15 -0
- data/samples/po/zh_TW/hello_gtk_builder.po +12 -0
- data/src/po_parser.ry +48 -42
- data/test/fixtures/_/backtick.rb +30 -0
- data/test/fixtures/_/block_parameter.rb +2 -2
- data/test/fixtures/_/double_quote_in_double_quote.rb +2 -2
- data/test/fixtures/_/double_quote_in_single_quote.rb +2 -2
- data/test/fixtures/_/literal_concatenation_with_continuation_line.rb +2 -2
- data/test/fixtures/_/middle_new_line.rb +2 -2
- data/test/fixtures/_/multiple_lines_literal.rb +2 -2
- data/test/fixtures/_/multiple_messages_in_same_line.rb +2 -2
- data/test/fixtures/_/multiple_same_messages.rb +2 -2
- data/test/fixtures/_/one_line.rb +2 -2
- data/test/fixtures/_/one_new_line.rb +2 -2
- data/test/fixtures/_/percent_strings.rb +55 -0
- data/test/fixtures/_/pipe.rb +32 -0
- data/test/{gettext-test-utils.rb → fixtures/_/quoted_symbol.rb} +13 -23
- data/test/fixtures/_.rb +10 -1
- data/test/fixtures/erb/case.rhtml +16 -0
- data/test/fixtures/erb/minus.rhtml +12 -0
- data/test/fixtures/erb/non_ascii.rhtml +1 -0
- data/test/fixtures/glade/3.glade +63 -0
- data/test/fixtures/gtk_builder_ui_definitions.ui +68 -0
- data/test/fixtures/multi_text_domain.rb +12 -12
- data/test/fixtures/np_.rb +1 -1
- data/test/fixtures/ns_/custom.rb +2 -2
- data/test/fixtures/ns_.rb +1 -1
- data/test/fixtures/p_.rb +1 -1
- data/test/fixtures/ruby/percent_lower_i.rb +1 -0
- data/test/fixtures/ruby/percent_lower_w.rb +1 -0
- data/test/fixtures/ruby/percent_upper_i.rb +1 -0
- data/test/fixtures/ruby/percent_upper_w.rb +1 -0
- data/test/fixtures/s_/custom.rb +2 -2
- data/test/fixtures/s_.rb +1 -1
- data/test/fixtures/simple.rb +5 -1
- data/test/fixtures/upper_nn_.rb +77 -0
- data/test/helper.rb +99 -0
- data/test/locale/fr/LC_MESSAGES/plural_error.mo +0 -0
- data/test/locale/fr/LC_MESSAGES/test1.mo +0 -0
- data/test/locale/fr_BE/LC_MESSAGES/test1.mo +0 -0
- data/test/locale/fr_BE_Foo/LC_MESSAGES/test1.mo +0 -0
- data/test/locale/ja/LC_MESSAGES/_.mo +0 -0
- data/test/po/_.pot +28 -4
- data/test/po/backslash.pot +6 -4
- data/test/po/fr/plural_error.po +7 -0
- data/test/po/fr/test1.po +7 -0
- data/test/po/fr_BE/test1.po +24 -0
- data/test/po/fr_BE_Foo/test1.po +20 -0
- data/test/po/hello.pot +3 -3
- data/test/po/ja/_.edit.po +27 -3
- data/test/po/ja/_.po +20 -2
- data/test/po/ja/hello.edit.po +0 -1
- data/test/po/non_ascii.pot +4 -4
- data/test/po/np_.pot +8 -5
- data/test/po/ns_.pot +6 -4
- data/test/po/p_.pot +3 -3
- data/test/po/s_.pot +6 -4
- data/test/po/untranslated.pot +4 -4
- data/test/run-test.rb +2 -3
- data/test/test_class_info.rb +8 -9
- data/test/test_gettext.rb +30 -1
- data/test/test_locale_path.rb +12 -4
- data/test/test_parser.rb +113 -25
- data/test/test_po_entry.rb +21 -17
- data/test/test_po_parser.rb +49 -4
- data/test/test_string.rb +9 -5
- data/test/tools/parser/test_glade.rb +91 -0
- data/test/tools/parser/test_gtk_builder_ui_definitions.rb +63 -0
- data/test/tools/parser/test_ruby.rb +76 -39
- data/test/tools/test_msgcat.rb +21 -1
- data/test/tools/test_msginit.rb +82 -3
- data/test/tools/test_msgmerge.rb +81 -6
- data/test/tools/test_xgettext.rb +106 -5
- metadata +82 -34
- data/lib/gettext/tools/parser/haml.rb +0 -61
- /data/test/fixtures/{gladeparser.glade → glade/2.glade} +0 -0
data/lib/gettext/po_entry.rb
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
#
|
|
2
|
-
#
|
|
3
|
-
# Copyright (C) 2012-2017 Kouhei Sutou <kou@clear-code.com>
|
|
1
|
+
# Copyright (C) 2012-2023 Sutou Kouhei <kou@clear-code.com>
|
|
4
2
|
# Copyright (C) 2010 masone (Christian Felder) <ema@rh-productions.ch>
|
|
5
3
|
# Copyright (C) 2009 Masao Mutoh
|
|
6
4
|
#
|
|
@@ -210,13 +208,25 @@ module GetText
|
|
|
210
208
|
true
|
|
211
209
|
end
|
|
212
210
|
|
|
213
|
-
def [](
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
211
|
+
def [](number_or_param)
|
|
212
|
+
__send__(resolve_param(number_or_param))
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def []=(number_or_param, value)
|
|
216
|
+
__send__("#{resolve_param(number_or_param)}=", value)
|
|
217
217
|
end
|
|
218
218
|
|
|
219
219
|
private
|
|
220
|
+
def resolve_param(number_or_param)
|
|
221
|
+
case number_or_param
|
|
222
|
+
when Integer
|
|
223
|
+
param = @param_type[number_or_param]
|
|
224
|
+
raise ParseError, 'no more string parameters expected' unless param
|
|
225
|
+
param
|
|
226
|
+
else
|
|
227
|
+
number_or_param
|
|
228
|
+
end
|
|
229
|
+
end
|
|
220
230
|
|
|
221
231
|
# sets or extends the value of a translation target params like msgid,
|
|
222
232
|
# msgctxt etc.
|
|
@@ -231,11 +241,12 @@ module GetText
|
|
|
231
241
|
def escape(string)
|
|
232
242
|
return "" if string.nil?
|
|
233
243
|
|
|
234
|
-
string.gsub(/
|
|
235
|
-
special_character = $1
|
|
244
|
+
string.gsub(/[\\"\t\r\n]/) do |special_character|
|
|
236
245
|
case special_character
|
|
237
246
|
when "\t"
|
|
238
247
|
"\\t"
|
|
248
|
+
when "\r"
|
|
249
|
+
"\\r"
|
|
239
250
|
when "\n"
|
|
240
251
|
"\\n"
|
|
241
252
|
else
|
|
@@ -271,6 +282,9 @@ module GetText
|
|
|
271
282
|
# Wraps long lines that is longer than the `:max_line_width`.
|
|
272
283
|
# Don't break long lines if `:max_line_width` is less than 0
|
|
273
284
|
# such as `-1`.
|
|
285
|
+
# @option options [Bool] :use_one_line_per_reference (false)
|
|
286
|
+
# Whether each reference comment uses one line or not. If this
|
|
287
|
+
# is `true`, `:max_line_width` is ignored for reference comment.
|
|
274
288
|
# @option options [Encoding] :encoding (nil)
|
|
275
289
|
# Encodes to the specific encoding.
|
|
276
290
|
def initialize(entry, options={})
|
|
@@ -394,34 +408,40 @@ module GetText
|
|
|
394
408
|
end
|
|
395
409
|
|
|
396
410
|
def format_reference_comment
|
|
397
|
-
max_line_width = @options[:max_line_width]
|
|
398
411
|
formatted_reference = String.new
|
|
399
|
-
if
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
412
|
+
if @options[:use_one_line_per_reference]
|
|
413
|
+
@entry.references&.each do |reference|
|
|
414
|
+
formatted_reference << "#{REFERENCE_COMMENT_MARK} #{reference}\n"
|
|
415
|
+
end
|
|
416
|
+
else
|
|
417
|
+
max_line_width = @options[:max_line_width]
|
|
418
|
+
if not @entry.references.nil? and not @entry.references.empty?
|
|
419
|
+
formatted_reference << REFERENCE_COMMENT_MARK
|
|
420
|
+
line_width = 2
|
|
421
|
+
@entry.references.each do |reference|
|
|
422
|
+
if max_line_width > 0 and
|
|
404
423
|
line_width + reference.size > max_line_width
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
424
|
+
formatted_reference << "\n"
|
|
425
|
+
formatted_reference << "#{REFERENCE_COMMENT_MARK} #{reference}"
|
|
426
|
+
line_width = 3 + reference.size
|
|
427
|
+
else
|
|
428
|
+
formatted_reference << " #{reference}"
|
|
429
|
+
line_width += 1 + reference.size
|
|
430
|
+
end
|
|
411
431
|
end
|
|
432
|
+
formatted_reference << "\n"
|
|
412
433
|
end
|
|
413
|
-
|
|
414
|
-
formatted_reference << "\n"
|
|
415
434
|
end
|
|
416
435
|
formatted_reference
|
|
417
436
|
end
|
|
418
437
|
|
|
419
438
|
def format_flag_comment
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
439
|
+
if @entry.flags.empty?
|
|
440
|
+
String.new
|
|
441
|
+
else
|
|
442
|
+
joined_flags = @entry.flags.join(", ")
|
|
443
|
+
format_comment(FLAG_MARK, joined_flags)
|
|
423
444
|
end
|
|
424
|
-
formatted_flags
|
|
425
445
|
end
|
|
426
446
|
|
|
427
447
|
def format_previous_comment
|
data/lib/gettext/po_parser.rb
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
#
|
|
3
1
|
# po_parser.rb - Generate a .mo
|
|
4
2
|
#
|
|
5
3
|
# Copyright (C) 2003-2009 Masao Mutoh <mutomasa at gmail.com>
|
|
6
|
-
# Copyright (C) 2012-
|
|
4
|
+
# Copyright (C) 2012-2023 Sutou Kouhei <kou@clear-code.com>
|
|
7
5
|
#
|
|
8
6
|
# You may redistribute it and/or modify it under the same
|
|
9
7
|
# license terms as Ruby or LGPL.
|
|
10
8
|
|
|
11
9
|
#
|
|
12
10
|
# DO NOT MODIFY!!!!
|
|
13
|
-
# This file is automatically generated by Racc 1.
|
|
14
|
-
# from Racc
|
|
11
|
+
# This file is automatically generated by Racc 1.7.1
|
|
12
|
+
# from Racc grammar file "".
|
|
15
13
|
#
|
|
16
14
|
|
|
17
15
|
require 'racc/parser.rb'
|
|
@@ -21,7 +19,7 @@ require "gettext/po"
|
|
|
21
19
|
module GetText
|
|
22
20
|
class POParser < Racc::Parser
|
|
23
21
|
|
|
24
|
-
module_eval(<<'...end po_parser.ry/module_eval...', 'po_parser.ry',
|
|
22
|
+
module_eval(<<'...end po_parser.ry/module_eval...', 'po_parser.ry', 126)
|
|
25
23
|
if GetText.respond_to?(:bindtextdomain)
|
|
26
24
|
include GetText
|
|
27
25
|
GetText.bindtextdomain("gettext")
|
|
@@ -46,31 +44,26 @@ module_eval(<<'...end po_parser.ry/module_eval...', 'po_parser.ry', 123)
|
|
|
46
44
|
@report_warning
|
|
47
45
|
end
|
|
48
46
|
|
|
49
|
-
def unescape(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
47
|
+
def unescape(string)
|
|
48
|
+
string.gsub(/\\(.)/) do
|
|
49
|
+
escaped_character = $1
|
|
50
|
+
case escaped_character
|
|
51
|
+
when "t"
|
|
52
|
+
"\t"
|
|
53
|
+
when "r"
|
|
54
|
+
"\r"
|
|
55
|
+
when "n"
|
|
56
|
+
"\n"
|
|
57
|
+
else
|
|
58
|
+
escaped_character
|
|
59
|
+
end
|
|
60
|
+
end
|
|
55
61
|
end
|
|
56
62
|
private :unescape
|
|
57
63
|
|
|
58
|
-
def unescape_string(string)
|
|
59
|
-
string.gsub(/\\\\/, "\\")
|
|
60
|
-
end
|
|
61
|
-
private :unescape_string
|
|
62
|
-
|
|
63
64
|
def parse(str, data)
|
|
64
|
-
|
|
65
|
-
@extracted_comments = []
|
|
66
|
-
@references = []
|
|
67
|
-
@flags = []
|
|
68
|
-
@previous = []
|
|
69
|
-
@comments = []
|
|
65
|
+
clear
|
|
70
66
|
@data = data
|
|
71
|
-
@fuzzy = false
|
|
72
|
-
@msgctxt = nil
|
|
73
|
-
@msgid_plural = nil
|
|
74
67
|
|
|
75
68
|
str = str.strip
|
|
76
69
|
@q = []
|
|
@@ -104,7 +97,7 @@ module_eval(<<'...end po_parser.ry/module_eval...', 'po_parser.ry', 123)
|
|
|
104
97
|
@q.push [:COMMENT, $&]
|
|
105
98
|
str = $'
|
|
106
99
|
when /\A\"(.*)\"/
|
|
107
|
-
@q.push [:STRING,
|
|
100
|
+
@q.push [:STRING, unescape($1)]
|
|
108
101
|
str = $'
|
|
109
102
|
else
|
|
110
103
|
#c = str[0,1]
|
|
@@ -156,15 +149,7 @@ module_eval(<<'...end po_parser.ry/module_eval...', 'po_parser.ry', 123)
|
|
|
156
149
|
@data.set_comment(msgid, format_comment(@comments))
|
|
157
150
|
end
|
|
158
151
|
|
|
159
|
-
|
|
160
|
-
@extracted_comments = []
|
|
161
|
-
@references = []
|
|
162
|
-
@flags = []
|
|
163
|
-
@previous = []
|
|
164
|
-
@references = []
|
|
165
|
-
@comments.clear
|
|
166
|
-
@msgctxt = nil
|
|
167
|
-
@msgid_plural = nil
|
|
152
|
+
clear
|
|
168
153
|
end
|
|
169
154
|
|
|
170
155
|
def format_comment(comments)
|
|
@@ -176,7 +161,11 @@ module_eval(<<'...end po_parser.ry/module_eval...', 'po_parser.ry', 123)
|
|
|
176
161
|
end
|
|
177
162
|
|
|
178
163
|
def on_comment(comment)
|
|
179
|
-
|
|
164
|
+
if comment.start_with?(POFormat::FLAG_MARK)
|
|
165
|
+
content = comment[POFormat::FLAG_MARK.size..-1]
|
|
166
|
+
flags = parse_flags_line(content)
|
|
167
|
+
@fuzzy = true if flags.include?("fuzzy")
|
|
168
|
+
end
|
|
180
169
|
if @data.instance_of?(PO)
|
|
181
170
|
if comment == "#"
|
|
182
171
|
@translator_comments << ""
|
|
@@ -191,7 +180,7 @@ module_eval(<<'...end po_parser.ry/module_eval...', 'po_parser.ry', 123)
|
|
|
191
180
|
when POFormat::REFERENCE_COMMENT_MARK
|
|
192
181
|
@references.concat(parse_references_line(content))
|
|
193
182
|
when POFormat::FLAG_MARK
|
|
194
|
-
@flags.concat(
|
|
183
|
+
@flags.concat(flags)
|
|
195
184
|
when POFormat::PREVIOUS_COMMENT_MARK
|
|
196
185
|
@previous << content
|
|
197
186
|
else
|
|
@@ -260,7 +249,19 @@ module_eval(<<'...end po_parser.ry/module_eval...', 'po_parser.ry', 123)
|
|
|
260
249
|
end
|
|
261
250
|
|
|
262
251
|
def parse_flags_line(line)
|
|
263
|
-
line.split(
|
|
252
|
+
line.split(",").collect(&:strip)
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
def clear
|
|
256
|
+
@translator_comments = []
|
|
257
|
+
@extracted_comments = []
|
|
258
|
+
@references = []
|
|
259
|
+
@flags = []
|
|
260
|
+
@previous = []
|
|
261
|
+
@references = []
|
|
262
|
+
@comments = []
|
|
263
|
+
@msgctxt = nil
|
|
264
|
+
@msgid_plural = nil
|
|
264
265
|
end
|
|
265
266
|
...end po_parser.ry/module_eval...
|
|
266
267
|
##### State transition tables begin ###
|
|
@@ -349,6 +350,7 @@ Racc_arg = [
|
|
|
349
350
|
racc_shift_n,
|
|
350
351
|
racc_reduce_n,
|
|
351
352
|
racc_use_result_var ]
|
|
353
|
+
Ractor.make_shareable(Racc_arg) if defined?(Ractor)
|
|
352
354
|
|
|
353
355
|
Racc_token_to_s_table = [
|
|
354
356
|
"$end",
|
|
@@ -370,6 +372,7 @@ Racc_token_to_s_table = [
|
|
|
370
372
|
"plural_message",
|
|
371
373
|
"msgstr_plural",
|
|
372
374
|
"msgstr_plural_line" ]
|
|
375
|
+
Ractor.make_shareable(Racc_token_to_s_table) if defined?(Ractor)
|
|
373
376
|
|
|
374
377
|
Racc_debug_parser = true
|
|
375
378
|
|
|
@@ -387,8 +390,8 @@ Racc_debug_parser = true
|
|
|
387
390
|
|
|
388
391
|
module_eval(<<'.,.,', 'po_parser.ry', 26)
|
|
389
392
|
def _reduce_5(val, _values, result)
|
|
390
|
-
@msgctxt =
|
|
391
|
-
|
|
393
|
+
@msgctxt = val[1]
|
|
394
|
+
|
|
392
395
|
result
|
|
393
396
|
end
|
|
394
397
|
.,.,
|
|
@@ -399,9 +402,8 @@ module_eval(<<'.,.,', 'po_parser.ry', 26)
|
|
|
399
402
|
|
|
400
403
|
module_eval(<<'.,.,', 'po_parser.ry', 38)
|
|
401
404
|
def _reduce_8(val, _values, result)
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
msgstr = unescape(val[3])
|
|
405
|
+
msgid = val[1]
|
|
406
|
+
msgstr = val[3]
|
|
405
407
|
use_message_p = true
|
|
406
408
|
if @fuzzy and not msgid.empty?
|
|
407
409
|
use_message_p = (not ignore_fuzzy?)
|
|
@@ -411,18 +413,22 @@ module_eval(<<'.,.,', 'po_parser.ry', 38)
|
|
|
411
413
|
else
|
|
412
414
|
$stderr.print _("Warning: fuzzy message was used.\n")
|
|
413
415
|
end
|
|
414
|
-
$stderr.print " #{@po_file}: msgid '#{
|
|
416
|
+
$stderr.print " #{@po_file}: msgid '#{msgid}'\n"
|
|
415
417
|
end
|
|
416
418
|
end
|
|
417
419
|
@fuzzy = false
|
|
418
|
-
|
|
420
|
+
if use_message_p
|
|
421
|
+
on_message(msgid, msgstr)
|
|
422
|
+
else
|
|
423
|
+
clear
|
|
424
|
+
end
|
|
419
425
|
result = ""
|
|
420
|
-
|
|
426
|
+
|
|
421
427
|
result
|
|
422
428
|
end
|
|
423
429
|
.,.,
|
|
424
430
|
|
|
425
|
-
module_eval(<<'.,.,', 'po_parser.ry',
|
|
431
|
+
module_eval(<<'.,.,', 'po_parser.ry', 64)
|
|
426
432
|
def _reduce_9(val, _values, result)
|
|
427
433
|
if @fuzzy and ignore_fuzzy?
|
|
428
434
|
if val[1] != ""
|
|
@@ -439,53 +445,53 @@ module_eval(<<'.,.,', 'po_parser.ry', 61)
|
|
|
439
445
|
on_message(unescape(val[1]), unescape(val[4]))
|
|
440
446
|
end
|
|
441
447
|
result = ""
|
|
442
|
-
|
|
448
|
+
|
|
443
449
|
result
|
|
444
450
|
end
|
|
445
451
|
.,.,
|
|
446
452
|
|
|
447
|
-
module_eval(<<'.,.,', 'po_parser.ry',
|
|
453
|
+
module_eval(<<'.,.,', 'po_parser.ry', 85)
|
|
448
454
|
def _reduce_10(val, _values, result)
|
|
449
455
|
if val[0].size > 0
|
|
450
456
|
result = val[0] + "\000" + val[1]
|
|
451
457
|
else
|
|
452
458
|
result = ""
|
|
453
459
|
end
|
|
454
|
-
|
|
460
|
+
|
|
455
461
|
result
|
|
456
462
|
end
|
|
457
463
|
.,.,
|
|
458
464
|
|
|
459
465
|
# reduce 11 omitted
|
|
460
466
|
|
|
461
|
-
module_eval(<<'.,.,', 'po_parser.ry',
|
|
467
|
+
module_eval(<<'.,.,', 'po_parser.ry', 97)
|
|
462
468
|
def _reduce_12(val, _values, result)
|
|
463
469
|
result = val[2]
|
|
464
|
-
|
|
470
|
+
|
|
465
471
|
result
|
|
466
472
|
end
|
|
467
473
|
.,.,
|
|
468
474
|
|
|
469
|
-
module_eval(<<'.,.,', 'po_parser.ry',
|
|
475
|
+
module_eval(<<'.,.,', 'po_parser.ry', 104)
|
|
470
476
|
def _reduce_13(val, _values, result)
|
|
471
477
|
on_comment(val[0])
|
|
472
|
-
|
|
478
|
+
|
|
473
479
|
result
|
|
474
480
|
end
|
|
475
481
|
.,.,
|
|
476
482
|
|
|
477
|
-
module_eval(<<'.,.,', 'po_parser.ry',
|
|
483
|
+
module_eval(<<'.,.,', 'po_parser.ry', 112)
|
|
478
484
|
def _reduce_14(val, _values, result)
|
|
479
485
|
result = val.delete_if{|item| item == ""}.join
|
|
480
|
-
|
|
486
|
+
|
|
481
487
|
result
|
|
482
488
|
end
|
|
483
489
|
.,.,
|
|
484
490
|
|
|
485
|
-
module_eval(<<'.,.,', 'po_parser.ry',
|
|
491
|
+
module_eval(<<'.,.,', 'po_parser.ry', 116)
|
|
486
492
|
def _reduce_15(val, _values, result)
|
|
487
493
|
result = val[0]
|
|
488
|
-
|
|
494
|
+
|
|
489
495
|
result
|
|
490
496
|
end
|
|
491
497
|
.,.,
|
data/lib/gettext/text_domain.rb
CHANGED
|
@@ -124,7 +124,7 @@ module GetText
|
|
|
124
124
|
# [[msgstr[0], msgstr[1], msgstr[2],...], cond]
|
|
125
125
|
mo = @mofiles[lang.to_s]
|
|
126
126
|
cond = (mo and mo != :empty) ? mo.plural_as_proc : DEFAULT_PLURAL_CALC
|
|
127
|
-
ret = [msg.split("\000"), cond]
|
|
127
|
+
ret = [msg.split("\000", -1), cond]
|
|
128
128
|
else
|
|
129
129
|
ret = [[msg], DEFAULT_SINGLE_CALC]
|
|
130
130
|
end
|
|
@@ -77,11 +77,12 @@ module GetText
|
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
def each_text_domains(klass) #:nodoc:
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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
|
data/lib/gettext/tools/msgcat.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2014-
|
|
1
|
+
# Copyright (C) 2014-2023 Sutou Kouhei <kou@clear-code.com>
|
|
2
2
|
#
|
|
3
3
|
# License: Ruby's or LGPL
|
|
4
4
|
#
|
|
@@ -200,7 +200,8 @@ module GetText
|
|
|
200
200
|
@output = nil
|
|
201
201
|
@order = nil
|
|
202
202
|
@po_format_options = {
|
|
203
|
-
:
|
|
203
|
+
max_line_width: POEntry::Formatter::DEFAULT_MAX_LINE_WIDTH,
|
|
204
|
+
use_one_line_per_reference: false,
|
|
204
205
|
}
|
|
205
206
|
@include_fuzzy = true
|
|
206
207
|
@report_warning = true
|
|
@@ -322,6 +323,12 @@ module GetText
|
|
|
322
323
|
@po_format_options[:max_line_width] = max_line_width
|
|
323
324
|
end
|
|
324
325
|
|
|
326
|
+
parser.on("--[no-]use-one-line-per-reference",
|
|
327
|
+
_("Use one line for each reference comment"),
|
|
328
|
+
"(#{@po_format_options[:use_one_line_per_reference]})") do |use|
|
|
329
|
+
@po_format_options[:use_one_line_per_reference] = use
|
|
330
|
+
end
|
|
331
|
+
|
|
325
332
|
parser.on("--no-fuzzy",
|
|
326
333
|
_("Ignore fuzzy entries")) do |include_fuzzy|
|
|
327
334
|
@include_fuzzy = include_fuzzy
|