Module: Redmine::I18n
- Included in:
- ApplicationController, ApplicationHelper, Issue, IssueRelation::Relations, MailHandler, Mailer, QueryColumn, QueryFilter, 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
Instance Method Details
#current_language ⇒ Object
154 155 156 |
# File 'lib/redmine/i18n.rb', line 154 def current_language ::I18n.locale end |
#day_letter(day) ⇒ Object
106 107 108 |
# File 'lib/redmine/i18n.rb', line 106 def day_letter(day) ::I18n.t('date.abbr_day_names')[day % 7].first end |
#day_name(day) ⇒ Object
102 103 104 |
# File 'lib/redmine/i18n.rb', line 102 def day_name(day) ::I18n.t('date.day_names')[day % 7] end |
#find_language(lang) ⇒ Object
139 140 141 142 143 144 145 146 |
# File 'lib/redmine/i18n.rb', line 139 def find_language(lang) @@languages_lookup ||= valid_languages.inject({}) do |k, v| k[v.to_s.downcase] = v k end @@languages_lookup[lang.to_s.downcase] end |
#format_date(date) ⇒ Object
71 72 73 74 75 76 77 |
# File 'lib/redmine/i18n.rb', line 71 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
90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/redmine/i18n.rb', line 90 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
79 80 81 82 83 84 85 86 87 88 |
# File 'lib/redmine/i18n.rb', line 79 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) local = user.convert_time_to_user_timezone(time) (include_date ? "#{format_date(local)} " : "") + ::I18n.l(local, **) end |
#l(*args) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/redmine/i18n.rb', line 28 def l(*args) case args.size when 1 ::I18n.t(*args) when 2 if args.last.is_a?(Hash) ::I18n.t(*args.first, **args.last) 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
50 51 52 53 |
# File 'lib/redmine/i18n.rb', line 50 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
55 56 57 |
# File 'lib/redmine/i18n.rb', line 55 def l_hours_short(hours) l(:label_f_hour_short, :value => format_hours(hours.to_f)) end |
#l_or_humanize(s, options = {}) ⇒ Object
45 46 47 48 |
# File 'lib/redmine/i18n.rb', line 45 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
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/redmine/i18n.rb', line 123 def (={}) = if [:cache] == false available_locales = ::I18n.backend.available_locales valid_languages. select {|locale| available_locales.include?(locale)}. map {|lang| [ll(lang.to_s, :general_lang_name), lang.to_s]}. sort_by(&: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
59 60 61 62 63 |
# File 'lib/redmine/i18n.rb', line 59 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, **, locale: locale) end |
#lu(user, *args) ⇒ Object
Localizes the given args with user’s language
66 67 68 69 |
# File 'lib/redmine/i18n.rb', line 66 def lu(user, *args) lang = user.try(:language).presence || Setting.default_language ll(lang, *args) end |
#month_name(month) ⇒ Object
110 111 112 |
# File 'lib/redmine/i18n.rb', line 110 def month_name(month) ::I18n.t('date.month_names')[month] end |
#set_language_if_valid(lang) ⇒ Object
148 149 150 151 152 |
# File 'lib/redmine/i18n.rb', line 148 def set_language_if_valid(lang) if l = find_language(lang) ::I18n.locale = l end end |
#valid_languages ⇒ Object
114 115 116 |
# File 'lib/redmine/i18n.rb', line 114 def valid_languages ::I18n.available_locales end |