Sha256: f080ae0617b69f5eee45851705651c4dab2b6907f75cdc703173bc102bba41c4

Contents?: true

Size: 1.84 KB

Versions: 2

Compression:

Stored size: 1.84 KB

Contents

module Knj::Locales
  #Returns the primary locale, secondary locale and the two put together.
  def self.lang
    match = self.locale.to_s.match(/^([a-z]{2})_([A-Z]{2})/)
    raise "Could not understand language: #{self.locale}." if !match
        
    return {
      "first" => match[1],
      "second" => match[2],
      "full" => "#{match[1]}_#{match[2]}"
    }
  end
  
  #Returns various localized information about the environment.
  def self.localeconv
    f = Knj::Locales.lang["first"]
    
    dec = "."
    thousand = ","
    csv_delimiter = ","
    
    case f
      when "da", "es", "de", "sv"
        dec = ","
        thousand = "."
        csv_delimiter = ";"
      when "en"
        #do nothing.
      else
        raise "Cant figure out numbers for language: #{f}."
    end
    
    return {
      "decimal_point" => dec,
      "thousands_sep" => thousand,
      "csv_delimiter" => csv_delimiter
    }
  end
  
  #Returns a float from the formatted string according to the current locale.
  def self.number_in(num_str)
    lc = Knj::Locales.localeconv
    num_str = num_str.to_s.gsub(lc["thousands_sep"], "").gsub(lc["decimal_point"], ".").to_f
    return num_str
  end
  
  #Returns the given number as a formatted string according to the current locale.
  def self.number_out(num_str, dec = 2)
    lc = Knj::Locales.localeconv
    return Knj::Php.number_format(num_str, dec, lc["decimal_point"], lc["thousands_sep"])
  end
  
  #Returns the current locale for the current environment.
  def self.locale
    begin
      return _session[:locale] if _session[:locale].to_s.strip.length > 0
    rescue NameError
      #ignore.
    end
    
    if Thread.current[:locale]
      return Thread.current[:locale]
    elsif $locale
      return $locale
    elsif ENV["LANGUAGE"]
      return ENV["LANGUAGE"]
    end
    
    raise "Could not figure out locale."
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
knjrbfw-0.0.23 lib/knj/locales.rb
knjrbfw-0.0.22 lib/knj/locales.rb