module I18nData

Constants

VERSION

Public Instance Methods

countries(language_code='EN') click to toggle source
# File lib/i18n_data.rb, line 10
def countries(language_code='EN')
  data_provider.codes(:countries, language_code.to_s.upcase)
end
country_code(name) click to toggle source
# File lib/i18n_data.rb, line 14
def country_code(name)
  recognise_code(:countries, name)
end
data_provider() click to toggle source
# File lib/i18n_data.rb, line 22
def data_provider
  if @data_provider
    @data_provider
  else
    require 'i18n_data/file_data_provider'
    FileDataProvider
  end
end
data_provider=(provider) click to toggle source
# File lib/i18n_data.rb, line 31
def data_provider=(provider)
  @data_provider = provider
end
language_code(name) click to toggle source
# File lib/i18n_data.rb, line 18
def language_code(name)
  recognise_code(:languages, name)
end
languages(language_code='EN') click to toggle source
# File lib/i18n_data.rb, line 6
def languages(language_code='EN')
  data_provider.codes(:languages, language_code.to_s.upcase)
end

Private Instance Methods

recognise_code(type, search) click to toggle source
# File lib/i18n_data.rb, line 37
def recognise_code(type, search)
  search = search.strip

  # common languages first <-> faster in majority of cases
  common_languages = ['EN','ES','FR','DE','ZH']
  langs = (common_languages + (languages.keys - common_languages))
  
  langs.each do |code|
    begin
      send(type, code).each do |code, name|
        # supports "Dutch" and "Dutch; Flemish", checks for inclusion first -> faster
        match_found = (name.include?(search) and name.split(';').map{|s| s.strip }.include?(search))
        return code if match_found
      end
    rescue NoTranslationAvailable
    end
  end
  nil
end