gettext 2.1.0 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +10 -6
- data/Rakefile +15 -66
- data/data/locale/bg/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/bs/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/ca/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/cs/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/de/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/el/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/eo/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/es/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/et/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/fr/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/hr/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/hu/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/it/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/ja/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/ko/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/lv/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/nb/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/nl/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/pt_BR/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/ru/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/sr/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/sv/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/uk/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/vi/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/zh/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/zh_TW/LC_MESSAGES/rgettext.mo +0 -0
- data/doc/text/news.md +30 -0
- data/gettext.gemspec +26 -34
- data/lib/gettext.rb +26 -24
- data/lib/gettext/cgi.rb +2 -0
- data/lib/gettext/core_ext/iconv.rb +7 -7
- data/lib/gettext/core_ext/string.rb +8 -6
- data/lib/gettext/parser/erb.rb +2 -0
- data/lib/gettext/parser/glade.rb +2 -0
- data/lib/gettext/parser/ruby.rb +12 -12
- data/lib/gettext/runtime/class_info.rb +5 -3
- data/lib/gettext/runtime/locale_path.rb +20 -22
- data/lib/gettext/runtime/mofile.rb +45 -18
- data/lib/gettext/runtime/textdomain.rb +6 -4
- data/lib/gettext/runtime/textdomain_group.rb +3 -1
- data/lib/gettext/runtime/textdomain_manager.rb +29 -26
- data/lib/gettext/tools.rb +15 -13
- data/lib/gettext/tools/parser/erb.rb +5 -3
- data/lib/gettext/tools/parser/glade.rb +16 -14
- data/lib/gettext/tools/parser/ruby.rb +16 -16
- data/lib/gettext/tools/pomessage.rb +9 -7
- data/lib/gettext/tools/poparser.rb +38 -36
- data/lib/gettext/tools/rgettext.rb +38 -13
- data/lib/gettext/tools/rmsgfmt.rb +7 -5
- data/lib/gettext/tools/rmsgmerge.rb +116 -114
- data/lib/gettext/utils.rb +2 -0
- data/lib/gettext/version.rb +3 -3
- data/po/bg/rgettext.po +17 -12
- data/po/bs/rgettext.po +16 -12
- data/po/ca/rgettext.po +17 -12
- data/po/cs/rgettext.po +16 -12
- data/po/de/rgettext.po +17 -12
- data/po/el/rgettext.po +17 -12
- data/po/eo/rgettext.po +17 -12
- data/po/es/rgettext.po +17 -12
- data/po/et/rgettext.po +17 -12
- data/po/fr/rgettext.po +17 -12
- data/po/hr/rgettext.po +19 -15
- data/po/hu/rgettext.po +17 -12
- data/po/it/rgettext.po +16 -12
- data/po/ja/rgettext.po +21 -15
- data/po/ko/rgettext.po +16 -12
- data/po/lv/rgettext.po +17 -12
- data/po/nb/rgettext.po +17 -12
- data/po/nl/rgettext.po +16 -12
- data/po/pt_BR/rgettext.po +17 -12
- data/po/rgettext.pot +16 -12
- data/po/ru/rgettext.po +17 -12
- data/po/sr/rgettext.po +17 -12
- data/po/sv/rgettext.po +16 -12
- data/po/{ua → uk}/rgettext.po +17 -12
- data/po/vi/rgettext.po +17 -12
- data/po/zh/rgettext.po +17 -12
- data/po/zh_TW/rgettext.po +17 -12
- data/samples/cgi/hellolib.rb +1 -1
- data/samples/cgi/http.rb +5 -5
- data/samples/cgi/locale/{ua → uk}/LC_MESSAGES/helloerb1.mo +0 -0
- data/samples/cgi/locale/{ua → uk}/LC_MESSAGES/helloerb2.mo +0 -0
- data/samples/cgi/locale/{ua → uk}/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/{ua → uk}/LC_MESSAGES/main.mo +0 -0
- data/samples/cgi/po/{ua → uk}/helloerb1.po +0 -0
- data/samples/cgi/po/{ua → uk}/helloerb2.po +0 -0
- data/samples/cgi/po/{ua → uk}/hellolib.po +0 -0
- data/samples/cgi/po/{ua → uk}/main.po +0 -0
- data/samples/hello.rb +1 -1
- data/samples/hello_gtk2.rb +1 -1
- data/samples/hello_noop.rb +1 -1
- data/samples/locale/{ua → uk}/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/{ua → uk}/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/{ua → uk}/LC_MESSAGES/hello_glade2.mo +0 -0
- data/samples/locale/{ua → uk}/LC_MESSAGES/hello_gtk.mo +0 -0
- data/samples/locale/{ua → uk}/LC_MESSAGES/hello_noop.mo +0 -0
- data/samples/locale/{ua → uk}/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/{ua → uk}/LC_MESSAGES/hello_tk.mo +0 -0
- data/samples/makemo.rb +2 -0
- data/samples/po/test.rb +2 -0
- data/samples/po/{ua → uk}/hello.po +0 -0
- data/samples/po/{ua → uk}/hello2.po +0 -0
- data/samples/po/{ua → uk}/hello_glade2.po +0 -0
- data/samples/po/{ua → uk}/hello_gtk.po +0 -0
- data/samples/po/{ua → uk}/hello_noop.po +0 -0
- data/samples/po/{ua → uk}/hello_plural.po +0 -0
- data/samples/po/{ua → uk}/hello_tk.po +0 -0
- data/test/Rakefile +1 -1
- data/test/test_class_info.rb +5 -0
- data/test/test_gettext.rb +12 -1
- data/test/test_locale_path.rb +29 -3
- data/test/test_parser.rb +61 -59
- data/test/test_po_generation.rb +3 -1
- data/test/test_pomessage.rb +4 -2
- data/test/test_string.rb +2 -0
- data/test/test_textdomain_bind.rb +2 -0
- data/test/test_textdomain_multi.rb +2 -0
- data/test/test_textdomain_toplevel.rb +2 -0
- data/test/test_thread.rb +4 -2
- data/test/testlib/N_.rb +5 -3
- data/test/testlib/gettext.rb +4 -2
- data/test/testlib/helper.rb +2 -0
- data/test/testlib/multi_textdomain.rb +2 -0
- data/test/testlib/ngettext.rb +10 -8
- data/test/testlib/npgettext.rb +9 -7
- data/test/testlib/nsgettext.rb +4 -2
- data/test/testlib/pgettext.rb +4 -2
- data/test/testlib/sgettext.rb +4 -2
- data/test/testlib/simple.rb +2 -0
- data/test/tools/files/simple_translation.rb +3 -1
- data/test/tools/test_tools.rb +3 -1
- metadata +772 -737
- data/ChangeLog +0 -78
- data/ChangeLog-1 +0 -2016
- data/NEWS-1 +0 -414
- data/benchmark/1.93.0.txt +0 -8
- data/benchmark/2.0.0.txt +0 -8
- data/benchmark/2.0.4.txt +0 -11
- data/benchmark/2.1.0.txt +0 -11
- data/benchmark/benchmark.rb +0 -68
- data/benchmark/test.rb +0 -28
- data/data/locale/ua/LC_MESSAGES/rgettext.mo +0 -0
- data/replace.rb +0 -8
- data/samples/cgi/po/bg/#main.po# +0 -84
- data/test.rb +0 -33
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
=begin
|
2
4
|
gettext/textdomain_manager - GetText::TextDomainManager class
|
3
5
|
|
@@ -27,13 +29,13 @@ module GetText
|
|
27
29
|
@@cached = ! $DEBUG
|
28
30
|
|
29
31
|
extend self
|
30
|
-
|
32
|
+
|
31
33
|
# Find textdomain by name
|
32
34
|
def textdomain_pool(domainname)
|
33
35
|
@@textdomain_pool[domainname]
|
34
36
|
end
|
35
37
|
|
36
|
-
# Set the value whether cache messages or not.
|
38
|
+
# Set the value whether cache messages or not.
|
37
39
|
# true to cache messages, otherwise false.
|
38
40
|
#
|
39
41
|
# Default is true. If $DEBUG is false, messages are not checked even if
|
@@ -42,7 +44,7 @@ module GetText
|
|
42
44
|
@@cached = val
|
43
45
|
TextDomain.cached = val
|
44
46
|
end
|
45
|
-
|
47
|
+
|
46
48
|
# Return the cached value.
|
47
49
|
def cached?
|
48
50
|
TextDomain.cached?
|
@@ -50,9 +52,9 @@ module GetText
|
|
50
52
|
|
51
53
|
# Gets the output charset.
|
52
54
|
def output_charset
|
53
|
-
@@output_charset
|
55
|
+
@@output_charset
|
54
56
|
end
|
55
|
-
|
57
|
+
|
56
58
|
# Sets the output charset.The program can have a output charset.
|
57
59
|
def output_charset=(charset)
|
58
60
|
@@output_charset = charset
|
@@ -60,7 +62,7 @@ module GetText
|
|
60
62
|
textdomain.output_charset = charset
|
61
63
|
end
|
62
64
|
end
|
63
|
-
|
65
|
+
|
64
66
|
# bind textdomain to the class.
|
65
67
|
def bind_to(klass, domainname, options = {})
|
66
68
|
warn "Bind the domain '#{domainname}' to '#{klass}'. " if $DEBUG
|
@@ -70,10 +72,10 @@ module GetText
|
|
70
72
|
target_klass = ClassInfo.normalize_class(klass)
|
71
73
|
create_or_find_textdomain_group(target_klass).add(textdomain)
|
72
74
|
@@gettext_classes << target_klass unless @@gettext_classes.include? target_klass
|
73
|
-
|
75
|
+
|
74
76
|
textdomain
|
75
77
|
end
|
76
|
-
|
78
|
+
|
77
79
|
def each_textdomains(klass) #:nodoc:
|
78
80
|
lang = Locale.candidates[0]
|
79
81
|
ClassInfo.related_classes(klass, @@gettext_classes).each do |target|
|
@@ -86,12 +88,12 @@ module GetText
|
|
86
88
|
end
|
87
89
|
end
|
88
90
|
|
89
|
-
# Translates msgid, but if there are no localized text,
|
91
|
+
# Translates msgid, but if there are no localized text,
|
90
92
|
# it returns a last part of msgid separeted "div" or whole of the msgid with no "div".
|
91
93
|
#
|
92
94
|
# * msgid: the message id.
|
93
95
|
# * div: separator or nil.
|
94
|
-
# * Returns: the localized text by msgid. If there are no localized text,
|
96
|
+
# * Returns: the localized text by msgid. If there are no localized text,
|
95
97
|
# it returns a last part of msgid separeted "div".
|
96
98
|
def translate_singluar_message(klass, msgid, div = nil)
|
97
99
|
klass = ClassInfo.normalize_class(klass)
|
@@ -103,7 +105,7 @@ module GetText
|
|
103
105
|
msg = textdomain.translate_singluar_message(lang, msgid)
|
104
106
|
break if msg
|
105
107
|
end
|
106
|
-
|
108
|
+
|
107
109
|
# If not found, return msgid.
|
108
110
|
msg ||= msgid
|
109
111
|
if div and msg == msgid
|
@@ -113,15 +115,15 @@ module GetText
|
|
113
115
|
end
|
114
116
|
@@singular_message_cache[key] = msg
|
115
117
|
end
|
116
|
-
|
117
|
-
# This function is similar to the get_singluar_message function
|
118
|
-
# as it finds the message catalogs in the same way.
|
118
|
+
|
119
|
+
# This function is similar to the get_singluar_message function
|
120
|
+
# as it finds the message catalogs in the same way.
|
119
121
|
# But it takes two extra arguments for plural form.
|
120
|
-
# The msgid parameter must contain the singular form of the string to be converted.
|
121
|
-
# It is also used as the key for the search in the catalog.
|
122
|
-
# The msgid_plural parameter is the plural form.
|
123
|
-
# The parameter n is used to determine the plural form.
|
124
|
-
# If no message catalog is found msgid1 is returned if n == 1, otherwise msgid2.
|
122
|
+
# The msgid parameter must contain the singular form of the string to be converted.
|
123
|
+
# It is also used as the key for the search in the catalog.
|
124
|
+
# The msgid_plural parameter is the plural form.
|
125
|
+
# The parameter n is used to determine the plural form.
|
126
|
+
# If no message catalog is found msgid1 is returned if n == 1, otherwise msgid2.
|
125
127
|
# And if msgid includes "div", it returns a last part of msgid separeted "div".
|
126
128
|
#
|
127
129
|
# * msgid: the singular form with "div". (e.g. "Special|An apple", "An apple")
|
@@ -144,12 +146,13 @@ module GetText
|
|
144
146
|
msgid_plural = arg1[1]
|
145
147
|
n = arg2
|
146
148
|
if arg3 and arg3.kind_of? Numeric
|
147
|
-
raise ArgumentError, _("3rd parmeter is wrong: value = %{number}") % {:number => arg3}
|
149
|
+
raise ArgumentError, _("ngettext: 3rd parmeter is wrong: value = %{number}") % {:number => arg3}
|
148
150
|
end
|
149
151
|
div = arg3
|
150
152
|
else
|
151
153
|
msgid = arg1
|
152
154
|
msgid_plural = arg2
|
155
|
+
raise ArgumentError, _("ngettext: 3rd parameter should be a number, not nil.") unless arg3
|
153
156
|
n = arg3
|
154
157
|
div = arg4
|
155
158
|
end
|
@@ -163,16 +166,16 @@ module GetText
|
|
163
166
|
msgs = textdomain.translate_plural_message(lang, msgid, msgid_plural)
|
164
167
|
break if msgs
|
165
168
|
end
|
166
|
-
|
169
|
+
|
167
170
|
msgs = [[msgid, msgid_plural], TextDomain::DEFAULT_PLURAL_CALC] unless msgs
|
168
|
-
|
171
|
+
|
169
172
|
msgstrs = msgs[0]
|
170
173
|
if div and msgstrs[0] == msgid and index = msgstrs[0].rindex(div)
|
171
174
|
msgstrs[0] = msgstrs[0][(index + 1)..-1]
|
172
175
|
end
|
173
176
|
@@plural_message_cache[key] = msgs
|
174
177
|
end
|
175
|
-
|
178
|
+
|
176
179
|
# Return the singular or plural message.
|
177
180
|
msgstrs = msgs[0]
|
178
181
|
plural = msgs[1].call(n)
|
@@ -197,14 +200,14 @@ module GetText
|
|
197
200
|
def create_or_find_textdomain_group(klass) #:nodoc:
|
198
201
|
group = @@textdomain_group_pool[klass]
|
199
202
|
return group if group
|
200
|
-
|
203
|
+
|
201
204
|
@@textdomain_group_pool[klass] = TextDomainGroup.new
|
202
205
|
end
|
203
|
-
|
206
|
+
|
204
207
|
def create_or_find_textdomain(name, path, charset)#:nodoc:
|
205
208
|
textdomain = @@textdomain_pool[name]
|
206
209
|
return textdomain if textdomain
|
207
|
-
|
210
|
+
|
208
211
|
@@textdomain_pool[name] = TextDomain.new(name, path, charset)
|
209
212
|
end
|
210
213
|
end
|
data/lib/gettext/tools.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
=begin
|
2
4
|
tools.rb - Utility functions
|
3
5
|
|
@@ -24,7 +26,7 @@ module GetText
|
|
24
26
|
|
25
27
|
BOM_UTF8 = [0xef, 0xbb, 0xbf].pack("c3")
|
26
28
|
|
27
|
-
# Currently, GNU msgmerge doesn't accept BOM.
|
29
|
+
# Currently, GNU msgmerge doesn't accept BOM.
|
28
30
|
# This mesthod remove the UTF-8 BOM from the po-file.
|
29
31
|
def remove_bom(path) #:nodoc:
|
30
32
|
bom = IO.read(path, 3)
|
@@ -34,13 +36,13 @@ module GetText
|
|
34
36
|
end
|
35
37
|
end
|
36
38
|
|
37
|
-
# Merges two Uniforum style .po files together.
|
39
|
+
# Merges two Uniforum style .po files together.
|
38
40
|
#
|
39
|
-
# *Note* This function requires "msgmerge" tool included in GNU GetText. So you need to install GNU GetText.
|
41
|
+
# *Note* This function requires "msgmerge" tool included in GNU GetText. So you need to install GNU GetText.
|
40
42
|
#
|
41
|
-
# The def.po file is an existing PO file with translations which will be taken
|
43
|
+
# The def.po file is an existing PO file with translations which will be taken
|
42
44
|
# over to the newly created file as long as they still match; comments will be preserved,
|
43
|
-
# but extracted comments and file positions will be discarded.
|
45
|
+
# but extracted comments and file positions will be discarded.
|
44
46
|
#
|
45
47
|
# The ref.pot file is the last created PO file with up-to-date source references but
|
46
48
|
# old translations, or a PO Template file (generally created by rgettext);
|
@@ -53,14 +55,14 @@ module GetText
|
|
53
55
|
# * defpo: a po-file. translations referring to old sources
|
54
56
|
# * refpo: a po-file. references to new sources
|
55
57
|
# * app_version: the application information which appears "Project-Id-Version: #{app_version}" in the pot/po-files.
|
56
|
-
# * Returns: self
|
58
|
+
# * Returns: self
|
57
59
|
def msgmerge(defpo, refpo, app_version, options={})
|
58
60
|
verbose = options.delete(:verbose)
|
59
61
|
puts "msgmerge called" if verbose
|
60
62
|
$stderr.print defpo + " "
|
61
63
|
|
62
64
|
content = merge_po_files(defpo,refpo,options.delete(:msgmerge),verbose)
|
63
|
-
|
65
|
+
|
64
66
|
if content.empty?
|
65
67
|
# report failure
|
66
68
|
failed_filename = refpo + "~"
|
@@ -73,12 +75,12 @@ module GetText
|
|
73
75
|
content.sub!(/(Project-Id-Version\:).*$/, "\\1 #{app_version}\\n\"")
|
74
76
|
File.open(defpo, "w") {|f|f.write(content)}
|
75
77
|
end
|
76
|
-
|
78
|
+
|
77
79
|
self
|
78
80
|
end
|
79
81
|
|
80
|
-
# Creates mo-files using #{po_root}/#{lang}/*.po an put them to
|
81
|
-
# #{targetdir}/#{targetdir_rule}/.
|
82
|
+
# Creates mo-files using #{po_root}/#{lang}/*.po an put them to
|
83
|
+
# #{targetdir}/#{targetdir_rule}/.
|
82
84
|
#
|
83
85
|
# This is a convenience function of GetText.rmsgfmt for multiple target files.
|
84
86
|
# * options: options as a Hash.
|
@@ -101,9 +103,9 @@ module GetText
|
|
101
103
|
|
102
104
|
# At first, this creates the #{po_root}/#{domainname}.pot file using GetText.rgettext.
|
103
105
|
# In the second step, this updates(merges) the #{po_root}/#{domainname}.pot and all of the
|
104
|
-
# #{po_root}/#{lang}/#{domainname}.po files under "po_root" using "msgmerge".
|
106
|
+
# #{po_root}/#{lang}/#{domainname}.po files under "po_root" using "msgmerge".
|
105
107
|
#
|
106
|
-
# *Note* "msgmerge" tool is included in GNU GetText. So you need to install GNU GetText.
|
108
|
+
# *Note* "msgmerge" tool is included in GNU GetText. So you need to install GNU GetText.
|
107
109
|
#
|
108
110
|
# See <HOWTO maintain po/mo files(http://www.yotabanana.com/hiki/ruby-gettext-howto-manage.html)> for more detals.
|
109
111
|
# * domainname: the textdomain name.
|
@@ -181,7 +183,7 @@ module GetText
|
|
181
183
|
:mo_root => "./data/locale",
|
182
184
|
:mo_path_rule => "%{lang}/LC_MESSAGES"
|
183
185
|
}.merge(options)
|
184
|
-
|
186
|
+
|
185
187
|
lang, textdomain = %r[/([^/]+?)/(.*)\.po].match(po_file[options[:po_root].size..-1]).to_a[1,2]
|
186
188
|
|
187
189
|
mo_dir_rule = File.join(options[:mo_root], options[:mo_path_rule])
|
@@ -1,8 +1,10 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
=begin
|
2
4
|
parser/erb.rb - parser for ERB
|
3
5
|
|
4
6
|
Copyright (C) 2005-2009 Masao Mutoh
|
5
|
-
|
7
|
+
|
6
8
|
You may redistribute it and/or modify it under the same
|
7
9
|
license terms as Ruby or LGPL.
|
8
10
|
=end
|
@@ -23,7 +25,7 @@ module GetText
|
|
23
25
|
# * :extnames: An Array of target files extension. Default is [".rhtml"].
|
24
26
|
def init(config)
|
25
27
|
config.each{|k, v|
|
26
|
-
|
28
|
+
@config[k] = v
|
27
29
|
}
|
28
30
|
end
|
29
31
|
|
@@ -37,7 +39,7 @@ module GetText
|
|
37
39
|
|
38
40
|
def target?(file) # :nodoc:
|
39
41
|
@config[:extnames].each do |v|
|
40
|
-
|
42
|
+
return true if File.extname(file) == v
|
41
43
|
end
|
42
44
|
false
|
43
45
|
end
|
@@ -1,8 +1,10 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
=begin
|
2
4
|
parser/glade.rb - parser for Glade-2
|
3
5
|
|
4
6
|
Copyright (C) 2004,2005 Masao Mutoh
|
5
|
-
|
7
|
+
|
6
8
|
You may redistribute it and/or modify it under the same
|
7
9
|
license terms as Ruby or LGPL.
|
8
10
|
=end
|
@@ -14,13 +16,13 @@ module GetText
|
|
14
16
|
module GladeParser
|
15
17
|
extend GetText
|
16
18
|
extend self
|
17
|
-
|
19
|
+
|
18
20
|
bindtextdomain("rgettext")
|
19
21
|
|
20
22
|
TARGET1 = /<property.*translatable="yes">(.*)/
|
21
23
|
TARGET2 = /(.*)<\/property>/
|
22
24
|
|
23
|
-
def parse(file, targets = []) # :nodoc:
|
25
|
+
def parse(file, targets = []) # :nodoc:
|
24
26
|
lines = IO.readlines(file)
|
25
27
|
parse_lines(file, lines, targets)
|
26
28
|
end
|
@@ -31,11 +33,11 @@ module GetText
|
|
31
33
|
target = false
|
32
34
|
line_no = 0
|
33
35
|
val = nil
|
34
|
-
|
35
|
-
loop do
|
36
|
+
|
37
|
+
loop do
|
36
38
|
line = lines.shift
|
37
39
|
break unless line
|
38
|
-
|
40
|
+
|
39
41
|
cnt += 1
|
40
42
|
if TARGET1 =~ line
|
41
43
|
line_no = cnt
|
@@ -61,18 +63,18 @@ module GetText
|
|
61
63
|
targets
|
62
64
|
end
|
63
65
|
|
64
|
-
XML_RE = /<\?xml/
|
66
|
+
XML_RE = /<\?xml/
|
65
67
|
GLADE_RE = /glade-2.0.dtd/
|
66
|
-
|
68
|
+
|
67
69
|
def target?(file) # :nodoc:
|
68
70
|
data = IO.readlines(file)
|
69
71
|
if XML_RE =~ data[0] and GLADE_RE =~ data[1]
|
70
|
-
|
72
|
+
true
|
71
73
|
else
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
74
|
+
if File.extname(file) == '.glade'
|
75
|
+
raise _("`%{file}' is not glade-2.0 format.") % {:file => file}
|
76
|
+
end
|
77
|
+
false
|
76
78
|
end
|
77
79
|
end
|
78
80
|
|
@@ -80,7 +82,7 @@ module GetText
|
|
80
82
|
return unless val.size > 0
|
81
83
|
assoc_data = targets.assoc(val)
|
82
84
|
val = CGI.unescapeHTML(val)
|
83
|
-
if assoc_data
|
85
|
+
if assoc_data
|
84
86
|
targets[targets.index(assoc_data)] = assoc_data << "#{file}:#{line_no}"
|
85
87
|
else
|
86
88
|
targets << [val.gsub(/\n/, '\n'), "#{file}:#{line_no}"]
|
@@ -5,7 +5,7 @@
|
|
5
5
|
Copyright (C) 2003-2009 Masao Mutoh
|
6
6
|
Copyright (C) 2005 speakillof
|
7
7
|
Copyright (C) 2001,2002 Yasushi Shoji, Masao Mutoh
|
8
|
-
|
8
|
+
|
9
9
|
You may redistribute it and/or modify it under the same
|
10
10
|
license terms as Ruby or LGPL.
|
11
11
|
|
@@ -23,13 +23,13 @@ module GetText
|
|
23
23
|
s = get_readed
|
24
24
|
if RubyToken::TkSTRING === tk
|
25
25
|
def tk.value
|
26
|
-
@value
|
26
|
+
@value
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def tk.value=(s)
|
30
30
|
@value = s
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
if @here_header
|
34
34
|
s = s.sub(/\A.*?\n/, '').sub(/^.*\n\Z/, '')
|
35
35
|
else
|
@@ -39,10 +39,10 @@ module GetText
|
|
39
39
|
# Do nothing.
|
40
40
|
end
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
tk.value = s
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
if $DEBUG
|
47
47
|
if tk.is_a? TkSTRING
|
48
48
|
$stderr.puts("#{tk}: #{tk.value}")
|
@@ -52,7 +52,7 @@ module GetText
|
|
52
52
|
$stderr.puts(tk)
|
53
53
|
end
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
56
|
yield tk
|
57
57
|
end
|
58
58
|
return nil
|
@@ -96,7 +96,7 @@ module GetText
|
|
96
96
|
|
97
97
|
def advance_to_next_attribute
|
98
98
|
@param_number += 1
|
99
|
-
end
|
99
|
+
end
|
100
100
|
end
|
101
101
|
class PoMessage
|
102
102
|
include PoMessageForRubyParser
|
@@ -109,14 +109,14 @@ module GetText
|
|
109
109
|
|
110
110
|
module RubyParser
|
111
111
|
extend self
|
112
|
-
|
112
|
+
|
113
113
|
ID = ['gettext', '_', 'N_', 'sgettext', 's_']
|
114
114
|
PLURAL_ID = ['ngettext', 'n_', 'Nn_', 'ns_', 'nsgettext']
|
115
115
|
MSGCTXT_ID = ['pgettext', 'p_']
|
116
116
|
MSGCTXT_PLURAL_ID = ['npgettext', 'np_']
|
117
117
|
|
118
118
|
# (Since 2.1.0) the 2nd parameter is deprecated
|
119
|
-
# (and ignored here).
|
119
|
+
# (and ignored here).
|
120
120
|
# And You don't need to keep the pomessages as unique.
|
121
121
|
|
122
122
|
def parse(path, deprecated = []) # :nodoc:
|
@@ -173,7 +173,7 @@ module GetText
|
|
173
173
|
exit 1
|
174
174
|
end
|
175
175
|
|
176
|
-
case tk
|
176
|
+
case tk
|
177
177
|
when RubyToken::TkCOMMENT_WITH_CONTENT
|
178
178
|
last_comment = "" if reset_comment
|
179
179
|
if last_comment.empty?
|
@@ -183,7 +183,7 @@ module GetText
|
|
183
183
|
last_comment = $'
|
184
184
|
end
|
185
185
|
else
|
186
|
-
last_comment += "\n"
|
186
|
+
last_comment += "\n"
|
187
187
|
last_comment += tk.value
|
188
188
|
end
|
189
189
|
reset_comment = false
|
@@ -210,7 +210,7 @@ module GetText
|
|
210
210
|
false
|
211
211
|
end
|
212
212
|
end
|
213
|
-
end
|
213
|
+
end
|
214
214
|
end
|
215
215
|
|
216
216
|
if __FILE__ == $0
|
@@ -218,9 +218,9 @@ if __FILE__ == $0
|
|
218
218
|
ARGV.each do |path|
|
219
219
|
pp GetText::RubyParser.parse(path)
|
220
220
|
end
|
221
|
-
|
222
|
-
#rl = GetText::RubyLexX.new; rl.set_input(ARGF)
|
221
|
+
|
222
|
+
#rl = GetText::RubyLexX.new; rl.set_input(ARGF)
|
223
223
|
#rl.parse do |tk|
|
224
224
|
#p tk
|
225
|
-
#end
|
225
|
+
#end
|
226
226
|
end
|