locale 0.9.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/COPYING +55 -0
- data/ChangeLog +113 -0
- data/README +100 -0
- data/Rakefile +77 -0
- data/doc/classes/Locale/Driver.html +375 -0
- data/doc/classes/Locale/Driver/CGI.html +502 -0
- data/doc/classes/Locale/Driver/Env.html +440 -0
- data/doc/classes/Locale/Driver/JRuby.html +390 -0
- data/doc/classes/Locale/Driver/Posix.html +431 -0
- data/doc/classes/Locale/Driver/Win32.html +398 -0
- data/doc/classes/Locale/Driver/Win32Table.html +356 -0
- data/doc/classes/Locale/Info.html +586 -0
- data/doc/classes/Locale/Info/Language.html +764 -0
- data/doc/classes/Locale/Info/Region.html +470 -0
- data/doc/classes/Locale/Tag/Cldr.html +547 -0
- data/doc/classes/Locale/Tag/Common.html +655 -0
- data/doc/classes/Locale/Tag/Illegular.html +424 -0
- data/doc/classes/Locale/Tag/Posix.html +612 -0
- data/doc/classes/Locale/Tag/Rfc.html +610 -0
- data/doc/classes/Locale/Tag/Simple.html +684 -0
- data/doc/classes/Locale/TagList.html +783 -0
- data/doc/classes/Locale/Util.html +476 -0
- data/doc/classes/Locale/Util/Memoizable.html +356 -0
- data/doc/created.rid +1 -0
- data/doc/files/ChangeLog.html +497 -0
- data/doc/files/README.html +525 -0
- data/doc/files/lib/locale/driver/cgi_rb.html +342 -0
- data/doc/files/lib/locale/driver/env_rb.html +354 -0
- data/doc/files/lib/locale/driver/jruby_rb.html +359 -0
- data/doc/files/lib/locale/driver/posix_rb.html +349 -0
- data/doc/files/lib/locale/driver/win32_rb.html +359 -0
- data/doc/files/lib/locale/driver/win32_table_rb.html +342 -0
- data/doc/files/lib/locale/info/language_rb.html +353 -0
- data/doc/files/lib/locale/info/region_rb.html +353 -0
- data/doc/files/lib/locale/info_rb.html +354 -0
- data/doc/files/lib/locale/tag/cldr_rb.html +342 -0
- data/doc/files/lib/locale/tag/common_rb.html +342 -0
- data/doc/files/lib/locale/tag/illegular_rb.html +349 -0
- data/doc/files/lib/locale/tag/posix_rb.html +342 -0
- data/doc/files/lib/locale/tag/rfc_rb.html +342 -0
- data/doc/files/lib/locale/tag/simple_rb.html +349 -0
- data/doc/files/lib/locale/tag_rb.html +374 -0
- data/doc/files/lib/locale/taglist_rb.html +342 -0
- data/doc/files/lib/locale/util/memoizable_rb.html +360 -0
- data/doc/files/lib/locale/version_rb.html +342 -0
- data/doc/files/lib/locale_rb.html +379 -0
- data/doc/fr_class_index.html +20 -0
- data/doc/fr_file_index.html +23 -0
- data/doc/fr_method_index.html +80 -0
- data/doc/index.html +1 -0
- data/doc/rdoc-style.css +320 -0
- data/lib/locale.rb +248 -0
- data/lib/locale/data/languages.tab.gz +0 -0
- data/lib/locale/data/regions.tab.gz +0 -0
- data/lib/locale/driver/cgi.rb +132 -0
- data/lib/locale/driver/env.rb +64 -0
- data/lib/locale/driver/jruby.rb +53 -0
- data/lib/locale/driver/posix.rb +49 -0
- data/lib/locale/driver/win32.rb +61 -0
- data/lib/locale/driver/win32_table.rb +298 -0
- data/lib/locale/info.rb +12 -0
- data/lib/locale/info/language.rb +134 -0
- data/lib/locale/info/region.rb +74 -0
- data/lib/locale/tag.rb +36 -0
- data/lib/locale/tag/cldr.rb +93 -0
- data/lib/locale/tag/common.rb +122 -0
- data/lib/locale/tag/illegular.rb +38 -0
- data/lib/locale/tag/posix.rb +97 -0
- data/lib/locale/tag/rfc.rb +106 -0
- data/lib/locale/tag/simple.rb +145 -0
- data/lib/locale/taglist.rb +93 -0
- data/lib/locale/util/memoizable.rb +76 -0
- data/lib/locale/version.rb +12 -0
- data/samples/cgi/README +20 -0
- data/samples/cgi/cookie.cgi +62 -0
- data/samples/cgi/http.rb +52 -0
- data/samples/cgi/index.cgi +90 -0
- data/samples/cgi/locale.css +115 -0
- data/samples/sample_1.rb +25 -0
- data/samples/sample_info.rb +6 -0
- data/setup.rb +1585 -0
- data/test/test_detect_cgi.rb +179 -0
- data/test/test_detect_general.rb +159 -0
- data/test/test_info.rb +28 -0
- data/test/test_tag.rb +1183 -0
- data/test/test_thread.rb +37 -0
- metadata +162 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
require 'cgi'
|
|
2
|
+
require 'locale'
|
|
3
|
+
require 'test/unit'
|
|
4
|
+
|
|
5
|
+
class CGI
|
|
6
|
+
module QueryExtension
|
|
7
|
+
# Override this method to avoid to put warning messages.
|
|
8
|
+
module_function
|
|
9
|
+
def readlines=(str)
|
|
10
|
+
@@lines = [str]
|
|
11
|
+
end
|
|
12
|
+
def readlines
|
|
13
|
+
@@lines
|
|
14
|
+
end
|
|
15
|
+
def read_from_cmdline
|
|
16
|
+
require "shellwords"
|
|
17
|
+
string = readlines.join(' ').gsub(/\n/n, '').gsub(/\\=/n, '%3D').gsub(/\\&/n, '%26')
|
|
18
|
+
|
|
19
|
+
words = Shellwords.shellwords(string)
|
|
20
|
+
|
|
21
|
+
if words.find{|x| /=/n.match(x) }
|
|
22
|
+
words.join('&')
|
|
23
|
+
else
|
|
24
|
+
words.join('+')
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
private :read_from_cmdline
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
class TestDetectCGI < Test::Unit::TestCase
|
|
32
|
+
def setup_cgi(str)
|
|
33
|
+
CGI::QueryExtension.readlines = str
|
|
34
|
+
Locale.init(:driver => :cgi)
|
|
35
|
+
cgi = CGI.new
|
|
36
|
+
Locale.cgi = cgi
|
|
37
|
+
Locale.clear_all
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_query_string
|
|
41
|
+
#query string
|
|
42
|
+
setup_cgi("lang=ja_JP")
|
|
43
|
+
lang = Locale.current[0]
|
|
44
|
+
assert_equal(Locale::Tag::Simple, lang.class)
|
|
45
|
+
assert_equal("ja_JP", lang.to_s)
|
|
46
|
+
|
|
47
|
+
setup_cgi("lang=ja-jp")
|
|
48
|
+
lang = Locale.current[0]
|
|
49
|
+
assert_equal(Locale::Tag::Simple, lang.class)
|
|
50
|
+
assert_equal("ja_JP", lang.to_s)
|
|
51
|
+
assert_equal("ja-JP", lang.to_rfc.to_s)
|
|
52
|
+
setup_cgi("lang=ja-jp")
|
|
53
|
+
assert_equal("ja_JP", lang.to_s)
|
|
54
|
+
assert_equal("ja-JP", lang.to_rfc.to_s)
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def test_cookie
|
|
59
|
+
#cockie
|
|
60
|
+
setup_cgi("Set-Cookie: lang=en-us")
|
|
61
|
+
assert_equal("en_US", Locale.current.to_s)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def test_accept_language
|
|
65
|
+
setup_cgi("")
|
|
66
|
+
ENV["HTTP_ACCEPT_LANGUAGE"] = ""
|
|
67
|
+
ENV["HTTP_ACCEPT_CHARSET"] = ""
|
|
68
|
+
lang = Locale.current[0]
|
|
69
|
+
assert_equal(Locale::Tag::Simple, lang.class)
|
|
70
|
+
assert_equal("en", lang.to_s)
|
|
71
|
+
assert_equal("en", lang.to_rfc.to_s)
|
|
72
|
+
|
|
73
|
+
setup_cgi("")
|
|
74
|
+
ENV["HTTP_ACCEPT_LANGUAGE"] = "ja,en-us;q=0.7,en;q=0.3"
|
|
75
|
+
lang1, lang2, lang3 = Locale.current
|
|
76
|
+
assert_equal("ja", lang1.to_rfc.to_s)
|
|
77
|
+
assert_equal("en-US", lang2.to_rfc.to_s)
|
|
78
|
+
assert_equal("en", lang3.to_rfc.to_s)
|
|
79
|
+
|
|
80
|
+
setup_cgi("")
|
|
81
|
+
ENV["HTTP_ACCEPT_LANGUAGE"] = "en-us,ja;q=0.7,en;q=0.3"
|
|
82
|
+
lang1, lang2, lang3 = Locale.current
|
|
83
|
+
assert_equal("en-US", lang1.to_rfc.to_s)
|
|
84
|
+
assert_equal("ja", lang2.to_rfc.to_s)
|
|
85
|
+
assert_equal("en", lang3.to_rfc.to_s)
|
|
86
|
+
|
|
87
|
+
setup_cgi("")
|
|
88
|
+
ENV["HTTP_ACCEPT_LANGUAGE"] = "en"
|
|
89
|
+
lang = Locale.current[0]
|
|
90
|
+
assert_equal("en", lang.to_rfc.to_s)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def test_accept_charset
|
|
94
|
+
#accept charset
|
|
95
|
+
setup_cgi("")
|
|
96
|
+
ENV["HTTP_ACCEPT_CHARSET"] = "Shift_JIS"
|
|
97
|
+
assert_equal("Shift_JIS", Locale.charset)
|
|
98
|
+
|
|
99
|
+
setup_cgi("")
|
|
100
|
+
ENV["HTTP_ACCEPT_CHARSET"] = "EUC-JP,*,utf-8"
|
|
101
|
+
assert_equal("EUC-JP", Locale.charset)
|
|
102
|
+
|
|
103
|
+
setup_cgi("")
|
|
104
|
+
ENV["HTTP_ACCEPT_CHARSET"] = "*"
|
|
105
|
+
assert_equal("UTF-8", Locale.charset)
|
|
106
|
+
|
|
107
|
+
setup_cgi("")
|
|
108
|
+
ENV["HTTP_ACCEPT_CHARSET"] = ""
|
|
109
|
+
assert_equal("UTF-8", Locale.charset)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def test_default
|
|
113
|
+
Locale.set_default(nil)
|
|
114
|
+
Locale.set_default("ja-JP")
|
|
115
|
+
setup_cgi("")
|
|
116
|
+
ENV["HTTP_ACCEPT_LANGUAGE"] = ""
|
|
117
|
+
ENV["HTTP_ACCEPT_CHARSET"] = ""
|
|
118
|
+
assert_equal("ja-JP", Locale.default.to_rfc.to_s)
|
|
119
|
+
assert_equal("ja-JP", Locale.current.to_rfc.to_s)
|
|
120
|
+
Locale.set_default(nil)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def common(*ary)
|
|
124
|
+
ary.map{|v| Locale::Tag::Common.parse(v)}
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def rfc(*ary)
|
|
128
|
+
ary.map{|v| Locale::Tag::Rfc.parse(v)}
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def cldr(*ary)
|
|
132
|
+
ary.map{|v| Locale::Tag::Cldr.parse(v)}
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def simple(*ary)
|
|
136
|
+
ary.map{|v| Locale::Tag::Simple.parse(v)}
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def test_candidates
|
|
140
|
+
setup_cgi("")
|
|
141
|
+
|
|
142
|
+
ENV["HTTP_ACCEPT_LANGUAGE"] = "fr-fr,zh_CN;q=0.7,zh_TW;q=0.2,ja_JP;q=0.1"
|
|
143
|
+
|
|
144
|
+
assert_equal common("fr-FR", "zh-CN", "zh-TW", "ja-JP",
|
|
145
|
+
"fr", "zh", "ja", "en"), Locale.candidates
|
|
146
|
+
|
|
147
|
+
assert_equal rfc("fr-FR", "zh-CN", "zh-TW", "ja-JP", "fr",
|
|
148
|
+
"zh", "ja", "en"), Locale.candidates(:type => :rfc)
|
|
149
|
+
|
|
150
|
+
assert_equal cldr("fr_FR", "zh_CN", "zh_TW", "ja_JP", "fr",
|
|
151
|
+
"zh", "ja", "en"), Locale.candidates(:type => :cldr)
|
|
152
|
+
|
|
153
|
+
assert_equal simple("fr-FR", "zh-CN", "zh-TW", "ja-JP",
|
|
154
|
+
"fr", "zh", "ja", "en"), Locale.candidates(:type => :simple)
|
|
155
|
+
|
|
156
|
+
assert_equal common("fr_FR", "zh", "ja"), Locale.candidates(:type => :common,
|
|
157
|
+
:supported_language_tags => ["fr_FR", "ja", "zh"])
|
|
158
|
+
|
|
159
|
+
assert_equal simple("fr-FR", "zh", "ja"), Locale.candidates(:type => :simple,
|
|
160
|
+
:supported_language_tags => ["fr-FR", "ja", "zh"])
|
|
161
|
+
|
|
162
|
+
assert_equal simple("fr-FR", "zh", "ja", "no", "pt"),
|
|
163
|
+
Locale.candidates(:type => :simple,
|
|
164
|
+
:supported_language_tags => ["fr-FR", "ja", "zh", "no", "pt"],
|
|
165
|
+
:default_language_tags => ["no", "pt"])
|
|
166
|
+
|
|
167
|
+
assert_equal simple("no", "pt"), Locale.candidates(:type => :simple,
|
|
168
|
+
:supported_language_tags => ["aa"],
|
|
169
|
+
:default_language_tags => ["no", "pt"])
|
|
170
|
+
assert_equal simple("en"), Locale.candidates(:type => :simple,
|
|
171
|
+
:supported_language_tags => ["aa"])
|
|
172
|
+
|
|
173
|
+
taglist = Locale.candidates(:type => :rfc)
|
|
174
|
+
assert_equal Locale::TagList, taglist.class
|
|
175
|
+
assert_equal "fr", taglist.language
|
|
176
|
+
assert_equal "FR", taglist.region
|
|
177
|
+
|
|
178
|
+
end
|
|
179
|
+
end
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
require 'locale'
|
|
2
|
+
require 'test/unit'
|
|
3
|
+
|
|
4
|
+
class TestDetectGeneral < Test::Unit::TestCase
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
Locale.clear_all
|
|
8
|
+
ENV["LC_ALL"] = nil
|
|
9
|
+
ENV["LC_MESSAGES"] = nil
|
|
10
|
+
ENV["LANG"] = nil
|
|
11
|
+
ENV["LANGUAGE"] = nil
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_lc_all
|
|
15
|
+
ENV["LC_ALL"] = "ja_JP.eucJP"
|
|
16
|
+
ENV["LC_MESSAGES"] = "zh_CN.UTF-8" #Ignored.
|
|
17
|
+
ENV["LANG"] = "ko_KR.UTF-8" #Ignored.
|
|
18
|
+
ENV["LANGUAGE"] = nil
|
|
19
|
+
|
|
20
|
+
lang = Locale.current[0]
|
|
21
|
+
assert_equal Locale::Tag::Posix, lang.class
|
|
22
|
+
assert_equal "ja", lang.language
|
|
23
|
+
assert_equal "JP", lang.region
|
|
24
|
+
assert_equal "eucJP", lang.charset
|
|
25
|
+
assert_equal Locale::Tag::Posix.new("ja", "JP", "eucJP"), lang
|
|
26
|
+
|
|
27
|
+
assert_equal "eucJP", Locale.charset
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_lc_messages
|
|
31
|
+
ENV["LC_ALL"] = nil
|
|
32
|
+
ENV["LC_MESSAGES"] = "ja_JP.eucJP"
|
|
33
|
+
ENV["LANG"] = "ko_KR.UTF-8" #Ignored.
|
|
34
|
+
ENV["LANGUAGE"] = nil
|
|
35
|
+
|
|
36
|
+
lang = Locale.current[0]
|
|
37
|
+
assert_equal Locale::Tag::Posix, lang.class
|
|
38
|
+
assert_equal "ja", lang.language
|
|
39
|
+
assert_equal "JP", lang.region
|
|
40
|
+
assert_equal "eucJP", lang.charset
|
|
41
|
+
assert_equal Locale::Tag::Posix.new("ja", "JP", "eucJP"), lang
|
|
42
|
+
|
|
43
|
+
assert_equal "eucJP", Locale.charset
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_lang
|
|
47
|
+
ENV["LC_ALL"] = nil
|
|
48
|
+
ENV["LC_MESSAGES"] = nil
|
|
49
|
+
ENV["LANG"] = "ja_JP.eucJP"
|
|
50
|
+
ENV["LANGUAGE"] = nil
|
|
51
|
+
|
|
52
|
+
lang = Locale.current[0]
|
|
53
|
+
assert_equal Locale::Tag::Posix, lang.class
|
|
54
|
+
assert_equal "ja", lang.language
|
|
55
|
+
assert_equal "JP", lang.region
|
|
56
|
+
assert_equal "eucJP", lang.charset
|
|
57
|
+
assert_equal Locale::Tag::Posix.new("ja", "JP", "eucJP"), lang
|
|
58
|
+
|
|
59
|
+
assert_equal "eucJP", Locale.charset
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def test_lang
|
|
63
|
+
ENV["LC_ALL"] = "zh_CN.UTF-8" # Ignored.
|
|
64
|
+
ENV["LC_MESSAGES"] = "ko_KR.UTF-8" #Ingored.
|
|
65
|
+
ENV["LANG"] = "en_US.UTF-8" # Ignored.
|
|
66
|
+
ENV["LANGUAGE"] ="ja_JP.eucJP:zh_CN.UTF-8"
|
|
67
|
+
|
|
68
|
+
lang = Locale.current[0]
|
|
69
|
+
assert_equal Locale::Tag::Posix, lang.class
|
|
70
|
+
assert_equal "ja", lang.language
|
|
71
|
+
assert_equal "JP", lang.region
|
|
72
|
+
assert_equal "eucJP", lang.charset
|
|
73
|
+
assert_equal Locale::Tag::Posix.new("ja", "JP", "eucJP"), lang
|
|
74
|
+
|
|
75
|
+
# Use the LANG value (locale charmap don't use LANGUAGE)
|
|
76
|
+
assert_equal "UTF-8", Locale.charset
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def test_language
|
|
80
|
+
ENV["LC_ALL"] = "ja_JP.Shift_JIS"
|
|
81
|
+
ENV["LANGUAGE"] = "zh_CN.UTF-8:ja_JP"
|
|
82
|
+
|
|
83
|
+
tags = Locale.current
|
|
84
|
+
assert_equal Locale::Tag::Posix, tags[0].class
|
|
85
|
+
assert_equal Locale::Tag::Posix, tags[1].class
|
|
86
|
+
|
|
87
|
+
assert_equal "zh", tags.language
|
|
88
|
+
assert_equal "CN", tags.region
|
|
89
|
+
assert_equal "UTF-8", tags.charset
|
|
90
|
+
|
|
91
|
+
assert_equal "zh", tags[0].language
|
|
92
|
+
assert_equal "CN", tags[0].region
|
|
93
|
+
assert_equal "UTF-8", tags[0].charset
|
|
94
|
+
|
|
95
|
+
assert_equal "ja", tags[1].language
|
|
96
|
+
assert_equal "JP", tags[1].region
|
|
97
|
+
assert_equal nil, tags[1].charset
|
|
98
|
+
|
|
99
|
+
assert_equal Locale::TagList.new([Locale::Tag::Posix.new("zh", "CN", "UTF-8"),
|
|
100
|
+
Locale::Tag::Posix.new("ja", "JP")]), tags
|
|
101
|
+
|
|
102
|
+
assert_equal "Shift_JIS", Locale.charset
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def test_no_charset
|
|
106
|
+
ENV["LC_ALL"] = "cs_CZ"
|
|
107
|
+
|
|
108
|
+
lang = Locale.current[0]
|
|
109
|
+
assert_equal Locale::Tag::Posix, lang.class
|
|
110
|
+
|
|
111
|
+
assert_equal "cs", lang.language
|
|
112
|
+
assert_equal "CZ", lang.region
|
|
113
|
+
assert_equal nil, lang.charset
|
|
114
|
+
assert_equal Locale::Tag::Posix.new("cs", "CZ"), lang
|
|
115
|
+
|
|
116
|
+
if /linux|bsd/ =~ RUBY_PLATFORM
|
|
117
|
+
assert_equal "ISO-8859-2", Locale.charset
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def test_default
|
|
122
|
+
Locale.set_default("yo_NG")
|
|
123
|
+
assert_equal Locale::Tag.parse("yo_NG"), Locale.default
|
|
124
|
+
assert_equal Locale::Tag.parse("yo_NG"), Locale.current[0]
|
|
125
|
+
Locale.set_default(nil)
|
|
126
|
+
|
|
127
|
+
Locale.default = "fr"
|
|
128
|
+
assert_equal Locale::Tag.parse("fr"), Locale.default
|
|
129
|
+
assert_equal Locale::Tag.parse("fr"), Locale.current[0]
|
|
130
|
+
Locale.default = nil
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def test_current
|
|
134
|
+
Locale.set_current("yo_NG")
|
|
135
|
+
assert_equal Locale::Tag.parse("yo_NG"), Locale.current[0]
|
|
136
|
+
|
|
137
|
+
Locale.current = "fr"
|
|
138
|
+
assert_equal Locale::Tag.parse("fr"), Locale.current[0]
|
|
139
|
+
|
|
140
|
+
Locale.set_default("yo_NG")
|
|
141
|
+
Locale.current = "fr"
|
|
142
|
+
assert_equal Locale::Tag.parse("yo_NG"), Locale.default
|
|
143
|
+
assert_equal Locale::Tag.parse("fr"), Locale.current[0]
|
|
144
|
+
Locale.set_default(nil)
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def test_clear
|
|
148
|
+
ENV["LC_ALL"] = "ja_JP.Shift_JIS"
|
|
149
|
+
ENV["LANGUAGE"] = nil
|
|
150
|
+
|
|
151
|
+
assert_equal Locale::Tag.parse("ja_JP.Shift_JIS"), Locale.current[0]
|
|
152
|
+
Locale.clear
|
|
153
|
+
ENV["LANGUAGE"] = "zh_CN.UTF-8:ja_JP"
|
|
154
|
+
assert_equal Locale::Tag::Posix.parse("zh_CN.UTF-8"), Locale.current[0]
|
|
155
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP"), Locale.current[1]
|
|
156
|
+
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
end
|
data/test/test_info.rb
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
require 'locale/info'
|
|
4
|
+
require 'test/unit'
|
|
5
|
+
|
|
6
|
+
class TestLocaleInfo < Test::Unit::TestCase
|
|
7
|
+
def test_languages
|
|
8
|
+
langs = Locale::Info.three_languages
|
|
9
|
+
assert_equal 7600, langs.length
|
|
10
|
+
assert_equal "English", langs["eng"].name
|
|
11
|
+
assert langs["eng"].living?
|
|
12
|
+
assert langs["eng"].individual?
|
|
13
|
+
|
|
14
|
+
langs = Locale::Info.two_languages
|
|
15
|
+
assert_equal 185, langs.length
|
|
16
|
+
assert_equal "English", langs["en"].name
|
|
17
|
+
assert langs["en"].living?
|
|
18
|
+
assert langs["en"].individual?
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_regions
|
|
22
|
+
regions = Locale::Info.regions
|
|
23
|
+
assert_equal 243, regions.length
|
|
24
|
+
assert_equal "United States", regions["US"].name
|
|
25
|
+
|
|
26
|
+
assert_equal "ÅLand Islands", regions['AX'].name
|
|
27
|
+
end
|
|
28
|
+
end
|
data/test/test_tag.rb
ADDED
|
@@ -0,0 +1,1183 @@
|
|
|
1
|
+
require 'locale/tag'
|
|
2
|
+
require 'test/unit'
|
|
3
|
+
|
|
4
|
+
class TagTest < Test::Unit::TestCase
|
|
5
|
+
|
|
6
|
+
def test_simple
|
|
7
|
+
#ja-JP, ja-392
|
|
8
|
+
lang = Locale::Tag.parse("ja")
|
|
9
|
+
assert_equal Locale::Tag::Simple, lang.class
|
|
10
|
+
assert_equal "ja", lang.language
|
|
11
|
+
assert_equal nil, lang.region
|
|
12
|
+
assert_equal [Locale::Tag::Simple.parse("ja"),
|
|
13
|
+
Locale::Tag::Simple.parse("ja")], lang.candidates
|
|
14
|
+
|
|
15
|
+
assert_equal Locale::Tag::Simple.parse("ja"), lang.to_simple
|
|
16
|
+
assert_equal Locale::Tag::Common.parse("ja"), lang.to_common
|
|
17
|
+
assert_equal Locale::Tag::Rfc.parse("ja"), lang.to_rfc
|
|
18
|
+
assert_equal Locale::Tag::Cldr.parse("ja"), lang.to_cldr
|
|
19
|
+
assert_equal Locale::Tag::Posix.parse("ja"), lang.to_posix
|
|
20
|
+
|
|
21
|
+
lang = Locale::Tag.parse("kok")
|
|
22
|
+
assert_equal Locale::Tag::Simple, lang.class
|
|
23
|
+
assert_equal "kok", lang.language
|
|
24
|
+
assert_equal nil, lang.region
|
|
25
|
+
assert_equal [Locale::Tag::Simple.parse("kok"),
|
|
26
|
+
Locale::Tag::Simple.parse("kok")], lang.candidates
|
|
27
|
+
|
|
28
|
+
assert_equal Locale::Tag::Simple.parse("kok"), lang.to_simple
|
|
29
|
+
assert_equal Locale::Tag::Common.parse("kok"), lang.to_common
|
|
30
|
+
assert_equal Locale::Tag::Rfc.parse("kok"), lang.to_rfc
|
|
31
|
+
assert_equal Locale::Tag::Cldr.parse("kok"), lang.to_cldr
|
|
32
|
+
assert_equal Locale::Tag::Posix.parse("kok"), lang.to_posix
|
|
33
|
+
|
|
34
|
+
lang = Locale::Tag.parse("ja-JP")
|
|
35
|
+
assert_equal Locale::Tag::Simple, lang.class
|
|
36
|
+
assert_equal "ja", lang.language
|
|
37
|
+
assert_equal "JP", lang.region
|
|
38
|
+
assert_equal [Locale::Tag::Simple.parse("ja_JP"),
|
|
39
|
+
Locale::Tag::Simple.parse("ja")], lang.candidates
|
|
40
|
+
|
|
41
|
+
assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
|
|
42
|
+
assert_equal Locale::Tag::Common.parse("ja_JP"), lang.to_common
|
|
43
|
+
assert_equal Locale::Tag::Rfc.parse("ja-JP"), lang.to_rfc
|
|
44
|
+
assert_equal Locale::Tag::Cldr.parse("ja-JP"), lang.to_cldr
|
|
45
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP"), lang.to_posix
|
|
46
|
+
|
|
47
|
+
lang = Locale::Tag.parse("ja_JP")
|
|
48
|
+
assert_equal Locale::Tag::Simple, lang.class
|
|
49
|
+
assert_equal "ja", lang.language
|
|
50
|
+
assert_equal "JP", lang.region
|
|
51
|
+
assert_equal [Locale::Tag::Simple.parse("ja_JP"),
|
|
52
|
+
Locale::Tag::Simple.parse("ja")], lang.candidates
|
|
53
|
+
|
|
54
|
+
assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
|
|
55
|
+
assert_equal Locale::Tag::Common.parse("ja_JP"), lang.to_common
|
|
56
|
+
assert_equal Locale::Tag::Rfc.parse("ja-JP"), lang.to_rfc
|
|
57
|
+
assert_equal Locale::Tag::Cldr.parse("ja-JP"), lang.to_cldr
|
|
58
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP"), lang.to_posix
|
|
59
|
+
|
|
60
|
+
# UN_M.49(Country code)
|
|
61
|
+
lang = Locale::Tag.parse("ja-392")
|
|
62
|
+
assert_equal Locale::Tag::Simple, lang.class
|
|
63
|
+
assert_equal "ja", lang.language
|
|
64
|
+
assert_equal "392", lang.region
|
|
65
|
+
assert_equal [Locale::Tag::Simple.parse("ja_392"),
|
|
66
|
+
Locale::Tag::Simple.parse("ja")], lang.candidates
|
|
67
|
+
|
|
68
|
+
assert_equal Locale::Tag::Simple.parse("ja-392"), lang.to_simple
|
|
69
|
+
assert_equal Locale::Tag::Common.parse("ja-392"), lang.to_common
|
|
70
|
+
assert_equal Locale::Tag::Rfc.parse("ja-392"), lang.to_rfc
|
|
71
|
+
assert_equal Locale::Tag::Cldr.parse("ja-392"), lang.to_cldr
|
|
72
|
+
assert_equal Locale::Tag::Posix.parse("ja_392"), lang.to_posix
|
|
73
|
+
|
|
74
|
+
lang = Locale::Tag.parse("jpn-392")
|
|
75
|
+
assert_equal Locale::Tag::Simple, lang.class
|
|
76
|
+
assert_equal "jpn", lang.language
|
|
77
|
+
assert_equal "392", lang.region
|
|
78
|
+
assert_equal [Locale::Tag::Simple.parse("jpn-392"),
|
|
79
|
+
Locale::Tag::Simple.parse("jpn")], lang.candidates
|
|
80
|
+
|
|
81
|
+
assert_equal Locale::Tag::Simple.parse("jpn-392"), lang.to_simple
|
|
82
|
+
assert_equal Locale::Tag::Common.parse("jpn-392"), lang.to_common
|
|
83
|
+
assert_equal Locale::Tag::Rfc.parse("jpn-392"), lang.to_rfc
|
|
84
|
+
assert_equal Locale::Tag::Cldr.parse("jpn-392"), lang.to_cldr
|
|
85
|
+
assert_equal Locale::Tag::Posix.parse("jpn_392"), lang.to_posix
|
|
86
|
+
|
|
87
|
+
lang = Locale::Tag.parse("es-419")
|
|
88
|
+
assert_equal Locale::Tag::Simple, lang.class
|
|
89
|
+
assert_equal "es", lang.language
|
|
90
|
+
assert_equal "419", lang.region
|
|
91
|
+
assert_equal [Locale::Tag::Simple.parse("es-419"),
|
|
92
|
+
Locale::Tag::Simple.parse("es")], lang.candidates
|
|
93
|
+
|
|
94
|
+
assert_equal Locale::Tag::Simple.parse("es-419"), lang.to_simple
|
|
95
|
+
assert_equal Locale::Tag::Common.parse("es-419"), lang.to_common
|
|
96
|
+
assert_equal Locale::Tag::Rfc.parse("es-419"), lang.to_rfc
|
|
97
|
+
assert_equal Locale::Tag::Cldr.parse("es_419"), lang.to_cldr
|
|
98
|
+
assert_equal Locale::Tag::Posix.parse("es_419"), lang.to_posix
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def test_simple_writer
|
|
102
|
+
lang = Locale::Tag.parse("ja-JP")
|
|
103
|
+
assert_equal Locale::Tag::Simple, lang.class
|
|
104
|
+
assert_equal "ja_JP", lang.to_s
|
|
105
|
+
assert_equal [Locale::Tag::Simple.parse("ja-JP"),
|
|
106
|
+
Locale::Tag::Simple.parse("ja")], lang.candidates
|
|
107
|
+
lang.language = "en"
|
|
108
|
+
assert_equal "en", lang.language
|
|
109
|
+
assert_equal "en_JP", lang.to_s
|
|
110
|
+
assert_equal [Locale::Tag::Simple.parse("en-JP"),
|
|
111
|
+
Locale::Tag::Simple.parse("en")], lang.candidates
|
|
112
|
+
|
|
113
|
+
lang.region = "US"
|
|
114
|
+
assert_equal "en", lang.language
|
|
115
|
+
assert_equal "US", lang.region
|
|
116
|
+
assert_equal "en_US", lang.to_s
|
|
117
|
+
assert_equal [Locale::Tag::Simple.parse("en-US"),
|
|
118
|
+
Locale::Tag::Simple.parse("en")], lang.candidates
|
|
119
|
+
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def test_common
|
|
123
|
+
#lang, region, script, variants
|
|
124
|
+
|
|
125
|
+
lang = Locale::Tag.parse("az_Arab")
|
|
126
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
127
|
+
assert_equal "az", lang.language
|
|
128
|
+
assert_equal nil, lang.region
|
|
129
|
+
assert_equal "Arab", lang.script
|
|
130
|
+
assert_equal [Locale::Tag::Common.parse("az_Arab"),
|
|
131
|
+
Locale::Tag::Common.parse("az_Arab"),
|
|
132
|
+
Locale::Tag::Common.parse("az"),
|
|
133
|
+
Locale::Tag::Common.parse("az"),
|
|
134
|
+
Locale::Tag::Common.parse("az_Arab"),
|
|
135
|
+
Locale::Tag::Common.parse("az_Arab"),
|
|
136
|
+
Locale::Tag::Common.parse("az"),
|
|
137
|
+
Locale::Tag::Common.parse("az"),
|
|
138
|
+
], lang.candidates
|
|
139
|
+
|
|
140
|
+
assert_equal Locale::Tag::Simple.parse("az"), lang.to_simple
|
|
141
|
+
assert_equal Locale::Tag::Common.parse("az_Arab"), lang.to_common
|
|
142
|
+
assert_equal Locale::Tag::Rfc.parse("az-Arab"), lang.to_rfc
|
|
143
|
+
assert_equal Locale::Tag::Cldr.parse("az_Arab"), lang.to_cldr
|
|
144
|
+
assert_equal Locale::Tag::Posix.parse("az"), lang.to_posix
|
|
145
|
+
|
|
146
|
+
lang = Locale::Tag.parse("en_Latn_US_NYNORSK")
|
|
147
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
148
|
+
assert_equal "en", lang.language
|
|
149
|
+
assert_equal "US", lang.region
|
|
150
|
+
assert_equal ["NYNORSK"], lang.variants
|
|
151
|
+
assert_equal [Locale::Tag::Common.parse("en_Latn_US_NYNORSK"),
|
|
152
|
+
Locale::Tag::Common.parse("en_Latn_US"),
|
|
153
|
+
Locale::Tag::Common.parse("en_US_NYNORSK"),
|
|
154
|
+
Locale::Tag::Common.parse("en_US"),
|
|
155
|
+
Locale::Tag::Common.parse("en_Latn_NYNORSK"),
|
|
156
|
+
Locale::Tag::Common.parse("en_Latn"),
|
|
157
|
+
Locale::Tag::Common.parse("en_NYNORSK"),
|
|
158
|
+
Locale::Tag::Common.parse("en")], lang.candidates
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
assert_equal Locale::Tag::Simple.parse("en-US"), lang.to_simple
|
|
162
|
+
assert_equal Locale::Tag::Common.parse("en_Latn_US_NYNORSK"), lang.to_common
|
|
163
|
+
assert_equal Locale::Tag::Rfc.parse("en-Latn-US-NYNORSK"), lang.to_rfc
|
|
164
|
+
assert_equal Locale::Tag::Cldr.parse("en_Latn_US_NYNORSK"), lang.to_cldr
|
|
165
|
+
assert_equal Locale::Tag::Posix.parse("en_US@NYNORSK"), lang.to_posix
|
|
166
|
+
|
|
167
|
+
lang = Locale::Tag.parse("uz-Cyrl")
|
|
168
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
169
|
+
assert_equal "uz", lang.language
|
|
170
|
+
assert_equal nil, lang.region
|
|
171
|
+
assert_equal "Cyrl", lang.script
|
|
172
|
+
assert_equal [Locale::Tag::Common.parse("uz-Cyrl"),
|
|
173
|
+
Locale::Tag::Common.parse("uz-Cyrl"),
|
|
174
|
+
Locale::Tag::Common.parse("uz"),
|
|
175
|
+
Locale::Tag::Common.parse("uz"),
|
|
176
|
+
Locale::Tag::Common.parse("uz-Cyrl"),
|
|
177
|
+
Locale::Tag::Common.parse("uz-Cyrl"),
|
|
178
|
+
Locale::Tag::Common.parse("uz"),
|
|
179
|
+
Locale::Tag::Common.parse("uz"),
|
|
180
|
+
], lang.candidates
|
|
181
|
+
|
|
182
|
+
assert_equal Locale::Tag::Simple.parse("uz"), lang.to_simple
|
|
183
|
+
assert_equal Locale::Tag::Common.parse("uz_Cyrl"), lang.to_common
|
|
184
|
+
assert_equal Locale::Tag::Rfc.parse("uz-Cyrl"), lang.to_rfc
|
|
185
|
+
assert_equal Locale::Tag::Cldr.parse("uz_Cyrl"), lang.to_cldr
|
|
186
|
+
assert_equal Locale::Tag::Posix.parse("uz"), lang.to_posix
|
|
187
|
+
|
|
188
|
+
lang = Locale::Tag.parse("ja-Kana-JP")
|
|
189
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
190
|
+
assert_equal "ja", lang.language
|
|
191
|
+
assert_equal "JP", lang.region
|
|
192
|
+
assert_equal "Kana", lang.script
|
|
193
|
+
assert_equal [Locale::Tag::Common.parse("ja-Kana-JP"),
|
|
194
|
+
Locale::Tag::Common.parse("ja-Kana-JP"),
|
|
195
|
+
Locale::Tag::Common.parse("ja-JP"),
|
|
196
|
+
Locale::Tag::Common.parse("ja-JP"),
|
|
197
|
+
Locale::Tag::Common.parse("ja-Kana"),
|
|
198
|
+
Locale::Tag::Common.parse("ja-Kana"),
|
|
199
|
+
Locale::Tag::Common.parse("ja"),
|
|
200
|
+
Locale::Tag::Common.parse("ja")], lang.candidates
|
|
201
|
+
|
|
202
|
+
assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
|
|
203
|
+
assert_equal Locale::Tag::Common.parse("ja_Kana_JP"), lang.to_common
|
|
204
|
+
assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP"), lang.to_rfc
|
|
205
|
+
assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP"), lang.to_cldr
|
|
206
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP"), lang.to_posix
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
lang = Locale::Tag.parse("jpn-Hira-JP")
|
|
210
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
211
|
+
assert_equal "jpn", lang.language
|
|
212
|
+
assert_equal "JP", lang.region
|
|
213
|
+
assert_equal "Hira", lang.script
|
|
214
|
+
assert_equal [Locale::Tag::Common.parse("jpn-Hira-JP"),
|
|
215
|
+
Locale::Tag::Common.parse("jpn-Hira-JP"),
|
|
216
|
+
Locale::Tag::Common.parse("jpn-JP"),
|
|
217
|
+
Locale::Tag::Common.parse("jpn-JP"),
|
|
218
|
+
Locale::Tag::Common.parse("jpn-Hira"),
|
|
219
|
+
Locale::Tag::Common.parse("jpn-Hira"),
|
|
220
|
+
Locale::Tag::Common.parse("jpn"),
|
|
221
|
+
Locale::Tag::Common.parse("jpn")], lang.candidates
|
|
222
|
+
|
|
223
|
+
assert_equal Locale::Tag::Simple.parse("jpn_JP"), lang.to_simple
|
|
224
|
+
assert_equal Locale::Tag::Common.parse("jpn_Hira_JP"), lang.to_common
|
|
225
|
+
assert_equal Locale::Tag::Rfc.parse("jpn-Hira-JP"), lang.to_rfc
|
|
226
|
+
assert_equal Locale::Tag::Cldr.parse("jpn_Hira_JP"), lang.to_cldr
|
|
227
|
+
assert_equal Locale::Tag::Posix.parse("jpn_JP"), lang.to_posix
|
|
228
|
+
|
|
229
|
+
lang = Locale::Tag.parse("jpn-Hira-392")
|
|
230
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
231
|
+
assert_equal "jpn", lang.language
|
|
232
|
+
assert_equal "392", lang.region
|
|
233
|
+
assert_equal "Hira", lang.script
|
|
234
|
+
assert_equal [Locale::Tag::Common.parse("jpn_Hira_392"),
|
|
235
|
+
Locale::Tag::Common.parse("jpn_Hira_392"),
|
|
236
|
+
Locale::Tag::Common.parse("jpn_392"),
|
|
237
|
+
Locale::Tag::Common.parse("jpn_392"),
|
|
238
|
+
Locale::Tag::Common.parse("jpn_Hira"),
|
|
239
|
+
Locale::Tag::Common.parse("jpn_Hira"),
|
|
240
|
+
Locale::Tag::Common.parse("jpn"),
|
|
241
|
+
Locale::Tag::Common.parse("jpn")], lang.candidates
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
assert_equal Locale::Tag::Simple.parse("jpn_392"), lang.to_simple
|
|
245
|
+
assert_equal Locale::Tag::Common.parse("jpn_Hira_392"), lang.to_common
|
|
246
|
+
assert_equal Locale::Tag::Rfc.parse("jpn-Hira-392"), lang.to_rfc
|
|
247
|
+
assert_equal Locale::Tag::Cldr.parse("jpn_Hira_392"), lang.to_cldr
|
|
248
|
+
assert_equal Locale::Tag::Posix.parse("jpn_392"), lang.to_posix
|
|
249
|
+
|
|
250
|
+
# Variants
|
|
251
|
+
lang = Locale::Tag.parse("ja-osaka")
|
|
252
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
253
|
+
assert_equal "ja", lang.language
|
|
254
|
+
assert_equal nil, lang.region
|
|
255
|
+
assert_equal nil, lang.script
|
|
256
|
+
assert_equal ["osaka"], lang.variants
|
|
257
|
+
|
|
258
|
+
assert_equal [Locale::Tag::Common.parse("ja-osaka"),
|
|
259
|
+
Locale::Tag::Common.parse("ja"),
|
|
260
|
+
Locale::Tag::Common.parse("ja-osaka"),
|
|
261
|
+
Locale::Tag::Common.parse("ja"),
|
|
262
|
+
Locale::Tag::Common.parse("ja-osaka"),
|
|
263
|
+
Locale::Tag::Common.parse("ja"),
|
|
264
|
+
Locale::Tag::Common.parse("ja-osaka"),
|
|
265
|
+
Locale::Tag::Common.parse("ja")
|
|
266
|
+
], lang.candidates
|
|
267
|
+
|
|
268
|
+
assert_equal Locale::Tag::Simple.parse("ja"), lang.to_simple
|
|
269
|
+
assert_equal Locale::Tag::Common.parse("ja-osaka"), lang.to_common
|
|
270
|
+
assert_equal Locale::Tag::Rfc.parse("ja-osaka"), lang.to_rfc
|
|
271
|
+
assert_equal Locale::Tag::Cldr.parse("ja_OSAKA"), lang.to_cldr
|
|
272
|
+
assert_equal Locale::Tag::Posix.parse("ja@osaka"), lang.to_posix
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
lang = Locale::Tag.parse("ja-JP-osaka")
|
|
276
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
277
|
+
assert_equal "ja", lang.language
|
|
278
|
+
assert_equal "JP", lang.region
|
|
279
|
+
assert_equal nil, lang.script
|
|
280
|
+
assert_equal ["osaka"], lang.variants
|
|
281
|
+
|
|
282
|
+
assert_equal [Locale::Tag::Common.parse("ja_JP_osaka"),
|
|
283
|
+
Locale::Tag::Common.parse("ja_JP"),
|
|
284
|
+
Locale::Tag::Common.parse("ja_JP_osaka"),
|
|
285
|
+
Locale::Tag::Common.parse("ja_JP"),
|
|
286
|
+
Locale::Tag::Common.parse("ja_osaka"),
|
|
287
|
+
Locale::Tag::Common.parse("ja"),
|
|
288
|
+
Locale::Tag::Common.parse("ja_osaka"),
|
|
289
|
+
Locale::Tag::Common.parse("ja")
|
|
290
|
+
], lang.candidates
|
|
291
|
+
|
|
292
|
+
assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
|
|
293
|
+
assert_equal Locale::Tag::Common.parse("ja_JP_osaka"), lang.to_common
|
|
294
|
+
assert_equal Locale::Tag::Rfc.parse("ja-JP-osaka"), lang.to_rfc
|
|
295
|
+
assert_equal Locale::Tag::Cldr.parse("ja_JP_OSAKA"), lang.to_cldr
|
|
296
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP@osaka"), lang.to_posix
|
|
297
|
+
|
|
298
|
+
#5 length
|
|
299
|
+
lang = Locale::Tag.parse("ja-Kana-JP-osaka")
|
|
300
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
301
|
+
assert_equal "ja", lang.language
|
|
302
|
+
assert_equal "JP", lang.region
|
|
303
|
+
assert_equal "Kana", lang.script
|
|
304
|
+
assert_equal ["osaka"], lang.variants
|
|
305
|
+
|
|
306
|
+
assert_equal [Locale::Tag::Common.parse("ja-Kana-JP-osaka"),
|
|
307
|
+
Locale::Tag::Common.parse("ja-Kana-JP"),
|
|
308
|
+
Locale::Tag::Common.parse("ja-JP-osaka"),
|
|
309
|
+
Locale::Tag::Common.parse("ja-JP"),
|
|
310
|
+
Locale::Tag::Common.parse("ja-Kana-osaka"),
|
|
311
|
+
Locale::Tag::Common.parse("ja-Kana"),
|
|
312
|
+
Locale::Tag::Common.parse("ja-osaka"),
|
|
313
|
+
Locale::Tag::Common.parse("ja")
|
|
314
|
+
], lang.candidates
|
|
315
|
+
|
|
316
|
+
assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
|
|
317
|
+
assert_equal Locale::Tag::Common.parse("ja_Kana-JP_osaka"), lang.to_common
|
|
318
|
+
assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-osaka"), lang.to_rfc
|
|
319
|
+
assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_OSAKA"), lang.to_cldr
|
|
320
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP@osaka"), lang.to_posix
|
|
321
|
+
|
|
322
|
+
#middle length
|
|
323
|
+
lang = Locale::Tag.parse("ja-Kana-JP-aomori")
|
|
324
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
325
|
+
assert_equal "ja", lang.language
|
|
326
|
+
assert_equal "JP", lang.region
|
|
327
|
+
assert_equal "Kana", lang.script
|
|
328
|
+
assert_equal ["aomori"], lang.variants
|
|
329
|
+
|
|
330
|
+
assert_equal [Locale::Tag::Common.parse("ja-Kana-JP-aomori"),
|
|
331
|
+
Locale::Tag::Common.parse("ja-Kana-JP"),
|
|
332
|
+
Locale::Tag::Common.parse("ja-JP-aomori"),
|
|
333
|
+
Locale::Tag::Common.parse("ja-JP"),
|
|
334
|
+
Locale::Tag::Common.parse("ja-Kana-aomori"),
|
|
335
|
+
Locale::Tag::Common.parse("ja-Kana"),
|
|
336
|
+
Locale::Tag::Common.parse("ja-aomori"),
|
|
337
|
+
Locale::Tag::Common.parse("ja")
|
|
338
|
+
], lang.candidates
|
|
339
|
+
|
|
340
|
+
assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
|
|
341
|
+
assert_equal Locale::Tag::Common.parse("ja_Kana-JP_aomori"), lang.to_common
|
|
342
|
+
assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-aomori"), lang.to_rfc
|
|
343
|
+
assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_AOMORI"), lang.to_cldr
|
|
344
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP@aomori"), lang.to_posix
|
|
345
|
+
|
|
346
|
+
#8 length
|
|
347
|
+
lang = Locale::Tag.parse("ja-Kana-JP-hokuriku")
|
|
348
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
349
|
+
assert_equal "ja", lang.language
|
|
350
|
+
assert_equal "JP", lang.region
|
|
351
|
+
assert_equal "Kana", lang.script
|
|
352
|
+
assert_equal ["hokuriku"], lang.variants
|
|
353
|
+
|
|
354
|
+
assert_equal [Locale::Tag::Common.parse("ja-Kana-JP-hokuriku"),
|
|
355
|
+
Locale::Tag::Common.parse("ja-Kana-JP"),
|
|
356
|
+
Locale::Tag::Common.parse("ja-JP-hokuriku"),
|
|
357
|
+
Locale::Tag::Common.parse("ja-JP"),
|
|
358
|
+
Locale::Tag::Common.parse("ja-Kana-hokuriku"),
|
|
359
|
+
Locale::Tag::Common.parse("ja-Kana"),
|
|
360
|
+
Locale::Tag::Common.parse("ja-hokuriku"),
|
|
361
|
+
Locale::Tag::Common.parse("ja")
|
|
362
|
+
], lang.candidates
|
|
363
|
+
|
|
364
|
+
assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
|
|
365
|
+
assert_equal Locale::Tag::Common.parse("ja_Kana-JP_hokuriku"), lang.to_common
|
|
366
|
+
assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-hokuriku"), lang.to_rfc
|
|
367
|
+
assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_HOKURIKU"), lang.to_cldr
|
|
368
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP@hokuriku"), lang.to_posix
|
|
369
|
+
|
|
370
|
+
#1 digit and 3 alpha
|
|
371
|
+
lang = Locale::Tag.parse("ja-Kana-JP-0abc")
|
|
372
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
373
|
+
assert_equal "ja", lang.language
|
|
374
|
+
assert_equal "JP", lang.region
|
|
375
|
+
assert_equal "Kana", lang.script
|
|
376
|
+
assert_equal ["0abc"], lang.variants
|
|
377
|
+
|
|
378
|
+
assert_equal [Locale::Tag::Common.parse("ja-Kana-JP-0abc"),
|
|
379
|
+
Locale::Tag::Common.parse("ja-Kana-JP"),
|
|
380
|
+
Locale::Tag::Common.parse("ja-JP-0abc"),
|
|
381
|
+
Locale::Tag::Common.parse("ja-JP"),
|
|
382
|
+
Locale::Tag::Common.parse("ja-Kana-0abc"),
|
|
383
|
+
Locale::Tag::Common.parse("ja-Kana"),
|
|
384
|
+
Locale::Tag::Common.parse("ja-0abc"),
|
|
385
|
+
Locale::Tag::Common.parse("ja")
|
|
386
|
+
], lang.candidates
|
|
387
|
+
|
|
388
|
+
assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
|
|
389
|
+
assert_equal Locale::Tag::Common.parse("ja_Kana-JP_0abc"), lang.to_common
|
|
390
|
+
assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-0abc"), lang.to_rfc
|
|
391
|
+
assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_0ABC"), lang.to_cldr
|
|
392
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP@0abc"), lang.to_posix
|
|
393
|
+
|
|
394
|
+
#4 digits
|
|
395
|
+
lang = Locale::Tag.parse("de-CH-1996")
|
|
396
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
397
|
+
assert_equal "de", lang.language
|
|
398
|
+
assert_equal "CH", lang.region
|
|
399
|
+
assert_equal nil, lang.script
|
|
400
|
+
assert_equal ["1996"], lang.variants
|
|
401
|
+
assert_equal [Locale::Tag::Common.parse("de_CH_1996"),
|
|
402
|
+
Locale::Tag::Common.parse("de_CH"),
|
|
403
|
+
Locale::Tag::Common.parse("de_CH_1996"),
|
|
404
|
+
Locale::Tag::Common.parse("de_CH"),
|
|
405
|
+
Locale::Tag::Common.parse("de_1996"),
|
|
406
|
+
Locale::Tag::Common.parse("de"),
|
|
407
|
+
Locale::Tag::Common.parse("de_1996"),
|
|
408
|
+
Locale::Tag::Common.parse("de"),
|
|
409
|
+
], lang.candidates
|
|
410
|
+
|
|
411
|
+
assert_equal Locale::Tag::Simple.parse("de-CH"), lang.to_simple
|
|
412
|
+
assert_equal Locale::Tag::Common.parse("de-CH-1996"), lang.to_common
|
|
413
|
+
assert_equal Locale::Tag::Rfc.parse("de-CH-1996"), lang.to_rfc
|
|
414
|
+
assert_equal Locale::Tag::Cldr.parse("de_CH_1996"), lang.to_cldr
|
|
415
|
+
assert_equal Locale::Tag::Posix.parse("de_CH@1996"), lang.to_posix
|
|
416
|
+
|
|
417
|
+
#Plural
|
|
418
|
+
lang = Locale::Tag.parse("ja-Kana-JP-hokuriku-aomori")
|
|
419
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
420
|
+
assert_equal "ja", lang.language
|
|
421
|
+
assert_equal "JP", lang.region
|
|
422
|
+
assert_equal "Kana", lang.script
|
|
423
|
+
assert_equal ["hokuriku", "aomori"], lang.variants
|
|
424
|
+
|
|
425
|
+
assert_equal [Locale::Tag::Common.parse("ja-Kana-JP-hokuriku-aomori"),
|
|
426
|
+
Locale::Tag::Common.parse("ja-Kana-JP"),
|
|
427
|
+
Locale::Tag::Common.parse("ja-JP-hokuriku-aomori"),
|
|
428
|
+
Locale::Tag::Common.parse("ja-JP"),
|
|
429
|
+
Locale::Tag::Common.parse("ja-Kana-hokuriku-aomori"),
|
|
430
|
+
Locale::Tag::Common.parse("ja-Kana"),
|
|
431
|
+
Locale::Tag::Common.parse("ja-hokuriku-aomori"),
|
|
432
|
+
Locale::Tag::Common.parse("ja"),
|
|
433
|
+
], lang.candidates
|
|
434
|
+
|
|
435
|
+
assert_equal Locale::Tag::Simple.parse("ja-JP"), lang.to_simple
|
|
436
|
+
assert_equal Locale::Tag::Common.parse("ja-Kana-JP-hokuriku-aomori"), lang.to_common
|
|
437
|
+
assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-hokuriku-aomori"), lang.to_rfc
|
|
438
|
+
assert_equal Locale::Tag::Cldr.parse("ja-Kana-JP_HOKURIKU_AOMORI"), lang.to_cldr
|
|
439
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP@hokuriku-aomori"), lang.to_posix
|
|
440
|
+
|
|
441
|
+
#cases
|
|
442
|
+
lang = Locale::Tag.parse("mn-Cyrl-MN")
|
|
443
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
444
|
+
assert_equal "mn", lang.language
|
|
445
|
+
assert_equal "MN", lang.region
|
|
446
|
+
assert_equal "Cyrl", lang.script
|
|
447
|
+
|
|
448
|
+
assert_equal [Locale::Tag::Common.parse("mn-Cyrl-MN"),
|
|
449
|
+
Locale::Tag::Common.parse("mn-Cyrl-MN"),
|
|
450
|
+
Locale::Tag::Common.parse("mn-MN"),
|
|
451
|
+
Locale::Tag::Common.parse("mn-MN"),
|
|
452
|
+
Locale::Tag::Common.parse("mn-Cyrl"),
|
|
453
|
+
Locale::Tag::Common.parse("mn-Cyrl"),
|
|
454
|
+
Locale::Tag::Common.parse("mn"),
|
|
455
|
+
Locale::Tag::Common.parse("mn"),
|
|
456
|
+
], lang.candidates
|
|
457
|
+
|
|
458
|
+
assert_equal Locale::Tag::Simple.parse("mn_MN"), lang.to_simple
|
|
459
|
+
assert_equal Locale::Tag::Common.parse("mn_Cyrl_MN"), lang.to_common
|
|
460
|
+
assert_equal Locale::Tag::Rfc.parse("mn-Cyrl-MN"), lang.to_rfc
|
|
461
|
+
assert_equal Locale::Tag::Cldr.parse("mn-Cyrl-MN"), lang.to_cldr
|
|
462
|
+
assert_equal Locale::Tag::Posix.parse("mn_MN"), lang.to_posix
|
|
463
|
+
|
|
464
|
+
lang = Locale::Tag.parse("mN-cYrL-Mn")
|
|
465
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
466
|
+
assert_equal "mn", lang.language
|
|
467
|
+
assert_equal "MN", lang.region
|
|
468
|
+
assert_equal "Cyrl", lang.script
|
|
469
|
+
|
|
470
|
+
assert_equal Locale::Tag::Simple.parse("mn_MN"), lang.to_simple
|
|
471
|
+
assert_equal Locale::Tag::Common.parse("mn_Cyrl_MN"), lang.to_common
|
|
472
|
+
assert_equal Locale::Tag::Rfc.parse("mn-Cyrl-MN"), lang.to_rfc
|
|
473
|
+
assert_equal Locale::Tag::Cldr.parse("mn-Cyrl-MN"), lang.to_cldr
|
|
474
|
+
assert_equal Locale::Tag::Posix.parse("mn_MN"), lang.to_posix
|
|
475
|
+
|
|
476
|
+
lang = Locale::Tag.parse("MN-cYRL-mn")
|
|
477
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
478
|
+
assert_equal "mn", lang.language
|
|
479
|
+
assert_equal "MN", lang.region
|
|
480
|
+
assert_equal "Cyrl", lang.script
|
|
481
|
+
|
|
482
|
+
assert_equal Locale::Tag::Simple.parse("mn_MN"), lang.to_simple
|
|
483
|
+
assert_equal Locale::Tag::Common.parse("mn_Cyrl_MN"), lang.to_common
|
|
484
|
+
assert_equal Locale::Tag::Rfc.parse("mn-Cyrl-MN"), lang.to_rfc
|
|
485
|
+
assert_equal Locale::Tag::Cldr.parse("mn-Cyrl-MN"), lang.to_cldr
|
|
486
|
+
assert_equal Locale::Tag::Posix.parse("mn_MN"), lang.to_posix
|
|
487
|
+
|
|
488
|
+
lang = Locale::Tag.parse("zh-Latn-CN-variant1")
|
|
489
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
490
|
+
assert_equal "zh", lang.language
|
|
491
|
+
assert_equal "CN", lang.region
|
|
492
|
+
assert_equal "Latn", lang.script
|
|
493
|
+
assert_equal ["variant1"], lang.variants
|
|
494
|
+
|
|
495
|
+
assert_equal [Locale::Tag::Common.parse("zh-Latn-CN-variant1"),
|
|
496
|
+
Locale::Tag::Common.parse("zh-Latn-CN"),
|
|
497
|
+
Locale::Tag::Common.parse("zh-CN-variant1"),
|
|
498
|
+
Locale::Tag::Common.parse("zh-CN"),
|
|
499
|
+
Locale::Tag::Common.parse("zh-Latn-variant1"),
|
|
500
|
+
Locale::Tag::Common.parse("zh-Latn"),
|
|
501
|
+
Locale::Tag::Common.parse("zh-variant1"),
|
|
502
|
+
Locale::Tag::Common.parse("zh"),
|
|
503
|
+
], lang.candidates
|
|
504
|
+
|
|
505
|
+
assert_equal Locale::Tag::Simple.parse("zh_CN"), lang.to_simple
|
|
506
|
+
assert_equal Locale::Tag::Common.parse("zh_Latn_CN-variant1"), lang.to_common
|
|
507
|
+
assert_equal Locale::Tag::Rfc.parse("zh-Latn-CN-variant1"), lang.to_rfc
|
|
508
|
+
assert_equal Locale::Tag::Cldr.parse("zh-Latn-CN_VARIANT1"), lang.to_cldr
|
|
509
|
+
assert_equal Locale::Tag::Posix.parse("zh_CN@variant1"), lang.to_posix
|
|
510
|
+
|
|
511
|
+
# RFC3066 compatible
|
|
512
|
+
lang = Locale::Tag.parse("ja-jp-mac")
|
|
513
|
+
assert_equal Locale::Tag::Common, lang.class
|
|
514
|
+
assert_equal "ja", lang.language
|
|
515
|
+
assert_equal "JP", lang.region
|
|
516
|
+
assert_equal nil, lang.script
|
|
517
|
+
assert_equal [Locale::Tag::Common.parse("ja_JP_mac"),
|
|
518
|
+
Locale::Tag::Common.parse("ja_JP"),
|
|
519
|
+
Locale::Tag::Common.parse("ja_JP_mac"),
|
|
520
|
+
Locale::Tag::Common.parse("ja_JP"),
|
|
521
|
+
Locale::Tag::Common.parse("ja_mac"),
|
|
522
|
+
Locale::Tag::Common.parse("ja"),
|
|
523
|
+
Locale::Tag::Common.parse("ja_mac"),
|
|
524
|
+
Locale::Tag::Common.parse("ja"),
|
|
525
|
+
], lang.candidates
|
|
526
|
+
|
|
527
|
+
end
|
|
528
|
+
|
|
529
|
+
def test_common_writer
|
|
530
|
+
lang = Locale::Tag.parse("zh-Latn-CN-variant1")
|
|
531
|
+
lang.language = "ja"
|
|
532
|
+
assert_equal "ja_Latn_CN_variant1", lang.to_s
|
|
533
|
+
lang.script = "Hira"
|
|
534
|
+
assert_equal "ja_Hira_CN_variant1", lang.to_s
|
|
535
|
+
lang.region = "JP"
|
|
536
|
+
assert_equal "ja_Hira_JP_variant1", lang.to_s
|
|
537
|
+
lang.variants = ["variant1", "variant2"]
|
|
538
|
+
assert_equal "ja_Hira_JP_variant1_variant2", lang.to_s
|
|
539
|
+
|
|
540
|
+
assert_equal [Locale::Tag::Common.parse("ja-Hira-JP-variant1-variant2"),
|
|
541
|
+
Locale::Tag::Common.parse("ja-Hira-JP"),
|
|
542
|
+
Locale::Tag::Common.parse("ja-JP-variant1-variant2"),
|
|
543
|
+
Locale::Tag::Common.parse("ja-JP"),
|
|
544
|
+
Locale::Tag::Common.parse("ja-Hira-variant1-variant2"),
|
|
545
|
+
Locale::Tag::Common.parse("ja-Hira"),
|
|
546
|
+
Locale::Tag::Common.parse("ja-variant1-variant2"),
|
|
547
|
+
Locale::Tag::Common.parse("ja"),
|
|
548
|
+
], lang.candidates
|
|
549
|
+
|
|
550
|
+
end
|
|
551
|
+
|
|
552
|
+
def test_rfc
|
|
553
|
+
# extension
|
|
554
|
+
lang = Locale::Tag.parse("ja-Kana-JP-0abc-y-aa-z-bbccdd-b-nnnnnnnn")
|
|
555
|
+
assert_equal Locale::Tag::Rfc, lang.class
|
|
556
|
+
assert_equal "ja", lang.language
|
|
557
|
+
assert_equal "JP", lang.region
|
|
558
|
+
assert_equal "Kana", lang.script
|
|
559
|
+
assert_equal ["0abc"], lang.variants
|
|
560
|
+
assert_equal ["y-aa", "z-bbccdd", "b-nnnnnnnn"], lang.extensions
|
|
561
|
+
|
|
562
|
+
assert_equal [Locale::Tag::Rfc.parse("ja-Kana-JP-0abc"),
|
|
563
|
+
Locale::Tag::Rfc.parse("ja-Kana-JP"),
|
|
564
|
+
Locale::Tag::Rfc.parse("ja-JP-0abc"),
|
|
565
|
+
Locale::Tag::Rfc.parse("ja-JP"),
|
|
566
|
+
Locale::Tag::Rfc.parse("ja-Kana-0abc"),
|
|
567
|
+
Locale::Tag::Rfc.parse("ja-Kana"),
|
|
568
|
+
Locale::Tag::Rfc.parse("ja-0abc"),
|
|
569
|
+
Locale::Tag::Rfc.parse("ja"),
|
|
570
|
+
], lang.candidates
|
|
571
|
+
|
|
572
|
+
assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
|
|
573
|
+
assert_equal Locale::Tag::Common.parse("ja-Kana-JP-0abc"), lang.to_common
|
|
574
|
+
assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-0abc-y-aa-z-bbccdd-b-nnnnnnnn"), lang.to_rfc
|
|
575
|
+
assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_0abc"), lang.to_cldr
|
|
576
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP@0abc"), lang.to_posix
|
|
577
|
+
|
|
578
|
+
lang = Locale::Tag.parse("ja-JP-0abc-y-aa-z-bbccdd-b-xxxnnnnn")
|
|
579
|
+
assert_equal Locale::Tag::Rfc, lang.class
|
|
580
|
+
assert_equal "ja", lang.language
|
|
581
|
+
assert_equal "JP", lang.region
|
|
582
|
+
assert_equal nil, lang.script
|
|
583
|
+
assert_equal ["0abc"], lang.variants
|
|
584
|
+
assert_equal ["y-aa", "z-bbccdd", "b-xxxnnnnn"], lang.extensions
|
|
585
|
+
|
|
586
|
+
assert_equal [Locale::Tag::Rfc.parse("ja-JP-0abc"),
|
|
587
|
+
Locale::Tag::Rfc.parse("ja-JP"),
|
|
588
|
+
Locale::Tag::Rfc.parse("ja-JP-0abc"),
|
|
589
|
+
Locale::Tag::Rfc.parse("ja-JP"),
|
|
590
|
+
Locale::Tag::Rfc.parse("ja-0abc"),
|
|
591
|
+
Locale::Tag::Rfc.parse("ja"),
|
|
592
|
+
Locale::Tag::Rfc.parse("ja-0abc"),
|
|
593
|
+
Locale::Tag::Rfc.parse("ja"),
|
|
594
|
+
], lang.candidates
|
|
595
|
+
|
|
596
|
+
assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
|
|
597
|
+
assert_equal Locale::Tag::Common.parse("ja-JP-0abc"), lang.to_common
|
|
598
|
+
assert_equal Locale::Tag::Rfc.parse("ja-JP-0abc-y-aa-z-bbccdd-b-xxxnnnnn"), lang.to_rfc
|
|
599
|
+
assert_equal Locale::Tag::Cldr.parse("ja_JP_0abc"), lang.to_cldr
|
|
600
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP@0abc"), lang.to_posix
|
|
601
|
+
|
|
602
|
+
lang = Locale::Tag.parse("ja-y-aa-z-bbccdd-b-xxnnnnn")
|
|
603
|
+
assert_equal Locale::Tag::Rfc, lang.class
|
|
604
|
+
assert_equal "ja", lang.language
|
|
605
|
+
assert_equal nil, lang.region
|
|
606
|
+
assert_equal nil, lang.script
|
|
607
|
+
assert_equal [], lang.variants
|
|
608
|
+
assert_equal ["y-aa", "z-bbccdd", "b-xxnnnnn"], lang.extensions
|
|
609
|
+
|
|
610
|
+
assert_equal [Locale::Tag::Rfc.parse("ja"),
|
|
611
|
+
Locale::Tag::Rfc.parse("ja"),
|
|
612
|
+
Locale::Tag::Rfc.parse("ja"),
|
|
613
|
+
Locale::Tag::Rfc.parse("ja"),
|
|
614
|
+
Locale::Tag::Rfc.parse("ja"),
|
|
615
|
+
Locale::Tag::Rfc.parse("ja"),
|
|
616
|
+
Locale::Tag::Rfc.parse("ja"),
|
|
617
|
+
Locale::Tag::Rfc.parse("ja"),
|
|
618
|
+
], lang.candidates
|
|
619
|
+
|
|
620
|
+
assert_equal Locale::Tag::Simple.parse("ja"), lang.to_simple
|
|
621
|
+
assert_equal Locale::Tag::Common.parse("ja"), lang.to_common
|
|
622
|
+
assert_equal Locale::Tag::Rfc.parse("ja-y-aa-z-bbccdd-b-xxnnnnn"), lang.to_rfc
|
|
623
|
+
assert_equal Locale::Tag::Cldr.parse("ja"), lang.to_cldr
|
|
624
|
+
assert_equal Locale::Tag::Posix.parse("ja"), lang.to_posix
|
|
625
|
+
|
|
626
|
+
lang = Locale::Tag.parse("zh-Latn-CN-variant1-a-extend1")
|
|
627
|
+
assert_equal Locale::Tag::Rfc, lang.class
|
|
628
|
+
assert_equal "zh", lang.language
|
|
629
|
+
assert_equal "CN", lang.region
|
|
630
|
+
assert_equal "Latn", lang.script
|
|
631
|
+
assert_equal ["variant1"], lang.variants
|
|
632
|
+
assert_equal ["a-extend1"], lang.extensions
|
|
633
|
+
assert_equal nil, lang.privateuse
|
|
634
|
+
|
|
635
|
+
assert_equal [Locale::Tag::Rfc.parse("zh-Latn-CN-variant1"),
|
|
636
|
+
Locale::Tag::Rfc.parse("zh-Latn-CN"),
|
|
637
|
+
Locale::Tag::Rfc.parse("zh-CN-variant1"),
|
|
638
|
+
Locale::Tag::Rfc.parse("zh-CN"),
|
|
639
|
+
Locale::Tag::Rfc.parse("zh-Latn-variant1"),
|
|
640
|
+
Locale::Tag::Rfc.parse("zh-Latn"),
|
|
641
|
+
Locale::Tag::Rfc.parse("zh-variant1"),
|
|
642
|
+
Locale::Tag::Rfc.parse("zh"),
|
|
643
|
+
], lang.candidates
|
|
644
|
+
|
|
645
|
+
assert_equal Locale::Tag::Simple.parse("zh_CN"), lang.to_simple
|
|
646
|
+
assert_equal Locale::Tag::Common.parse("zh-Latn-CN_variant1"), lang.to_common
|
|
647
|
+
assert_equal Locale::Tag::Rfc.parse("zh-Latn-CN-variant1-a-extend1"), lang.to_rfc
|
|
648
|
+
assert_equal Locale::Tag::Cldr.parse("zh_Latn_CN_VARIANT1"), lang.to_cldr
|
|
649
|
+
assert_equal Locale::Tag::Posix.parse("zh_CN@variant1"), lang.to_posix
|
|
650
|
+
|
|
651
|
+
#Privateuse
|
|
652
|
+
lang = Locale::Tag.parse("zh-Latn-CN-variant1-a-extend1-x-wadegile-private1")
|
|
653
|
+
assert_equal Locale::Tag::Rfc, lang.class
|
|
654
|
+
assert_equal "zh", lang.language
|
|
655
|
+
assert_equal "CN", lang.region
|
|
656
|
+
assert_equal "Latn", lang.script
|
|
657
|
+
assert_equal ["variant1"], lang.variants
|
|
658
|
+
assert_equal ["a-extend1"], lang.extensions
|
|
659
|
+
assert_equal "x-wadegile-private1", lang.privateuse
|
|
660
|
+
|
|
661
|
+
assert_equal [Locale::Tag::Rfc.parse("zh-Latn-CN-variant1"),
|
|
662
|
+
Locale::Tag::Rfc.parse("zh-Latn-CN"),
|
|
663
|
+
Locale::Tag::Rfc.parse("zh-CN-variant1"),
|
|
664
|
+
Locale::Tag::Rfc.parse("zh-CN"),
|
|
665
|
+
Locale::Tag::Rfc.parse("zh-Latn-variant1"),
|
|
666
|
+
Locale::Tag::Rfc.parse("zh-Latn"),
|
|
667
|
+
Locale::Tag::Rfc.parse("zh-variant1"),
|
|
668
|
+
Locale::Tag::Rfc.parse("zh"),
|
|
669
|
+
], lang.candidates
|
|
670
|
+
|
|
671
|
+
assert_equal Locale::Tag::Simple.parse("zh_CN"), lang.to_simple
|
|
672
|
+
assert_equal Locale::Tag::Common.parse("zh-Latn-CN_variant1"), lang.to_common
|
|
673
|
+
assert_equal Locale::Tag::Rfc.parse("zh-Latn-CN-variant1-a-extend1-x-wadegile-private1"), lang.to_rfc
|
|
674
|
+
assert_equal Locale::Tag::Cldr.parse("zh_Latn_CN_VARIANT1"), lang.to_cldr
|
|
675
|
+
assert_equal Locale::Tag::Posix.parse("zh_CN@variant1"), lang.to_posix
|
|
676
|
+
|
|
677
|
+
#Privateuse with x-ldml (CLDR conversion)
|
|
678
|
+
lang = Locale::Tag.parse("en-US-x-ldml-POSIX-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar")
|
|
679
|
+
assert_equal Locale::Tag::Rfc, lang.class
|
|
680
|
+
assert_equal "en", lang.language
|
|
681
|
+
assert_equal "US", lang.region
|
|
682
|
+
assert_equal ["POSIX"], lang.variants
|
|
683
|
+
assert_equal ["k-calendar-islamic", "k-collatio-traditio", "k-colStren-secondar"], lang.extensions
|
|
684
|
+
assert_equal "x-ldml-POSIX-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar", lang.privateuse
|
|
685
|
+
|
|
686
|
+
assert_equal [Locale::Tag::Rfc.parse("en-US-POSIX"),
|
|
687
|
+
Locale::Tag::Rfc.parse("en-US"),
|
|
688
|
+
Locale::Tag::Rfc.parse("en-US-POSIX"),
|
|
689
|
+
Locale::Tag::Rfc.parse("en-US"),
|
|
690
|
+
Locale::Tag::Rfc.parse("en-POSIX"),
|
|
691
|
+
Locale::Tag::Rfc.parse("en"),
|
|
692
|
+
Locale::Tag::Rfc.parse("en-POSIX"),
|
|
693
|
+
Locale::Tag::Rfc.parse("en"),
|
|
694
|
+
], lang.candidates
|
|
695
|
+
|
|
696
|
+
assert_equal Locale::Tag::Simple.parse("en_US"), lang.to_simple
|
|
697
|
+
assert_equal Locale::Tag::Common.parse("en-US_POSIX"), lang.to_common
|
|
698
|
+
assert_equal Locale::Tag::Rfc.parse("en-US-x-ldml-POSIX-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar"), lang.to_rfc
|
|
699
|
+
assert_equal Locale::Tag::Cldr.parse("en_US_POSIX@calendar=islamic;collatio=traditio;colStren=secondar"), lang.to_cldr
|
|
700
|
+
assert_equal Locale::Tag::Posix.parse("en_US@POSIX"), lang.to_posix
|
|
701
|
+
|
|
702
|
+
lang = Locale::Tag.parse("en-US-x-ldml-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar")
|
|
703
|
+
assert_equal Locale::Tag::Rfc, lang.class
|
|
704
|
+
assert_equal "en", lang.language
|
|
705
|
+
assert_equal "US", lang.region
|
|
706
|
+
assert_equal [], lang.variants
|
|
707
|
+
assert_equal ["k-calendar-islamic", "k-collatio-traditio", "k-colStren-secondar"], lang.extensions
|
|
708
|
+
assert_equal "x-ldml-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar", lang.privateuse
|
|
709
|
+
|
|
710
|
+
assert_equal [Locale::Tag::Rfc.parse("en-US"),
|
|
711
|
+
Locale::Tag::Rfc.parse("en-US"),
|
|
712
|
+
Locale::Tag::Rfc.parse("en-US"),
|
|
713
|
+
Locale::Tag::Rfc.parse("en-US"),
|
|
714
|
+
Locale::Tag::Rfc.parse("en"),
|
|
715
|
+
Locale::Tag::Rfc.parse("en"),
|
|
716
|
+
Locale::Tag::Rfc.parse("en"),
|
|
717
|
+
Locale::Tag::Rfc.parse("en"),
|
|
718
|
+
], lang.candidates
|
|
719
|
+
|
|
720
|
+
assert_equal Locale::Tag::Simple.parse("en_US"), lang.to_simple
|
|
721
|
+
assert_equal Locale::Tag::Common.parse("en-US"), lang.to_common
|
|
722
|
+
assert_equal Locale::Tag::Rfc.parse("en-US-x-ldml-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar"), lang.to_rfc
|
|
723
|
+
assert_equal Locale::Tag::Cldr.parse("en_US@calendar=islamic;collatio=traditio;colStren=secondar"), lang.to_cldr
|
|
724
|
+
assert_equal Locale::Tag::Posix.parse("en_US"), lang.to_posix
|
|
725
|
+
end
|
|
726
|
+
|
|
727
|
+
def test_rfc_writer
|
|
728
|
+
lang = Locale::Tag.parse("zh-Latn-CN-variant1-a-extend1-x-wadegile-private1")
|
|
729
|
+
lang.language = "ja"
|
|
730
|
+
assert_equal "ja-Latn-CN-variant1-a-extend1-x-wadegile-private1", lang.to_s
|
|
731
|
+
lang.script = "Hira"
|
|
732
|
+
assert_equal "ja-Hira-CN-variant1-a-extend1-x-wadegile-private1", lang.to_s
|
|
733
|
+
lang.region = "JP"
|
|
734
|
+
assert_equal "ja-Hira-JP-variant1-a-extend1-x-wadegile-private1", lang.to_s
|
|
735
|
+
lang.variants = ["variant2"]
|
|
736
|
+
assert_equal "ja-Hira-JP-variant2-a-extend1-x-wadegile-private1", lang.to_s
|
|
737
|
+
lang.extensions = ["b-extend2"]
|
|
738
|
+
assert_equal "ja-Hira-JP-variant2-b-extend2-x-wadegile-private1", lang.to_s
|
|
739
|
+
lang.privateuse = "x-foooo"
|
|
740
|
+
assert_equal "ja-Hira-JP-variant2-b-extend2-x-foooo", lang.to_s
|
|
741
|
+
|
|
742
|
+
assert_equal [Locale::Tag::Rfc.parse("ja-Hira-JP-variant2"),
|
|
743
|
+
Locale::Tag::Rfc.parse("ja-Hira-JP"),
|
|
744
|
+
Locale::Tag::Rfc.parse("ja-JP-variant2"),
|
|
745
|
+
Locale::Tag::Rfc.parse("ja-JP"),
|
|
746
|
+
Locale::Tag::Rfc.parse("ja-Hira-variant2"),
|
|
747
|
+
Locale::Tag::Rfc.parse("ja-Hira"),
|
|
748
|
+
Locale::Tag::Rfc.parse("ja-variant2"),
|
|
749
|
+
Locale::Tag::Rfc.parse("ja"),
|
|
750
|
+
], lang.candidates
|
|
751
|
+
end
|
|
752
|
+
|
|
753
|
+
def test_cldr
|
|
754
|
+
lang = Locale::Tag.parse("de@collation=phonebook")
|
|
755
|
+
assert_equal Locale::Tag::Cldr, lang.class
|
|
756
|
+
assert_equal "de", lang.language
|
|
757
|
+
assert_equal nil, lang.region
|
|
758
|
+
assert_equal "phonebook", lang.extensions["collation"]
|
|
759
|
+
|
|
760
|
+
assert_equal [Locale::Tag::Cldr.parse("de"),
|
|
761
|
+
Locale::Tag::Cldr.parse("de"),
|
|
762
|
+
Locale::Tag::Cldr.parse("de"),
|
|
763
|
+
Locale::Tag::Cldr.parse("de"),
|
|
764
|
+
Locale::Tag::Cldr.parse("de"),
|
|
765
|
+
Locale::Tag::Cldr.parse("de"),
|
|
766
|
+
Locale::Tag::Cldr.parse("de"),
|
|
767
|
+
Locale::Tag::Cldr.parse("de"),
|
|
768
|
+
], lang.candidates
|
|
769
|
+
|
|
770
|
+
assert_equal Locale::Tag::Simple.parse("de"), lang.to_simple
|
|
771
|
+
assert_equal Locale::Tag::Common.parse("de"), lang.to_common
|
|
772
|
+
assert_equal Locale::Tag::Rfc.parse("de-k-collatio-phoneboo"), lang.to_rfc
|
|
773
|
+
assert_equal Locale::Tag::Cldr.parse("de@collation=phonebook"), lang.to_cldr
|
|
774
|
+
assert_equal Locale::Tag::Posix.parse("de"), lang.to_posix
|
|
775
|
+
|
|
776
|
+
lang = Locale::Tag.parse("az_Arab@collation=phonebook")
|
|
777
|
+
assert_equal Locale::Tag::Cldr, lang.class
|
|
778
|
+
assert_equal "az", lang.language
|
|
779
|
+
assert_equal nil, lang.region
|
|
780
|
+
assert_equal "Arab", lang.script
|
|
781
|
+
assert_equal "phonebook", lang.extensions["collation"]
|
|
782
|
+
|
|
783
|
+
assert_equal [Locale::Tag::Cldr.parse("az_Arab"),
|
|
784
|
+
Locale::Tag::Cldr.parse("az_Arab"),
|
|
785
|
+
Locale::Tag::Cldr.parse("az"),
|
|
786
|
+
Locale::Tag::Cldr.parse("az"),
|
|
787
|
+
Locale::Tag::Cldr.parse("az_Arab"),
|
|
788
|
+
Locale::Tag::Cldr.parse("az_Arab"),
|
|
789
|
+
Locale::Tag::Cldr.parse("az"),
|
|
790
|
+
Locale::Tag::Cldr.parse("az"),
|
|
791
|
+
], lang.candidates
|
|
792
|
+
|
|
793
|
+
assert_equal Locale::Tag::Simple.parse("az"), lang.to_simple
|
|
794
|
+
assert_equal Locale::Tag::Common.parse("az_Arab"), lang.to_common
|
|
795
|
+
assert_equal Locale::Tag::Rfc.parse("az-Arab-k-collatio-phoneboo"), lang.to_rfc
|
|
796
|
+
assert_equal Locale::Tag::Cldr.parse("az_Arab@collation=phonebook"), lang.to_cldr
|
|
797
|
+
assert_equal Locale::Tag::Posix.parse("az"), lang.to_posix
|
|
798
|
+
|
|
799
|
+
lang = Locale::Tag.parse("de_DE@collation=phonebook;currency=DDM")
|
|
800
|
+
assert_equal Locale::Tag::Cldr, lang.class
|
|
801
|
+
assert_equal "de", lang.language
|
|
802
|
+
assert_equal "DE", lang.region
|
|
803
|
+
assert_equal "phonebook", lang.extensions["collation"]
|
|
804
|
+
assert_equal "DDM", lang.extensions["currency"]
|
|
805
|
+
|
|
806
|
+
assert_equal [Locale::Tag::Cldr.parse("de_DE"),
|
|
807
|
+
Locale::Tag::Cldr.parse("de_DE"),
|
|
808
|
+
Locale::Tag::Cldr.parse("de_DE"),
|
|
809
|
+
Locale::Tag::Cldr.parse("de_DE"),
|
|
810
|
+
Locale::Tag::Cldr.parse("de"),
|
|
811
|
+
Locale::Tag::Cldr.parse("de"),
|
|
812
|
+
Locale::Tag::Cldr.parse("de"),
|
|
813
|
+
Locale::Tag::Cldr.parse("de"),
|
|
814
|
+
], lang.candidates
|
|
815
|
+
|
|
816
|
+
assert_equal Locale::Tag::Simple.parse("de_DE"), lang.to_simple
|
|
817
|
+
assert_equal Locale::Tag::Common.parse("de_DE"), lang.to_common
|
|
818
|
+
if RUBY_VERSION < "1.9.0" and RUBY_PLATFORM != "java"
|
|
819
|
+
assert_equal Locale::Tag::Rfc.parse("de-DE-k-currency-DDM-k-collatio-phoneboo"), lang.to_rfc
|
|
820
|
+
else
|
|
821
|
+
assert_equal Locale::Tag::Rfc.parse("de-DE-k-collatio-phoneboo-k-currency-DDM"), lang.to_rfc
|
|
822
|
+
end
|
|
823
|
+
assert_equal Locale::Tag::Cldr.parse("de_DE@collation=phonebook;currency=DDM"), lang.to_cldr
|
|
824
|
+
assert_equal Locale::Tag::Posix.parse("de_DE"), lang.to_posix
|
|
825
|
+
|
|
826
|
+
lang = Locale::Tag.parse("en_US_POSIX@calendar=islamic;collation=traditional;colStrength=secondary")
|
|
827
|
+
assert_equal Locale::Tag::Cldr, lang.class
|
|
828
|
+
assert_equal "en", lang.language
|
|
829
|
+
assert_equal "US", lang.region
|
|
830
|
+
assert_equal ["POSIX"], lang.variants
|
|
831
|
+
assert_equal "islamic", lang.extensions["calendar"]
|
|
832
|
+
assert_equal "traditional", lang.extensions["collation"]
|
|
833
|
+
assert_equal "secondary", lang.extensions["colStrength"]
|
|
834
|
+
|
|
835
|
+
assert_equal [Locale::Tag::Cldr.parse("en_US_POSIX"),
|
|
836
|
+
Locale::Tag::Cldr.parse("en_US"),
|
|
837
|
+
Locale::Tag::Cldr.parse("en_US_POSIX"),
|
|
838
|
+
Locale::Tag::Cldr.parse("en_US"),
|
|
839
|
+
Locale::Tag::Cldr.parse("en_POSIX"),
|
|
840
|
+
Locale::Tag::Cldr.parse("en"),
|
|
841
|
+
Locale::Tag::Cldr.parse("en_POSIX"),
|
|
842
|
+
Locale::Tag::Cldr.parse("en"),
|
|
843
|
+
], lang.candidates
|
|
844
|
+
|
|
845
|
+
assert_equal Locale::Tag::Simple.parse("en_US"), lang.to_simple
|
|
846
|
+
assert_equal Locale::Tag::Common.parse("en_US_POSIX"), lang.to_common
|
|
847
|
+
if RUBY_VERSION < "1.9.0" and RUBY_PLATFORM != "java"
|
|
848
|
+
assert_equal Locale::Tag::Rfc.parse("en-US-POSIX-k-colStren-secondar-k-collatio-traditio-k-calendar-islamic"), lang.to_rfc
|
|
849
|
+
else
|
|
850
|
+
assert_equal Locale::Tag::Rfc.parse("en-US-POSIX-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar"), lang.to_rfc
|
|
851
|
+
end
|
|
852
|
+
assert_equal Locale::Tag::Cldr.parse("en_US_POSIX@calendar=islamic;collation=traditional;colStrength=secondary"), lang.to_cldr
|
|
853
|
+
assert_equal Locale::Tag::Posix.parse("en_US@POSIX"), lang.to_posix
|
|
854
|
+
|
|
855
|
+
lang = Locale::Tag.parse("en_US@calendar=islamic;collation=traditional;colStrength=secondary")
|
|
856
|
+
assert_equal Locale::Tag::Cldr, lang.class
|
|
857
|
+
assert_equal "en", lang.language
|
|
858
|
+
assert_equal "US", lang.region
|
|
859
|
+
assert_equal [], lang.variants
|
|
860
|
+
assert_equal "islamic", lang.extensions["calendar"]
|
|
861
|
+
assert_equal "traditional", lang.extensions["collation"]
|
|
862
|
+
assert_equal "secondary", lang.extensions["colStrength"]
|
|
863
|
+
|
|
864
|
+
assert_equal [Locale::Tag::Cldr.parse("en_US"),
|
|
865
|
+
Locale::Tag::Cldr.parse("en_US"),
|
|
866
|
+
Locale::Tag::Cldr.parse("en_US"),
|
|
867
|
+
Locale::Tag::Cldr.parse("en_US"),
|
|
868
|
+
Locale::Tag::Cldr.parse("en"),
|
|
869
|
+
Locale::Tag::Cldr.parse("en"),
|
|
870
|
+
Locale::Tag::Cldr.parse("en"),
|
|
871
|
+
Locale::Tag::Cldr.parse("en"),
|
|
872
|
+
], lang.candidates
|
|
873
|
+
|
|
874
|
+
assert_equal Locale::Tag::Simple.parse("en_US"), lang.to_simple
|
|
875
|
+
assert_equal Locale::Tag::Common.parse("en_US"), lang.to_common
|
|
876
|
+
if RUBY_VERSION < "1.9.0" and RUBY_PLATFORM != "java"
|
|
877
|
+
assert_equal Locale::Tag::Rfc.parse("en-US-k-colStren-secondar-k-collatio-traditio-k-calendar-islamic"), lang.to_rfc
|
|
878
|
+
else
|
|
879
|
+
assert_equal Locale::Tag::Rfc.parse("en-US-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar"), lang.to_rfc
|
|
880
|
+
end
|
|
881
|
+
assert_equal Locale::Tag::Cldr.parse("en_US@calendar=islamic;collation=traditional;colStrength=secondary"), lang.to_cldr
|
|
882
|
+
assert_equal Locale::Tag::Posix.parse("en_US"), lang.to_posix
|
|
883
|
+
|
|
884
|
+
end
|
|
885
|
+
|
|
886
|
+
def test_cldr_writer
|
|
887
|
+
lang = Locale::Tag.parse("en_US@calendar=islamic;colStrength=secondary")
|
|
888
|
+
lang.language = "ja"
|
|
889
|
+
assert_equal "ja_US@calendar=islamic;colStrength=secondary", lang.to_s
|
|
890
|
+
lang.script = "Hira"
|
|
891
|
+
assert_equal "ja_Hira_US@calendar=islamic;colStrength=secondary", lang.to_s
|
|
892
|
+
lang.region = "JP"
|
|
893
|
+
assert_equal "ja_Hira_JP@calendar=islamic;colStrength=secondary", lang.to_s
|
|
894
|
+
lang.variants = ["POSIX"]
|
|
895
|
+
assert_equal "ja_Hira_JP_POSIX@calendar=islamic;colStrength=secondary", lang.to_s
|
|
896
|
+
lang.extensions = {:collation => "traditional"}
|
|
897
|
+
assert_equal "ja_Hira_JP_POSIX@collation=traditional", lang.to_s
|
|
898
|
+
|
|
899
|
+
assert_equal [Locale::Tag::Cldr.parse("ja_Hira_JP_POSIX"),
|
|
900
|
+
Locale::Tag::Cldr.parse("ja_Hira_JP"),
|
|
901
|
+
Locale::Tag::Cldr.parse("ja_JP_POSIX"),
|
|
902
|
+
Locale::Tag::Cldr.parse("ja_JP"),
|
|
903
|
+
Locale::Tag::Cldr.parse("ja_Hira_POSIX"),
|
|
904
|
+
Locale::Tag::Cldr.parse("ja_Hira"),
|
|
905
|
+
Locale::Tag::Cldr.parse("ja_POSIX"),
|
|
906
|
+
Locale::Tag::Cldr.parse("ja"),
|
|
907
|
+
], lang.candidates
|
|
908
|
+
end
|
|
909
|
+
|
|
910
|
+
def test_posix
|
|
911
|
+
lang = Locale::Tag.parse("C")
|
|
912
|
+
assert_equal Locale::Tag::Posix, lang.class
|
|
913
|
+
assert_equal "en", lang.language
|
|
914
|
+
assert_equal "US", lang.region
|
|
915
|
+
assert_equal "C", lang.tag
|
|
916
|
+
|
|
917
|
+
assert_equal [Locale::Tag::Posix.parse("en_US"),
|
|
918
|
+
Locale::Tag::Posix.parse("en_US"),
|
|
919
|
+
Locale::Tag::Posix.parse("en_US"),
|
|
920
|
+
Locale::Tag::Posix.parse("en_US"),
|
|
921
|
+
Locale::Tag::Posix.parse("en"),
|
|
922
|
+
Locale::Tag::Posix.parse("en"),
|
|
923
|
+
Locale::Tag::Posix.parse("en"),
|
|
924
|
+
Locale::Tag::Posix.parse("en"),
|
|
925
|
+
], lang.candidates
|
|
926
|
+
|
|
927
|
+
assert_equal Locale::Tag::Simple.parse("en_US"), lang.to_simple
|
|
928
|
+
assert_equal Locale::Tag::Common.parse("en_US"), lang.to_common
|
|
929
|
+
assert_equal Locale::Tag::Rfc.parse("en-US"), lang.to_rfc
|
|
930
|
+
assert_equal Locale::Tag::Cldr.parse("en_US"), lang.to_cldr
|
|
931
|
+
assert_equal Locale::Tag::Posix.parse("en_US"), lang.to_posix
|
|
932
|
+
|
|
933
|
+
lang = Locale::Tag.parse("POSIX")
|
|
934
|
+
assert_equal Locale::Tag::Posix, lang.class
|
|
935
|
+
assert_equal "en", lang.language
|
|
936
|
+
assert_equal "US", lang.region
|
|
937
|
+
assert_equal "POSIX", lang.tag
|
|
938
|
+
|
|
939
|
+
assert_equal [Locale::Tag::Posix.parse("en_US"),
|
|
940
|
+
Locale::Tag::Posix.parse("en_US"),
|
|
941
|
+
Locale::Tag::Posix.parse("en_US"),
|
|
942
|
+
Locale::Tag::Posix.parse("en_US"),
|
|
943
|
+
Locale::Tag::Posix.parse("en"),
|
|
944
|
+
Locale::Tag::Posix.parse("en"),
|
|
945
|
+
Locale::Tag::Posix.parse("en"),
|
|
946
|
+
Locale::Tag::Posix.parse("en"),
|
|
947
|
+
], lang.candidates
|
|
948
|
+
|
|
949
|
+
assert_equal Locale::Tag::Simple.parse("en_US"), lang.to_simple
|
|
950
|
+
assert_equal Locale::Tag::Common.parse("en_US"), lang.to_common
|
|
951
|
+
assert_equal Locale::Tag::Rfc.parse("en-US"), lang.to_rfc
|
|
952
|
+
assert_equal Locale::Tag::Cldr.parse("en_US"), lang.to_cldr
|
|
953
|
+
assert_equal Locale::Tag::Posix.parse("en_US"), lang.to_posix
|
|
954
|
+
|
|
955
|
+
lang = Locale::Tag.parse("japanese.euc")
|
|
956
|
+
assert_equal Locale::Tag::Posix, lang.class
|
|
957
|
+
assert_equal "japanese", lang.language
|
|
958
|
+
assert_equal nil, lang.region
|
|
959
|
+
assert_equal "euc", lang.charset
|
|
960
|
+
|
|
961
|
+
assert_equal [Locale::Tag::Posix.parse("japanese.euc"),
|
|
962
|
+
Locale::Tag::Posix.parse("japanese.euc"),
|
|
963
|
+
Locale::Tag::Posix.parse("japanese"),
|
|
964
|
+
Locale::Tag::Posix.parse("japanese"),
|
|
965
|
+
Locale::Tag::Posix.parse("japanese.euc"),
|
|
966
|
+
Locale::Tag::Posix.parse("japanese.euc"),
|
|
967
|
+
Locale::Tag::Posix.parse("japanese"),
|
|
968
|
+
Locale::Tag::Posix.parse("japanese"),
|
|
969
|
+
], lang.candidates
|
|
970
|
+
|
|
971
|
+
lang = Locale::Tag.parse("es.iso885915")
|
|
972
|
+
assert_equal Locale::Tag::Posix, lang.class
|
|
973
|
+
assert_equal "es", lang.language
|
|
974
|
+
assert_equal nil, lang.region
|
|
975
|
+
assert_equal "iso885915", lang.charset
|
|
976
|
+
assert_equal nil, lang.modifier
|
|
977
|
+
|
|
978
|
+
assert_equal [Locale::Tag::Posix.parse("es.iso885915"),
|
|
979
|
+
Locale::Tag::Posix.parse("es.iso885915"),
|
|
980
|
+
Locale::Tag::Posix.parse("es"),
|
|
981
|
+
Locale::Tag::Posix.parse("es"),
|
|
982
|
+
Locale::Tag::Posix.parse("es.iso885915"),
|
|
983
|
+
Locale::Tag::Posix.parse("es.iso885915"),
|
|
984
|
+
Locale::Tag::Posix.parse("es"),
|
|
985
|
+
Locale::Tag::Posix.parse("es"),
|
|
986
|
+
], lang.candidates
|
|
987
|
+
|
|
988
|
+
assert_equal Locale::Tag::Simple.parse("es"), lang.to_simple
|
|
989
|
+
assert_equal Locale::Tag::Common.parse("es"), lang.to_common
|
|
990
|
+
assert_equal Locale::Tag::Rfc.parse("es"), lang.to_rfc
|
|
991
|
+
assert_equal Locale::Tag::Cldr.parse("es"), lang.to_cldr
|
|
992
|
+
assert_equal Locale::Tag::Posix.parse("es.iso885915"), lang.to_posix
|
|
993
|
+
|
|
994
|
+
lang = Locale::Tag.parse("es_ES.iso885915")
|
|
995
|
+
assert_equal Locale::Tag::Posix, lang.class
|
|
996
|
+
assert_equal "es", lang.language
|
|
997
|
+
assert_equal "ES", lang.region
|
|
998
|
+
assert_equal "iso885915", lang.charset
|
|
999
|
+
assert_equal nil, lang.modifier
|
|
1000
|
+
|
|
1001
|
+
assert_equal [Locale::Tag::Posix.parse("es_ES.iso885915"),
|
|
1002
|
+
Locale::Tag::Posix.parse("es_ES.iso885915"),
|
|
1003
|
+
Locale::Tag::Posix.parse("es_ES"),
|
|
1004
|
+
Locale::Tag::Posix.parse("es_ES"),
|
|
1005
|
+
Locale::Tag::Posix.parse("es.iso885915"),
|
|
1006
|
+
Locale::Tag::Posix.parse("es.iso885915"),
|
|
1007
|
+
Locale::Tag::Posix.parse("es"),
|
|
1008
|
+
Locale::Tag::Posix.parse("es"),
|
|
1009
|
+
], lang.candidates
|
|
1010
|
+
|
|
1011
|
+
assert_equal Locale::Tag::Simple.parse("es_ES"), lang.to_simple
|
|
1012
|
+
assert_equal Locale::Tag::Common.parse("es_ES"), lang.to_common
|
|
1013
|
+
assert_equal Locale::Tag::Rfc.parse("es-ES"), lang.to_rfc
|
|
1014
|
+
assert_equal Locale::Tag::Cldr.parse("es_ES"), lang.to_cldr
|
|
1015
|
+
assert_equal Locale::Tag::Posix.parse("es_ES.iso885915"), lang.to_posix
|
|
1016
|
+
|
|
1017
|
+
lang = Locale::Tag.parse("es@euro")
|
|
1018
|
+
assert_equal Locale::Tag::Posix, lang.class
|
|
1019
|
+
assert_equal "es", lang.language
|
|
1020
|
+
assert_equal nil, lang.region
|
|
1021
|
+
assert_equal nil, lang.charset
|
|
1022
|
+
assert_equal "euro", lang.modifier
|
|
1023
|
+
|
|
1024
|
+
assert_equal [Locale::Tag::Posix.parse("es@euro"),
|
|
1025
|
+
Locale::Tag::Posix.parse("es"),
|
|
1026
|
+
Locale::Tag::Posix.parse("es@euro"),
|
|
1027
|
+
Locale::Tag::Posix.parse("es"),
|
|
1028
|
+
Locale::Tag::Posix.parse("es@euro"),
|
|
1029
|
+
Locale::Tag::Posix.parse("es"),
|
|
1030
|
+
Locale::Tag::Posix.parse("es@euro"),
|
|
1031
|
+
Locale::Tag::Posix.parse("es"),
|
|
1032
|
+
], lang.candidates
|
|
1033
|
+
|
|
1034
|
+
# A modifier is converted to a variant.
|
|
1035
|
+
# If the modifier is less than 5 characters, it is not canonical value.
|
|
1036
|
+
assert_equal Locale::Tag::Simple.parse("es"), lang.to_simple
|
|
1037
|
+
assert_equal Locale::Tag::Common.new("es", nil, nil, ["euro"]), lang.to_common
|
|
1038
|
+
assert_equal Locale::Tag::Rfc.new("es", nil, nil, ["euro"]), lang.to_rfc
|
|
1039
|
+
assert_equal Locale::Tag::Cldr.new("es", nil, nil, ["euro"]), lang.to_cldr
|
|
1040
|
+
assert_equal Locale::Tag::Posix.parse("es@euro"), lang.to_posix
|
|
1041
|
+
|
|
1042
|
+
lang = Locale::Tag.parse("es_ES@euro")
|
|
1043
|
+
assert_equal Locale::Tag::Posix, lang.class
|
|
1044
|
+
assert_equal "es", lang.language
|
|
1045
|
+
assert_equal "ES", lang.region
|
|
1046
|
+
assert_equal nil, lang.charset
|
|
1047
|
+
assert_equal "euro", lang.modifier
|
|
1048
|
+
|
|
1049
|
+
assert_equal [Locale::Tag::Posix.parse("es_ES@euro"),
|
|
1050
|
+
Locale::Tag::Posix.parse("es_ES"),
|
|
1051
|
+
Locale::Tag::Posix.parse("es_ES@euro"),
|
|
1052
|
+
Locale::Tag::Posix.parse("es_ES"),
|
|
1053
|
+
Locale::Tag::Posix.parse("es@euro"),
|
|
1054
|
+
Locale::Tag::Posix.parse("es"),
|
|
1055
|
+
Locale::Tag::Posix.parse("es@euro"),
|
|
1056
|
+
Locale::Tag::Posix.parse("es"),
|
|
1057
|
+
], lang.candidates
|
|
1058
|
+
|
|
1059
|
+
assert_equal Locale::Tag::Simple.parse("es_ES"), lang.to_simple
|
|
1060
|
+
assert_equal Locale::Tag::Common.new("es", nil, "ES", ["euro"]), lang.to_common
|
|
1061
|
+
assert_equal Locale::Tag::Rfc.new("es", nil, "ES", ["euro"]), lang.to_rfc
|
|
1062
|
+
assert_equal Locale::Tag::Cldr.new("es", nil, "ES", ["EURO"]), lang.to_cldr
|
|
1063
|
+
assert_equal Locale::Tag::Posix.parse("es_ES@euro"), lang.to_posix
|
|
1064
|
+
|
|
1065
|
+
lang = Locale::Tag.parse("es_ES.iso885915@euro")
|
|
1066
|
+
assert_equal Locale::Tag::Posix, lang.class
|
|
1067
|
+
assert_equal "es", lang.language
|
|
1068
|
+
assert_equal "ES", lang.region
|
|
1069
|
+
assert_equal "iso885915", lang.charset
|
|
1070
|
+
assert_equal "euro", lang.modifier
|
|
1071
|
+
|
|
1072
|
+
assert_equal [Locale::Tag::Posix.parse("es_ES.iso885915@euro"),
|
|
1073
|
+
Locale::Tag::Posix.parse("es_ES.iso885915"),
|
|
1074
|
+
Locale::Tag::Posix.parse("es_ES@euro"),
|
|
1075
|
+
Locale::Tag::Posix.parse("es_ES"),
|
|
1076
|
+
Locale::Tag::Posix.parse("es.iso885915@euro"),
|
|
1077
|
+
Locale::Tag::Posix.parse("es.iso885915"),
|
|
1078
|
+
Locale::Tag::Posix.parse("es@euro"),
|
|
1079
|
+
Locale::Tag::Posix.parse("es"),
|
|
1080
|
+
], lang.candidates
|
|
1081
|
+
|
|
1082
|
+
assert_equal Locale::Tag::Simple.parse("es_ES"), lang.to_simple
|
|
1083
|
+
assert_equal Locale::Tag::Common.new("es", nil, "ES", ["euro"]), lang.to_common
|
|
1084
|
+
assert_equal Locale::Tag::Rfc.new("es", nil, "ES", ["euro"]), lang.to_rfc
|
|
1085
|
+
assert_equal Locale::Tag::Cldr.new("es", nil, "ES", ["EURO"]), lang.to_cldr
|
|
1086
|
+
assert_equal Locale::Tag::Posix.parse("es_ES.iso885915@euro"), lang.to_posix
|
|
1087
|
+
|
|
1088
|
+
lang = Locale::Tag.parse("univ.utf8")
|
|
1089
|
+
assert_equal Locale::Tag::Posix, lang.class
|
|
1090
|
+
assert_equal "univ", lang.language
|
|
1091
|
+
assert_equal nil, lang.region
|
|
1092
|
+
assert_equal "utf8", lang.charset
|
|
1093
|
+
|
|
1094
|
+
assert_equal [Locale::Tag::Posix.parse("univ.utf8"),
|
|
1095
|
+
Locale::Tag::Posix.parse("univ.utf8"),
|
|
1096
|
+
Locale::Tag::Posix.parse("univ"),
|
|
1097
|
+
Locale::Tag::Posix.parse("univ"),
|
|
1098
|
+
Locale::Tag::Posix.parse("univ.utf8"),
|
|
1099
|
+
Locale::Tag::Posix.parse("univ.utf8"),
|
|
1100
|
+
Locale::Tag::Posix.parse("univ"),
|
|
1101
|
+
Locale::Tag::Posix.parse("univ"),
|
|
1102
|
+
], lang.candidates
|
|
1103
|
+
|
|
1104
|
+
lang = Locale::Tag.parse("ja_JP.UTF-8")
|
|
1105
|
+
assert_equal Locale::Tag::Posix, lang.class
|
|
1106
|
+
assert_equal "ja", lang.language
|
|
1107
|
+
assert_equal "JP", lang.region
|
|
1108
|
+
assert_equal "UTF-8", lang.charset
|
|
1109
|
+
|
|
1110
|
+
assert_equal [Locale::Tag::Posix.parse("ja_JP.UTF-8"),
|
|
1111
|
+
Locale::Tag::Posix.parse("ja_JP.UTF-8"),
|
|
1112
|
+
Locale::Tag::Posix.parse("ja_JP"),
|
|
1113
|
+
Locale::Tag::Posix.parse("ja_JP"),
|
|
1114
|
+
Locale::Tag::Posix.parse("ja.UTF-8"),
|
|
1115
|
+
Locale::Tag::Posix.parse("ja.UTF-8"),
|
|
1116
|
+
Locale::Tag::Posix.parse("ja"),
|
|
1117
|
+
Locale::Tag::Posix.parse("ja"),
|
|
1118
|
+
], lang.candidates
|
|
1119
|
+
|
|
1120
|
+
assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
|
|
1121
|
+
assert_equal Locale::Tag::Common.parse("ja_JP"), lang.to_common
|
|
1122
|
+
assert_equal Locale::Tag::Rfc.parse("ja-JP"), lang.to_rfc
|
|
1123
|
+
assert_equal Locale::Tag::Cldr.parse("ja_JP"), lang.to_cldr
|
|
1124
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP.UTF-8"), lang.to_posix
|
|
1125
|
+
end
|
|
1126
|
+
|
|
1127
|
+
def test_posix_writer
|
|
1128
|
+
lang = Locale::Tag.parse("es_ES.iso885915@euro")
|
|
1129
|
+
lang.language = "ja"
|
|
1130
|
+
assert_equal "ja_ES.iso885915@euro", lang.to_s
|
|
1131
|
+
lang.region = "JP"
|
|
1132
|
+
assert_equal "ja_JP.iso885915@euro", lang.to_s
|
|
1133
|
+
lang.charset = "EUC-JP"
|
|
1134
|
+
assert_equal "ja_JP.EUC-JP@euro", lang.to_s
|
|
1135
|
+
lang.modifier = "osaka"
|
|
1136
|
+
assert_equal "ja_JP.EUC-JP@osaka", lang.to_s
|
|
1137
|
+
assert_equal [Locale::Tag::Posix.parse("ja_JP.EUC-JP@osaka"),
|
|
1138
|
+
Locale::Tag::Posix.parse("ja_JP.EUC-JP"),
|
|
1139
|
+
Locale::Tag::Posix.parse("ja_JP@osaka"),
|
|
1140
|
+
Locale::Tag::Posix.parse("ja_JP"),
|
|
1141
|
+
Locale::Tag::Posix.parse("ja.EUC-JP@osaka"),
|
|
1142
|
+
Locale::Tag::Posix.parse("ja.EUC-JP"),
|
|
1143
|
+
Locale::Tag::Posix.parse("ja@osaka"),
|
|
1144
|
+
Locale::Tag::Posix.parse("ja"),
|
|
1145
|
+
], lang.candidates
|
|
1146
|
+
end
|
|
1147
|
+
|
|
1148
|
+
def test_invaild
|
|
1149
|
+
lang = Locale::Tag.parse("")
|
|
1150
|
+
assert_equal Locale::Tag::Illegular, lang.class
|
|
1151
|
+
assert_equal "en", lang.language
|
|
1152
|
+
assert_equal nil, lang.region
|
|
1153
|
+
|
|
1154
|
+
assert_equal [Locale::Tag::Illegular.new("en"),
|
|
1155
|
+
], lang.candidates
|
|
1156
|
+
|
|
1157
|
+
assert_equal Locale::Tag::Simple.parse("en"), lang.to_simple
|
|
1158
|
+
assert_equal Locale::Tag::Common.parse("en"), lang.to_common
|
|
1159
|
+
assert_equal Locale::Tag::Rfc.parse("en"), lang.to_rfc
|
|
1160
|
+
assert_equal Locale::Tag::Cldr.parse("en"), lang.to_cldr
|
|
1161
|
+
assert_equal Locale::Tag::Posix.parse("en"), lang.to_posix
|
|
1162
|
+
|
|
1163
|
+
lang = Locale::Tag.parse(nil)
|
|
1164
|
+
assert_equal Locale::Tag::Illegular, lang.class
|
|
1165
|
+
assert_equal "en", lang.language
|
|
1166
|
+
assert_equal nil, lang.region
|
|
1167
|
+
|
|
1168
|
+
assert_equal [Locale::Tag::Illegular.new("en"),
|
|
1169
|
+
], lang.candidates
|
|
1170
|
+
|
|
1171
|
+
assert_equal Locale::Tag::Simple.parse("en"), lang.to_simple
|
|
1172
|
+
assert_equal Locale::Tag::Common.parse("en"), lang.to_common
|
|
1173
|
+
assert_equal Locale::Tag::Rfc.parse("en"), lang.to_rfc
|
|
1174
|
+
assert_equal Locale::Tag::Cldr.parse("en"), lang.to_cldr
|
|
1175
|
+
assert_equal Locale::Tag::Posix.parse("en"), lang.to_posix
|
|
1176
|
+
end
|
|
1177
|
+
|
|
1178
|
+
def test_raise_error
|
|
1179
|
+
assert_raise(RuntimeError){
|
|
1180
|
+
Locale::Tag::Simple.new(nil)
|
|
1181
|
+
}
|
|
1182
|
+
end
|
|
1183
|
+
end
|