Class: Locale::Object
- Inherits:
-
Object
- Object
- Locale::Object
- Defined in:
- lib/gettext/locale_object.rb
Instance Attribute Summary collapse
-
#charset ⇒ Object
Returns the value of attribute charset.
-
#country ⇒ Object
Returns the value of attribute country.
-
#language ⇒ Object
Returns the value of attribute language.
-
#modifier ⇒ Object
Returns the value of attribute modifier.
-
#orig_str ⇒ Object
Returns the value of attribute orig_str.
-
#script ⇒ Object
Returns the value of attribute script.
-
#variant ⇒ Object
Returns the value of attribute variant.
Class Method Summary collapse
-
.parse(locale_name) ⇒ Object
Parse POSIX or RFC 3066 style locale name to Array.
Instance Method Summary collapse
-
#==(other) ⇒ Object
:nodoc:.
-
#eql?(other) ⇒ Boolean
:nodoc:.
-
#hash ⇒ Object
:nodoc:.
-
#initialize(language_or_locale_name, country = nil, charset = nil) ⇒ Object
constructor
Initialize Locale::Object.
-
#to_a ⇒ Object
Gets the locale informations as an Array.
-
#to_general ⇒ Object
Returns the locale as ‘ruby’ general format.
-
#to_iso3066 ⇒ Object
Returns the locale as ISO3066 format.
-
#to_posix ⇒ Object
(also: #to_s, #to_str)
Returns the locale as POSIX format(but charset is ignored).
-
#to_win ⇒ Object
Returns the locale as Win32 format.
Constructor Details
#initialize(language_or_locale_name, country = nil, charset = nil) ⇒ Object
Initialize Locale::Object.
-
language_or_locale_name: language(ISO 639) or POSIX or RFC3066 style locale name
-
country: an uppercase ISO 3166-1 country/region identifier, or nil
-
charset: charset(codeset) (no standard), or nil
Locale::Object.new("ja", "JP", "eucJP")
-> language = "ja", country = "JP", charset = "eucJP".
Locale::Object.new("ja", "JP")
-> language = "ja", country = "JP", charset = nil.
Locale::Object.new("ja_JP.eucJP")
-> language = "ja", country = "JP", charset = "eucJP".
Locale::Object.new("ja_JP.eucJP", nil, "UTF-8")
-> language = "ja", country = "JP", charset = "UTF-8".
Locale::Object.new("en-US", "CA")
-> language = "en", country = "CA", charset = nil.
Locale::Object.new("uz-uz-latn")
-> language = "uz", country = "UZ", charset = nil, script = "Latn"
Locale::Object.new("uz_UZ_Latn")
-> language = "uz", country = "UZ", charset = nil, script = "Latn"
Locale::Object.new("we_BE.iso885915@euro")
-> language = "we", country = "BE", charset = "iso885915", modifier = "euroo".
Locale::Object.new("C")
-> language = "en", country = nil, charset = nil.
Locale::Object.new("POSIX")
-> language = "en", country = nil, charset = nil.
109 110 111 112 113 114 115 |
# File 'lib/gettext/locale_object.rb', line 109 def initialize(language_or_locale_name, country = nil, charset = nil) @orig_str = language_or_locale_name @language, @country, @charset, @script, @variant, @modifier = self.class.parse(language_or_locale_name) @country = country if country @charset = charset if charset end |
Instance Attribute Details
#charset ⇒ Object
Returns the value of attribute charset.
15 16 17 |
# File 'lib/gettext/locale_object.rb', line 15 def charset @charset end |
#country ⇒ Object
Returns the value of attribute country.
15 16 17 |
# File 'lib/gettext/locale_object.rb', line 15 def country @country end |
#language ⇒ Object
Returns the value of attribute language.
15 16 17 |
# File 'lib/gettext/locale_object.rb', line 15 def language @language end |
#modifier ⇒ Object
Returns the value of attribute modifier.
15 16 17 |
# File 'lib/gettext/locale_object.rb', line 15 def modifier @modifier end |
#orig_str ⇒ Object
Returns the value of attribute orig_str.
15 16 17 |
# File 'lib/gettext/locale_object.rb', line 15 def orig_str @orig_str end |
#script ⇒ Object
Returns the value of attribute script.
15 16 17 |
# File 'lib/gettext/locale_object.rb', line 15 def script @script end |
#variant ⇒ Object
Returns the value of attribute variant.
15 16 17 |
# File 'lib/gettext/locale_object.rb', line 15 def variant @variant end |
Class Method Details
.parse(locale_name) ⇒ Object
Parse POSIX or RFC 3066 style locale name to Array.
-
locale_name: locale name as String
-
Basic POSIX format: <language>_<COUNTRY>.<charset>@<modifier>
-
Both of POSIX and C are converted to “en”.
-
-
Basic RFC3066 format: <language>-<COUNTRY>
-
Win32 format: <language>-<COUNTRY>-<Script>_<sort order>
-
CLDR format: <language>_<Script>_<COUNTRY>_<variant>@<modifier>
-
Some broken format: <language>_<country>_<script> # Don’t use this.
-
The max locale format is below:
-
<language>-<COUNTRY>-<Script>_<sort order>.<charset>@<modifier>
-
format: <language>_<Script>_<COUNTRY>_<variant>@<modifier>
-
both of ‘-’ and ‘_’ are separators.
-
each elements are omittable.
-
-
(e.g.) uz-UZ-Latn, ja_JP.eucJP, wa_BE.iso885915@euro
-
-
Returns: [language, country, charset, script, modifier]
-
language: a lowercase ISO 639(or 639-2/T) language code.
-
country: an uppercase ISO 3166-1 country/region identifier.
-
charset: charset(codeset) (no standard)
-
script: an initial-uppercase ISO 15924 script code.
-
variant: variant value in CLDR or sort order in Win32.
-
modifier: (no standard)
-
(e.g.)
"ja_JP.eucJP" => ["ja", "JP", "eucJP", nil, nil]
"ja-jp.utf-8" => ["ja", "JP", "utf-8", nil, nil]
"ja-jp" => ["ja", "JP", nil, nil, nil]
"ja" => ["ja", nil, nil, nil, nil]
"uz@Latn" => ["uz", nil, nil, nil, "Latn"]
"uz-UZ-Latn" => ["uz", "UZ", nil, "Latn", nil]
"uz_UZ_Latn" => ["uz", "UZ", nil, "Latn", nil]
"wa_BE.iso885915@euro" => ["wa", "BE", "iso885915", nil, "euro"]
"C" => ["en", nil, nil, nil, nil]
"POSIX" => ["en", nil, nil, nil, nil]
"zh_Hant" => ["zh", nil, nil, "Hant", nil]
"zh_Hant_HK" => ["zh", "HK", nil, "Hant", nil]
"de_DE@collation=phonebook,currency=DDM" => ["de", "DE", nil, nil, "collation=phonebook,currency=DDM"]
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/gettext/locale_object.rb', line 57 def self.parse(locale_name) lang_charset, modifier = locale_name.split(/@/) lang, charset = lang_charset.split(/\./) language, country, script, variant = lang.gsub(/_/, "-").split('-') language = language ? language.downcase : nil language = "en" if language == "c" || language == "posix" if country if country =~ /\A[A-Z][a-z]+\Z/ #Latn => script tmp = script script = country if tmp =~ /\A[A-Z]+\Z/ #US => country country = tmp else country = nil variant = tmp end else country = country.upcase if script !~ /\A[A-Z][a-z]+\Z/ #Latn => script variant = script script = nil end end end [language, country, charset, script, variant, modifier] end |
Instance Method Details
#==(other) ⇒ Object
:nodoc:
161 162 163 164 165 166 167 |
# File 'lib/gettext/locale_object.rb', line 161 def ==(other) #:nodoc: other != nil and @language == other.language and @country == other.country and @charset == other.charset and @script == other.script and @variant == other.variant and @modifier == other.modifier and @charset == other.charset end |
#eql?(other) ⇒ Boolean
:nodoc:
169 170 171 |
# File 'lib/gettext/locale_object.rb', line 169 def eql?(other) #:nodoc: self.==(other) end |
#hash ⇒ Object
:nodoc:
173 174 175 |
# File 'lib/gettext/locale_object.rb', line 173 def hash #:nodoc: "#{self.class}:#{to_general}.#{@charset}@#{modifier}".hash end |
#to_a ⇒ Object
Gets the locale informations as an Array.
-
Returns [language, country, charset, script, variant, modifier]
-
language: a lowercase ISO 639(or 639-2/T) language code.
-
country: an uppercase ISO 3166-1 country/region identifier.
-
charset: charset(codeset) (no standard)
-
script: an initial-uppercase ISO 15924 script code.
-
variant: variant value in CLDR or sort order in Win32.
-
modifier: (no standard)
-
157 158 159 |
# File 'lib/gettext/locale_object.rb', line 157 def to_a [@language, @country, @charset, @script, @variant, @modifier] end |
#to_general ⇒ Object
Returns the locale as ‘ruby’ general format. (e.g.) “az_AZ_Latn”
142 143 144 145 146 147 |
# File 'lib/gettext/locale_object.rb', line 142 def to_general ret = @language ret += "_#{@country}" if @country ret += "_#{@script}" if @script ret end |
#to_iso3066 ⇒ Object
Returns the locale as ISO3066 format. (e.g.) “ja-JP”
125 126 127 128 129 |
# File 'lib/gettext/locale_object.rb', line 125 def to_iso3066 ret = @language ret += "-#{@country}" if @country ret end |
#to_posix ⇒ Object Also known as: to_s, to_str
Returns the locale as POSIX format(but charset is ignored). (e.g.) “ja_JP”
118 119 120 121 122 |
# File 'lib/gettext/locale_object.rb', line 118 def to_posix ret = @language ret += "_#{@country}" if @country ret end |
#to_win ⇒ Object
Returns the locale as Win32 format. (e.g.) “az-AZ-Latn”.
This is used to find the charset from locale table.
134 135 136 137 138 139 |
# File 'lib/gettext/locale_object.rb', line 134 def to_win ret = @language ret += "-#{@country}" if @country ret += "-#{@script}" if @script ret end |