Class Locale::Object
In: lib/locale/object.rb
Parent: Object

Methods

charset=   clear   country=   language=   modifier=   new   parse   script=   to_a   to_general   to_iso3066   to_posix   to_s   to_str   to_win   variant=  

Attributes

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] 

Public Class methods

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.

[Source]

     # File lib/locale/object.rb, line 149
149:     def initialize(language_or_locale_name, country = nil, charset = nil)
150:       @orig_str = language_or_locale_name
151:       @language, @country, @charset, @script, @variant, @modifier = 
152:         self.class.parse(language_or_locale_name)
153:       @country = country if country
154:       @charset = charset if charset
155:       @fallback = nil
156:       clear
157:     end

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"]

[Source]

     # File lib/locale/object.rb, line 97
 97:     def self.parse(locale_name)
 98:       lang_charset, modifier = locale_name.split(/@/)
 99:       lang, charset = lang_charset.split(/\./)
100:       language, country, script, variant = lang.gsub(/_/, "-").split('-')
101:       language = language ? language.downcase : nil
102:       language = "en" if language == "c" || language == "posix"
103:       if country
104:         if country =~ /\A[A-Z][a-z]+\Z/  #Latn => script
105:           tmp = script
106:           script = country
107:           if tmp =~ /\A[A-Z]+\Z/ #US => country
108:             country = tmp
109:           else
110:             country = nil
111:             variant = tmp
112:           end
113:         else
114:           country = country.upcase
115:           if script !~ /\A[A-Z][a-z]+\Z/ #Latn => script
116:             variant = script
117:             script = nil
118:           end
119:         end
120:       end
121:       [language, country, charset, script, variant, modifier]
122:     end

Public Instance methods

Set the charset. e.g.) UTF-8, EUC-JP, Shift_JIS

[Source]

    # File lib/locale/object.rb, line 30
30:     def charset=(val)
31:       @charset = val
32:       clear
33:     end

[Source]

     # File lib/locale/object.rb, line 159
159:     def clear
160:       @posix = nil
161:       @iso3066 = nil
162:       @win = nil
163:       @general = nil
164:       @hash = "#{self.class}:#{to_general}.#{@charset}@#{@modifier}".hash
165:     end

Set the country. e.g.) JP, US, FR, …

[Source]

    # 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, …

[Source]

    # 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

[Source]

    # File lib/locale/object.rb, line 48
48:     def modifier=(val)
49:       @modifier = val
50:       clear
51:     end

Set the script. e.g.) Latn

[Source]

    # 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.

  • 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)

[Source]

     # File lib/locale/object.rb, line 215
215:     def to_a
216:       [@language, @country, @charset, @script, @variant, @modifier]
217:     end

Returns the locale as ‘ruby’ general format. (e.g.) "az_AZ_Latn"

[Source]

     # File lib/locale/object.rb, line 198
198:     def to_general
199:       return @general if @general
200:  
201:       @general = @language.dup
202:       @general << "_#{@country}" if @country
203:       @general << "_#{@script}" if @script 
204:       @general
205:     end

Returns the locale as ISO3066 format. (e.g.) "ja-JP"

[Source]

     # File lib/locale/object.rb, line 177
177:     def to_iso3066
178:       return @iso3066 if @iso3066
179: 
180:       @iso3066 = @language.dup
181:       @iso3066 << "-#{@country}" if @country
182:       @iso3066
183:     end

Returns the locale as POSIX format(but charset is ignored). (e.g.) "ja_JP"

[Source]

     # File lib/locale/object.rb, line 168
168:     def to_posix
169:       return @posix if @posix
170:       @posix = @language.dup
171: 
172:       @posix << "_#{@country}" if @country
173:       @posix
174:     end
to_s()

Alias for to_posix

to_str()

Alias for to_posix

Returns the locale as Win32 format. (e.g.) "az-AZ-Latn".

This is used to find the charset from locale table.

[Source]

     # File lib/locale/object.rb, line 188
188:     def to_win
189:       return @win if @win
190: 
191:       @win = @language.dup
192:       @win << "-#{@country}" if @country
193:       @win << "-#{@script}" if @script
194:       @win
195:     end

Set the variant. e.g.) Hant

[Source]

    # File lib/locale/object.rb, line 42
42:     def variant=(val)
43:       @variant = val
44:       clear
45:     end

[Validate]