class Locale::Tag::Common
* ja_Hira_JP_MOBILE_IPHONE (2 variants example)
* ja_Hira_JP_MOBILE (variants: more than 2 characters or 3 digit)
* ja-Hira-JP
* ja_Hira_JP (script: 4 characters)
* ja-JP
* ja_JP (country: RFC4646(2 alpha or 3 digit))
* ja (language: RFC4646)
Java and MS Windows use this format.
Common Language tag class for Ruby.
def candidates
Locale::Tag::Rfc, Cldr don't have their own candidates,
Use Locale.candidates instead of this method.
Returns an Array of tag-candidates order by priority.
def candidates [self.class.new(language, script, region, variants), #ja-Kana-JP-FOO self.class.new(language, script, region), #ja-Kana-JP self.class.new(language, nil, region, variants), #ja-JP-FOO self.class.new(language, nil, region), #ja-JP self.class.new(language, script, nil, variants), #ja-Kana-FOO self.class.new(language, script), #ja-Kana self.class.new(language, nil, nil, variants), #ja-FOO self.class.new(language)] #ja end
def convert_to(klass) #:nodoc:
def convert_to(klass) #:nodoc: if klass == Simple super elsif klass == Posix if variants.size > 0 var = variants.join("-") else var = nil end klass.new(language, region, nil, var) elsif klass == Cldr klass.new(language, script, region, variants.map{|v| v.upcase}) else klass.new(language, script, region, variants) end end
def initialize(language, script = nil, region = nil, variants = [])
def initialize(language, script = nil, region = nil, variants = []) @script, @variants = script, variants @script = @script.capitalize if @script super(language, region) end
def parse(tag)
def parse(tag) case tag when /\APOSIX\Z/ # This is the special case of POSIX locale but match this regexp. nil when TAG_RE lang, script, region, subtag = $1, $2, $3, $4 variants = subtag.scan(/(^|[-_])#{VARIANT}(?=([-_]|$))/i).collect{|v| v[1]} ret = self.new(lang, script, region, variants) ret.tag = tag ret else nil end end
def script=(val)
def script=(val) @script = val @script = @script.capitalize if @script @script end
def to_string
(e.g.) "ja_Hira_JP_VARIANTS1_VARIANTS2"