class TwitterCldr::Shared::LikelySubtags

Public Class Methods

locale_for(locale_text) click to toggle source
# File lib/twitter_cldr/shared/likely_subtags.rb, line 13
def locale_for(locale_text)
  locale = Locale.parse(locale_text)
  lookup(locale)
end

Private Class Methods

fifth_lookup(locale) click to toggle source
# File lib/twitter_cldr/shared/likely_subtags.rb, line 102
def fifth_lookup(locale)
  if locale.script
    code = ['und', locale.abbreviated_script].join('_')

    if replacement = subtags_resource[code.to_sym]
      Locale.parse(replacement)
    end
  end
end
first_lookup(locale) click to toggle source
# File lib/twitter_cldr/shared/likely_subtags.rb, line 51
def first_lookup(locale)
  if locale.language && locale.script && locale.region
    code = [locale.language, locale.abbreviated_script, locale.region].join('_')

    if replacement = subtags_resource[code.to_sym]
      language2, script2, region2 = Locale.split(replacement)
      Locale.new(language2, script2, region2, locale.variants)
    end
  end
end
fourth_lookup(locale) click to toggle source
# File lib/twitter_cldr/shared/likely_subtags.rb, line 88
def fourth_lookup(locale)
  if locale.language
    if replacement = subtags_resource[locale.language.to_sym]
      language2, script2, region2 = Locale.split(replacement)
      Locale.new(
        language2,
        locale.script || script2,
        locale.region || region2,
        locale.variants
      )
    end
  end
end
lookup(locale) click to toggle source

unicode.org/reports/tr35/#Likely_Subtags

Try each of the following in order (where the fields exist). The notation field³ means field¹ if it exists, otherwise field².

  1. Lookup language¹ _ script¹ _ region¹. If in the table, return the language² _ script² _ region² + variants.

  2. Lookup language¹ _ script¹. If in the table, return language² _ script² _ region³ + variants.

  3. Lookup language¹ _ region¹. If in the table, return language² _ script³ _ region² + variants.

  4. Lookup language¹. If in the table, return language² _ script³ _ region³ + variants.

  5. Lookup und_script¹ and return if exists

# File lib/twitter_cldr/shared/likely_subtags.rb, line 39
def lookup(locale)
  first_lookup(locale) ||
    second_lookup(locale) ||
    third_lookup(locale) ||
    fourth_lookup(locale) ||
    fifth_lookup(locale) ||
    raise(
      UnrecognizedSubtagsError,
      "couldn't find matching subtags for #{locale}"
    )
end
second_lookup(locale) click to toggle source
# File lib/twitter_cldr/shared/likely_subtags.rb, line 62
def second_lookup(locale)
  if locale.language && locale.script
    code = [locale.language, locale.abbreviated_script].join('_')

    if replacement = subtags_resource[code.to_sym]
      language2, script2, region2 = Locale.split(replacement)
      Locale.new(
        language2, script2, locale.region || region2, locale.variants
      )
    end
  end
end
subtags_resource() click to toggle source
# File lib/twitter_cldr/shared/likely_subtags.rb, line 112
def subtags_resource
  @subtags_resource ||=
    TwitterCldr.get_resource('shared', 'likely_subtags')[:subtags]
end
third_lookup(locale) click to toggle source
# File lib/twitter_cldr/shared/likely_subtags.rb, line 75
def third_lookup(locale)
  if locale.language && locale.region
    code = [locale.language, locale.region].join('_')

    if replacement = subtags_resource[code.to_sym]
      language2, script2, region2 = Locale.split(replacement)
      Locale.new(
        language2, locale.script || script2, region2, locale.variants
      )
    end
  end
end