lib/knj/locales.rb in knjrbfw-0.0.8 vs lib/knj/locales.rb in knjrbfw-0.0.9
- old
+ new
@@ -1,54 +1,64 @@
module Knj::Locales
- def self.lang
- begin
- locale = _session[:locale]
- rescue NameError
- #_session method does not exist - continue.
- end
-
- locale = ENV["LANGUAGE"] if !locale and ENV["LANGUAGE"]
- locale = $locale if !locale and $locale
-
- raise "Could not figure out locale." if !locale
- raise "Could not understand language: #{locale}." if !match = locale.to_s.match(/^([a-z]{2})_([A-Z]{2})/)
-
- return {
- "first" => match[1],
- "second" => match[2],
- "full" => match[1] + "_" + match[2]
- }
- end
-
- def self.localeconv
- f = Knj::Locales.lang["first"]
-
- dec = "."
- thousand = ","
-
- case f
- when "da", "es", "de", "sv"
- dec = ","
- thousand = "."
- when "en"
- #do nothing.
- else
- raise "Cant figure out numbers for language: #{f}."
- end
-
- return {
- "decimal_point" => dec,
- "thousands_sep" => thousand
- }
- end
-
- 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
-
- 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
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ def self.locale
+ begin
+ return _session[:locale]
+ rescue NameError
+ if Thread.current[:locale]
+ return Thread.current[:locale]
+ elsif $locale
+ return $locale
+ elsif ENV["LANGUAGE"]
+ return ENV["LANGUAGE"]
+ end
+ end
+
+ raise "Could not figure out locale."
+ end
end
\ No newline at end of file