locale 2.0.8 → 2.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/doc/text/news.md +22 -0
- data/lib/locale/driver/env.rb +35 -17
- data/lib/locale/driver/posix.rb +1 -1
- data/lib/locale/taglist.rb +6 -4
- data/lib/locale/version.rb +1 -1
- data/locale.gemspec +2 -1
- data/test/test_detect_general.rb +80 -7
- data/test/test_driver_jruby.rb +1 -1
- data/test/test_driver_win32.rb +1 -1
- data/test/test_taglist.rb +27 -0
- metadata +42 -40
data/doc/text/news.md
CHANGED
@@ -1,5 +1,27 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
+
## <a id="2-0-9">2.0.9</a>: 2013-09-20
|
4
|
+
|
5
|
+
Locale handling fix release.
|
6
|
+
|
7
|
+
### Improvements
|
8
|
+
|
9
|
+
* Added license metadata to gem package.
|
10
|
+
[GitHub#1] [Suggested by jordimassaguerpla]
|
11
|
+
|
12
|
+
### Fixes
|
13
|
+
|
14
|
+
* Added missing .yardopts file.
|
15
|
+
* Fixed a bug that wrong environment value is used.
|
16
|
+
[Debian:#520181][Debian:#690572][GitHub#2]
|
17
|
+
[Reported by Stefano Zacchiroli][Reported by Hleb Valoshka]
|
18
|
+
|
19
|
+
### Thanks
|
20
|
+
|
21
|
+
* jordimassaguerpla
|
22
|
+
* Stefano Zacchiroli
|
23
|
+
* Hleb Valoshka
|
24
|
+
|
3
25
|
## <a id="2-0-8">2.0.8</a>: 2012-08-29
|
4
26
|
|
5
27
|
Package fix release.
|
data/lib/locale/driver/env.rb
CHANGED
@@ -24,29 +24,37 @@ require 'locale/tag'
|
|
24
24
|
require 'locale/taglist'
|
25
25
|
require "locale/driver"
|
26
26
|
|
27
|
-
module Locale
|
27
|
+
module Locale
|
28
28
|
module Driver
|
29
29
|
# Locale::Driver::Env module.
|
30
30
|
# Detect the user locales and the charset.
|
31
|
-
# All drivers(except CGI) refer environment variables first and use it
|
31
|
+
# All drivers(except CGI) refer environment variables first and use it
|
32
32
|
# as the locale if it's defined.
|
33
33
|
# This is a low-level module. Application shouldn't use this directly.
|
34
34
|
module Env
|
35
35
|
module_function
|
36
36
|
|
37
|
-
# Gets the locale from environment variable.
|
37
|
+
# Gets the locale from environment variable.
|
38
|
+
# Priority order except charset is LC_ALL > LC_MESSAGES > LANG.
|
39
|
+
# Priority order for charset is LC_ALL > LC_CTYPE > LANG.
|
38
40
|
# Returns: the locale as Locale::Tag::Posix.
|
39
41
|
def locale
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
42
|
+
lc_all = Private.parse(ENV["LC_ALL"])
|
43
|
+
return lc_all if lc_all
|
44
|
+
|
45
|
+
lc_messages = Private.parse(ENV["LC_MESSAGES"])
|
46
|
+
lang = Private.parse(ENV["LANG"])
|
47
|
+
|
48
|
+
tag = lc_messages || lang
|
49
|
+
return nil if tag.nil?
|
50
|
+
|
51
|
+
lc_ctype = Private.parse(ENV["LC_CTYPE"])
|
52
|
+
tag.charset = lc_ctype.charset if lc_ctype
|
53
|
+
|
54
|
+
tag
|
47
55
|
end
|
48
56
|
|
49
|
-
# Gets the locales from environment variables. (LANGUAGE > LC_ALL >
|
57
|
+
# Gets the locales from environment variables. (LANGUAGE > LC_ALL > LC_MESSAGES > LANG)
|
50
58
|
# * Returns: an Array of the locale as Locale::Tag::Posix or nil.
|
51
59
|
def locales
|
52
60
|
locales = ENV["LANGUAGE"]
|
@@ -61,16 +69,26 @@ module Locale
|
|
61
69
|
nil
|
62
70
|
end
|
63
71
|
|
64
|
-
# Gets the charset from environment
|
72
|
+
# Gets the charset from environment variables
|
73
|
+
# (LC_ALL > LC_CTYPE > LANG) or return nil.
|
65
74
|
# * Returns: the system charset.
|
66
75
|
def charset # :nodoc:
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
76
|
+
[ENV["LC_ALL"], ENV["LC_CTYPE"], ENV["LANG"]].each do |env|
|
77
|
+
tag = Private.parse(env)
|
78
|
+
next if tag.nil?
|
79
|
+
return tag.charset
|
80
|
+
end
|
81
|
+
nil
|
82
|
+
end
|
83
|
+
|
84
|
+
module Private
|
85
|
+
module_function
|
86
|
+
def parse(env_value)
|
87
|
+
return nil if env_value.nil?
|
88
|
+
return nil if env_value.empty?
|
89
|
+
Locale::Tag::Posix.parse(env_value)
|
71
90
|
end
|
72
91
|
end
|
73
|
-
|
74
92
|
end
|
75
93
|
|
76
94
|
MODULES[:env] = Env
|
data/lib/locale/driver/posix.rb
CHANGED
@@ -30,7 +30,7 @@ module Locale
|
|
30
30
|
$stderr.puts self.name + " is loaded." if $DEBUG
|
31
31
|
|
32
32
|
module_function
|
33
|
-
# Gets the locales from environment variables. (LANGUAGE > LC_ALL >
|
33
|
+
# Gets the locales from environment variables. (LANGUAGE > LC_ALL > LC_MESSAGES > LANG)
|
34
34
|
# Only LANGUAGE accept plural languages such as "nl_BE;
|
35
35
|
# * Returns: an Array of the locale as Locale::Tag::Posix or nil.
|
36
36
|
def locales
|
data/lib/locale/taglist.rb
CHANGED
@@ -46,11 +46,13 @@ module Locale
|
|
46
46
|
end
|
47
47
|
# Returns the top priority charset. (posix)
|
48
48
|
def charset
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
49
|
+
top_priority_charset = nil
|
50
|
+
first_tag = self[0]
|
51
|
+
if first_tag.respond_to?(:charset)
|
52
|
+
top_priority_charset = first_tag.charset
|
53
53
|
end
|
54
|
+
top_priority_charset ||= ::Locale.driver_module.charset
|
55
|
+
top_priority_charset
|
54
56
|
end
|
55
57
|
memoize :charset
|
56
58
|
|
data/lib/locale/version.rb
CHANGED
data/locale.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- mode: ruby; coding: utf-8 -*-
|
2
2
|
#
|
3
|
-
# Copyright (C) 2012 Kouhei Sutou <kou@clear-code.com>
|
3
|
+
# Copyright (C) 2012-2013 Kouhei Sutou <kou@clear-code.com>
|
4
4
|
# Copyright (C) 2009 Masao Mutoh
|
5
5
|
#
|
6
6
|
# License: Ruby's or LGPL
|
@@ -32,6 +32,7 @@ Ruby-Locale is the pure ruby library which provides basic APIs for localization.
|
|
32
32
|
s.authors = ["Kouhei Sutou", "Masao Mutoh"]
|
33
33
|
s.email = ["kou@clear-code.com", "mutomasa at gmail.com"]
|
34
34
|
s.homepage = "https://github.com/ruby-gettext/locale"
|
35
|
+
s.licenses = ["Ruby", "LGPLv3+"]
|
35
36
|
s.require_paths = ["lib"]
|
36
37
|
Dir.chdir(base_dir) do
|
37
38
|
s.files = Dir.glob("{lib,samples}/**/*").find_all do |path|
|
data/test/test_detect_general.rb
CHANGED
@@ -28,14 +28,16 @@ class TestDetectGeneral < Test::Unit::TestCase
|
|
28
28
|
Locale.init
|
29
29
|
Locale.clear_all
|
30
30
|
ENV["LC_ALL"] = nil
|
31
|
-
ENV["
|
31
|
+
ENV["LC_CTYPE"] = nil
|
32
|
+
ENV["LC_MESSAGES"] = nil
|
32
33
|
ENV["LANG"] = nil
|
33
34
|
ENV["LANGUAGE"] = nil
|
34
35
|
end
|
35
36
|
|
36
37
|
def test_lc_all
|
37
38
|
ENV["LC_ALL"] = "ja_JP.eucJP"
|
38
|
-
ENV["
|
39
|
+
ENV["LC_CTYPE"] = "fr_FR.ISO-8859-1" #Ignored.
|
40
|
+
ENV["LC_MESSAGES"] = "zh_CN.UTF-8" #Ignored.
|
39
41
|
ENV["LANG"] = "ko_KR.UTF-8" #Ignored.
|
40
42
|
ENV["LANGUAGE"] = nil
|
41
43
|
|
@@ -51,8 +53,9 @@ class TestDetectGeneral < Test::Unit::TestCase
|
|
51
53
|
|
52
54
|
def test_lc_messages
|
53
55
|
ENV["LC_ALL"] = nil
|
54
|
-
ENV["
|
55
|
-
ENV["
|
56
|
+
ENV["LC_CTYPE"] = nil
|
57
|
+
ENV["LC_MESSAGES"] = "ja_JP.eucJP"
|
58
|
+
ENV["LANG"] = "ko_KR.UTF-8" #Ignored except charset.
|
56
59
|
ENV["LANGUAGE"] = nil
|
57
60
|
|
58
61
|
lang = Locale.current[0]
|
@@ -62,12 +65,30 @@ class TestDetectGeneral < Test::Unit::TestCase
|
|
62
65
|
assert_equal "eucJP", lang.charset
|
63
66
|
assert_equal Locale::Tag::Posix.new("ja", "JP", "eucJP"), lang
|
64
67
|
|
65
|
-
assert_equal "
|
68
|
+
assert_equal "UTF-8", Locale.charset
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_lc_messages_with_lc_ctype
|
72
|
+
ENV["LC_ALL"] = nil
|
73
|
+
ENV["LC_CTYPE"] = "fr_FR.ISO-8859-1"
|
74
|
+
ENV["LC_MESSAGES"] = "ja_JP.eucJP"
|
75
|
+
ENV["LANG"] = "ko_KR.UTF-8" #Ignored.
|
76
|
+
ENV["LANGUAGE"] = nil
|
77
|
+
|
78
|
+
lang = Locale.current[0]
|
79
|
+
assert_equal Locale::Tag::Posix, lang.class
|
80
|
+
assert_equal "ja", lang.language
|
81
|
+
assert_equal "JP", lang.region
|
82
|
+
assert_equal "ISO-8859-1", lang.charset
|
83
|
+
assert_equal Locale::Tag::Posix.new("ja", "JP", "ISO-8859-1"), lang
|
84
|
+
|
85
|
+
assert_equal "ISO-8859-1", Locale.charset
|
66
86
|
end
|
67
87
|
|
68
88
|
def test_lang
|
69
89
|
ENV["LC_ALL"] = nil
|
70
|
-
ENV["
|
90
|
+
ENV["LC_CTYPE"] = nil
|
91
|
+
ENV["LC_MESSAGES"] = nil
|
71
92
|
ENV["LANG"] = "ja_JP.eucJP"
|
72
93
|
ENV["LANGUAGE"] = nil
|
73
94
|
|
@@ -81,9 +102,27 @@ class TestDetectGeneral < Test::Unit::TestCase
|
|
81
102
|
assert_equal "eucJP", Locale.charset
|
82
103
|
end
|
83
104
|
|
105
|
+
def test_lang_with_ctype
|
106
|
+
ENV["LC_ALL"] = nil
|
107
|
+
ENV["LC_CTYPE"] = "fr_FR.ISO-8859-1"
|
108
|
+
ENV["LC_MESSAGES"] = nil
|
109
|
+
ENV["LANG"] = "ja_JP.eucJP"
|
110
|
+
ENV["LANGUAGE"] = nil
|
111
|
+
|
112
|
+
lang = Locale.current[0]
|
113
|
+
assert_equal Locale::Tag::Posix, lang.class
|
114
|
+
assert_equal "ja", lang.language
|
115
|
+
assert_equal "JP", lang.region
|
116
|
+
assert_equal "ISO-8859-1", lang.charset
|
117
|
+
assert_equal Locale::Tag::Posix.new("ja", "JP", "ISO-8859-1"), lang
|
118
|
+
|
119
|
+
assert_equal "ISO-8859-1", Locale.charset
|
120
|
+
end
|
121
|
+
|
84
122
|
def test_lang_complex
|
85
123
|
ENV["LC_ALL"] = "zh_CN.UTF-8" # Ignored.
|
86
|
-
ENV["
|
124
|
+
ENV["LC_CTYPE"] = "fr_FR.ISO-8859-1" #Ingored.
|
125
|
+
ENV["LC_MESSAGES"] = "ko_KR.UTF-8" #Ingored.
|
87
126
|
ENV["LANG"] = "en_US.UTF-8" # Ignored.
|
88
127
|
ENV["LANGUAGE"] ="ja_JP.eucJP:zh_CN.UTF-8"
|
89
128
|
|
@@ -232,6 +271,40 @@ class TestDetectGeneral < Test::Unit::TestCase
|
|
232
271
|
|
233
272
|
end
|
234
273
|
|
274
|
+
class TestCharset < self
|
275
|
+
def test_lc_all
|
276
|
+
ENV["LC_ALL"] = "ja_JP.eucJP"
|
277
|
+
ENV["LC_CTYPE"] = "ko_KR.eucKR" # Ignored.
|
278
|
+
ENV["LANG"] = "fr_FR.ISO-8859-1" # Ignored.
|
279
|
+
|
280
|
+
assert_equal("eucJP", Locale.charset)
|
281
|
+
end
|
282
|
+
|
283
|
+
def test_lc_ctype
|
284
|
+
ENV["LC_ALL"] = nil
|
285
|
+
ENV["LC_CTYPE"] = "ko_KR.eucKR"
|
286
|
+
ENV["LANG"] = "fr_FR.ISO-8859-1" # Ignored.
|
287
|
+
|
288
|
+
assert_equal("eucKR", Locale.charset)
|
289
|
+
end
|
290
|
+
|
291
|
+
def test_lc_messages
|
292
|
+
ENV["LC_ALL"] = nil
|
293
|
+
ENV["LC_MESSAGES"] = "ko_KR.eucKR" # Ignored.
|
294
|
+
ENV["LANG"] = "fr_FR.ISO-8859-1"
|
295
|
+
|
296
|
+
assert_equal("ISO-8859-1", Locale.charset)
|
297
|
+
end
|
298
|
+
|
299
|
+
def test_lang
|
300
|
+
ENV["LC_ALL"] = nil
|
301
|
+
ENV["LC_CTYPE"] = nil
|
302
|
+
ENV["LANG"] = "fr_FR.ISO-8859-1"
|
303
|
+
|
304
|
+
assert_equal("ISO-8859-1", Locale.charset)
|
305
|
+
end
|
306
|
+
end
|
307
|
+
|
235
308
|
private
|
236
309
|
def jruby?
|
237
310
|
RUBY_PLATFORM == "java"
|
data/test/test_driver_jruby.rb
CHANGED
data/test/test_driver_win32.rb
CHANGED
data/test/test_taglist.rb
CHANGED
@@ -31,4 +31,31 @@ class TestTagList < Test::Unit::TestCase
|
|
31
31
|
assert_equal ["y-aaa"], list.extensions
|
32
32
|
assert_equal "x-bbb", list.privateuse
|
33
33
|
end
|
34
|
+
|
35
|
+
class TestCharset < self
|
36
|
+
def setup
|
37
|
+
ENV["LC_ALL"] = nil
|
38
|
+
ENV["LC_CTYPE"] = nil
|
39
|
+
ENV["LANG"] = nil
|
40
|
+
ENV["LANGUAGE"] = nil
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_empty
|
44
|
+
list = Locale::TagList.new
|
45
|
+
ENV["LC_ALL"] = "en_US.UTF-8"
|
46
|
+
assert_equal("UTF-8", list.charset)
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_have_charset_tag
|
50
|
+
list = Locale::TagList.new([Locale::Tag.parse("en_US.ISO-8859-1")])
|
51
|
+
ENV["LC_ALL"] = "en_US.UTF-8"
|
52
|
+
assert_equal("ISO-8859-1", list.charset)
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_no_charset_tag
|
56
|
+
list = Locale::TagList.new([Locale::Tag.parse("en_US")])
|
57
|
+
ENV["LC_ALL"] = "en_US.UTF-8"
|
58
|
+
assert_equal("UTF-8", list.charset)
|
59
|
+
end
|
60
|
+
end
|
34
61
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: locale
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2013-09-20 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake
|
@@ -135,41 +135,41 @@ executables: []
|
|
135
135
|
extensions: []
|
136
136
|
extra_rdoc_files: []
|
137
137
|
files:
|
138
|
-
- lib/locale/
|
138
|
+
- lib/locale/version.rb
|
139
|
+
- lib/locale/tag.rb
|
140
|
+
- lib/locale/tag/cldr.rb
|
139
141
|
- lib/locale/tag/posix.rb
|
140
142
|
- lib/locale/tag/common.rb
|
141
|
-
- lib/locale/tag/
|
142
|
-
- lib/locale/tag/rfc.rb
|
143
|
+
- lib/locale/tag/simple.rb
|
143
144
|
- lib/locale/tag/irregular.rb
|
144
|
-
- lib/locale/
|
145
|
-
- lib/locale/data/languages.tab.gz
|
146
|
-
- lib/locale/data/regions.tab.gz
|
147
|
-
- lib/locale/middleware.rb
|
148
|
-
- lib/locale/version.rb
|
149
|
-
- lib/locale/info/region.rb
|
145
|
+
- lib/locale/tag/rfc.rb
|
150
146
|
- lib/locale/info/language.rb
|
151
|
-
- lib/locale/
|
152
|
-
- lib/locale/driver
|
153
|
-
- lib/locale/driver/jruby.rb
|
147
|
+
- lib/locale/info/region.rb
|
148
|
+
- lib/locale/driver.rb
|
154
149
|
- lib/locale/driver/cgi.rb
|
155
|
-
- lib/locale/driver/
|
150
|
+
- lib/locale/driver/posix.rb
|
151
|
+
- lib/locale/driver/env.rb
|
156
152
|
- lib/locale/driver/win32.rb
|
157
|
-
- lib/locale/
|
158
|
-
- lib/locale/driver.rb
|
159
|
-
- lib/locale/
|
153
|
+
- lib/locale/driver/win32_table.rb
|
154
|
+
- lib/locale/driver/jruby.rb
|
155
|
+
- lib/locale/info.rb
|
156
|
+
- lib/locale/middleware.rb
|
157
|
+
- lib/locale/data/languages.tab.gz
|
158
|
+
- lib/locale/data/regions.tab.gz
|
160
159
|
- lib/locale/util/memoizable.rb
|
160
|
+
- lib/locale/taglist.rb
|
161
161
|
- lib/locale.rb
|
162
|
-
- samples/rack/hello_rack.rb
|
163
|
-
- samples/rack/README
|
164
|
-
- samples/rack/locale_rack.rb
|
165
|
-
- samples/rack/hello_rack.ru
|
166
162
|
- samples/cgi/README
|
167
|
-
- samples/cgi/cookie.cgi
|
168
|
-
- samples/cgi/locale.css
|
169
163
|
- samples/cgi/index.cgi
|
164
|
+
- samples/cgi/locale.css
|
170
165
|
- samples/cgi/http.rb
|
171
|
-
- samples/
|
166
|
+
- samples/cgi/cookie.cgi
|
167
|
+
- samples/rack/README
|
168
|
+
- samples/rack/locale_rack.rb
|
169
|
+
- samples/rack/hello_rack.rb
|
170
|
+
- samples/rack/hello_rack.ru
|
172
171
|
- samples/sample_1.rb
|
172
|
+
- samples/sample_info.rb
|
173
173
|
- COPYING
|
174
174
|
- ChangeLog
|
175
175
|
- README.rdoc
|
@@ -178,18 +178,20 @@ files:
|
|
178
178
|
- locale.gemspec
|
179
179
|
- .yardopts
|
180
180
|
- doc/text/news.md
|
181
|
-
- test/
|
182
|
-
- test/test_taglist.rb
|
183
|
-
- test/test_detect_general.rb
|
184
|
-
- test/test_driver_win32.rb
|
185
|
-
- test/test_thread.rb
|
186
|
-
- test/test_memoizable.rb
|
181
|
+
- test/test_tag.rb
|
187
182
|
- test/test_detect_cgi.rb
|
183
|
+
- test/test_taglist.rb
|
188
184
|
- test/test_locale.rb
|
185
|
+
- test/test_thread.rb
|
189
186
|
- test/test_info.rb
|
190
|
-
- test/
|
187
|
+
- test/test_memoizable.rb
|
188
|
+
- test/test_driver_jruby.rb
|
189
|
+
- test/test_driver_win32.rb
|
190
|
+
- test/test_detect_general.rb
|
191
191
|
homepage: https://github.com/ruby-gettext/locale
|
192
|
-
licenses:
|
192
|
+
licenses:
|
193
|
+
- Ruby
|
194
|
+
- LGPLv3+
|
193
195
|
post_install_message:
|
194
196
|
rdoc_options: []
|
195
197
|
require_paths:
|
@@ -213,14 +215,14 @@ signing_key:
|
|
213
215
|
specification_version: 3
|
214
216
|
summary: Ruby-Locale is the pure ruby library which provides basic APIs for localization.
|
215
217
|
test_files:
|
216
|
-
- test/
|
217
|
-
- test/test_taglist.rb
|
218
|
-
- test/test_detect_general.rb
|
219
|
-
- test/test_driver_win32.rb
|
220
|
-
- test/test_thread.rb
|
221
|
-
- test/test_memoizable.rb
|
218
|
+
- test/test_tag.rb
|
222
219
|
- test/test_detect_cgi.rb
|
220
|
+
- test/test_taglist.rb
|
223
221
|
- test/test_locale.rb
|
222
|
+
- test/test_thread.rb
|
224
223
|
- test/test_info.rb
|
225
|
-
- test/
|
224
|
+
- test/test_memoizable.rb
|
225
|
+
- test/test_driver_jruby.rb
|
226
|
+
- test/test_driver_win32.rb
|
227
|
+
- test/test_detect_general.rb
|
226
228
|
has_rdoc:
|