gettext 3.3.0 → 3.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/doc/text/news.md +23 -0
- data/lib/gettext/tools/msginit.rb +5 -4
- data/lib/gettext/tools/parser/gtk_builder_ui_definitions.rb +129 -0
- data/lib/gettext/tools/parser/ruby.rb +48 -22
- data/lib/gettext/tools/xgettext.rb +6 -6
- data/lib/gettext/version.rb +1 -1
- data/locale/ja/LC_MESSAGES/gettext.mo +0 -0
- data/po/bg/gettext.edit.po +12 -4
- data/po/bg/gettext.po +7 -3
- data/po/bs/gettext.edit.po +12 -4
- data/po/bs/gettext.po +7 -3
- data/po/ca/gettext.edit.po +12 -4
- data/po/ca/gettext.po +7 -3
- data/po/cs/gettext.edit.po +12 -4
- data/po/cs/gettext.po +7 -3
- data/po/de/gettext.edit.po +12 -4
- data/po/de/gettext.po +7 -3
- data/po/el/gettext.edit.po +12 -4
- data/po/el/gettext.po +7 -3
- data/po/eo/gettext.edit.po +12 -4
- data/po/eo/gettext.po +7 -3
- data/po/es/gettext.edit.po +12 -4
- data/po/es/gettext.po +7 -3
- data/po/et/gettext.edit.po +12 -4
- data/po/et/gettext.po +7 -3
- data/po/fr/gettext.edit.po +12 -4
- data/po/fr/gettext.po +7 -3
- data/po/gettext.pot +15 -9
- data/po/hr/gettext.edit.po +12 -4
- data/po/hr/gettext.po +7 -3
- data/po/hu/gettext.edit.po +12 -4
- data/po/hu/gettext.po +7 -3
- data/po/it/gettext.edit.po +12 -4
- data/po/it/gettext.po +7 -3
- data/po/ja/gettext.edit.po +14 -6
- data/po/ja/gettext.po +9 -5
- data/po/ko/gettext.edit.po +12 -4
- data/po/ko/gettext.po +7 -3
- data/po/lv/gettext.edit.po +12 -4
- data/po/lv/gettext.po +7 -3
- data/po/nb/gettext.edit.po +12 -4
- data/po/nb/gettext.po +7 -3
- data/po/nl/gettext.edit.po +12 -4
- data/po/nl/gettext.po +7 -3
- data/po/pt_BR/gettext.edit.po +12 -4
- data/po/pt_BR/gettext.po +7 -3
- data/po/ru/gettext.edit.po +12 -4
- data/po/ru/gettext.po +7 -3
- data/po/sr/gettext.edit.po +12 -4
- data/po/sr/gettext.po +7 -3
- data/po/sv/gettext.edit.po +12 -4
- data/po/sv/gettext.po +7 -3
- data/po/uk/gettext.edit.po +12 -4
- data/po/uk/gettext.po +7 -3
- data/po/vi/gettext.edit.po +12 -4
- data/po/vi/gettext.po +7 -3
- data/po/zh/gettext.edit.po +12 -4
- data/po/zh/gettext.po +7 -3
- data/po/zh_TW/gettext.edit.po +12 -4
- data/po/zh_TW/gettext.po +7 -3
- 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/hello.pot +3 -3
- data/samples/po/hello2.pot +4 -4
- data/samples/po/hello_glade2.pot +4 -4
- data/samples/po/hello_gtk2.pot +4 -4
- data/samples/po/hello_gtk_builder.pot +5 -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/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/{gettext-test-utils.rb → fixtures/_/percent_strings.rb} +21 -26
- data/test/fixtures/_/quoted_symbol.rb +34 -0
- data/test/fixtures/gtk_builder_ui_definitions.ui +68 -0
- data/test/fixtures/ns_/custom.rb +2 -2
- data/test/fixtures/s_/custom.rb +2 -2
- data/test/helper.rb +99 -0
- data/test/po/_.pot +2 -6
- data/test/po/backslash.pot +4 -6
- data/test/po/hello.pot +3 -3
- data/test/po/ja/_.edit.po +0 -4
- data/test/po/ja/hello.edit.po +1 -0
- data/test/po/non_ascii.pot +4 -4
- data/test/po/np_.pot +5 -8
- data/test/po/ns_.pot +4 -6
- data/test/po/p_.pot +3 -3
- data/test/po/s_.pot +4 -6
- data/test/po/untranslated.pot +4 -4
- data/test/run-test.rb +2 -2
- data/test/test_parser.rb +11 -10
- data/test/test_po_parser.rb +2 -2
- data/test/test_string.rb +1 -1
- data/test/tools/parser/test_gtk_builder_ui_definitions.rb +45 -0
- data/test/tools/parser/test_ruby.rb +26 -39
- data/test/tools/test_msgmerge.rb +3 -3
- data/test/tools/test_xgettext.rb +2 -2
- metadata +20 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d22629a729714a92e020579fcf8b6958a81f167a5c8126971383584f4cf20767
|
4
|
+
data.tar.gz: 01cd63601bbe76f52566d20015be66891e02022ce5c02691350a5d2da3980f6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 071e7bc118369c5eaffb4b7ba1653572e22a007fb4035e2620ad3bf3c152dd5fe25fafe0c8404b78fade0af264125fd716fc3fd8fa0bd3a70815837a63cc2587
|
7
|
+
data.tar.gz: 7d725646addcf0a3c3dd5460dac0dc8adfe0211190cc91164e25232a9dd392c3903fd98f55feb31ad824e3a6fa23e19202ef2e9b7fa519fbdc1b6aee91887563
|
data/doc/text/news.md
CHANGED
@@ -1,5 +1,28 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
+
## 3.3.1: 2020-01-12 {#version-3-3-1}
|
4
|
+
|
5
|
+
### Improvements
|
6
|
+
|
7
|
+
* Stopped detecting string interpolation literal.
|
8
|
+
[GitHub#21][Reported by Remo]
|
9
|
+
|
10
|
+
* `rxgettext`: Added support for adding a new parser by `--require`.
|
11
|
+
|
12
|
+
* Added support for GtkBuilder UI definitions file.
|
13
|
+
[GitHub#63][Reported by Alex]
|
14
|
+
|
15
|
+
* Improved percent literal parsing.
|
16
|
+
[GitHub#67][Patch by KITAITI Makoto]
|
17
|
+
|
18
|
+
### Thanks
|
19
|
+
|
20
|
+
* Remo
|
21
|
+
|
22
|
+
* Alex
|
23
|
+
|
24
|
+
* KITAITI Makoto
|
25
|
+
|
3
26
|
## 3.3.0: 2020-01-08 {#version-3-3-0}
|
4
27
|
|
5
28
|
### Improvements
|
@@ -156,7 +156,7 @@ module GetText
|
|
156
156
|
else
|
157
157
|
unless File.exist?(@input_file)
|
158
158
|
raise(ValidationError,
|
159
|
-
_("file '%s' does not exist." % @input_file)
|
159
|
+
_("file '%s' does not exist.") % @input_file)
|
160
160
|
end
|
161
161
|
end
|
162
162
|
|
@@ -168,8 +168,9 @@ module GetText
|
|
168
168
|
|
169
169
|
unless valid_locale?(language_tag)
|
170
170
|
raise(ValidationError,
|
171
|
-
_("Locale '
|
172
|
-
|
171
|
+
_("Locale '%s' is invalid. " +
|
172
|
+
"Please check if your specified locale is usable.") %
|
173
|
+
language_tag)
|
173
174
|
end
|
174
175
|
@locale = language_tag.to_simple.to_s
|
175
176
|
@language = language_tag.language
|
@@ -177,7 +178,7 @@ module GetText
|
|
177
178
|
@output_file ||= "#{@locale}.po"
|
178
179
|
if File.exist?(@output_file)
|
179
180
|
raise(ValidationError,
|
180
|
-
_("file '%s' has already existed." % @output_file)
|
181
|
+
_("file '%s' has already existed.") % @output_file)
|
181
182
|
end
|
182
183
|
end
|
183
184
|
|
@@ -0,0 +1,129 @@
|
|
1
|
+
# Copyright (C) 2020 Sutou Kouhei <kou@clear-code.com>
|
2
|
+
#
|
3
|
+
# License: Ruby's or LGPL
|
4
|
+
#
|
5
|
+
# This library is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU Lesser General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This library is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU Lesser General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Lesser General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
|
18
|
+
require "English"
|
19
|
+
require "cgi"
|
20
|
+
require "strscan"
|
21
|
+
|
22
|
+
require "gettext/po_entry"
|
23
|
+
|
24
|
+
module GetText
|
25
|
+
class GtkBuilderUIDefinitionsParser
|
26
|
+
@config = {
|
27
|
+
:extnames => [".ui"]
|
28
|
+
}
|
29
|
+
|
30
|
+
class << self
|
31
|
+
# Sets some preferences to parse GtkBuilder UI definitions files.
|
32
|
+
# * config: a Hash of the config. It can takes some values below:
|
33
|
+
# * :extnames: An Array of target files extension. Default is [".ui"].
|
34
|
+
def init(config)
|
35
|
+
config.each do |k, v|
|
36
|
+
@config[k] = v
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def target?(file) # :nodoc:
|
41
|
+
@config[:extnames].each do |extname|
|
42
|
+
return true if File.extname(file) == extname
|
43
|
+
end
|
44
|
+
false
|
45
|
+
end
|
46
|
+
|
47
|
+
def parse(path, options={})
|
48
|
+
parser = new(path, options)
|
49
|
+
parser.parse
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
TARGET1 = /<property.*translatable="yes">(.*)/
|
54
|
+
TARGET2 = /(.*)<\/property>/
|
55
|
+
|
56
|
+
def initialize(path, options={})
|
57
|
+
@path = path
|
58
|
+
@options = options
|
59
|
+
end
|
60
|
+
|
61
|
+
def parse # :nodoc:
|
62
|
+
File.open(@path) do |file|
|
63
|
+
po = []
|
64
|
+
start_line_no = nil
|
65
|
+
property = nil
|
66
|
+
file.each_line do |line|
|
67
|
+
case line
|
68
|
+
when /<property/
|
69
|
+
property = $POSTMATCH
|
70
|
+
start_line_no = file.lineno
|
71
|
+
if /<\/property>/ =~ property
|
72
|
+
property << $PREMATCH
|
73
|
+
add_po_entry(po, property, start_line_no)
|
74
|
+
property = nil
|
75
|
+
end
|
76
|
+
when /<\/property>/
|
77
|
+
property << $PREMATCH
|
78
|
+
add_po_entry(po, property, start_line_no)
|
79
|
+
property = nil
|
80
|
+
else
|
81
|
+
property << line if property
|
82
|
+
end
|
83
|
+
end
|
84
|
+
po
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
private
|
89
|
+
def add_po_entry(po, property, line_no)
|
90
|
+
raw_attributes, raw_data_and_close_tag = property.split(">", 2)
|
91
|
+
raw_data, _close_tag = raw_data_and_close_tag.split("<", 2)
|
92
|
+
return if raw_data.empty?
|
93
|
+
|
94
|
+
attributes = parse_attributes(raw_attributes)
|
95
|
+
return unless attributes["translatable"] == "yes"
|
96
|
+
|
97
|
+
data = CGI.unescapeHTML(raw_data)
|
98
|
+
context = attributes["context"]
|
99
|
+
if context
|
100
|
+
po_entry = POEntry.new(:msgctxt)
|
101
|
+
po_entry.msgctxt = context
|
102
|
+
else
|
103
|
+
po_entry = POEntry.new(:normal)
|
104
|
+
end
|
105
|
+
po_entry.msgid = data
|
106
|
+
po_entry.references << "#{@path}:#{line_no}"
|
107
|
+
po << po_entry
|
108
|
+
end
|
109
|
+
|
110
|
+
def parse_attributes(raw_attributes)
|
111
|
+
scanner = StringScanner.new(raw_attributes)
|
112
|
+
attributes = {}
|
113
|
+
loop do
|
114
|
+
scanner.scan(/\s*/m)
|
115
|
+
break if scanner.eos?
|
116
|
+
name = scanner.scan(/[^=]+/)
|
117
|
+
break if name.nil?
|
118
|
+
break unless scanner.scan(/=/)
|
119
|
+
quote = scanner.scan(/["']/)
|
120
|
+
break if quote.nil?
|
121
|
+
value = scanner.scan(/[^#{Regexp.escape(quote)}]+/m)
|
122
|
+
break if value.nil?
|
123
|
+
break unless scanner.scan(/#{Regexp.escape(quote)}/)
|
124
|
+
attributes[name] = CGI.unescapeHTML(value)
|
125
|
+
end
|
126
|
+
attributes
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
@@ -38,7 +38,6 @@ module GetText
|
|
38
38
|
@comment_tag = nil
|
39
39
|
@last_comment = ""
|
40
40
|
@reset_comment = false
|
41
|
-
@embed_expression_level = 0
|
42
41
|
@string_mark_stack = []
|
43
42
|
@string_stack = []
|
44
43
|
end
|
@@ -67,11 +66,6 @@ module GetText
|
|
67
66
|
end
|
68
67
|
|
69
68
|
def process_on_ident(token, po)
|
70
|
-
if @embed_expression_level > 0
|
71
|
-
@string_stack.last << token
|
72
|
-
return po
|
73
|
-
end
|
74
|
-
|
75
69
|
store_po_entry(po)
|
76
70
|
|
77
71
|
return po if @in_block_arguments
|
@@ -127,13 +121,22 @@ module GetText
|
|
127
121
|
end
|
128
122
|
|
129
123
|
def process_on_tstring_beg(token, po)
|
130
|
-
|
124
|
+
if token.start_with?("%Q")
|
125
|
+
@string_mark_stack << "\""
|
126
|
+
elsif token.start_with?("%q")
|
127
|
+
@string_mark_stack << "'"
|
128
|
+
elsif token.start_with?("%")
|
129
|
+
@string_mark_stack << "\""
|
130
|
+
else
|
131
|
+
@string_mark_stack << token
|
132
|
+
end
|
131
133
|
@string_stack << ""
|
132
134
|
po
|
133
135
|
end
|
134
136
|
|
135
137
|
def process_on_tstring_content(token, po)
|
136
|
-
|
138
|
+
case @string_mark_stack.last
|
139
|
+
when "\"", "`"
|
137
140
|
@string_stack.last << token.gsub(/\\./) do |data|
|
138
141
|
case data
|
139
142
|
when "\\n"
|
@@ -167,12 +170,15 @@ module GetText
|
|
167
170
|
|
168
171
|
def process_on_tstring_end(token, po)
|
169
172
|
@ignore_next_comma = false
|
170
|
-
@string_mark_stack.pop
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
173
|
+
string_mark = @string_mark_stack.pop
|
174
|
+
case string_mark
|
175
|
+
when "\"", "'"
|
176
|
+
last_string = @string_stack.pop
|
177
|
+
if @current_po_entry and last_string
|
178
|
+
@current_po_entry[@current_po_entry_nth_attribute] =
|
179
|
+
(@current_po_entry[@current_po_entry_nth_attribute] || "") +
|
180
|
+
last_string
|
181
|
+
end
|
176
182
|
end
|
177
183
|
po
|
178
184
|
end
|
@@ -198,14 +204,8 @@ module GetText
|
|
198
204
|
end
|
199
205
|
|
200
206
|
def process_on_embexpr_beg(token, po)
|
201
|
-
@
|
202
|
-
@
|
203
|
-
po
|
204
|
-
end
|
205
|
-
|
206
|
-
def process_on_embexpr_end(token, po)
|
207
|
-
@embed_expression_level -= 1
|
208
|
-
@string_stack.last << token
|
207
|
+
@current_po_entry = nil
|
208
|
+
@current_po_entry_nth_attribute = 0
|
209
209
|
po
|
210
210
|
end
|
211
211
|
|
@@ -239,6 +239,32 @@ module GetText
|
|
239
239
|
po
|
240
240
|
end
|
241
241
|
|
242
|
+
def process_on_symbeg(token, po)
|
243
|
+
if token.start_with?("%s") or [":'", ":\""].include?(token)
|
244
|
+
@string_mark_stack << ":"
|
245
|
+
@string_stack << ""
|
246
|
+
end
|
247
|
+
po
|
248
|
+
end
|
249
|
+
|
250
|
+
def process_on_backtick(token, po)
|
251
|
+
@string_mark_stack << "`"
|
252
|
+
@string_stack << ""
|
253
|
+
po
|
254
|
+
end
|
255
|
+
|
256
|
+
def process_on_qsymbols_beg(token, po)
|
257
|
+
@string_mark_stack << token
|
258
|
+
@string_stack << ""
|
259
|
+
po
|
260
|
+
end
|
261
|
+
|
262
|
+
def process_on_qwords_beg(token, po)
|
263
|
+
@string_mark_stack << token
|
264
|
+
@string_stack << ""
|
265
|
+
po
|
266
|
+
end
|
267
|
+
|
242
268
|
def on_default(event, token, po)
|
243
269
|
trace(event, token) do
|
244
270
|
process_method = "process_#{event}"
|
@@ -52,15 +52,15 @@ module GetText
|
|
52
52
|
# @api private
|
53
53
|
@@default_parsers = []
|
54
54
|
builtin_parser_info_list = [
|
55
|
-
["
|
55
|
+
["ruby", "RubyParser"], # Default parser.
|
56
56
|
["erb", "ErbParser"],
|
57
|
-
|
58
|
-
["
|
57
|
+
["gtk_builder_ui_definitions", "GtkBuilderUIDefinitionsParser"],
|
58
|
+
["glade", "GladeParser"],
|
59
59
|
]
|
60
60
|
builtin_parser_info_list.each do |f, klass|
|
61
61
|
begin
|
62
62
|
require "gettext/tools/parser/#{f}"
|
63
|
-
|
63
|
+
add_parser(GetText.const_get(klass))
|
64
64
|
rescue
|
65
65
|
$stderr.puts(_("'%{klass}' is ignored.") % {:klass => klass})
|
66
66
|
$stderr.puts($!) if $DEBUG
|
@@ -74,7 +74,7 @@ module GetText
|
|
74
74
|
attr_reader :parse_options
|
75
75
|
|
76
76
|
def initialize #:nodoc:
|
77
|
-
@parsers =
|
77
|
+
@parsers = []
|
78
78
|
|
79
79
|
@input_files = nil
|
80
80
|
@output = nil
|
@@ -357,7 +357,7 @@ Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;
|
|
357
357
|
end
|
358
358
|
|
359
359
|
def parse_path(path, po)
|
360
|
-
@parsers.each do |parser|
|
360
|
+
(@parsers + @@default_parsers).each do |parser|
|
361
361
|
next unless parser.target?(path)
|
362
362
|
|
363
363
|
# For backward compatibility
|
data/lib/gettext/version.rb
CHANGED
Binary file
|
data/po/bg/gettext.edit.po
CHANGED
@@ -192,18 +192,18 @@ msgid "file '%s' does not exist."
|
|
192
192
|
msgstr "Файлът '%s' съществува."
|
193
193
|
|
194
194
|
#: ../lib/gettext/tools/msginit.rb:171
|
195
|
-
msgid "Locale '
|
195
|
+
msgid "Locale '%s' is invalid. Please check if your specified locale is usable."
|
196
196
|
msgstr ""
|
197
197
|
|
198
|
-
#: ../lib/gettext/tools/msginit.rb:
|
198
|
+
#: ../lib/gettext/tools/msginit.rb:181
|
199
199
|
msgid "file '%s' has already existed."
|
200
200
|
msgstr "Файлът '%s' съществува."
|
201
201
|
|
202
|
-
#: ../lib/gettext/tools/msginit.rb:
|
202
|
+
#: ../lib/gettext/tools/msginit.rb:223
|
203
203
|
msgid "Please enter your full name"
|
204
204
|
msgstr ""
|
205
205
|
|
206
|
-
#: ../lib/gettext/tools/msginit.rb:
|
206
|
+
#: ../lib/gettext/tools/msginit.rb:252
|
207
207
|
msgid "Please enter your email address"
|
208
208
|
msgstr ""
|
209
209
|
|
@@ -469,6 +469,10 @@ msgid ""
|
|
469
469
|
"Here document2\n"
|
470
470
|
msgstr ""
|
471
471
|
|
472
|
+
#: ../test/fixtures/_.rb:109
|
473
|
+
msgid "in_quote"
|
474
|
+
msgstr ""
|
475
|
+
|
472
476
|
#. TRANSLATORS: This is a proper name. See the gettext
|
473
477
|
#. manual, section Names. Note this is actually a non-ASCII
|
474
478
|
#. name: The first name is (with Unicode escapes)
|
@@ -537,6 +541,10 @@ msgid ""
|
|
537
541
|
"one new line\n"
|
538
542
|
msgstr ""
|
539
543
|
|
544
|
+
#: ../test/fixtures/_/percent_strings.rb:34
|
545
|
+
msgid "hello world"
|
546
|
+
msgstr ""
|
547
|
+
|
540
548
|
#: ../test/fixtures/backslash.rb:27
|
541
549
|
msgid "You should escape '\\' as '\\\\'."
|
542
550
|
msgstr ""
|
data/po/bg/gettext.po
CHANGED
@@ -158,9 +158,7 @@ msgstr ""
|
|
158
158
|
msgid "file '%s' does not exist."
|
159
159
|
msgstr "Файлът '%s' съществува."
|
160
160
|
|
161
|
-
msgid ""
|
162
|
-
"Locale '#{language_tag}' is invalid. Please check if your specified locale is "
|
163
|
-
"usable."
|
161
|
+
msgid "Locale '%s' is invalid. Please check if your specified locale is usable."
|
164
162
|
msgstr ""
|
165
163
|
|
166
164
|
msgid "file '%s' has already existed."
|
@@ -389,6 +387,9 @@ msgid ""
|
|
389
387
|
"Here document2\n"
|
390
388
|
msgstr ""
|
391
389
|
|
390
|
+
msgid "in_quote"
|
391
|
+
msgstr ""
|
392
|
+
|
392
393
|
#. TRANSLATORS: This is a proper name. See the gettext
|
393
394
|
#. manual, section Names. Note this is actually a non-ASCII
|
394
395
|
#. name: The first name is (with Unicode escapes)
|
@@ -443,6 +444,9 @@ msgid ""
|
|
443
444
|
"one new line\n"
|
444
445
|
msgstr ""
|
445
446
|
|
447
|
+
msgid "hello world"
|
448
|
+
msgstr ""
|
449
|
+
|
446
450
|
msgid "You should escape '\\' as '\\\\'."
|
447
451
|
msgstr ""
|
448
452
|
|
data/po/bs/gettext.edit.po
CHANGED
@@ -194,18 +194,18 @@ msgid "file '%s' does not exist."
|
|
194
194
|
msgstr "Datoteka '%s' već postoji."
|
195
195
|
|
196
196
|
#: ../lib/gettext/tools/msginit.rb:171
|
197
|
-
msgid "Locale '
|
197
|
+
msgid "Locale '%s' is invalid. Please check if your specified locale is usable."
|
198
198
|
msgstr ""
|
199
199
|
|
200
|
-
#: ../lib/gettext/tools/msginit.rb:
|
200
|
+
#: ../lib/gettext/tools/msginit.rb:181
|
201
201
|
msgid "file '%s' has already existed."
|
202
202
|
msgstr "Datoteka '%s' već postoji."
|
203
203
|
|
204
|
-
#: ../lib/gettext/tools/msginit.rb:
|
204
|
+
#: ../lib/gettext/tools/msginit.rb:223
|
205
205
|
msgid "Please enter your full name"
|
206
206
|
msgstr ""
|
207
207
|
|
208
|
-
#: ../lib/gettext/tools/msginit.rb:
|
208
|
+
#: ../lib/gettext/tools/msginit.rb:252
|
209
209
|
msgid "Please enter your email address"
|
210
210
|
msgstr ""
|
211
211
|
|
@@ -474,6 +474,10 @@ msgid ""
|
|
474
474
|
"Here document2\n"
|
475
475
|
msgstr ""
|
476
476
|
|
477
|
+
#: ../test/fixtures/_.rb:109
|
478
|
+
msgid "in_quote"
|
479
|
+
msgstr ""
|
480
|
+
|
477
481
|
#. TRANSLATORS: This is a proper name. See the gettext
|
478
482
|
#. manual, section Names. Note this is actually a non-ASCII
|
479
483
|
#. name: The first name is (with Unicode escapes)
|
@@ -542,6 +546,10 @@ msgid ""
|
|
542
546
|
"one new line\n"
|
543
547
|
msgstr ""
|
544
548
|
|
549
|
+
#: ../test/fixtures/_/percent_strings.rb:34
|
550
|
+
msgid "hello world"
|
551
|
+
msgstr ""
|
552
|
+
|
545
553
|
#: ../test/fixtures/backslash.rb:27
|
546
554
|
msgid "You should escape '\\' as '\\\\'."
|
547
555
|
msgstr ""
|