class Locale::Tag::Common
Common
Language tag class for Ruby. Java and MS Windows use this format.
-
ja (language: RFC4646)
-
ja_JP (country: RFC4646(2 alpha or 3 digit))
-
ja-JP
-
ja_Hira_JP (script: 4 characters)
-
ja-Hira-JP
-
ja_Hira_JP_MOBILE (variants: more than 2 characters or 3 digit)
-
ja_Hira_JP_MOBILE_IPHONE (2 variants example)
Constants
- LANGUAGE
- SCRIPT
- TAG_RE
- VARIANT
Attributes
Public Class Methods
Create a Locale::Tag::Common
.
# File lib/locale/tag/common.rb, line 56 def initialize(language, script = nil, region = nil, variants = []) @script, @variants = script, variants @script = @script.capitalize if @script super(language, region) end
Parse the language tag and return the new Locale::Tag::Common
.
# File lib/locale/tag/common.rb, line 38 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
Public Instance Methods
Returns an Array of tag-candidates order by priority. Use Locale.candidates
instead of this method.
Locale::Tag::Rfc
, Cldr
don’t have their own candidates, because it’s meaningless to compare the extensions, privateuse, etc.
# File lib/locale/tag/common.rb, line 79 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
Set the script (with capitalize)
# File lib/locale/tag/common.rb, line 63 def script=(val) @script = val @script = @script.capitalize if @script @script end
Set the variants as an Array.
# File lib/locale/tag/common.rb, line 70 def variants=(val) @variants = val end
Private Instance Methods
Returns the common language tag with “_”.
<language>_<Script>_<REGION>_VARIANTS1_VARIANTS2 (e.g.) "ja_Hira_JP_VARIANTS1_VARIANTS2"
This is used in internal only. Use to_s instead.
# File lib/locale/tag/common.rb, line 113 def to_string s = @language.dup s << "_" << @script if @script s << "_" << @region if @region @variants.each do |v| s << "_#{v}" end s end