To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.
root / lib / redmine / i18n.rb @ 912:5e80956cc792
History | View | Annotate | Download (2.17 KB)
| 1 | 0:513646585e45 | Chris | module Redmine |
|---|---|---|---|
| 2 | module I18n |
||
| 3 | def self.included(base) |
||
| 4 | base.extend Redmine::I18n |
||
| 5 | end
|
||
| 6 | 909:cbb26bc654de | Chris | |
| 7 | 0:513646585e45 | Chris | def l(*args) |
| 8 | case args.size
|
||
| 9 | when 1 |
||
| 10 | ::I18n.t(*args)
|
||
| 11 | when 2 |
||
| 12 | if args.last.is_a?(Hash) |
||
| 13 | ::I18n.t(*args)
|
||
| 14 | elsif args.last.is_a?(String) |
||
| 15 | ::I18n.t(args.first, :value => args.last) |
||
| 16 | else
|
||
| 17 | ::I18n.t(args.first, :count => args.last) |
||
| 18 | end
|
||
| 19 | else
|
||
| 20 | raise "Translation string with multiple values: #{args.first}"
|
||
| 21 | end
|
||
| 22 | end
|
||
| 23 | |||
| 24 | def l_or_humanize(s, options={}) |
||
| 25 | k = "#{options[:prefix]}#{s}".to_sym
|
||
| 26 | ::I18n.t(k, :default => s.to_s.humanize) |
||
| 27 | end
|
||
| 28 | 909:cbb26bc654de | Chris | |
| 29 | 0:513646585e45 | Chris | def l_hours(hours) |
| 30 | hours = hours.to_f |
||
| 31 | l((hours < 2.0 ? :label_f_hour : :label_f_hour_plural), :value => ("%.2f" % hours.to_f)) |
||
| 32 | end
|
||
| 33 | 909:cbb26bc654de | Chris | |
| 34 | 0:513646585e45 | Chris | def ll(lang, str, value=nil) |
| 35 | ::I18n.t(str.to_s, :value => value, :locale => lang.to_s.gsub(%r{(.+)\-(.+)$}) { "#{$1}-#{$2.upcase}" }) |
||
| 36 | end
|
||
| 37 | |||
| 38 | def format_date(date) |
||
| 39 | return nil unless date |
||
| 40 | 119:8661b858af72 | Chris | Setting.date_format.blank? ? ::I18n.l(date.to_date) : date.strftime(Setting.date_format) |
| 41 | 0:513646585e45 | Chris | end
|
| 42 | 909:cbb26bc654de | Chris | |
| 43 | 0:513646585e45 | Chris | def format_time(time, include_date = true) |
| 44 | return nil unless time |
||
| 45 | time = time.to_time if time.is_a?(String) |
||
| 46 | zone = User.current.time_zone
|
||
| 47 | local = zone ? time.in_time_zone(zone) : (time.utc? ? time.localtime : time) |
||
| 48 | 245:051f544170fe | Chris | (include_date ? "#{format_date(local)} " : "") + |
| 49 | (Setting.time_format.blank? ? ::I18n.l(local, :format => :time) : local.strftime(Setting.time_format)) |
||
| 50 | 0:513646585e45 | Chris | end
|
| 51 | |||
| 52 | def day_name(day) |
||
| 53 | ::I18n.t('date.day_names')[day % 7] |
||
| 54 | end
|
||
| 55 | 909:cbb26bc654de | Chris | |
| 56 | 0:513646585e45 | Chris | def month_name(month) |
| 57 | ::I18n.t('date.month_names')[month] |
||
| 58 | end
|
||
| 59 | 909:cbb26bc654de | Chris | |
| 60 | 0:513646585e45 | Chris | def valid_languages |
| 61 | 909:cbb26bc654de | Chris | @@valid_languages ||= Dir.glob(File.join(Rails.root, 'config', 'locales', '*.yml')).collect {|f| File.basename(f).split('.').first}.collect(&:to_sym) |
| 62 | 0:513646585e45 | Chris | end
|
| 63 | 909:cbb26bc654de | Chris | |
| 64 | 0:513646585e45 | Chris | def find_language(lang) |
| 65 | @@languages_lookup = valid_languages.inject({}) {|k, v| k[v.to_s.downcase] = v; k }
|
||
| 66 | @@languages_lookup[lang.to_s.downcase]
|
||
| 67 | end
|
||
| 68 | 909:cbb26bc654de | Chris | |
| 69 | 0:513646585e45 | Chris | def set_language_if_valid(lang) |
| 70 | if l = find_language(lang)
|
||
| 71 | ::I18n.locale = l
|
||
| 72 | end
|
||
| 73 | end
|
||
| 74 | 909:cbb26bc654de | Chris | |
| 75 | 0:513646585e45 | Chris | def current_language |
| 76 | ::I18n.locale
|
||
| 77 | end
|
||
| 78 | end
|
||
| 79 | end |