locale 2.0.3 → 2.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +6 -0
- data/Rakefile +82 -80
- data/lib/locale/driver/jruby.rb +4 -10
- data/lib/locale/driver/win32.rb +25 -6
- data/lib/locale/tag/irregular.rb +1 -1
- data/lib/locale/version.rb +1 -1
- data/test/test_driver_jruby.rb +43 -0
- data/test/test_driver_win32.rb +65 -0
- data/test/test_tag.rb +181 -120
- metadata +4 -76
- data/benchmark/benchmark.rb +0 -34
- data/benchmark/benchmark_2.0.1.txt +0 -7
- data/doc/classes/Locale.html +0 -1244
- data/doc/classes/Locale/Driver.html +0 -374
- data/doc/classes/Locale/Driver/CGI.html +0 -536
- data/doc/classes/Locale/Driver/Env.html +0 -439
- data/doc/classes/Locale/Driver/JRuby.html +0 -389
- data/doc/classes/Locale/Driver/Posix.html +0 -430
- data/doc/classes/Locale/Driver/Win32.html +0 -398
- data/doc/classes/Locale/Driver/Win32Table.html +0 -355
- data/doc/classes/Locale/Info.html +0 -585
- data/doc/classes/Locale/Info/Language.html +0 -763
- data/doc/classes/Locale/Info/Region.html +0 -470
- data/doc/classes/Locale/Tag.html +0 -433
- data/doc/classes/Locale/Tag/Cldr.html +0 -523
- data/doc/classes/Locale/Tag/Common.html +0 -624
- data/doc/classes/Locale/Tag/Irregular.html +0 -423
- data/doc/classes/Locale/Tag/Posix.html +0 -612
- data/doc/classes/Locale/Tag/Rfc.html +0 -581
- data/doc/classes/Locale/Tag/Simple.html +0 -721
- data/doc/classes/Locale/TagList.html +0 -826
- data/doc/classes/Locale/Util.html +0 -506
- data/doc/classes/Locale/Util/Memoizable.html +0 -355
- data/doc/created.rid +0 -1
- data/doc/files/ChangeLog.html +0 -537
- data/doc/files/README_rdoc.html +0 -565
- data/doc/files/lib/locale/driver/cgi_rb.html +0 -341
- data/doc/files/lib/locale/driver/env_rb.html +0 -353
- data/doc/files/lib/locale/driver/jruby_rb.html +0 -353
- data/doc/files/lib/locale/driver/posix_rb.html +0 -341
- data/doc/files/lib/locale/driver/win32_rb.html +0 -348
- data/doc/files/lib/locale/driver/win32_table_rb.html +0 -341
- data/doc/files/lib/locale/info/language_rb.html +0 -352
- data/doc/files/lib/locale/info/region_rb.html +0 -352
- data/doc/files/lib/locale/info_rb.html +0 -353
- data/doc/files/lib/locale/tag/cldr_rb.html +0 -348
- data/doc/files/lib/locale/tag/common_rb.html +0 -348
- data/doc/files/lib/locale/tag/irregular_rb.html +0 -348
- data/doc/files/lib/locale/tag/posix_rb.html +0 -341
- data/doc/files/lib/locale/tag/rfc_rb.html +0 -348
- data/doc/files/lib/locale/tag/simple_rb.html +0 -348
- data/doc/files/lib/locale/tag_rb.html +0 -378
- data/doc/files/lib/locale/taglist_rb.html +0 -348
- data/doc/files/lib/locale/util/memoizable_rb.html +0 -359
- data/doc/files/lib/locale/version_rb.html +0 -341
- data/doc/files/lib/locale_rb.html +0 -363
- data/doc/fr_class_index.html +0 -22
- data/doc/fr_file_index.html +0 -23
- data/doc/fr_method_index.html +0 -99
- data/doc/index.html +0 -1
- data/doc/rdoc-style.css +0 -320
- data/lib/locale/util/memoizable.rb.20090328 +0 -96
- data/lib/locale/util/memoizable.rb.old +0 -91
- data/replace.rb +0 -21
- data/test.rb +0 -28
- data/test/test.rb +0 -7
- data/test/tmp.txt +0 -20
- data/test2.rb +0 -14
- data/test3.rb +0 -12
data/ChangeLog
CHANGED
data/Rakefile
CHANGED
@@ -1,80 +1,82 @@
|
|
1
|
-
$:.unshift "./lib"
|
2
|
-
|
3
|
-
require 'rake'
|
4
|
-
require 'rake/testtask'
|
5
|
-
require 'rake/rdoctask'
|
6
|
-
require 'rake/packagetask'
|
7
|
-
require 'rake/gempackagetask'
|
8
|
-
|
9
|
-
require 'locale/version'
|
10
|
-
|
11
|
-
#desc "Default Task"
|
12
|
-
#task :default => [ :test ]
|
13
|
-
|
14
|
-
PKG_VERSION = Locale::VERSION
|
15
|
-
|
16
|
-
# Run the unit tests
|
17
|
-
task :test do
|
18
|
-
Dir.glob("test/test_*.rb").each do |v|
|
19
|
-
ruby "-Ilib #{v}"
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
Rake::RDocTask.new { |rdoc|
|
24
|
-
begin
|
25
|
-
allison = `allison --path`.chop
|
26
|
-
rescue Exception
|
27
|
-
allison = ""
|
28
|
-
end
|
29
|
-
rdoc.rdoc_dir = 'doc'
|
30
|
-
rdoc.title = "Ruby-Locale library"
|
31
|
-
rdoc.options << "--line-numbers" << "--inline-source" <<
|
32
|
-
"--accessor" << "cattr_accessor=object" << "--charset" << "utf-8"
|
33
|
-
rdoc.rdoc_files.include('README.rdoc')
|
34
|
-
rdoc.rdoc_files.include('ChangeLog')
|
35
|
-
rdoc.rdoc_files.add('lib')
|
36
|
-
rdoc.template = allison if allison.size > 0
|
37
|
-
}
|
38
|
-
|
39
|
-
desc "Create gem and tar.gz"
|
40
|
-
spec = Gem::Specification.new do |s|
|
41
|
-
s.name = 'locale'
|
42
|
-
s.version = PKG_VERSION
|
43
|
-
s.summary = 'Ruby-Locale is the pure ruby library which provides basic APIs for localization.'
|
44
|
-
s.author = 'Masao Mutoh'
|
45
|
-
s.email = 'mutomasa at gmail.com'
|
46
|
-
s.homepage = 'http://locale.rubyforge.org/'
|
47
|
-
s.rubyforge_project = "locale"
|
48
|
-
s.files = FileList['**/*'].to_a.select{|v| v !~ /pkg|CVS/}
|
49
|
-
s.require_path = 'lib'
|
50
|
-
s.bindir = 'bin'
|
51
|
-
s.has_rdoc = true
|
52
|
-
s.description = <<-EOF
|
53
|
-
Ruby-Locale is the pure ruby library which provides basic APIs for localization.
|
54
|
-
EOF
|
55
|
-
end
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
p.
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
rubyforge
|
74
|
-
|
75
|
-
rubyforge.
|
76
|
-
rubyforge.
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
1
|
+
$:.unshift "./lib"
|
2
|
+
|
3
|
+
require 'rake'
|
4
|
+
require 'rake/testtask'
|
5
|
+
require 'rake/rdoctask'
|
6
|
+
require 'rake/packagetask'
|
7
|
+
require 'rake/gempackagetask'
|
8
|
+
|
9
|
+
require 'locale/version'
|
10
|
+
|
11
|
+
#desc "Default Task"
|
12
|
+
#task :default => [ :test ]
|
13
|
+
|
14
|
+
PKG_VERSION = Locale::VERSION
|
15
|
+
|
16
|
+
# Run the unit tests
|
17
|
+
task :test do
|
18
|
+
Dir.glob("test/test_*.rb").each do |v|
|
19
|
+
ruby "-Ilib #{v}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
Rake::RDocTask.new { |rdoc|
|
24
|
+
begin
|
25
|
+
allison = `allison --path`.chop
|
26
|
+
rescue Exception
|
27
|
+
allison = ""
|
28
|
+
end
|
29
|
+
rdoc.rdoc_dir = 'doc'
|
30
|
+
rdoc.title = "Ruby-Locale library"
|
31
|
+
rdoc.options << "--line-numbers" << "--inline-source" <<
|
32
|
+
"--accessor" << "cattr_accessor=object" << "--charset" << "utf-8"
|
33
|
+
rdoc.rdoc_files.include('README.rdoc')
|
34
|
+
rdoc.rdoc_files.include('ChangeLog')
|
35
|
+
rdoc.rdoc_files.add('lib')
|
36
|
+
rdoc.template = allison if allison.size > 0
|
37
|
+
}
|
38
|
+
|
39
|
+
desc "Create gem and tar.gz"
|
40
|
+
spec = Gem::Specification.new do |s|
|
41
|
+
s.name = 'locale'
|
42
|
+
s.version = PKG_VERSION
|
43
|
+
s.summary = 'Ruby-Locale is the pure ruby library which provides basic APIs for localization.'
|
44
|
+
s.author = 'Masao Mutoh'
|
45
|
+
s.email = 'mutomasa at gmail.com'
|
46
|
+
s.homepage = 'http://locale.rubyforge.org/'
|
47
|
+
s.rubyforge_project = "locale"
|
48
|
+
s.files = FileList['**/*'].to_a.select{|v| v !~ /pkg|CVS/}
|
49
|
+
s.require_path = 'lib'
|
50
|
+
s.bindir = 'bin'
|
51
|
+
s.has_rdoc = true
|
52
|
+
s.description = <<-EOF
|
53
|
+
Ruby-Locale is the pure ruby library which provides basic APIs for localization.
|
54
|
+
EOF
|
55
|
+
end
|
56
|
+
|
57
|
+
unless RUBY_PLATFORM =~ /win32/
|
58
|
+
Rake::PackageTask.new("ruby-locale", PKG_VERSION) do |o|
|
59
|
+
o.package_files = FileList['**/*'].to_a.select{|v| v !~ /pkg|CVS/}
|
60
|
+
o.need_tar_gz = true
|
61
|
+
o.need_zip = false
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
Rake::GemPackageTask.new(spec) do |p|
|
66
|
+
p.gem_spec = spec
|
67
|
+
p.need_tar_gz = false
|
68
|
+
p.need_zip = false
|
69
|
+
end
|
70
|
+
|
71
|
+
desc "Publish the release files to RubyForge."
|
72
|
+
task :release => [ :package ] do
|
73
|
+
require 'rubyforge'
|
74
|
+
|
75
|
+
rubyforge = RubyForge.new
|
76
|
+
rubyforge.configure
|
77
|
+
rubyforge.login
|
78
|
+
rubyforge.add_release("locale", "locale",
|
79
|
+
PKG_VERSION,
|
80
|
+
"pkg/locale-#{PKG_VERSION}.gem",
|
81
|
+
"pkg/ruby-locale-#{PKG_VERSION}.tar.gz")
|
82
|
+
end
|
data/lib/locale/driver/jruby.rb
CHANGED
@@ -22,21 +22,15 @@ module Locale
|
|
22
22
|
module JRuby
|
23
23
|
$stderr.puts self.name + " is loaded." if $DEBUG
|
24
24
|
|
25
|
-
if java.lang.System.getProperties['os.name'].downcase =~ /windows/
|
26
|
-
require 'locale/driver/win32_table'
|
27
|
-
|
28
|
-
extend ::Locale::Driver::Win32Table
|
29
|
-
end
|
30
|
-
|
31
25
|
module_function
|
32
26
|
def locales #:nodoc:
|
33
27
|
locales = ::Locale::Driver::Env.locales
|
34
28
|
unless locales
|
35
29
|
locale = java.util.Locale.getDefault
|
36
|
-
variant =
|
30
|
+
variant = locale.getVariant
|
37
31
|
variants = []
|
38
|
-
if
|
39
|
-
|
32
|
+
if variant != nil and variant.size > 0
|
33
|
+
variants = [variant]
|
40
34
|
end
|
41
35
|
locales = TagList.new([Locale::Tag::Common.new(locale.getLanguage, nil,
|
42
36
|
locale.getCountry,
|
@@ -45,7 +39,7 @@ module Locale
|
|
45
39
|
locales
|
46
40
|
end
|
47
41
|
|
48
|
-
def charset
|
42
|
+
def charset #:nodoc:
|
49
43
|
charset = ::Locale::Driver::Env.charset
|
50
44
|
unless charset
|
51
45
|
charset = java.nio.charset.Charset.defaultCharset.name
|
data/lib/locale/driver/win32.rb
CHANGED
@@ -26,7 +26,8 @@ module Locale
|
|
26
26
|
|
27
27
|
$stderr.puts self.name + " is loaded." if $DEBUG
|
28
28
|
|
29
|
-
@@win32 =
|
29
|
+
@@win32 = nil
|
30
|
+
@@current_locale_id = nil
|
30
31
|
|
31
32
|
module_function
|
32
33
|
|
@@ -34,18 +35,36 @@ module Locale
|
|
34
35
|
def charset
|
35
36
|
charset = ::Locale::Driver::Env.charset
|
36
37
|
unless charset
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
if locales
|
39
|
+
tag = locales[0].to_rfc.to_s
|
40
|
+
loc = LocaleTable.find{|v| v[1] == tag}
|
41
|
+
loc = LocaleTable.find{|v| v[1] =~ /^#{locales[0].language}/} unless loc
|
42
|
+
charset = loc ? loc[2] : nil
|
43
|
+
else
|
44
|
+
charset = "CP1252"
|
45
|
+
end
|
41
46
|
end
|
42
47
|
charset
|
43
48
|
end
|
44
49
|
|
50
|
+
def thread_locale_id #:nodoc:
|
51
|
+
if @@current_locale_id
|
52
|
+
@@current_locale_id
|
53
|
+
else
|
54
|
+
@@win32 ||= Win32API.new("kernel32.dll", "GetThreadLocale", nil, "i")
|
55
|
+
@@win32.call
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def set_thread_locale_id(lcid) #:nodoc:
|
60
|
+
# for testing.
|
61
|
+
@@current_locale_id = lcid
|
62
|
+
end
|
63
|
+
|
45
64
|
def locales #:nodoc:
|
46
65
|
locales = ::Locale::Driver::Env.locales
|
47
66
|
unless locales
|
48
|
-
lang = LocaleTable.assoc(
|
67
|
+
lang = LocaleTable.assoc(thread_locale_id)
|
49
68
|
if lang
|
50
69
|
ret = Locale::Tag::Common.parse(lang[1])
|
51
70
|
locales = Locale::TagList.new([ret])
|
data/lib/locale/tag/irregular.rb
CHANGED
data/lib/locale/version.rb
CHANGED
@@ -0,0 +1,43 @@
|
|
1
|
+
|
2
|
+
begin
|
3
|
+
require 'locale/driver/jruby'
|
4
|
+
require 'test/unit'
|
5
|
+
class TestDiverJRuby < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def setup
|
8
|
+
ENV["LC_ALL"] = nil
|
9
|
+
ENV["LC_MESSAGES"] = nil
|
10
|
+
ENV["LANG"] = nil
|
11
|
+
ENV["LANGUAGE"] = nil
|
12
|
+
end
|
13
|
+
|
14
|
+
def set_locale(tag)
|
15
|
+
java.util.Locale.setDefault(java.util.Locale.new(tag.language, tag.region, tag.variants.to_s))
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_charset
|
19
|
+
# Depends on system value when jvm is started.
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_locales
|
23
|
+
tag = Locale::Tag::Common.parse("ja-JP")
|
24
|
+
set_locale(tag)
|
25
|
+
assert_equal [tag], Locale::Driver::JRuby.locales
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_locales_with_env
|
29
|
+
ENV["LC_ALL"] = "ja_JP.EUC-JP"
|
30
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP.EUC-JP"), Locale::Driver::JRuby.locales[0]
|
31
|
+
assert_equal "EUC-JP", Locale::Driver::JRuby.charset
|
32
|
+
|
33
|
+
ENV["LC_ALL"] = "ja_JP"
|
34
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP"), Locale::Driver::JRuby.locales[0]
|
35
|
+
|
36
|
+
ENV["LC_ALL"] = "C"
|
37
|
+
assert_equal Locale::Tag::Posix.parse("C"), Locale::Driver::JRuby.locales[0]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
rescue LoadError
|
42
|
+
puts "jruby test was skipped."
|
43
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
begin
|
2
|
+
require 'locale/driver/win32'
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
class TestDiverWin32 < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def setup
|
8
|
+
ENV["LC_ALL"] = nil
|
9
|
+
ENV["LC_MESSAGES"] = nil
|
10
|
+
ENV["LANG"] = nil
|
11
|
+
ENV["LANGUAGE"] = nil
|
12
|
+
Locale::Driver::Win32.set_thread_locale_id(nil)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_charset
|
16
|
+
Locale::Driver::Win32.set_thread_locale_id(0x0404)
|
17
|
+
assert_equal "CP950", Locale::Driver::Win32.charset
|
18
|
+
|
19
|
+
Locale::Driver::Win32.set_thread_locale_id(0x0411)
|
20
|
+
assert_equal "CP932", Locale::Driver::Win32.charset
|
21
|
+
|
22
|
+
Locale::Driver::Win32.set_thread_locale_id(0x201A)
|
23
|
+
assert_equal "CP1251", Locale::Driver::Win32.charset
|
24
|
+
|
25
|
+
Locale::Driver::Win32.set_thread_locale_id(0x0465)
|
26
|
+
assert_equal "UNICODE", Locale::Driver::Win32.charset
|
27
|
+
|
28
|
+
Locale::Driver::Win32.set_thread_locale_id(0x2222) # invalid
|
29
|
+
assert_equal "CP1252", Locale::Driver::Win32.charset
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_locales
|
33
|
+
Locale::Driver::Win32.set_thread_locale_id(0x0404)
|
34
|
+
assert_equal Locale::Tag::Common.parse("zh-TW"), Locale::Driver::Win32.locales[0]
|
35
|
+
|
36
|
+
Locale::Driver::Win32.set_thread_locale_id(0x0411)
|
37
|
+
assert_equal Locale::Tag::Common.parse("ja-JP"), Locale::Driver::Win32.locales[0]
|
38
|
+
|
39
|
+
Locale::Driver::Win32.set_thread_locale_id(0x201A)
|
40
|
+
assert_equal Locale::Tag::Common.parse("bs-Cyrl-BA"), Locale::Driver::Win32.locales[0]
|
41
|
+
|
42
|
+
Locale::Driver::Win32.set_thread_locale_id(0x0465)
|
43
|
+
assert_equal Locale::Tag::Common.parse("div-MV"), Locale::Driver::Win32.locales[0]
|
44
|
+
|
45
|
+
Locale::Driver::Win32.set_thread_locale_id(0x2222) # invalid
|
46
|
+
assert_equal nil, Locale::Driver::Win32.locales
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_locales_with_env
|
50
|
+
ENV["LC_ALL"] = "ja_JP.UTF-8"
|
51
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP.UTF-8"), Locale::Driver::Win32.locales[0]
|
52
|
+
assert_equal "UTF-8", Locale::Driver::Win32.charset
|
53
|
+
|
54
|
+
ENV["LC_ALL"] = "ja_JP"
|
55
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP"), Locale::Driver::Win32.locales[0]
|
56
|
+
assert_equal "CP932", Locale::Driver::Win32.charset
|
57
|
+
|
58
|
+
ENV["LC_ALL"] = "C"
|
59
|
+
assert_equal Locale::Tag::Posix.parse("C"), Locale::Driver::Win32.locales[0]
|
60
|
+
assert_equal "CP1252", Locale::Driver::Win32.charset
|
61
|
+
end
|
62
|
+
end
|
63
|
+
rescue LoadError
|
64
|
+
puts "win32 test was skipped."
|
65
|
+
end
|
data/test/test_tag.rb
CHANGED
@@ -3,7 +3,7 @@ require 'test/unit'
|
|
3
3
|
|
4
4
|
class TagTest < Test::Unit::TestCase
|
5
5
|
|
6
|
-
def
|
6
|
+
def test_simple_lang
|
7
7
|
#ja-JP, ja-392
|
8
8
|
lang = Locale::Tag.parse("ja")
|
9
9
|
assert_equal Locale::Tag::Simple, lang.class
|
@@ -23,14 +23,16 @@ class TagTest < Test::Unit::TestCase
|
|
23
23
|
assert_equal "kok", lang.language
|
24
24
|
assert_equal nil, lang.region
|
25
25
|
assert_equal [Locale::Tag::Simple.parse("kok"),
|
26
|
-
|
27
|
-
|
26
|
+
Locale::Tag::Simple.parse("kok")], lang.candidates
|
27
|
+
|
28
28
|
assert_equal Locale::Tag::Simple.parse("kok"), lang.to_simple
|
29
29
|
assert_equal Locale::Tag::Common.parse("kok"), lang.to_common
|
30
30
|
assert_equal Locale::Tag::Rfc.parse("kok"), lang.to_rfc
|
31
31
|
assert_equal Locale::Tag::Cldr.parse("kok"), lang.to_cldr
|
32
32
|
assert_equal Locale::Tag::Posix.parse("kok"), lang.to_posix
|
33
|
+
end
|
33
34
|
|
35
|
+
def test_simple_lang_region
|
34
36
|
lang = Locale::Tag.parse("ja-JP")
|
35
37
|
assert_equal Locale::Tag::Simple, lang.class
|
36
38
|
assert_equal "ja", lang.language
|
@@ -56,7 +58,9 @@ class TagTest < Test::Unit::TestCase
|
|
56
58
|
assert_equal Locale::Tag::Rfc.parse("ja-JP"), lang.to_rfc
|
57
59
|
assert_equal Locale::Tag::Cldr.parse("ja-JP"), lang.to_cldr
|
58
60
|
assert_equal Locale::Tag::Posix.parse("ja_JP"), lang.to_posix
|
61
|
+
end
|
59
62
|
|
63
|
+
def test_simple_unm49
|
60
64
|
# UN_M.49(Country code)
|
61
65
|
lang = Locale::Tag.parse("ja-392")
|
62
66
|
assert_equal Locale::Tag::Simple, lang.class
|
@@ -70,7 +74,7 @@ class TagTest < Test::Unit::TestCase
|
|
70
74
|
assert_equal Locale::Tag::Rfc.parse("ja-392"), lang.to_rfc
|
71
75
|
assert_equal Locale::Tag::Cldr.parse("ja-392"), lang.to_cldr
|
72
76
|
assert_equal Locale::Tag::Posix.parse("ja_392"), lang.to_posix
|
73
|
-
|
77
|
+
|
74
78
|
lang = Locale::Tag.parse("jpn-392")
|
75
79
|
assert_equal Locale::Tag::Simple, lang.class
|
76
80
|
assert_equal "jpn", lang.language
|
@@ -119,9 +123,8 @@ class TagTest < Test::Unit::TestCase
|
|
119
123
|
|
120
124
|
end
|
121
125
|
|
122
|
-
|
123
|
-
|
124
|
-
|
126
|
+
#lang, region, script, variants
|
127
|
+
def test_common_lang_script
|
125
128
|
lang = Locale::Tag.parse("az_Arab")
|
126
129
|
assert_equal Locale::Tag::Common, lang.class
|
127
130
|
assert_equal "az", lang.language
|
@@ -143,26 +146,6 @@ class TagTest < Test::Unit::TestCase
|
|
143
146
|
assert_equal Locale::Tag::Cldr.parse("az_Arab"), lang.to_cldr
|
144
147
|
assert_equal Locale::Tag::Posix.parse("az"), lang.to_posix
|
145
148
|
|
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
149
|
|
167
150
|
lang = Locale::Tag.parse("uz-Cyrl")
|
168
151
|
assert_equal Locale::Tag::Common, lang.class
|
@@ -184,7 +167,9 @@ class TagTest < Test::Unit::TestCase
|
|
184
167
|
assert_equal Locale::Tag::Rfc.parse("uz-Cyrl"), lang.to_rfc
|
185
168
|
assert_equal Locale::Tag::Cldr.parse("uz_Cyrl"), lang.to_cldr
|
186
169
|
assert_equal Locale::Tag::Posix.parse("uz"), lang.to_posix
|
170
|
+
end
|
187
171
|
|
172
|
+
def test_common_lang_script_region
|
188
173
|
lang = Locale::Tag.parse("ja-Kana-JP")
|
189
174
|
assert_equal Locale::Tag::Common, lang.class
|
190
175
|
assert_equal "ja", lang.language
|
@@ -205,7 +190,7 @@ class TagTest < Test::Unit::TestCase
|
|
205
190
|
assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP"), lang.to_cldr
|
206
191
|
assert_equal Locale::Tag::Posix.parse("ja_JP"), lang.to_posix
|
207
192
|
|
208
|
-
|
193
|
+
# 3 char language
|
209
194
|
lang = Locale::Tag.parse("jpn-Hira-JP")
|
210
195
|
assert_equal Locale::Tag::Common, lang.class
|
211
196
|
assert_equal "jpn", lang.language
|
@@ -225,7 +210,9 @@ class TagTest < Test::Unit::TestCase
|
|
225
210
|
assert_equal Locale::Tag::Rfc.parse("jpn-Hira-JP"), lang.to_rfc
|
226
211
|
assert_equal Locale::Tag::Cldr.parse("jpn_Hira_JP"), lang.to_cldr
|
227
212
|
assert_equal Locale::Tag::Posix.parse("jpn_JP"), lang.to_posix
|
213
|
+
end
|
228
214
|
|
215
|
+
def test_common_lang_script_unm49
|
229
216
|
lang = Locale::Tag.parse("jpn-Hira-392")
|
230
217
|
assert_equal Locale::Tag::Common, lang.class
|
231
218
|
assert_equal "jpn", lang.language
|
@@ -246,8 +233,33 @@ class TagTest < Test::Unit::TestCase
|
|
246
233
|
assert_equal Locale::Tag::Rfc.parse("jpn-Hira-392"), lang.to_rfc
|
247
234
|
assert_equal Locale::Tag::Cldr.parse("jpn_Hira_392"), lang.to_cldr
|
248
235
|
assert_equal Locale::Tag::Posix.parse("jpn_392"), lang.to_posix
|
236
|
+
end
|
237
|
+
|
238
|
+
def test_common_lang_script_region_variants
|
239
|
+
lang = Locale::Tag.parse("en_Latn_US_NYNORSK")
|
240
|
+
assert_equal Locale::Tag::Common, lang.class
|
241
|
+
assert_equal "en", lang.language
|
242
|
+
assert_equal "US", lang.region
|
243
|
+
assert_equal ["NYNORSK"], lang.variants
|
244
|
+
assert_equal [Locale::Tag::Common.parse("en_Latn_US_NYNORSK"),
|
245
|
+
Locale::Tag::Common.parse("en_Latn_US"),
|
246
|
+
Locale::Tag::Common.parse("en_US_NYNORSK"),
|
247
|
+
Locale::Tag::Common.parse("en_US"),
|
248
|
+
Locale::Tag::Common.parse("en_Latn_NYNORSK"),
|
249
|
+
Locale::Tag::Common.parse("en_Latn"),
|
250
|
+
Locale::Tag::Common.parse("en_NYNORSK"),
|
251
|
+
Locale::Tag::Common.parse("en")], lang.candidates
|
249
252
|
|
250
|
-
|
253
|
+
|
254
|
+
assert_equal Locale::Tag::Simple.parse("en-US"), lang.to_simple
|
255
|
+
assert_equal Locale::Tag::Common.parse("en_Latn_US_NYNORSK"), lang.to_common
|
256
|
+
assert_equal Locale::Tag::Rfc.parse("en-Latn-US-NYNORSK"), lang.to_rfc
|
257
|
+
assert_equal Locale::Tag::Cldr.parse("en_Latn_US_NYNORSK"), lang.to_cldr
|
258
|
+
assert_equal Locale::Tag::Posix.parse("en_US@NYNORSK"), lang.to_posix
|
259
|
+
end
|
260
|
+
|
261
|
+
|
262
|
+
def test_common_lang_variants
|
251
263
|
lang = Locale::Tag.parse("ja-osaka")
|
252
264
|
assert_equal Locale::Tag::Common, lang.class
|
253
265
|
assert_equal "ja", lang.language
|
@@ -270,8 +282,9 @@ class TagTest < Test::Unit::TestCase
|
|
270
282
|
assert_equal Locale::Tag::Rfc.parse("ja-osaka"), lang.to_rfc
|
271
283
|
assert_equal Locale::Tag::Cldr.parse("ja_OSAKA"), lang.to_cldr
|
272
284
|
assert_equal Locale::Tag::Posix.parse("ja@osaka"), lang.to_posix
|
285
|
+
end
|
273
286
|
|
274
|
-
|
287
|
+
def test_common_lang_region_variants
|
275
288
|
lang = Locale::Tag.parse("ja-JP-osaka")
|
276
289
|
assert_equal Locale::Tag::Common, lang.class
|
277
290
|
assert_equal "ja", lang.language
|
@@ -294,8 +307,9 @@ class TagTest < Test::Unit::TestCase
|
|
294
307
|
assert_equal Locale::Tag::Rfc.parse("ja-JP-osaka"), lang.to_rfc
|
295
308
|
assert_equal Locale::Tag::Cldr.parse("ja_JP_OSAKA"), lang.to_cldr
|
296
309
|
assert_equal Locale::Tag::Posix.parse("ja_JP@osaka"), lang.to_posix
|
310
|
+
end
|
297
311
|
|
298
|
-
|
312
|
+
def test_common_lang_script_region_5length_variants
|
299
313
|
lang = Locale::Tag.parse("ja-Kana-JP-osaka")
|
300
314
|
assert_equal Locale::Tag::Common, lang.class
|
301
315
|
assert_equal "ja", lang.language
|
@@ -318,7 +332,9 @@ class TagTest < Test::Unit::TestCase
|
|
318
332
|
assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-osaka"), lang.to_rfc
|
319
333
|
assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_OSAKA"), lang.to_cldr
|
320
334
|
assert_equal Locale::Tag::Posix.parse("ja_JP@osaka"), lang.to_posix
|
335
|
+
end
|
321
336
|
|
337
|
+
def test_common_lang_script_region_mid_length_variants
|
322
338
|
#middle length
|
323
339
|
lang = Locale::Tag.parse("ja-Kana-JP-aomori")
|
324
340
|
assert_equal Locale::Tag::Common, lang.class
|
@@ -343,6 +359,9 @@ class TagTest < Test::Unit::TestCase
|
|
343
359
|
assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_AOMORI"), lang.to_cldr
|
344
360
|
assert_equal Locale::Tag::Posix.parse("ja_JP@aomori"), lang.to_posix
|
345
361
|
|
362
|
+
end
|
363
|
+
|
364
|
+
def test_common_lang_script_region_8length_variants
|
346
365
|
#8 length
|
347
366
|
lang = Locale::Tag.parse("ja-Kana-JP-hokuriku")
|
348
367
|
assert_equal Locale::Tag::Common, lang.class
|
@@ -366,7 +385,9 @@ class TagTest < Test::Unit::TestCase
|
|
366
385
|
assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-hokuriku"), lang.to_rfc
|
367
386
|
assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_HOKURIKU"), lang.to_cldr
|
368
387
|
assert_equal Locale::Tag::Posix.parse("ja_JP@hokuriku"), lang.to_posix
|
388
|
+
end
|
369
389
|
|
390
|
+
def test_common_lang_script_region_special_variants
|
370
391
|
#1 digit and 3 alpha
|
371
392
|
lang = Locale::Tag.parse("ja-Kana-JP-0abc")
|
372
393
|
assert_equal Locale::Tag::Common, lang.class
|
@@ -390,7 +411,9 @@ class TagTest < Test::Unit::TestCase
|
|
390
411
|
assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-0abc"), lang.to_rfc
|
391
412
|
assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_0ABC"), lang.to_cldr
|
392
413
|
assert_equal Locale::Tag::Posix.parse("ja_JP@0abc"), lang.to_posix
|
414
|
+
end
|
393
415
|
|
416
|
+
def test_common_lang_region_4digits_variants
|
394
417
|
#4 digits
|
395
418
|
lang = Locale::Tag.parse("de-CH-1996")
|
396
419
|
assert_equal Locale::Tag::Common, lang.class
|
@@ -413,7 +436,9 @@ class TagTest < Test::Unit::TestCase
|
|
413
436
|
assert_equal Locale::Tag::Rfc.parse("de-CH-1996"), lang.to_rfc
|
414
437
|
assert_equal Locale::Tag::Cldr.parse("de_CH_1996"), lang.to_cldr
|
415
438
|
assert_equal Locale::Tag::Posix.parse("de_CH@1996"), lang.to_posix
|
439
|
+
end
|
416
440
|
|
441
|
+
def test_common_lang_region_plural_variants
|
417
442
|
#Plural
|
418
443
|
lang = Locale::Tag.parse("ja-Kana-JP-hokuriku-aomori")
|
419
444
|
assert_equal Locale::Tag::Common, lang.class
|
@@ -437,7 +462,9 @@ class TagTest < Test::Unit::TestCase
|
|
437
462
|
assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-hokuriku-aomori"), lang.to_rfc
|
438
463
|
assert_equal Locale::Tag::Cldr.parse("ja-Kana-JP_HOKURIKU_AOMORI"), lang.to_cldr
|
439
464
|
assert_equal Locale::Tag::Posix.parse("ja_JP@hokuriku-aomori"), lang.to_posix
|
465
|
+
end
|
440
466
|
|
467
|
+
def test_common_cases
|
441
468
|
#cases
|
442
469
|
lang = Locale::Tag.parse("mn-Cyrl-MN")
|
443
470
|
assert_equal Locale::Tag::Common, lang.class
|
@@ -507,12 +534,15 @@ class TagTest < Test::Unit::TestCase
|
|
507
534
|
assert_equal Locale::Tag::Rfc.parse("zh-Latn-CN-variant1"), lang.to_rfc
|
508
535
|
assert_equal Locale::Tag::Cldr.parse("zh-Latn-CN_VARIANT1"), lang.to_cldr
|
509
536
|
assert_equal Locale::Tag::Posix.parse("zh_CN@variant1"), lang.to_posix
|
537
|
+
end
|
510
538
|
|
539
|
+
def test_common_lang_region_variants_rfc3066
|
511
540
|
# RFC3066 compatible
|
512
541
|
lang = Locale::Tag.parse("ja-jp-mac")
|
513
542
|
assert_equal Locale::Tag::Common, lang.class
|
514
543
|
assert_equal "ja", lang.language
|
515
544
|
assert_equal "JP", lang.region
|
545
|
+
assert_equal ["mac"], lang.variants
|
516
546
|
assert_equal nil, lang.script
|
517
547
|
assert_equal [Locale::Tag::Common.parse("ja_JP_mac"),
|
518
548
|
Locale::Tag::Common.parse("ja_JP"),
|
@@ -549,8 +579,34 @@ class TagTest < Test::Unit::TestCase
|
|
549
579
|
|
550
580
|
end
|
551
581
|
|
552
|
-
def
|
553
|
-
|
582
|
+
def test_rfc_lang_script_region_variant_extension
|
583
|
+
lang = Locale::Tag.parse("zh-Latn-CN-variant1-a-extend1")
|
584
|
+
assert_equal Locale::Tag::Rfc, lang.class
|
585
|
+
assert_equal "zh", lang.language
|
586
|
+
assert_equal "CN", lang.region
|
587
|
+
assert_equal "Latn", lang.script
|
588
|
+
assert_equal ["variant1"], lang.variants
|
589
|
+
assert_equal ["a-extend1"], lang.extensions
|
590
|
+
assert_equal nil, lang.privateuse
|
591
|
+
|
592
|
+
assert_equal [Locale::Tag::Rfc.parse("zh-Latn-CN-variant1"),
|
593
|
+
Locale::Tag::Rfc.parse("zh-Latn-CN"),
|
594
|
+
Locale::Tag::Rfc.parse("zh-CN-variant1"),
|
595
|
+
Locale::Tag::Rfc.parse("zh-CN"),
|
596
|
+
Locale::Tag::Rfc.parse("zh-Latn-variant1"),
|
597
|
+
Locale::Tag::Rfc.parse("zh-Latn"),
|
598
|
+
Locale::Tag::Rfc.parse("zh-variant1"),
|
599
|
+
Locale::Tag::Rfc.parse("zh"),
|
600
|
+
], lang.candidates
|
601
|
+
|
602
|
+
assert_equal Locale::Tag::Simple.parse("zh_CN"), lang.to_simple
|
603
|
+
assert_equal Locale::Tag::Common.parse("zh-Latn-CN_variant1"), lang.to_common
|
604
|
+
assert_equal Locale::Tag::Rfc.parse("zh-Latn-CN-variant1-a-extend1"), lang.to_rfc
|
605
|
+
assert_equal Locale::Tag::Cldr.parse("zh_Latn_CN_VARIANT1"), lang.to_cldr
|
606
|
+
assert_equal Locale::Tag::Posix.parse("zh_CN@variant1"), lang.to_posix
|
607
|
+
end
|
608
|
+
|
609
|
+
def test_rfc_lang_script_region_extensions
|
554
610
|
lang = Locale::Tag.parse("ja-Kana-JP-0abc-y-aa-z-bbccdd-b-nnnnnnnn")
|
555
611
|
assert_equal Locale::Tag::Rfc, lang.class
|
556
612
|
assert_equal "ja", lang.language
|
@@ -574,7 +630,9 @@ class TagTest < Test::Unit::TestCase
|
|
574
630
|
assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-0abc-y-aa-z-bbccdd-b-nnnnnnnn"), lang.to_rfc
|
575
631
|
assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_0abc"), lang.to_cldr
|
576
632
|
assert_equal Locale::Tag::Posix.parse("ja_JP@0abc"), lang.to_posix
|
633
|
+
end
|
577
634
|
|
635
|
+
def test_rfc_lang_region_variants_extensions
|
578
636
|
lang = Locale::Tag.parse("ja-JP-0abc-y-aa-z-bbccdd-b-xxxnnnnn")
|
579
637
|
assert_equal Locale::Tag::Rfc, lang.class
|
580
638
|
assert_equal "ja", lang.language
|
@@ -599,6 +657,9 @@ class TagTest < Test::Unit::TestCase
|
|
599
657
|
assert_equal Locale::Tag::Cldr.parse("ja_JP_0abc"), lang.to_cldr
|
600
658
|
assert_equal Locale::Tag::Posix.parse("ja_JP@0abc"), lang.to_posix
|
601
659
|
|
660
|
+
end
|
661
|
+
|
662
|
+
def test_rfc_lang_extensions
|
602
663
|
lang = Locale::Tag.parse("ja-y-aa-z-bbccdd-b-xxnnnnn")
|
603
664
|
assert_equal Locale::Tag::Rfc, lang.class
|
604
665
|
assert_equal "ja", lang.language
|
@@ -622,33 +683,10 @@ class TagTest < Test::Unit::TestCase
|
|
622
683
|
assert_equal Locale::Tag::Rfc.parse("ja-y-aa-z-bbccdd-b-xxnnnnn"), lang.to_rfc
|
623
684
|
assert_equal Locale::Tag::Cldr.parse("ja"), lang.to_cldr
|
624
685
|
assert_equal Locale::Tag::Posix.parse("ja"), lang.to_posix
|
686
|
+
end
|
625
687
|
|
626
|
-
|
627
|
-
|
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
|
688
|
+
def test_rfc_privateuse
|
689
|
+
#Privateuse
|
652
690
|
lang = Locale::Tag.parse("zh-Latn-CN-variant1-a-extend1-x-wadegile-private1")
|
653
691
|
assert_equal Locale::Tag::Rfc, lang.class
|
654
692
|
assert_equal "zh", lang.language
|
@@ -673,7 +711,9 @@ class TagTest < Test::Unit::TestCase
|
|
673
711
|
assert_equal Locale::Tag::Rfc.parse("zh-Latn-CN-variant1-a-extend1-x-wadegile-private1"), lang.to_rfc
|
674
712
|
assert_equal Locale::Tag::Cldr.parse("zh_Latn_CN_VARIANT1"), lang.to_cldr
|
675
713
|
assert_equal Locale::Tag::Posix.parse("zh_CN@variant1"), lang.to_posix
|
714
|
+
end
|
676
715
|
|
716
|
+
def test_rfc_cldr_conversion
|
677
717
|
#Privateuse with x-ldml (CLDR conversion)
|
678
718
|
lang = Locale::Tag.parse("en-US-x-ldml-POSIX-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar")
|
679
719
|
assert_equal Locale::Tag::Rfc, lang.class
|
@@ -739,7 +779,7 @@ class TagTest < Test::Unit::TestCase
|
|
739
779
|
lang.privateuse = "x-foooo"
|
740
780
|
assert_equal "ja-Hira-JP-variant2-b-extend2-x-foooo", lang.to_s
|
741
781
|
|
742
|
-
|
782
|
+
assert_equal [Locale::Tag::Rfc.parse("ja-Hira-JP-variant2"),
|
743
783
|
Locale::Tag::Rfc.parse("ja-Hira-JP"),
|
744
784
|
Locale::Tag::Rfc.parse("ja-JP-variant2"),
|
745
785
|
Locale::Tag::Rfc.parse("ja-JP"),
|
@@ -750,7 +790,7 @@ class TagTest < Test::Unit::TestCase
|
|
750
790
|
], lang.candidates
|
751
791
|
end
|
752
792
|
|
753
|
-
def
|
793
|
+
def test_cldr_lang_extensions
|
754
794
|
lang = Locale::Tag.parse("de@collation=phonebook")
|
755
795
|
assert_equal Locale::Tag::Cldr, lang.class
|
756
796
|
assert_equal "de", lang.language
|
@@ -772,7 +812,9 @@ class TagTest < Test::Unit::TestCase
|
|
772
812
|
assert_equal Locale::Tag::Rfc.parse("de-k-collatio-phoneboo"), lang.to_rfc
|
773
813
|
assert_equal Locale::Tag::Cldr.parse("de@collation=phonebook"), lang.to_cldr
|
774
814
|
assert_equal Locale::Tag::Posix.parse("de"), lang.to_posix
|
815
|
+
end
|
775
816
|
|
817
|
+
def test_cldr_lang_script_extension
|
776
818
|
lang = Locale::Tag.parse("az_Arab@collation=phonebook")
|
777
819
|
assert_equal Locale::Tag::Cldr, lang.class
|
778
820
|
assert_equal "az", lang.language
|
@@ -796,6 +838,9 @@ class TagTest < Test::Unit::TestCase
|
|
796
838
|
assert_equal Locale::Tag::Cldr.parse("az_Arab@collation=phonebook"), lang.to_cldr
|
797
839
|
assert_equal Locale::Tag::Posix.parse("az"), lang.to_posix
|
798
840
|
|
841
|
+
end
|
842
|
+
|
843
|
+
def test_cldr_lang_region_extensions
|
799
844
|
lang = Locale::Tag.parse("de_DE@collation=phonebook;currency=DDM")
|
800
845
|
assert_equal Locale::Tag::Cldr, lang.class
|
801
846
|
assert_equal "de", lang.language
|
@@ -819,56 +864,58 @@ class TagTest < Test::Unit::TestCase
|
|
819
864
|
assert_equal Locale::Tag::Cldr.parse("de_DE@collation=phonebook;currency=DDM"), lang.to_cldr
|
820
865
|
assert_equal Locale::Tag::Posix.parse("de_DE"), lang.to_posix
|
821
866
|
|
822
|
-
lang = Locale::Tag.parse("
|
867
|
+
lang = Locale::Tag.parse("en_US@calendar=islamic;collation=traditional;colStrength=secondary")
|
823
868
|
assert_equal Locale::Tag::Cldr, lang.class
|
824
869
|
assert_equal "en", lang.language
|
825
870
|
assert_equal "US", lang.region
|
826
|
-
assert_equal [
|
871
|
+
assert_equal [], lang.variants
|
827
872
|
assert_equal "islamic", lang.extensions["calendar"]
|
828
873
|
assert_equal "traditional", lang.extensions["collation"]
|
829
874
|
assert_equal "secondary", lang.extensions["colStrength"]
|
830
875
|
|
831
|
-
assert_equal [Locale::Tag::Cldr.parse("
|
876
|
+
assert_equal [Locale::Tag::Cldr.parse("en_US"),
|
877
|
+
Locale::Tag::Cldr.parse("en_US"),
|
832
878
|
Locale::Tag::Cldr.parse("en_US"),
|
833
|
-
Locale::Tag::Cldr.parse("en_US_POSIX"),
|
834
879
|
Locale::Tag::Cldr.parse("en_US"),
|
835
|
-
Locale::Tag::Cldr.parse("en_POSIX"),
|
836
880
|
Locale::Tag::Cldr.parse("en"),
|
837
|
-
Locale::Tag::Cldr.parse("
|
881
|
+
Locale::Tag::Cldr.parse("en"),
|
882
|
+
Locale::Tag::Cldr.parse("en"),
|
838
883
|
Locale::Tag::Cldr.parse("en"),
|
839
884
|
], lang.candidates
|
840
885
|
|
841
886
|
assert_equal Locale::Tag::Simple.parse("en_US"), lang.to_simple
|
842
|
-
assert_equal Locale::Tag::Common.parse("
|
843
|
-
assert_equal Locale::Tag::Rfc.parse("en-US-
|
844
|
-
assert_equal Locale::Tag::Cldr.parse("
|
845
|
-
assert_equal Locale::Tag::Posix.parse("en_US
|
887
|
+
assert_equal Locale::Tag::Common.parse("en_US"), lang.to_common
|
888
|
+
assert_equal Locale::Tag::Rfc.parse("en-US-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar"), lang.to_rfc
|
889
|
+
assert_equal Locale::Tag::Cldr.parse("en_US@calendar=islamic;collation=traditional;colStrength=secondary"), lang.to_cldr
|
890
|
+
assert_equal Locale::Tag::Posix.parse("en_US"), lang.to_posix
|
846
891
|
|
847
|
-
|
892
|
+
end
|
893
|
+
|
894
|
+
def test_cldr_lang_region_variants_extensions
|
895
|
+
lang = Locale::Tag.parse("en_US_POSIX@calendar=islamic;collation=traditional;colStrength=secondary")
|
848
896
|
assert_equal Locale::Tag::Cldr, lang.class
|
849
897
|
assert_equal "en", lang.language
|
850
898
|
assert_equal "US", lang.region
|
851
|
-
assert_equal [], lang.variants
|
899
|
+
assert_equal ["POSIX"], lang.variants
|
852
900
|
assert_equal "islamic", lang.extensions["calendar"]
|
853
901
|
assert_equal "traditional", lang.extensions["collation"]
|
854
902
|
assert_equal "secondary", lang.extensions["colStrength"]
|
855
903
|
|
856
|
-
assert_equal [Locale::Tag::Cldr.parse("
|
857
|
-
Locale::Tag::Cldr.parse("en_US"),
|
904
|
+
assert_equal [Locale::Tag::Cldr.parse("en_US_POSIX"),
|
858
905
|
Locale::Tag::Cldr.parse("en_US"),
|
906
|
+
Locale::Tag::Cldr.parse("en_US_POSIX"),
|
859
907
|
Locale::Tag::Cldr.parse("en_US"),
|
908
|
+
Locale::Tag::Cldr.parse("en_POSIX"),
|
860
909
|
Locale::Tag::Cldr.parse("en"),
|
861
|
-
Locale::Tag::Cldr.parse("
|
862
|
-
Locale::Tag::Cldr.parse("en"),
|
910
|
+
Locale::Tag::Cldr.parse("en_POSIX"),
|
863
911
|
Locale::Tag::Cldr.parse("en"),
|
864
912
|
], lang.candidates
|
865
913
|
|
866
914
|
assert_equal Locale::Tag::Simple.parse("en_US"), lang.to_simple
|
867
|
-
assert_equal Locale::Tag::Common.parse("
|
868
|
-
assert_equal Locale::Tag::Rfc.parse("en-US-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar"), lang.to_rfc
|
869
|
-
assert_equal Locale::Tag::Cldr.parse("
|
870
|
-
assert_equal Locale::Tag::Posix.parse("en_US"), lang.to_posix
|
871
|
-
|
915
|
+
assert_equal Locale::Tag::Common.parse("en_US_POSIX"), lang.to_common
|
916
|
+
assert_equal Locale::Tag::Rfc.parse("en-US-POSIX-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar"), lang.to_rfc
|
917
|
+
assert_equal Locale::Tag::Cldr.parse("en_US_POSIX@calendar=islamic;collation=traditional;colStrength=secondary"), lang.to_cldr
|
918
|
+
assert_equal Locale::Tag::Posix.parse("en_US@POSIX"), lang.to_posix
|
872
919
|
end
|
873
920
|
|
874
921
|
def test_cldr_writer
|
@@ -895,7 +942,7 @@ class TagTest < Test::Unit::TestCase
|
|
895
942
|
], lang.candidates
|
896
943
|
end
|
897
944
|
|
898
|
-
def
|
945
|
+
def test_posix_c_and_posix
|
899
946
|
lang = Locale::Tag.parse("C")
|
900
947
|
assert_equal Locale::Tag::Posix, lang.class
|
901
948
|
assert_equal "en", lang.language
|
@@ -939,7 +986,9 @@ class TagTest < Test::Unit::TestCase
|
|
939
986
|
assert_equal Locale::Tag::Rfc.parse("en-US"), lang.to_rfc
|
940
987
|
assert_equal Locale::Tag::Cldr.parse("en_US"), lang.to_cldr
|
941
988
|
assert_equal Locale::Tag::Posix.parse("en_US"), lang.to_posix
|
989
|
+
end
|
942
990
|
|
991
|
+
def test_posix_irregular_format
|
943
992
|
lang = Locale::Tag.parse("japanese.euc")
|
944
993
|
assert_equal Locale::Tag::Posix, lang.class
|
945
994
|
assert_equal "japanese", lang.language
|
@@ -956,6 +1005,24 @@ class TagTest < Test::Unit::TestCase
|
|
956
1005
|
Locale::Tag::Posix.parse("japanese"),
|
957
1006
|
], lang.candidates
|
958
1007
|
|
1008
|
+
lang = Locale::Tag.parse("univ.utf8")
|
1009
|
+
assert_equal Locale::Tag::Posix, lang.class
|
1010
|
+
assert_equal "univ", lang.language
|
1011
|
+
assert_equal nil, lang.region
|
1012
|
+
assert_equal "utf8", lang.charset
|
1013
|
+
|
1014
|
+
assert_equal [Locale::Tag::Posix.parse("univ.utf8"),
|
1015
|
+
Locale::Tag::Posix.parse("univ.utf8"),
|
1016
|
+
Locale::Tag::Posix.parse("univ"),
|
1017
|
+
Locale::Tag::Posix.parse("univ"),
|
1018
|
+
Locale::Tag::Posix.parse("univ.utf8"),
|
1019
|
+
Locale::Tag::Posix.parse("univ.utf8"),
|
1020
|
+
Locale::Tag::Posix.parse("univ"),
|
1021
|
+
Locale::Tag::Posix.parse("univ"),
|
1022
|
+
], lang.candidates
|
1023
|
+
end
|
1024
|
+
|
1025
|
+
def test_posix_lang_charset
|
959
1026
|
lang = Locale::Tag.parse("es.iso885915")
|
960
1027
|
assert_equal Locale::Tag::Posix, lang.class
|
961
1028
|
assert_equal "es", lang.language
|
@@ -978,7 +1045,9 @@ class TagTest < Test::Unit::TestCase
|
|
978
1045
|
assert_equal Locale::Tag::Rfc.parse("es"), lang.to_rfc
|
979
1046
|
assert_equal Locale::Tag::Cldr.parse("es"), lang.to_cldr
|
980
1047
|
assert_equal Locale::Tag::Posix.parse("es.iso885915"), lang.to_posix
|
1048
|
+
end
|
981
1049
|
|
1050
|
+
def test_posix_lang_region_charset
|
982
1051
|
lang = Locale::Tag.parse("es_ES.iso885915")
|
983
1052
|
assert_equal Locale::Tag::Posix, lang.class
|
984
1053
|
assert_equal "es", lang.language
|
@@ -1002,6 +1071,30 @@ class TagTest < Test::Unit::TestCase
|
|
1002
1071
|
assert_equal Locale::Tag::Cldr.parse("es_ES"), lang.to_cldr
|
1003
1072
|
assert_equal Locale::Tag::Posix.parse("es_ES.iso885915"), lang.to_posix
|
1004
1073
|
|
1074
|
+
lang = Locale::Tag.parse("ja_JP.UTF-8")
|
1075
|
+
assert_equal Locale::Tag::Posix, lang.class
|
1076
|
+
assert_equal "ja", lang.language
|
1077
|
+
assert_equal "JP", lang.region
|
1078
|
+
assert_equal "UTF-8", lang.charset
|
1079
|
+
|
1080
|
+
assert_equal [Locale::Tag::Posix.parse("ja_JP.UTF-8"),
|
1081
|
+
Locale::Tag::Posix.parse("ja_JP.UTF-8"),
|
1082
|
+
Locale::Tag::Posix.parse("ja_JP"),
|
1083
|
+
Locale::Tag::Posix.parse("ja_JP"),
|
1084
|
+
Locale::Tag::Posix.parse("ja.UTF-8"),
|
1085
|
+
Locale::Tag::Posix.parse("ja.UTF-8"),
|
1086
|
+
Locale::Tag::Posix.parse("ja"),
|
1087
|
+
Locale::Tag::Posix.parse("ja"),
|
1088
|
+
], lang.candidates
|
1089
|
+
|
1090
|
+
assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
|
1091
|
+
assert_equal Locale::Tag::Common.parse("ja_JP"), lang.to_common
|
1092
|
+
assert_equal Locale::Tag::Rfc.parse("ja-JP"), lang.to_rfc
|
1093
|
+
assert_equal Locale::Tag::Cldr.parse("ja_JP"), lang.to_cldr
|
1094
|
+
assert_equal Locale::Tag::Posix.parse("ja_JP.UTF-8"), lang.to_posix
|
1095
|
+
end
|
1096
|
+
|
1097
|
+
def test_posix_lang_modifier
|
1005
1098
|
lang = Locale::Tag.parse("es@euro")
|
1006
1099
|
assert_equal Locale::Tag::Posix, lang.class
|
1007
1100
|
assert_equal "es", lang.language
|
@@ -1026,7 +1119,9 @@ class TagTest < Test::Unit::TestCase
|
|
1026
1119
|
assert_equal Locale::Tag::Rfc.new("es", nil, nil, ["euro"]), lang.to_rfc
|
1027
1120
|
assert_equal Locale::Tag::Cldr.new("es", nil, nil, ["euro"]), lang.to_cldr
|
1028
1121
|
assert_equal Locale::Tag::Posix.parse("es@euro"), lang.to_posix
|
1122
|
+
end
|
1029
1123
|
|
1124
|
+
def test_posix_lang_region_modifier
|
1030
1125
|
lang = Locale::Tag.parse("es_ES@euro")
|
1031
1126
|
assert_equal Locale::Tag::Posix, lang.class
|
1032
1127
|
assert_equal "es", lang.language
|
@@ -1050,6 +1145,9 @@ class TagTest < Test::Unit::TestCase
|
|
1050
1145
|
assert_equal Locale::Tag::Cldr.new("es", nil, "ES", ["EURO"]), lang.to_cldr
|
1051
1146
|
assert_equal Locale::Tag::Posix.parse("es_ES@euro"), lang.to_posix
|
1052
1147
|
|
1148
|
+
end
|
1149
|
+
|
1150
|
+
def test_posix_lang_region_charset_modifier
|
1053
1151
|
lang = Locale::Tag.parse("es_ES.iso885915@euro")
|
1054
1152
|
assert_equal Locale::Tag::Posix, lang.class
|
1055
1153
|
assert_equal "es", lang.language
|
@@ -1073,43 +1171,6 @@ class TagTest < Test::Unit::TestCase
|
|
1073
1171
|
assert_equal Locale::Tag::Cldr.new("es", nil, "ES", ["EURO"]), lang.to_cldr
|
1074
1172
|
assert_equal Locale::Tag::Posix.parse("es_ES.iso885915@euro"), lang.to_posix
|
1075
1173
|
|
1076
|
-
lang = Locale::Tag.parse("univ.utf8")
|
1077
|
-
assert_equal Locale::Tag::Posix, lang.class
|
1078
|
-
assert_equal "univ", lang.language
|
1079
|
-
assert_equal nil, lang.region
|
1080
|
-
assert_equal "utf8", lang.charset
|
1081
|
-
|
1082
|
-
assert_equal [Locale::Tag::Posix.parse("univ.utf8"),
|
1083
|
-
Locale::Tag::Posix.parse("univ.utf8"),
|
1084
|
-
Locale::Tag::Posix.parse("univ"),
|
1085
|
-
Locale::Tag::Posix.parse("univ"),
|
1086
|
-
Locale::Tag::Posix.parse("univ.utf8"),
|
1087
|
-
Locale::Tag::Posix.parse("univ.utf8"),
|
1088
|
-
Locale::Tag::Posix.parse("univ"),
|
1089
|
-
Locale::Tag::Posix.parse("univ"),
|
1090
|
-
], lang.candidates
|
1091
|
-
|
1092
|
-
lang = Locale::Tag.parse("ja_JP.UTF-8")
|
1093
|
-
assert_equal Locale::Tag::Posix, lang.class
|
1094
|
-
assert_equal "ja", lang.language
|
1095
|
-
assert_equal "JP", lang.region
|
1096
|
-
assert_equal "UTF-8", lang.charset
|
1097
|
-
|
1098
|
-
assert_equal [Locale::Tag::Posix.parse("ja_JP.UTF-8"),
|
1099
|
-
Locale::Tag::Posix.parse("ja_JP.UTF-8"),
|
1100
|
-
Locale::Tag::Posix.parse("ja_JP"),
|
1101
|
-
Locale::Tag::Posix.parse("ja_JP"),
|
1102
|
-
Locale::Tag::Posix.parse("ja.UTF-8"),
|
1103
|
-
Locale::Tag::Posix.parse("ja.UTF-8"),
|
1104
|
-
Locale::Tag::Posix.parse("ja"),
|
1105
|
-
Locale::Tag::Posix.parse("ja"),
|
1106
|
-
], lang.candidates
|
1107
|
-
|
1108
|
-
assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
|
1109
|
-
assert_equal Locale::Tag::Common.parse("ja_JP"), lang.to_common
|
1110
|
-
assert_equal Locale::Tag::Rfc.parse("ja-JP"), lang.to_rfc
|
1111
|
-
assert_equal Locale::Tag::Cldr.parse("ja_JP"), lang.to_cldr
|
1112
|
-
assert_equal Locale::Tag::Posix.parse("ja_JP.UTF-8"), lang.to_posix
|
1113
1174
|
end
|
1114
1175
|
|
1115
1176
|
def test_posix_writer
|