Module: Redmine::I18n
- Included in:
- ApplicationController, ApplicationHelper, Issue, IssueRelation::Relations, MailHandler, Mailer, QueryColumn, DefaultData::Loader, Export::CSV::Base, Export::PDF::ITCPDF, FieldFormat::Base, Helpers::Calendar, Helpers::Gantt, Hook::Listener, MenuManager::MenuItem, MyPage, Pagination::Helper, Views::LabelledFormBuilder
- Defined in:
- lib/redmine/i18n.rb
Defined Under Namespace
Classes: Backend
Class Method Summary collapse
Instance Method Summary collapse
- #current_language ⇒ Object
- #day_letter(day) ⇒ Object
- #day_name(day) ⇒ Object
- #find_language(lang) ⇒ Object
- #format_date(date) ⇒ Object
- #format_hours(hours) ⇒ Object
- #format_time(time, include_date = true, user = nil) ⇒ Object
- #l(*args) ⇒ Object
- #l_hours(hours) ⇒ Object
- #l_hours_short(hours) ⇒ Object
- #l_or_humanize(s, options = {}) ⇒ Object
-
#languages_options(options = {}) ⇒ Object
Returns an array of languages names and code sorted by names, example: [[“Deutsch”, “de”], [“English”, “en”] …].
- #ll(lang, str, arg = nil) ⇒ Object
-
#lu(user, *args) ⇒ Object
Localizes the given args with user's language.
- #month_name(month) ⇒ Object
- #set_language_if_valid(lang) ⇒ Object
- #valid_languages ⇒ Object
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_language ⇒ Object
143 144 145 |
# File 'lib/redmine/i18n.rb', line 143 def current_language ::I18n.locale end |
#day_letter(day) ⇒ Object
101 102 103 |
# File 'lib/redmine/i18n.rb', line 101 def day_letter(day) ::I18n.t('date.abbr_day_names')[day % 7].first end |
#day_name(day) ⇒ Object
97 98 99 |
# File 'lib/redmine/i18n.rb', line 97 def day_name(day) ::I18n.t('date.day_names')[day % 7] end |
#find_language(lang) ⇒ Object
132 133 134 135 |
# File 'lib/redmine/i18n.rb', line 132 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
67 68 69 70 71 72 |
# File 'lib/redmine/i18n.rb', line 67 def format_date(date) return nil unless date = {} [:format] = Setting.date_format unless Setting.date_format.blank? ::I18n.l(date.to_date, ) end |
#format_hours(hours) ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/redmine/i18n.rb', line 85 def format_hours(hours) return "" if hours.blank? if Setting.timespan_format == 'minutes' h = hours.floor m = ((hours - h) * 60).round "%d:%02d" % [ h, m ] else "%.2f" % hours.to_f end end |
#format_time(time, include_date = true, user = nil) ⇒ Object
74 75 76 77 78 79 80 81 82 83 |
# File 'lib/redmine/i18n.rb', line 74 def format_time(time, include_date=true, user=nil) return nil unless time user ||= User.current = {} [:format] = (Setting.time_format.blank? ? :time : Setting.time_format) time = time.to_time if time.is_a?(String) zone = user.time_zone local = zone ? time.in_time_zone(zone) : (time.utc? ? time.localtime : time) (include_date ? "#{format_date(local)} " : "") + ::I18n.l(local, ) 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 => format_hours(hours)) end |
#l_hours_short(hours) ⇒ Object
51 52 53 |
# File 'lib/redmine/i18n.rb', line 51 def l_hours_short(hours) l(:label_f_hour_short, :value => format_hours(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, ={}) k = "#{[: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
118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/redmine/i18n.rb', line 118 def (={}) = if [: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 :cache => false end end .map {|name, lang| [name.force_encoding("UTF-8"), lang.force_encoding("UTF-8")]} end |
#ll(lang, str, arg = nil) ⇒ Object
55 56 57 58 59 |
# File 'lib/redmine/i18n.rb', line 55 def ll(lang, str, arg=nil) = arg.is_a?(Hash) ? arg : {:value => arg} locale = lang.to_s.gsub(%r{(.+)\-(.+)$}) { "#{$1}-#{$2.upcase}" } ::I18n.t(str.to_s, .merge(:locale => locale)) end |
#lu(user, *args) ⇒ Object
Localizes the given args with user's language
62 63 64 65 |
# File 'lib/redmine/i18n.rb', line 62 def lu(user, *args) lang = user.try(:language).presence || Setting.default_language ll(lang, *args) end |
#month_name(month) ⇒ Object
105 106 107 |
# File 'lib/redmine/i18n.rb', line 105 def month_name(month) ::I18n.t('date.month_names')[month] end |
#set_language_if_valid(lang) ⇒ Object
137 138 139 140 141 |
# File 'lib/redmine/i18n.rb', line 137 def set_language_if_valid(lang) if l = find_language(lang) ::I18n.locale = l end end |
#valid_languages ⇒ Object
109 110 111 |
# File 'lib/redmine/i18n.rb', line 109 def valid_languages ::I18n.available_locales end |