Module: Redmine::I18n

Defined Under Namespace

Classes: Backend

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object


20
21
22
# File 'lib/redmine/i18n.rb', line 20

def self.included(base)
  base.extend Redmine::I18n
end

Instance Method Details

#current_languageObject


119
120
121
# File 'lib/redmine/i18n.rb', line 119

def current_language
  ::I18n.locale
end

#day_letter(day) ⇒ Object


78
79
80
# File 'lib/redmine/i18n.rb', line 78

def day_letter(day)
  ::I18n.t('date.abbr_day_names')[day % 7].first
end

#day_name(day) ⇒ Object


74
75
76
# File 'lib/redmine/i18n.rb', line 74

def day_name(day)
  ::I18n.t('date.day_names')[day % 7]
end

#find_language(lang) ⇒ Object


108
109
110
111
# File 'lib/redmine/i18n.rb', line 108

def find_language(lang)
  @@languages_lookup = valid_languages.inject({}) {|k, v| k[v.to_s.downcase] = v; k }
  @@languages_lookup[lang.to_s.downcase]
end

#format_date(date) ⇒ Object


55
56
57
58
59
60
61
# File 'lib/redmine/i18n.rb', line 55

def format_date(date)
  return nil unless date
  options = {}
  options[:format] = Setting.date_format unless Setting.date_format.blank?
  options[:locale] = User.current.language unless User.current.language.blank?
  ::I18n.l(date.to_date, options)
end

#format_time(time, include_date = true) ⇒ Object


63
64
65
66
67
68
69
70
71
72
# File 'lib/redmine/i18n.rb', line 63

def format_time(time, include_date = true)
  return nil unless time
  options = {}
  options[:format] = (Setting.time_format.blank? ? :time : Setting.time_format)
  options[:locale] = User.current.language unless User.current.language.blank?
  time = time.to_time if time.is_a?(String)
  zone = User.current.time_zone
  local = zone ? time.in_time_zone(zone) : (time.utc? ? time.localtime : time)
  (include_date ? "#{format_date(local)} " : "") + ::I18n.l(local, options)
end

#l(*args) ⇒ Object


24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/redmine/i18n.rb', line 24

def l(*args)
  case args.size
  when 1
    ::I18n.t(*args)
  when 2
    if args.last.is_a?(Hash)
      ::I18n.t(*args)
    elsif args.last.is_a?(String)
      ::I18n.t(args.first, :value => args.last)
    else
      ::I18n.t(args.first, :count => args.last)
    end
  else
    raise "Translation string with multiple values: #{args.first}"
  end
end

#l_hours(hours) ⇒ Object


46
47
48
49
# File 'lib/redmine/i18n.rb', line 46

def l_hours(hours)
  hours = hours.to_f
  l((hours < 2.0 ? :label_f_hour : :label_f_hour_plural), :value => ("%.2f" % hours.to_f))
end

#l_or_humanize(s, options = {}) ⇒ Object


41
42
43
44
# File 'lib/redmine/i18n.rb', line 41

def l_or_humanize(s, options={})
  k = "#{options[:prefix]}#{s}".to_sym
  ::I18n.t(k, :default => s.to_s.humanize)
end

#languages_options(options = {}) ⇒ Object

Returns an array of languages names and code sorted by names, example:

[“Deutsch”, “de”], [“English”, “en”

…]

The result is cached to prevent from loading all translations files unless :cache => false option is given


95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/redmine/i18n.rb', line 95

def languages_options(options={})
  if options[:cache] == false
    valid_languages.
      select {|locale| ::I18n.exists?(:general_lang_name, locale)}.
      map {|lang| [ll(lang.to_s, :general_lang_name), lang.to_s]}.
      sort {|x,y| x.first <=> y.first }
  else
    ActionController::Base.cache_store.fetch "i18n/languages_options/#{Redmine::VERSION}" do
      languages_options :cache => false
    end
  end
end

#ll(lang, str, value = nil) ⇒ Object


51
52
53
# File 'lib/redmine/i18n.rb', line 51

def ll(lang, str, value=nil)
  ::I18n.t(str.to_s, :value => value, :locale => lang.to_s.gsub(%r{(.+)\-(.+)$}) { "#{$1}-#{$2.upcase}" })
end

#month_name(month) ⇒ Object


82
83
84
# File 'lib/redmine/i18n.rb', line 82

def month_name(month)
  ::I18n.t('date.month_names')[month]
end

#set_language_if_valid(lang) ⇒ Object


113
114
115
116
117
# File 'lib/redmine/i18n.rb', line 113

def set_language_if_valid(lang)
  if l = find_language(lang)
    ::I18n.locale = l
  end
end

#valid_languagesObject


86
87
88
# File 'lib/redmine/i18n.rb', line 86

def valid_languages
  ::I18n.available_locales
end