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,38 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
locale/tag/illegular.rb - Locale::Tag::Illegular
|
|
3
|
+
|
|
4
|
+
Copyright (C) 2008 Masao Mutoh
|
|
5
|
+
|
|
6
|
+
You may redistribute it and/or modify it under the same
|
|
7
|
+
license terms as Ruby.
|
|
8
|
+
|
|
9
|
+
$Id: illegular.rb 27 2008-12-03 15:06:50Z mutoh $
|
|
10
|
+
=end
|
|
11
|
+
|
|
12
|
+
require 'locale/tag/simple'
|
|
13
|
+
|
|
14
|
+
module Locale
|
|
15
|
+
|
|
16
|
+
module Tag
|
|
17
|
+
# Broken tag class.
|
|
18
|
+
class Illegular < Simple
|
|
19
|
+
|
|
20
|
+
def initialize(tag)
|
|
21
|
+
tag = "en" if tag == nil || tag.empty?
|
|
22
|
+
@language = tag
|
|
23
|
+
@tag = tag
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Returns an Array of tag-candidates order by priority.
|
|
27
|
+
def candidates
|
|
28
|
+
[Illegular.new(tag)]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Conver to the klass(the class of Language::Tag)
|
|
32
|
+
private
|
|
33
|
+
def convert_to(klass)
|
|
34
|
+
klass.new(tag)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
locale/tag/posix.rb - Locale::Tag::Posix
|
|
3
|
+
|
|
4
|
+
Copyright (C) 2008 Masao Mutoh
|
|
5
|
+
|
|
6
|
+
You may redistribute it and/or modify it under the same
|
|
7
|
+
license terms as Ruby.
|
|
8
|
+
|
|
9
|
+
$Id: posix.rb 27 2008-12-03 15:06:50Z mutoh $
|
|
10
|
+
=end
|
|
11
|
+
|
|
12
|
+
module Locale #:nodoc:
|
|
13
|
+
module Tag #:nodoc:
|
|
14
|
+
|
|
15
|
+
# Locale tag class for POSIX locale
|
|
16
|
+
# * ja
|
|
17
|
+
# * ja_JP
|
|
18
|
+
# * ja_JP.UTF-8
|
|
19
|
+
# * ja_JP.UTF-8@Osaka
|
|
20
|
+
# * C/POSIX (-> en_US)
|
|
21
|
+
class Posix < Simple
|
|
22
|
+
LANGUAGE = "([a-z]{2,})"
|
|
23
|
+
TAG_RE = /\A#{LANGUAGE}(?:_#{REGION})?(?:\.([^@]+))?(?:@(.*))?\Z/i
|
|
24
|
+
|
|
25
|
+
attr_reader :charset, :modifier
|
|
26
|
+
|
|
27
|
+
def initialize(language, region = nil, charset = nil, modifier = nil)
|
|
28
|
+
@charset, @modifier = charset, modifier
|
|
29
|
+
super(language, region)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.parse(tag)
|
|
33
|
+
if tag =~ /^(C|POSIX)$/
|
|
34
|
+
ret = self.new("en", "US")
|
|
35
|
+
ret.tag = tag
|
|
36
|
+
ret
|
|
37
|
+
elsif tag =~ TAG_RE
|
|
38
|
+
ret = self.new($1, $2, $3, $4)
|
|
39
|
+
ret.tag = tag
|
|
40
|
+
ret
|
|
41
|
+
else
|
|
42
|
+
nil
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Returns the language tag.
|
|
47
|
+
# <language>_<COUNTRY>.<CHARSET>@<MODIFIER>
|
|
48
|
+
# (e.g.) "ja_JP.EUC-JP@Modifier"
|
|
49
|
+
def to_s
|
|
50
|
+
s = @language.dup
|
|
51
|
+
s << "_#{@region}" if @region
|
|
52
|
+
s << ".#{@charset}" if @charset
|
|
53
|
+
s << "@#{@modifier}" if @modifier
|
|
54
|
+
s
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Set the charset.
|
|
58
|
+
def charset=(val)
|
|
59
|
+
clear
|
|
60
|
+
@charset = val
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Set the modifier.
|
|
64
|
+
def modifier=(val)
|
|
65
|
+
clear
|
|
66
|
+
@modifier = val
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Returns an Array of tag-candidates order by priority.
|
|
70
|
+
# Use Locale.candidates instead of this method.
|
|
71
|
+
def candidates
|
|
72
|
+
[self.class.new(language, region, charset, modifier), #ja_JP.UTF-8@Modifier
|
|
73
|
+
self.class.new(language, region, charset), #ja_JP.UTF-8
|
|
74
|
+
self.class.new(language, region, nil, modifier), #ja_JP@Modifier
|
|
75
|
+
self.class.new(language, region, nil, nil), #ja_JP@Modifier
|
|
76
|
+
self.class.new(language, nil, charset, modifier), #ja.UTF-8@Modifier
|
|
77
|
+
self.class.new(language, nil, charset), #ja.UTF-8
|
|
78
|
+
self.class.new(language, nil, nil, modifier), #ja@Modifier
|
|
79
|
+
self.class.new(language)] #ja
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# A modifier is converted to a variant.
|
|
83
|
+
# If the modifier is less than 5 characters, it is not canonical value.
|
|
84
|
+
private
|
|
85
|
+
def convert_to(klass)
|
|
86
|
+
if klass == Simple
|
|
87
|
+
super
|
|
88
|
+
elsif klass == Posix
|
|
89
|
+
klass.new(language, region, charset, modifier)
|
|
90
|
+
else
|
|
91
|
+
klass.new(language, nil, region, modifier ? [modifier] : [])
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
locale/tag/rfc.rb - Locale::Tag::Rfc
|
|
3
|
+
|
|
4
|
+
Copyright (C) 2008 Masao Mutoh
|
|
5
|
+
|
|
6
|
+
You may redistribute it and/or modify it under the same
|
|
7
|
+
license terms as Ruby.
|
|
8
|
+
|
|
9
|
+
$Id: rfc.rb 27 2008-12-03 15:06:50Z mutoh $
|
|
10
|
+
=end
|
|
11
|
+
|
|
12
|
+
module Locale #:nodoc:
|
|
13
|
+
module Tag #:nodoc:
|
|
14
|
+
|
|
15
|
+
# Language tag class for RFC4646(BCP47).
|
|
16
|
+
class Rfc < Common
|
|
17
|
+
SINGLETON = '[a-wyz0-9]'
|
|
18
|
+
VARIANT = "(#{ALPHANUM}{5,8}|#{DIGIT}#{ALPHANUM}{3})"
|
|
19
|
+
EXTENSION = "(#{SINGLETON}(?:-#{ALPHANUM}{2,8})+)"
|
|
20
|
+
PRIVATEUSE = "(x(?:-#{ALPHANUM}{1,8})+)"
|
|
21
|
+
GRANDFATHERED = "#{ALPHA}{1,3}(?:-#{ALPHANUM}{2,8}){1,2}"
|
|
22
|
+
|
|
23
|
+
TAG_RE = /\A#{LANGUAGE}(?:-#{SCRIPT})?
|
|
24
|
+
(?:-#{REGION})?((?:-#{VARIANT})*
|
|
25
|
+
(?:-#{EXTENSION})*(?:-#{PRIVATEUSE})?)\Z/ix
|
|
26
|
+
|
|
27
|
+
attr_reader :extensions, :privateuse
|
|
28
|
+
|
|
29
|
+
def initialize(language, script = nil, region = nil, variants = [],
|
|
30
|
+
extensions = [], privateuse = nil)
|
|
31
|
+
@extensions, @privateuse = extensions, privateuse
|
|
32
|
+
super(language, script, region, variants)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Parse the language tag and return the new Locale::Tag::Common.
|
|
36
|
+
def self.parse(tag)
|
|
37
|
+
if tag =~ /\APOSIX\Z/ # This is the special case of POSIX locale but match this regexp.
|
|
38
|
+
nil
|
|
39
|
+
elsif tag =~ TAG_RE
|
|
40
|
+
lang, script, region, subtag = $1, $2, $3, $4
|
|
41
|
+
extensions = []
|
|
42
|
+
variants = []
|
|
43
|
+
if subtag =~ /#{PRIVATEUSE}/
|
|
44
|
+
subtag, privateuse = $`, $1
|
|
45
|
+
# Private use for CLDR.
|
|
46
|
+
if /x-ldml(.*)/ =~ privateuse
|
|
47
|
+
p_subtag = $1
|
|
48
|
+
extensions = p_subtag.scan(/(^|-)#{EXTENSION}/i).collect{|v| p_subtag.sub!(v[1], ""); v[1]}
|
|
49
|
+
variants = p_subtag.scan(/(^|-)#{VARIANT}(?=(-|$))/i).collect{|v| v[1]}
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
extensions += subtag.scan(/(^|-)#{EXTENSION}/i).collect{|v| subtag.sub!(v[1], ""); v[1]}
|
|
53
|
+
variants += subtag.scan(/(^|-)#{VARIANT}(?=(-|$))/i).collect{|v| v[1]}
|
|
54
|
+
|
|
55
|
+
ret = self.new(lang, script, region, variants, extensions, privateuse)
|
|
56
|
+
ret.tag = tag
|
|
57
|
+
ret
|
|
58
|
+
else
|
|
59
|
+
nil
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Returns the language tag
|
|
64
|
+
# <language>-<Script>-<REGION>-<variants>-<extensions>-<PRIVATEUSE>
|
|
65
|
+
# (e.g.) "ja-Hira-JP-variant"
|
|
66
|
+
def to_s
|
|
67
|
+
s = super.to_s.gsub(/_/, "-")
|
|
68
|
+
@extensions.each do |v|
|
|
69
|
+
s << "-#{v}"
|
|
70
|
+
end
|
|
71
|
+
s << "-#{@privateuse}" if @privateuse
|
|
72
|
+
s
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Sets the extensions.
|
|
76
|
+
def extensions=(val)
|
|
77
|
+
clear
|
|
78
|
+
@extensions = val
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Sets the extensions.
|
|
82
|
+
def privateuse=(val)
|
|
83
|
+
clear
|
|
84
|
+
@privateuse = val
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
private
|
|
88
|
+
def convert_to(klass)
|
|
89
|
+
if klass == Rfc
|
|
90
|
+
klass.new(language, script, region, variants, extensions, privateuse)
|
|
91
|
+
elsif klass == Cldr
|
|
92
|
+
exts = {}
|
|
93
|
+
extensions.each do |v|
|
|
94
|
+
if v =~ /^k-(#{ALPHANUM}{2,})-(.*)$/i
|
|
95
|
+
exts[$1] = $2
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
klass.new(language, script, region, variants, exts)
|
|
99
|
+
else
|
|
100
|
+
super
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
locale/tag/simple.rb - Locale::Tag::Simple
|
|
3
|
+
|
|
4
|
+
Copyright (C) 2008 Masao Mutoh
|
|
5
|
+
|
|
6
|
+
You may redistribute it and/or modify it under the same
|
|
7
|
+
license terms as Ruby.
|
|
8
|
+
|
|
9
|
+
$Id: simple.rb 27 2008-12-03 15:06:50Z mutoh $
|
|
10
|
+
=end
|
|
11
|
+
|
|
12
|
+
require 'locale/util/memoizable'
|
|
13
|
+
|
|
14
|
+
module Locale
|
|
15
|
+
module Tag
|
|
16
|
+
# Abstract language tag class.
|
|
17
|
+
# This class has <language>, <region> which
|
|
18
|
+
# all of language tag specifications have.
|
|
19
|
+
#
|
|
20
|
+
# * ja (language: ISO 639 (2 or 3 alpha))
|
|
21
|
+
# * ja_JP (country: RFC4646 (ISO3166/UN M.49) (2 alpha or 3 digit)
|
|
22
|
+
# * ja-JP
|
|
23
|
+
# * ja-392
|
|
24
|
+
class Simple
|
|
25
|
+
ALPHA = '[a-z]'
|
|
26
|
+
DIGIT = '[0-9]'
|
|
27
|
+
ALPHANUM = "[a-zA-Z0-9]"
|
|
28
|
+
|
|
29
|
+
LANGUAGE = "(#{ALPHA}{2,3})" # ISO 639
|
|
30
|
+
REGION = "(#{ALPHA}{2}|#{DIGIT}{3})" # RFC4646 (ISO3166/UN M.49)
|
|
31
|
+
|
|
32
|
+
TAG_RE = /\A#{LANGUAGE}(?:[_-]#{REGION})?\Z/i
|
|
33
|
+
|
|
34
|
+
include Util::Memoizable
|
|
35
|
+
|
|
36
|
+
attr_reader :language, :region
|
|
37
|
+
|
|
38
|
+
# tag is set when .parse method is called.
|
|
39
|
+
# This value is used when the program want to know the original
|
|
40
|
+
# String.
|
|
41
|
+
attr_accessor :tag
|
|
42
|
+
|
|
43
|
+
# Parse the language tag and return the new Locale::Tag::Simple.
|
|
44
|
+
def self.parse(tag)
|
|
45
|
+
if tag =~ TAG_RE
|
|
46
|
+
ret = self.new($1, $2)
|
|
47
|
+
ret.tag = tag
|
|
48
|
+
ret
|
|
49
|
+
else
|
|
50
|
+
nil
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# call-seq:
|
|
55
|
+
# to_common
|
|
56
|
+
# to_posix
|
|
57
|
+
# to_rfc
|
|
58
|
+
# to_cldr
|
|
59
|
+
#
|
|
60
|
+
# Convert to each tag classes.
|
|
61
|
+
[:simple, :common, :posix, :rfc, :cldr].each do |name|
|
|
62
|
+
class_eval <<-EOS
|
|
63
|
+
def to_#{name}
|
|
64
|
+
convert_to(#{name.to_s.capitalize})
|
|
65
|
+
end
|
|
66
|
+
memoize :to_#{name}
|
|
67
|
+
EOS
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Create a Locale::Tag::Simple
|
|
71
|
+
def initialize(language, region = nil)
|
|
72
|
+
raise "language can't be nil." unless language
|
|
73
|
+
@language, @region = language, region
|
|
74
|
+
@language.downcase! if @language
|
|
75
|
+
@region.upcase! if @region
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Returns the language tag as the String.
|
|
79
|
+
# <language>_<REGION>
|
|
80
|
+
# (e.g.) "ja_JP"
|
|
81
|
+
def to_s
|
|
82
|
+
s = @language.dup
|
|
83
|
+
s << "_" << @region if @region
|
|
84
|
+
s
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def to_str #:nodoc:
|
|
88
|
+
to_s
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def ==(other) #:nodoc:
|
|
92
|
+
other != nil and hash == other.hash
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def eql?(other) #:nodoc:
|
|
96
|
+
self.==(other)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def hash #:nodoc:
|
|
100
|
+
"#{self.class}:#{to_s}".hash
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def inspect #:nodoc:
|
|
104
|
+
%Q[#<#{self.class}: #{to_s}>]
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# For backward compatibility.
|
|
108
|
+
def country; region end
|
|
109
|
+
|
|
110
|
+
# Set the language (with downcase)
|
|
111
|
+
def language=(val)
|
|
112
|
+
clear
|
|
113
|
+
@language = val
|
|
114
|
+
@language.downcase! if @language
|
|
115
|
+
@language
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# Set the region (with upcase)
|
|
119
|
+
def region=(val)
|
|
120
|
+
clear
|
|
121
|
+
@region = val
|
|
122
|
+
@region.upcase! if @region
|
|
123
|
+
@region
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# Returns an Array of tag-candidates order by priority.
|
|
127
|
+
# Use Locale.candidates instead of this method.
|
|
128
|
+
def candidates
|
|
129
|
+
[self.class.new(language, region), self.class.new(language)]
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
memoize :to_s, :to_str, :hash, :inspect, :candidates
|
|
133
|
+
|
|
134
|
+
# Conver to the klass(the class of Language::Tag)
|
|
135
|
+
private
|
|
136
|
+
def convert_to(klass)
|
|
137
|
+
if klass == Simple || klass == Posix
|
|
138
|
+
klass.new(language, region)
|
|
139
|
+
else
|
|
140
|
+
klass.new(language, nil, region)
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
taglist.rb - Locale module
|
|
3
|
+
|
|
4
|
+
Copyright (C) 2008 Masao Mutoh
|
|
5
|
+
|
|
6
|
+
You may redistribute it and/or modify it under the same
|
|
7
|
+
license terms as Ruby.
|
|
8
|
+
|
|
9
|
+
$Id: taglist.rb 27 2008-12-03 15:06:50Z mutoh $
|
|
10
|
+
=end
|
|
11
|
+
|
|
12
|
+
module Locale
|
|
13
|
+
# This provides the subclass of Array which behaves like
|
|
14
|
+
# the first(top priority) Locale::Tag object.
|
|
15
|
+
# "Locale.current.language" is same with "Locale.current[0].language".
|
|
16
|
+
#
|
|
17
|
+
# Locale.current returns an Array of Tag(s) now.
|
|
18
|
+
# But the old Locale.current(Ruby-GetText) and Locale.get
|
|
19
|
+
# returns Locale::Object (similier with Locale::Tag::Posix).
|
|
20
|
+
# This is the class for backward compatibility.
|
|
21
|
+
#
|
|
22
|
+
# It is recommanded to use Locale.current[0] or
|
|
23
|
+
# Locale.candidates to find the current locale instead
|
|
24
|
+
# of this function.
|
|
25
|
+
#
|
|
26
|
+
class TagList < Array
|
|
27
|
+
# Returns the top priority language. (simple)
|
|
28
|
+
def language
|
|
29
|
+
self[0].language
|
|
30
|
+
end
|
|
31
|
+
# Returns the top priority region/country. (simple)
|
|
32
|
+
def country
|
|
33
|
+
self[0].region
|
|
34
|
+
end
|
|
35
|
+
# Returns the top priority region/country. (simple)
|
|
36
|
+
def region
|
|
37
|
+
self[0].region
|
|
38
|
+
end
|
|
39
|
+
# Returns the top priority script. (common)
|
|
40
|
+
def script
|
|
41
|
+
self[0].script
|
|
42
|
+
end
|
|
43
|
+
# Returns the top priority charset. (posix)
|
|
44
|
+
def charset
|
|
45
|
+
if self[0].respond_to? :charset
|
|
46
|
+
self[0].charset
|
|
47
|
+
else
|
|
48
|
+
::Locale.driver_module.charset
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
# Returns the top priority modifier. (posix)
|
|
52
|
+
def modifier
|
|
53
|
+
(self[0].respond_to? :modifier) ? self[0].modifier : nil
|
|
54
|
+
end
|
|
55
|
+
# Returns the top priority extensions.(common, rfc, cldr)
|
|
56
|
+
def extensions
|
|
57
|
+
(self[0].respond_to? :extensions) ? self[0].extensions : nil
|
|
58
|
+
end
|
|
59
|
+
# Returns the top priority privateuse(rfc)
|
|
60
|
+
def privateuse
|
|
61
|
+
(self[0].respond_to? :privateuse) ? self[0].privateuse : nil
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def to_str
|
|
65
|
+
self[0].to_str
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def to_s
|
|
69
|
+
self[0].to_s
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def to_common
|
|
73
|
+
self[0].to_common
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def to_simple
|
|
77
|
+
self[0].to_simple
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def to_rfc
|
|
81
|
+
self[0].to_rfc
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def to_cldr
|
|
85
|
+
self[0].to_cldr
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def to_posix
|
|
89
|
+
self[0].to_posix
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
end
|
|
93
|
+
end
|