/lib/framework/rholang/localization_simplified.rb

https://github.com/manishasarkar/rhodes · Ruby · 143 lines · 106 code · 23 blank · 14 comment · 10 complexity · 0967714d31646080a45ae6908fa0e80f MD5 · raw file

  1. # LocalizationSimplified (L10n-simplified)
  2. # Really simple localization for Rails
  3. # By Jesper Rønn-Jensen ( http://justaddwater.dk/ )
  4. # Plugin available at http://rubyforge.org/projects/l10n-simplified/
  5. #
  6. module LocalizationSimplified
  7. @@ignore = "\xFF\xFF\xFF\xFF" # %% == Literal "%" character
  8. @@cur_locale = 'en'
  9. # substitute all daynames and monthnames with localized names
  10. # from RUtils plugin
  11. def self.localize_strftime(date='%d.%m.%Y', time='')
  12. #date.gsub!('%%', @@ignore)
  13. date.gsub!('%a', LocalizationSimplified::DateHelper::AbbrDaynames[time.wday])
  14. date.gsub!('%A', LocalizationSimplified::DateHelper::Daynames[time.wday])
  15. date.gsub!('%b', LocalizationSimplified::DateHelper::AbbrMonthnames[time.mon])
  16. date.gsub!('%B', LocalizationSimplified::DateHelper::Monthnames[time.mon])
  17. #date.gsub!(@@ignore, '%%')
  18. end
  19. def self.get_cur_locale
  20. @@cur_locale
  21. end
  22. def self.requre_loc(file,check_exist)
  23. curLocale = System::get_locale().downcase
  24. curCountry = System::get_property("country").downcase
  25. puts "Current locale: #{curLocale}; Country code: #{curCountry}"
  26. @@cur_locale = curLocale
  27. unless check_exist
  28. if defined?( RHODES_EMULATOR )
  29. file = File.join( __rhoGetRhodesDir(), 'lib/framework', file)
  30. else
  31. file = File.join( __rhoGetCurrentDir(), 'lib', file)
  32. end
  33. puts "file: #{file}"
  34. end
  35. if curCountry && curCountry.length() > 0 && Rho::file_exist?(file + curLocale + '_' + curCountry + RHO_RB_EXT)
  36. require file + curLocale + '_' + curCountry
  37. elsif Rho::file_exist?(file + curLocale + RHO_RB_EXT)
  38. require file + curLocale
  39. else
  40. puts 'Could not find resources for locale: ' + curLocale.to_s + ";file: #{file}"if curLocale != 'en'
  41. if curLocale != 'en' && Rho::file_exist?(file + 'en' + RHO_RB_EXT)
  42. puts 'Load english resources.'
  43. require file + 'en'
  44. end
  45. end
  46. end
  47. end
  48. LocalizationSimplified.requre_loc('rholang/lang_',false)
  49. class Hash
  50. def reverse_merge(other_hash)
  51. other_hash.merge(self)
  52. end
  53. def reverse_merge!(other_hash)
  54. replace(reverse_merge(other_hash))
  55. end
  56. def stringify_keys
  57. options = {}
  58. each_pair do |key, value|
  59. options[key.to_s] = value
  60. end
  61. options
  62. end
  63. end #hash
  64. module Rho
  65. # Give default settings to number_to_currency()
  66. module NumberHelper
  67. #alias_method :orig_number_to_currency, :number_to_currency
  68. #modify number_to_currency to accept :order option
  69. def NumberHelper.number_to_currency(number, options = {})
  70. # Blend default options with localized currency options
  71. options.reverse_merge!(LocalizationSimplified::NumberHelper::CurrencyOptions)
  72. options[:order] ||= [:unit, :number]
  73. options = options.stringify_keys
  74. precision, unit, separator, delimiter = options.delete("precision") { 2 }, options.delete("unit") { "$" }, options.delete("separator") { "." }, options.delete("delimiter") { "," }
  75. separator = "" unless precision > 0
  76. #add leading space before trailing unit
  77. unit = " " + unit if options["order"] == [:number, :unit]
  78. output = ''
  79. opt2 = {:precision=>precision, :separator=>separator, :delimiter=>delimiter}
  80. begin
  81. options["order"].each do |param|
  82. case param
  83. when :unit
  84. output << unit
  85. when :number
  86. parts = number_with_precision(number, opt2 ).split(separator)
  87. output << number_with_delimiter(parts[0], opt2 ) + separator + parts[1].to_s
  88. end
  89. end
  90. rescue
  91. output = number
  92. end
  93. output
  94. end
  95. def NumberHelper.number_with_precision(number, options)
  96. precision = (options[:precision])
  97. separator = (options[:separator])
  98. delimiter = (options[:delimiter])
  99. begin
  100. rounded_number = (Float(number) * (10 ** precision)).round.to_f / 10 ** precision
  101. number_with_delimiter("%01.#{precision}f" % rounded_number,
  102. :separator => separator,
  103. :delimiter => delimiter)
  104. rescue
  105. number
  106. end
  107. end
  108. def NumberHelper.number_with_delimiter(number, options)
  109. delimiter = (options[:delimiter])
  110. separator = (options[:separator])
  111. begin
  112. parts = number.to_s.split('.')
  113. parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}")
  114. parts.join(separator)
  115. rescue
  116. number
  117. end
  118. end
  119. end# module NumberHelper
  120. end# rho