Class | Locale::Object |
In: |
lib/locale/object.rb
|
Parent: | Object |
charset | [R] | |
country | [R] | |
fallback | [RW] | A fallback locale. With GetText, you don‘t need to set English(en,C,POSIX) by yourself because English is used as the last fallback locale anytime. |
language | [R] | |
modifier | [R] | |
orig_str | [R] | |
script | [R] | |
variant | [R] |
Initialize Locale::Object.
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.
# File lib/locale/object.rb, line 153 153: def initialize(language_or_locale_name, country = nil, charset = nil) 154: @orig_str = language_or_locale_name 155: @language, @country, @charset, @script, @variant, @modifier = 156: self.class.parse(language_or_locale_name) 157: @country = country if country 158: @charset = charset if charset 159: @fallback = nil 160: clear 161: end
Parse POSIX or RFC 3066 style locale name to Array.
(e.g.) uz-UZ-Latn, ja_JP.eucJP, wa_BE.iso885915@euro
(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"]
# File lib/locale/object.rb, line 97 97: def self.parse(locale_name) 98: if locale_name.nil? || locale_name.empty? 99: return ["en", nil, nil, nil, nil, nil] 100: else 101: lang_charset, modifier = locale_name.split(/@/) 102: lang, charset = lang_charset.split(/\./) 103: language, country, script, variant = lang.gsub(/_/, "-").split('-') 104: language = language ? language.downcase : nil 105: language = "en" if language == "c" || language == "posix" 106: end 107: if country 108: if country =~ /\A[A-Z][a-z]+\Z/ #Latn => script 109: tmp = script 110: script = country 111: if tmp =~ /\A[A-Z]+\Z/ #US => country 112: country = tmp 113: else 114: country = nil 115: variant = tmp 116: end 117: else 118: country = country.upcase 119: if script !~ /\A[A-Z][a-z]+\Z/ #Latn => script 120: variant = script 121: script = nil 122: end 123: end 124: end 125: [language, country, charset, script, variant, modifier] 126: end
Set the charset. e.g.) UTF-8, EUC-JP, Shift_JIS
# File lib/locale/object.rb, line 30 30: def charset=(val) 31: @charset = val 32: clear 33: end
# File lib/locale/object.rb, line 163 163: def clear 164: @posix = nil 165: @iso3066 = nil 166: @win = nil 167: @general = nil 168: @hash = "#{self.class}:#{to_general}.#{@charset}@#{@modifier}".hash 169: end
Set the country. e.g.) JP, US, FR, …
# File lib/locale/object.rb, line 24 24: def country=(val) 25: @country = val 26: clear 27: end
Set the language. e.g.) ja, en, fr, …
# File lib/locale/object.rb, line 18 18: def language=(val) 19: @language = val 20: clear 21: end
Set the modifier. e.g.) curreny=DDM
# File lib/locale/object.rb, line 48 48: def modifier=(val) 49: @modifier = val 50: clear 51: end
Set the script. e.g.) Latn
# File lib/locale/object.rb, line 36 36: def script=(val) 37: @script = val 38: clear 39: end
Gets the locale informations as an Array.
# File lib/locale/object.rb, line 219 219: def to_a 220: [@language, @country, @charset, @script, @variant, @modifier] 221: end
Returns the locale as ‘ruby’ general format. (e.g.) "az_AZ_Latn"
# File lib/locale/object.rb, line 202 202: def to_general 203: return @general if @general 204: 205: @general = @language.dup 206: @general << "_#{@country}" if @country 207: @general << "_#{@script}" if @script 208: @general 209: end
Returns the locale as ISO3066 format. (e.g.) "ja-JP"
# File lib/locale/object.rb, line 181 181: def to_iso3066 182: return @iso3066 if @iso3066 183: 184: @iso3066 = @language.dup 185: @iso3066 << "-#{@country}" if @country 186: @iso3066 187: end
Returns the locale as POSIX format(but charset is ignored). (e.g.) "ja_JP"
# File lib/locale/object.rb, line 172 172: def to_posix 173: return @posix if @posix 174: @posix = @language.dup 175: 176: @posix << "_#{@country}" if @country 177: @posix 178: end
Returns the locale as Win32 format. (e.g.) "az-AZ-Latn".
This is used to find the charset from locale table.
# File lib/locale/object.rb, line 192 192: def to_win 193: return @win if @win 194: 195: @win = @language.dup 196: @win << "-#{@country}" if @country 197: @win << "-#{@script}" if @script 198: @win 199: end