gettext 1.1.1 → 1.2.0
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.
- data/ChangeLog +128 -0
- data/NEWS +10 -0
- data/README +21 -23
- data/Rakefile +39 -20
- data/bin/rgettext +1 -1
- data/bin/rmsgfmt +1 -1
- data/bin/rmsgmerge +1 -1
- data/data/locale/cs/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/cs/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/de/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/de/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/el/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/el/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/es/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/es/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/fr/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/fr/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/it/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/ja/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/ja/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/ko/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/ko/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/nl/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/nl/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/pt_BR/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/pt_BR/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/sv/LC_MESSAGES/rgettext.mo +0 -0
- data/ext/gettext/extconf.rb +20 -0
- data/ext/gettext/{gettext/_locale.c → locale_system.c} +15 -19
- data/lib/gettext.rb +186 -38
- data/lib/gettext/cgi.rb +35 -69
- data/lib/gettext/container.rb +14 -5
- data/lib/gettext/erb.rb +30 -2
- data/lib/gettext/iconv.rb +19 -4
- data/lib/gettext/locale.rb +188 -39
- data/lib/gettext/locale_cgi.rb +102 -0
- data/lib/gettext/locale_object.rb +131 -0
- data/lib/gettext/locale_posix.rb +50 -0
- data/lib/gettext/locale_table_win32.rb +224 -182
- data/lib/gettext/locale_win32.rb +59 -35
- data/lib/gettext/mo.rb +2 -2
- data/lib/gettext/parser/activerecord.rb +19 -5
- data/lib/gettext/parser/erb.rb +6 -3
- data/lib/gettext/parser/glade.rb +5 -5
- data/lib/gettext/parser/ruby.rb +6 -6
- data/lib/gettext/poparser.rb +7 -6
- data/lib/gettext/rails.rb +122 -44
- data/lib/gettext/rgettext.rb +21 -8
- data/lib/gettext/rmsgfmt.rb +16 -8
- data/lib/gettext/rmsgmerge.rb +172 -50
- data/lib/gettext/string.rb +25 -3
- data/lib/gettext/textdomain.rb +89 -90
- data/lib/gettext/utils.rb +63 -3
- data/lib/gettext/version.rb +2 -2
- data/pkg/ruby-gettext-package-1.2.0/ext/gettext/extconf.rb +20 -0
- data/po/cs/rails.po +28 -28
- data/po/cs/rgettext.po +14 -14
- data/po/de/rails.po +29 -26
- data/po/de/rgettext.po +24 -17
- data/po/el/rails.po +26 -26
- data/po/el/rgettext.po +18 -15
- data/po/es/rails.po +26 -26
- data/po/es/rgettext.po +16 -16
- data/po/fr/rails.po +27 -27
- data/po/fr/rgettext.po +14 -14
- data/po/it/rgettext.po +14 -14
- data/po/ja/rails.po +24 -24
- data/po/ja/rgettext.po +14 -14
- data/po/ko/rails.po +24 -24
- data/po/ko/rgettext.po +17 -18
- data/po/nl/rails.po +27 -27
- data/po/nl/rgettext.po +18 -18
- data/po/pt_BR/rails.po +26 -26
- data/po/pt_BR/rgettext.po +14 -14
- data/po/rails.pot +26 -26
- data/po/rgettext.pot +14 -14
- data/po/sv/rgettext.po +14 -14
- data/post-setup.rb +8 -3
- data/pre-setup.rb +14 -1
- data/samples/cgi/http.rb +2 -1
- data/samples/makemo.rb +1 -1
- data/samples/rails/app/models/article.rb +15 -1
- data/samples/rails/locale/cs/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/cs/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/locale/de/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/de/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/locale/el/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/el/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/locale/en/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/es/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/es/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/locale/fr/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/fr/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/locale/ja/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/ja/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/locale/ko/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/ko/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/locale/nl/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/nl/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/locale/pt_BR/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/pt_BR/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/po/blog.pot +1 -1
- data/samples/rails/po/cs/blog.po +1 -2
- data/samples/rails/po/cs/gettext_plugin.po +1 -1
- data/samples/rails/po/de/blog.po +1 -2
- data/samples/rails/po/de/gettext_plugin.po +1 -1
- data/samples/rails/po/el/blog.po +1 -1
- data/samples/rails/po/el/gettext_plugin.po +1 -1
- data/samples/rails/po/en/blog.po +1 -1
- data/samples/rails/po/es/blog.po +1 -2
- data/samples/rails/po/es/gettext_plugin.po +1 -1
- data/samples/rails/po/fr/blog.po +1 -1
- data/samples/rails/po/fr/gettext_plugin.po +1 -1
- data/samples/rails/po/gettext_plugin.pot +1 -1
- data/samples/rails/po/ja/blog.po +2 -1
- data/samples/rails/po/ja/gettext_plugin.po +1 -1
- data/samples/rails/po/ko/blog.po +1 -2
- data/samples/rails/po/ko/gettext_plugin.po +1 -1
- data/samples/rails/po/nl/blog.po +1 -3
- data/samples/rails/po/nl/gettext_plugin.po +1 -1
- data/samples/rails/po/pt_BR/blog.po +1 -1
- data/samples/rails/po/pt_BR/gettext_plugin.po +1 -1
- data/setup.rb +799 -574
- data/src/poparser.ry +6 -5
- data/test/gettext_runner.rb +3 -1
- data/test/gettext_test.rb +40 -24
- data/test/gettext_test_cgi.rb +60 -6
- data/test/gettext_test_locale.rb +136 -0
- data/test/gettext_test_parser.rb +12 -12
- data/test/locale/la/LC_MESSAGES/plural_error.mo +0 -0
- data/test/po/la/plural_error.po +21 -0
- data/test/test.bat +2 -0
- data/test/test.sh +2 -4
- data/test/{test_rubyparser_n.rb → test_rubyparser_n_.rb} +0 -0
- metadata +17 -12
- data/ext/gettext/gettext/MANIFEST +0 -3
- data/ext/gettext/gettext/extconf.rb +0 -20
- data/lib/gettext/locale_default.rb +0 -35
data/lib/gettext/rgettext.rb
CHANGED
|
@@ -17,14 +17,14 @@ require 'gettext'
|
|
|
17
17
|
|
|
18
18
|
module GetText
|
|
19
19
|
|
|
20
|
-
module RGetText
|
|
20
|
+
module RGetText # :nodoc:
|
|
21
21
|
extend GetText
|
|
22
22
|
|
|
23
23
|
bindtextdomain("rgettext")
|
|
24
24
|
|
|
25
25
|
# constant values
|
|
26
26
|
VERSION = GetText::VERSION
|
|
27
|
-
DATE = %w($Date:
|
|
27
|
+
DATE = %w($Date: 2006/02/22 16:42:41 $)[1]
|
|
28
28
|
MAX_LINE_LEN = 70
|
|
29
29
|
|
|
30
30
|
@ex_parsers = []
|
|
@@ -46,7 +46,7 @@ module GetText
|
|
|
46
46
|
|
|
47
47
|
module_function
|
|
48
48
|
|
|
49
|
-
def generate_pot_header
|
|
49
|
+
def generate_pot_header # :nodoc:
|
|
50
50
|
time = Time.now.strftime("%Y-%m-%d %H:%M")
|
|
51
51
|
off = Time.now.utc_offset
|
|
52
52
|
sign = off <= 0 ? '-' : '+'
|
|
@@ -71,7 +71,7 @@ msgstr ""
|
|
|
71
71
|
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\\n"]
|
|
72
72
|
end
|
|
73
73
|
|
|
74
|
-
def generate_pot(ary)
|
|
74
|
+
def generate_pot(ary) # :nodoc:
|
|
75
75
|
str = ""
|
|
76
76
|
result = Array.new
|
|
77
77
|
ary.each do |key|
|
|
@@ -102,7 +102,7 @@ msgstr ""
|
|
|
102
102
|
str
|
|
103
103
|
end
|
|
104
104
|
|
|
105
|
-
def parse(files)
|
|
105
|
+
def parse(files) # :nodoc:
|
|
106
106
|
ary = []
|
|
107
107
|
files.each do |file|
|
|
108
108
|
begin
|
|
@@ -121,7 +121,7 @@ msgstr ""
|
|
|
121
121
|
ary
|
|
122
122
|
end
|
|
123
123
|
|
|
124
|
-
def check_options
|
|
124
|
+
def check_options # :nodoc:
|
|
125
125
|
output = STDOUT
|
|
126
126
|
|
|
127
127
|
opts = OptionParser.new
|
|
@@ -155,7 +155,7 @@ msgstr ""
|
|
|
155
155
|
[ARGV, output]
|
|
156
156
|
end
|
|
157
157
|
|
|
158
|
-
def run(targetfiles = nil, out = STDOUT)
|
|
158
|
+
def run(targetfiles = nil, out = STDOUT) # :nodoc:
|
|
159
159
|
if targetfiles.is_a? String
|
|
160
160
|
targetfiles = [targetfiles]
|
|
161
161
|
elsif ! targetfiles
|
|
@@ -175,13 +175,26 @@ msgstr ""
|
|
|
175
175
|
out.puts generate_pot_header
|
|
176
176
|
out.puts generate_pot(parse(targetfiles))
|
|
177
177
|
end
|
|
178
|
-
|
|
178
|
+
self
|
|
179
179
|
end
|
|
180
180
|
end
|
|
181
181
|
|
|
182
182
|
module_function
|
|
183
|
+
# Creates a po-file from targetfiles(ruby-script-files, ActiveRecord, .rhtml files, glade-2 XML files),
|
|
184
|
+
# then output the result to out. If no parameter is set, it behaves same as command line tools(rgettet).
|
|
185
|
+
#
|
|
186
|
+
# This function is a part of GetText.create_pofiles.
|
|
187
|
+
# Usually you don't need to call this function directly.
|
|
188
|
+
#
|
|
189
|
+
# *Note* for ActiveRecord, you need to run your database server and configure the config/database.xml
|
|
190
|
+
# correctly before execute this function.
|
|
191
|
+
#
|
|
192
|
+
# * targetfiles: An Array of po-files or nil.
|
|
193
|
+
# * out: output IO or output path.
|
|
194
|
+
# * Returns: self
|
|
183
195
|
def rgettext(targetfiles = nil, out = STDOUT)
|
|
184
196
|
RGetText.run(targetfiles, out)
|
|
197
|
+
self
|
|
185
198
|
end
|
|
186
199
|
end
|
|
187
200
|
|
data/lib/gettext/rmsgfmt.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
=begin
|
|
2
2
|
rmsgfmt.rb - Generate a .mo
|
|
3
3
|
|
|
4
|
-
Copyright (C) 2003-
|
|
4
|
+
Copyright (C) 2003-2006 Masao Mutoh
|
|
5
5
|
|
|
6
6
|
You may redistribute it and/or modify it under the same
|
|
7
7
|
license terms as Ruby.
|
|
@@ -15,14 +15,14 @@ require 'gettext/poparser'
|
|
|
15
15
|
module GetText
|
|
16
16
|
GetText.bindtextdomain("rgettext")
|
|
17
17
|
|
|
18
|
-
module RMsgfmt
|
|
19
|
-
extend GetText
|
|
18
|
+
module RMsgfmt #:nodoc:
|
|
19
|
+
extend GetText
|
|
20
20
|
|
|
21
|
-
VERSION = GetText::VERSION
|
|
22
|
-
DATE = %w($Date:
|
|
21
|
+
VERSION = GetText::VERSION
|
|
22
|
+
DATE = %w($Date: 2006/02/22 16:42:41 $)[1] # :nodoc:
|
|
23
23
|
|
|
24
24
|
module_function
|
|
25
|
-
def run(targetfile = nil, output_path = nil)
|
|
25
|
+
def run(targetfile = nil, output_path = nil) # :nodoc:
|
|
26
26
|
unless targetfile
|
|
27
27
|
targetfile, output_path = check_options
|
|
28
28
|
end
|
|
@@ -39,7 +39,7 @@ module GetText
|
|
|
39
39
|
data.save_to_file(output_path)
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
def check_options
|
|
42
|
+
def check_options # :nodoc:
|
|
43
43
|
output = nil
|
|
44
44
|
|
|
45
45
|
opts = OptionParser.new
|
|
@@ -69,14 +69,21 @@ module GetText
|
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
module_function
|
|
72
|
+
# Creates a mo-file from a targetfile(po-file), then output the result to out.
|
|
73
|
+
# If no parameter is set, it behaves same as command line tools(rmsgfmt).
|
|
74
|
+
# * targetfile: An Array of po-files or nil.
|
|
75
|
+
# * output_path: output path.
|
|
76
|
+
# * Returns: the MOFile object.
|
|
72
77
|
def rmsgfmt(targetfile = nil, output_path = nil)
|
|
73
78
|
RMsgfmt.run(targetfile, output_path)
|
|
74
79
|
end
|
|
75
80
|
|
|
81
|
+
# Move to gettext/utils.rb. This will be removed in the feature.
|
|
82
|
+
# This remains for backward compatibility. Use gettext/utils.rb instead.
|
|
76
83
|
def create_mofiles(verbose = false,
|
|
77
84
|
podir = "./po", targetdir = "./data/locale",
|
|
78
85
|
targetpath_rule = "%s/LC_MESSAGES")
|
|
79
|
-
|
|
86
|
+
$stderr.puts "This function will be moved to utils.rb. So requires 'utils' first, please."
|
|
80
87
|
modir = File.join(targetdir, targetpath_rule)
|
|
81
88
|
Dir.glob(File.join(podir, "*/*.po")) do |file|
|
|
82
89
|
lang, basename = /\/([^\/]+?)\/(.*)\.po/.match(file[podir.size..-1]).to_a[1,2]
|
|
@@ -87,6 +94,7 @@ module GetText
|
|
|
87
94
|
$stderr.puts %Q[#{file} -> #{File.join(outdir, "#{basename}.mo")}]
|
|
88
95
|
end
|
|
89
96
|
end
|
|
97
|
+
self
|
|
90
98
|
end
|
|
91
99
|
end
|
|
92
100
|
|
data/lib/gettext/rmsgmerge.rb
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
=begin
|
|
2
2
|
rmsgmerge.rb - Merge old .po to new .po
|
|
3
3
|
|
|
4
|
-
Copyright (C) 2005 Masao Mutoh
|
|
5
|
-
Copyright (C) 2005 speakillof
|
|
4
|
+
Copyright (C) 2005,2006 Masao Mutoh
|
|
5
|
+
Copyright (C) 2005,2006 speakillof
|
|
6
6
|
|
|
7
7
|
You may redistribute it and/or modify it under the same
|
|
8
8
|
license terms as Ruby.
|
|
@@ -14,9 +14,9 @@ require 'gettext/poparser'
|
|
|
14
14
|
|
|
15
15
|
module GetText
|
|
16
16
|
|
|
17
|
-
module RMsgMerge
|
|
17
|
+
module RMsgMerge #:nodoc:
|
|
18
18
|
|
|
19
|
-
class PoData
|
|
19
|
+
class PoData #:nodoc:
|
|
20
20
|
|
|
21
21
|
attr_reader :msgids
|
|
22
22
|
|
|
@@ -108,7 +108,10 @@ module GetText
|
|
|
108
108
|
|
|
109
109
|
def generate_po_entry(msgid)
|
|
110
110
|
str = ""
|
|
111
|
-
str << @msgid2comment[msgid]
|
|
111
|
+
str << @msgid2comment[msgid]
|
|
112
|
+
if str[-1] != "\n"[0]
|
|
113
|
+
str << "\n"
|
|
114
|
+
end
|
|
112
115
|
|
|
113
116
|
id = msgid.gsub(/"/, '\"').gsub(/\r/, '')
|
|
114
117
|
msgstr = @msgid2msgstr[msgid].gsub(/"/, '\"').gsub(/\r/, '')
|
|
@@ -134,12 +137,12 @@ module GetText
|
|
|
134
137
|
|
|
135
138
|
def __conv(str)
|
|
136
139
|
s = ''
|
|
137
|
-
|
|
140
|
+
|
|
138
141
|
if str.count("\n") > 1
|
|
139
142
|
s << '""' << "\n"
|
|
140
143
|
s << str.gsub(/^(.*)$/, '"\1\n"')
|
|
141
144
|
else
|
|
142
|
-
s << str.
|
|
145
|
+
s << '"' << str.sub("\n", "\\n") << '"'
|
|
143
146
|
end
|
|
144
147
|
|
|
145
148
|
s.rstrip
|
|
@@ -147,20 +150,22 @@ module GetText
|
|
|
147
150
|
|
|
148
151
|
end
|
|
149
152
|
|
|
150
|
-
class
|
|
153
|
+
class Merger #:nodoc:
|
|
151
154
|
|
|
152
|
-
# From gettext source.
|
|
155
|
+
# From GNU gettext source.
|
|
153
156
|
#
|
|
154
157
|
# Merge the reference with the definition: take the #. and
|
|
155
158
|
# #: comments from the reference, take the # comments from
|
|
156
159
|
# the definition, take the msgstr from the definition. Add
|
|
157
160
|
# this merged entry to the output message list.
|
|
158
|
-
|
|
161
|
+
DOT_COMMENT_RE = /\A#\./
|
|
162
|
+
SEMICOLON_COMMENT_RE = /\A#\:/
|
|
163
|
+
FUZZY_RE = /\A#\,/
|
|
164
|
+
NOT_SPECIAL_COMMENT_RE = /\A#([^:.,]|\z)/
|
|
159
165
|
|
|
160
166
|
CRLF_RE = /\r?\n/
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
end
|
|
167
|
+
POT_DATE_EXTRACT_RE = /POT-Creation-Date:\s*(.*)?\s*$/
|
|
168
|
+
POT_DATE_RE = /POT-Creation-Date:.*?$/
|
|
164
169
|
|
|
165
170
|
def merge(definition, reference)
|
|
166
171
|
# deep copy
|
|
@@ -168,7 +173,7 @@ module GetText
|
|
|
168
173
|
|
|
169
174
|
used = []
|
|
170
175
|
merge_header(result, definition)
|
|
171
|
-
|
|
176
|
+
|
|
172
177
|
result.each_msgid do |msgid|
|
|
173
178
|
if definition.msgid?(msgid)
|
|
174
179
|
used << msgid
|
|
@@ -176,11 +181,11 @@ module GetText
|
|
|
176
181
|
elsif other_msgid = definition.search_msgid_fuzzy(msgid, used)
|
|
177
182
|
used << other_msgid
|
|
178
183
|
merge_fuzzy_message(msgid, result, other_msgid, definition)
|
|
184
|
+
elsif msgid.index("\000") and ( reference.msgstr(msgid).gsub("\000", '') == '' )
|
|
185
|
+
# plural
|
|
186
|
+
result[msgid] = "\000" * definition.nplural
|
|
179
187
|
else
|
|
180
|
-
|
|
181
|
-
#plural
|
|
182
|
-
result[msgid] = "\000" * definition.nplural
|
|
183
|
-
end
|
|
188
|
+
change_reference_comment(msgid, result)
|
|
184
189
|
end
|
|
185
190
|
end
|
|
186
191
|
|
|
@@ -191,7 +196,7 @@ module GetText
|
|
|
191
196
|
definition.each_msgid do |msgid|
|
|
192
197
|
unless used.include?(msgid)
|
|
193
198
|
last_comment << "\n"
|
|
194
|
-
last_comment << definition.generate_po_entry(msgid).strip.gsub(/^/, '
|
|
199
|
+
last_comment << definition.generate_po_entry(msgid).strip.gsub(/^/, '#. ')
|
|
195
200
|
last_comment << "\n"
|
|
196
201
|
end
|
|
197
202
|
end
|
|
@@ -237,23 +242,91 @@ module GetText
|
|
|
237
242
|
end
|
|
238
243
|
|
|
239
244
|
def merge_comment(msgid, target, def_msgid, definition)
|
|
240
|
-
|
|
245
|
+
ref_comment = target.comment(msgid)
|
|
241
246
|
def_comment = definition.comment(def_msgid)
|
|
242
|
-
|
|
247
|
+
|
|
248
|
+
normal_comment = []
|
|
249
|
+
dot_comment = []
|
|
250
|
+
semi_comment = []
|
|
251
|
+
is_fuzzy = false
|
|
243
252
|
|
|
244
253
|
def_comment.split(CRLF_RE).each do |l|
|
|
245
|
-
|
|
246
|
-
|
|
254
|
+
if NOT_SPECIAL_COMMENT_RE =~ l
|
|
255
|
+
normal_comment << l
|
|
247
256
|
end
|
|
248
257
|
end
|
|
249
258
|
|
|
250
|
-
|
|
251
|
-
if
|
|
252
|
-
|
|
259
|
+
ref_comment.split(CRLF_RE).each do |l|
|
|
260
|
+
if DOT_COMMENT_RE =~ l
|
|
261
|
+
dot_comment << l
|
|
262
|
+
elsif SEMICOLON_COMMENT_RE =~ l
|
|
263
|
+
semi_comment << l
|
|
264
|
+
elsif FUZZY_RE =~ l
|
|
265
|
+
is_fuzzy = true
|
|
266
|
+
end
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
str = format_comment(normal_comment, dot_comment, semi_comment, is_fuzzy)
|
|
270
|
+
target.set_comment(msgid, str)
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
def change_reference_comment(msgid, podata)
|
|
274
|
+
normal_comment = []
|
|
275
|
+
dot_comment = []
|
|
276
|
+
semi_comment = []
|
|
277
|
+
is_fuzzy = false
|
|
278
|
+
|
|
279
|
+
podata.comment(msgid).split(CRLF_RE).each do |l|
|
|
280
|
+
if DOT_COMMENT_RE =~ l
|
|
281
|
+
dot_comment << l
|
|
282
|
+
elsif SEMICOLON_COMMENT_RE =~ l
|
|
283
|
+
semi_comment << l
|
|
284
|
+
elsif FUZZY_RE =~ l
|
|
285
|
+
is_fuzzy = true
|
|
286
|
+
else
|
|
287
|
+
normal_comment << l
|
|
253
288
|
end
|
|
254
289
|
end
|
|
255
290
|
|
|
256
|
-
|
|
291
|
+
str = format_comment(normal_comment, dot_comment, semi_comment, is_fuzzy)
|
|
292
|
+
podata.set_comment(msgid, str)
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
def format_comment(normal_comment, dot_comment, semi_comment, is_fuzzy)
|
|
296
|
+
str = ''
|
|
297
|
+
|
|
298
|
+
str << normal_comment.join("\n").gsub(/^#(\s*)/){|sss|
|
|
299
|
+
if $1 == ""
|
|
300
|
+
"# "
|
|
301
|
+
else
|
|
302
|
+
sss
|
|
303
|
+
end
|
|
304
|
+
}
|
|
305
|
+
if normal_comment.size > 0
|
|
306
|
+
str << "\n"
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
str << dot_comment.join("\n").gsub(/^#.(\s*)/){|sss|
|
|
310
|
+
if $1 == ""
|
|
311
|
+
"#. "
|
|
312
|
+
else
|
|
313
|
+
sss
|
|
314
|
+
end
|
|
315
|
+
}
|
|
316
|
+
if dot_comment.size > 0
|
|
317
|
+
str << "\n"
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
str << semi_comment.join("\n").gsub(/^#:\s*/, "#: ")
|
|
321
|
+
if semi_comment.size > 0
|
|
322
|
+
str << "\n"
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
if is_fuzzy
|
|
326
|
+
str << "#, fuzzy\n"
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
str
|
|
257
330
|
end
|
|
258
331
|
|
|
259
332
|
def merge_header(target, definition)
|
|
@@ -261,9 +334,9 @@ module GetText
|
|
|
261
334
|
|
|
262
335
|
msg = target.msgstr('')
|
|
263
336
|
def_msg = definition.msgstr('')
|
|
264
|
-
if
|
|
337
|
+
if POT_DATE_EXTRACT_RE =~ msg
|
|
265
338
|
time = $1
|
|
266
|
-
def_msg = def_msg.sub(
|
|
339
|
+
def_msg = def_msg.sub(POT_DATE_RE, "POT-Creation-Date: #{time}")
|
|
267
340
|
end
|
|
268
341
|
|
|
269
342
|
target[''] = def_msg
|
|
@@ -275,11 +348,42 @@ module GetText
|
|
|
275
348
|
|
|
276
349
|
end
|
|
277
350
|
|
|
351
|
+
module GetText::RMsgMerge #:nodoc:
|
|
278
352
|
|
|
353
|
+
class Config #:nodoc:
|
|
354
|
+
|
|
355
|
+
attr_accessor :defpo, :refpot, :output, :fuzzy, :update
|
|
356
|
+
|
|
357
|
+
# update mode options
|
|
358
|
+
attr_accessor :backup, :suffix
|
|
359
|
+
|
|
360
|
+
=begin
|
|
361
|
+
The result is written back to def.po.
|
|
362
|
+
--backup=CONTROL make a backup of def.po
|
|
363
|
+
--suffix=SUFFIX override the usual backup suffix
|
|
364
|
+
The version control method may be selected via the --backup option or through
|
|
365
|
+
the VERSION_CONTROL environment variable. Here are the values:
|
|
366
|
+
none, off never make backups (even if --backup is given)
|
|
367
|
+
numbered, t make numbered backups
|
|
368
|
+
existing, nil numbered if numbered backups exist, simple otherwise
|
|
369
|
+
simple, never always make simple backups
|
|
370
|
+
The backup suffix is `~', unless set with --suffix or the SIMPLE_BACKUP_SUFFIX
|
|
371
|
+
environment variable.
|
|
372
|
+
=end
|
|
373
|
+
|
|
374
|
+
def initialize
|
|
375
|
+
@output = STDOUT
|
|
376
|
+
@fuzzy = nil
|
|
377
|
+
@update = nil
|
|
378
|
+
@backup = ENV["VERSION_CONTROL"]
|
|
379
|
+
@suffix= ENV["SIMPLE_BACKUP_SUFFIX"] || "~"
|
|
380
|
+
@input_dirs = ["."]
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
end
|
|
279
386
|
|
|
280
|
-
#
|
|
281
|
-
# commands
|
|
282
|
-
#
|
|
283
387
|
module GetText
|
|
284
388
|
|
|
285
389
|
module RMsgMerge
|
|
@@ -289,15 +393,14 @@ module GetText
|
|
|
289
393
|
|
|
290
394
|
# constant values
|
|
291
395
|
VERSION = GetText::VERSION
|
|
292
|
-
DATE = %w($Date:
|
|
396
|
+
DATE = %w($Date: 2006/02/23 14:53:59 $)[1]
|
|
293
397
|
|
|
294
398
|
module_function
|
|
295
399
|
|
|
296
|
-
def check_options
|
|
297
|
-
output = STDOUT
|
|
298
|
-
|
|
400
|
+
def check_options(config)
|
|
299
401
|
opts = OptionParser.new
|
|
300
402
|
opts.banner = _("Usage: %s def.po ref.pot [-o output.pot]") % $0
|
|
403
|
+
#opts.summary_width = 80
|
|
301
404
|
opts.separator("")
|
|
302
405
|
opts.separator(_("Merges two Uniforum style .po files together. The def.po file is an existing PO file with translations. The ref.pot file is the last created PO file with up-to-date source references. ref.pot is generally created by rgettext."))
|
|
303
406
|
opts.separator("")
|
|
@@ -305,13 +408,15 @@ module GetText
|
|
|
305
408
|
|
|
306
409
|
opts.on("-o", "--output=FILE", _("write output to specified file")) do |out|
|
|
307
410
|
unless FileTest.exist? out
|
|
308
|
-
output =
|
|
411
|
+
config.output = out
|
|
309
412
|
else
|
|
310
413
|
#$stderr.puts(_("File '%s' has already existed.") % out)
|
|
311
414
|
#exit 1
|
|
312
415
|
end
|
|
313
416
|
end
|
|
314
417
|
|
|
418
|
+
#opts.on("-F", "--fuzzy-matching")
|
|
419
|
+
|
|
315
420
|
opts.on_tail("--version", _("display version information and exit")) do
|
|
316
421
|
puts "#{$0} #{VERSION} (#{DATE})"
|
|
317
422
|
exit
|
|
@@ -324,27 +429,33 @@ module GetText
|
|
|
324
429
|
exit 1
|
|
325
430
|
end
|
|
326
431
|
|
|
327
|
-
|
|
432
|
+
config.defpo = ARGV[0]
|
|
433
|
+
config.refpot = ARGV[1]
|
|
328
434
|
end
|
|
329
435
|
|
|
330
436
|
def run(reference = nil, definition = nil, out = STDOUT)
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
437
|
+
config = GetText::RMsgMerge::Config.new
|
|
438
|
+
config.refpot = reference
|
|
439
|
+
config.defpo = definition
|
|
440
|
+
config.output = out
|
|
441
|
+
|
|
442
|
+
check_options(config)
|
|
334
443
|
|
|
335
|
-
if
|
|
444
|
+
if config.defpo.nil?
|
|
336
445
|
raise ArgumentError, _("definition po is not given.")
|
|
337
|
-
elsif
|
|
446
|
+
elsif config.refpot.nil?
|
|
338
447
|
raise ArgumentError, _("reference pot is not given.")
|
|
339
448
|
end
|
|
340
449
|
|
|
341
450
|
parser = PoParser.new
|
|
342
|
-
defstr = nil
|
|
343
|
-
|
|
344
|
-
defpo =
|
|
345
|
-
refpot =
|
|
346
|
-
|
|
347
|
-
|
|
451
|
+
defstr = nil
|
|
452
|
+
refstr = nil
|
|
453
|
+
File.open(config.defpo){|f| defstr = f.read}
|
|
454
|
+
File.open(config.refpot){|f| refstr = f.read}
|
|
455
|
+
defpo = parser.parse(defstr, PoData.new, false)
|
|
456
|
+
refpot = parser.parse(refstr, PoData.new, false)
|
|
457
|
+
|
|
458
|
+
m = Merger.new
|
|
348
459
|
result = m.merge(defpo, refpot)
|
|
349
460
|
pp result if $DEBUG
|
|
350
461
|
print result.generate_po if $DEBUG
|
|
@@ -360,16 +471,27 @@ module GetText
|
|
|
360
471
|
ensure
|
|
361
472
|
out.close
|
|
362
473
|
end
|
|
363
|
-
end
|
|
474
|
+
end
|
|
475
|
+
|
|
364
476
|
end
|
|
477
|
+
|
|
478
|
+
end
|
|
365
479
|
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
module GetText
|
|
483
|
+
|
|
366
484
|
module_function
|
|
485
|
+
|
|
486
|
+
# Experimental
|
|
367
487
|
def rmsgmerge(reference = nil, definition = nil, out = STDOUT)
|
|
368
488
|
RMsgMerge.run(reference, definition, out)
|
|
369
489
|
end
|
|
490
|
+
|
|
370
491
|
end
|
|
371
492
|
|
|
372
493
|
|
|
494
|
+
|
|
373
495
|
if $0 == __FILE__ then
|
|
374
496
|
require 'pp'
|
|
375
497
|
|