r18n-core 2.2.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rspec +1 -1
- data/ChangeLog.md +6 -1
- data/README.md +1 -20
- data/Rakefile +5 -3
- data/lib/r18n-core.rb +55 -55
- data/lib/r18n-core/filter_list.rb +34 -36
- data/lib/r18n-core/filters.rb +68 -51
- data/lib/r18n-core/helpers.rb +17 -17
- data/lib/r18n-core/i18n.rb +46 -39
- data/lib/r18n-core/locale.rb +79 -70
- data/lib/r18n-core/translated.rb +65 -66
- data/lib/r18n-core/translated_string.rb +24 -24
- data/lib/r18n-core/translation.rb +31 -30
- data/lib/r18n-core/unsupported_locale.rb +22 -24
- data/lib/r18n-core/untranslated.rb +35 -33
- data/lib/r18n-core/utils.rb +26 -25
- data/lib/r18n-core/version.rb +4 -1
- data/lib/r18n-core/yaml_loader.rb +26 -25
- data/lib/r18n-core/yaml_methods.rb +25 -28
- data/locales/af.rb +15 -8
- data/locales/az.rb +19 -12
- data/locales/bg.rb +16 -9
- data/locales/ca.rb +16 -9
- data/locales/cs.rb +27 -20
- data/locales/da.rb +15 -8
- data/locales/de.rb +16 -9
- data/locales/en-au.rb +10 -5
- data/locales/en-gb.rb +12 -5
- data/locales/en-us.rb +12 -5
- data/locales/en.rb +29 -22
- data/locales/eo.rb +14 -7
- data/locales/es-us.rb +12 -5
- data/locales/es.rb +14 -7
- data/locales/fa.rb +48 -32
- data/locales/fi.rb +19 -12
- data/locales/fr.rb +22 -15
- data/locales/gl.rb +15 -8
- data/locales/hr.rb +24 -17
- data/locales/hu.rb +28 -21
- data/locales/id.rb +14 -7
- data/locales/it.rb +21 -14
- data/locales/ja.rb +15 -8
- data/locales/kk.rb +17 -10
- data/locales/ko.rb +15 -9
- data/locales/lv.rb +24 -17
- data/locales/mn.rb +10 -3
- data/locales/nb.rb +15 -8
- data/locales/nl.rb +15 -8
- data/locales/no.rb +11 -16
- data/locales/pl.rb +26 -19
- data/locales/pt-br.rb +12 -5
- data/locales/pt.rb +17 -10
- data/locales/ru.rb +26 -19
- data/locales/sk.rb +27 -20
- data/locales/sr-latn.rb +27 -22
- data/locales/sv-se.rb +15 -8
- data/locales/th.rb +27 -20
- data/locales/tr.rb +16 -9
- data/locales/uk.rb +19 -12
- data/locales/vi.rb +14 -7
- data/locales/zh-cn.rb +12 -5
- data/locales/zh-tw.rb +15 -8
- data/locales/zh.rb +14 -7
- data/r18n-core.gemspec +5 -3
- data/spec/filters_spec.rb +71 -67
- data/spec/i18n_spec.rb +73 -51
- data/spec/locale_spec.rb +73 -68
- data/spec/locales/cs_spec.rb +2 -2
- data/spec/locales/en-us_spec.rb +9 -9
- data/spec/locales/en_spec.rb +2 -2
- data/spec/locales/fa_spec.rb +3 -3
- data/spec/locales/fr_spec.rb +2 -2
- data/spec/locales/hu_spec.rb +7 -7
- data/spec/locales/it_spec.rb +3 -3
- data/spec/locales/no_spec.rb +9 -0
- data/spec/locales/pl_spec.rb +2 -2
- data/spec/locales/ru_spec.rb +2 -2
- data/spec/locales/sk_spec.rb +2 -2
- data/spec/locales/th_spec.rb +2 -2
- data/spec/locales/vi_spec.rb +2 -2
- data/spec/r18n_spec.rb +44 -38
- data/spec/spec_helper.rb +13 -9
- data/spec/translated_spec.rb +48 -31
- data/spec/translation_spec.rb +29 -27
- data/spec/translations/general/en.yml +0 -2
- data/spec/yaml_loader_spec.rb +22 -18
- metadata +5 -3
data/lib/r18n-core/helpers.rb
CHANGED
@@ -1,21 +1,21 @@
|
|
1
|
-
|
2
|
-
Mixin with common methods.
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
3
|
+
# Mixin with common methods.
|
4
|
+
#
|
5
|
+
# Copyright (C) 2010 Andrey “A.I.” Sitnik <andrey@sitnik.ru>
|
6
|
+
#
|
7
|
+
# This program is free software: you can redistribute it and/or modify
|
8
|
+
# it under the terms of the GNU Lesser General Public License as published by
|
9
|
+
# the Free Software Foundation, either version 3 of the License, or
|
10
|
+
# (at your option) any later version.
|
11
|
+
#
|
12
|
+
# This program is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
# GNU Lesser General Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU Lesser General Public License
|
18
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19
19
|
|
20
20
|
module R18n
|
21
21
|
# Useful aliases. Set I18n object before use them:
|
data/lib/r18n-core/i18n.rb
CHANGED
@@ -1,24 +1,23 @@
|
|
1
|
-
|
2
|
-
I18n support.
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
3
|
+
# I18n support.
|
4
|
+
#
|
5
|
+
# Copyright (C) 2008 Andrey “A.I.” Sitnik <andrey@sitnik.ru>
|
6
|
+
#
|
7
|
+
# This program is free software: you can redistribute it and/or modify
|
8
|
+
# it under the terms of the GNU Lesser General Public License as published by
|
9
|
+
# the Free Software Foundation, either version 3 of the License, or
|
10
|
+
# (at your option) any later version.
|
11
|
+
#
|
12
|
+
# This program is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
# GNU Lesser General Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU Lesser General Public License
|
18
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19
19
|
|
20
20
|
require 'date'
|
21
|
-
require 'pathname'
|
22
21
|
|
23
22
|
module R18n
|
24
23
|
# General class to i18n support in your application. It load Translation and
|
@@ -103,7 +102,7 @@ module R18n
|
|
103
102
|
locales = str.split(',')
|
104
103
|
locales.map! do |locale|
|
105
104
|
locale = locale.split ';q='
|
106
|
-
if
|
105
|
+
if locale.size == 1
|
107
106
|
[locale[0], 1.0]
|
108
107
|
else
|
109
108
|
[locale[0], locale[1].to_f]
|
@@ -117,7 +116,7 @@ module R18n
|
|
117
116
|
# argument.
|
118
117
|
def self.convert_places(places)
|
119
118
|
Array(places).map! do |loader|
|
120
|
-
if loader.respond_to?
|
119
|
+
if loader.respond_to?(:available) && loader.respond_to?(:load)
|
121
120
|
loader
|
122
121
|
else
|
123
122
|
R18n.default_loader.new(loader)
|
@@ -144,7 +143,7 @@ module R18n
|
|
144
143
|
def initialize(locales, translation_places = nil, opts = {})
|
145
144
|
locales = Array(locales)
|
146
145
|
|
147
|
-
if
|
146
|
+
if !locales.empty? && Locale.exists?(locales.first)
|
148
147
|
locales += Locale.load(locales.first).sublocales
|
149
148
|
end
|
150
149
|
locales << @@default
|
@@ -166,14 +165,15 @@ module R18n
|
|
166
165
|
|
167
166
|
@translation_places = self.class.convert_places(@original_places)
|
168
167
|
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
168
|
+
@filters =
|
169
|
+
if opts[:on_filters] || opts[:off_filters]
|
170
|
+
CustomFilterList.new(opts[:on_filters], opts[:off_filters])
|
171
|
+
else
|
172
|
+
GlobalFilterList.instance
|
173
|
+
end
|
174
174
|
|
175
175
|
key = translation_cache_key
|
176
|
-
if R18n.cache.
|
176
|
+
if R18n.cache.key? key
|
177
177
|
@locale, @translation = *R18n.cache[key]
|
178
178
|
else
|
179
179
|
reload!
|
@@ -187,8 +187,9 @@ module R18n
|
|
187
187
|
|
188
188
|
# Return unique key for current locales in translation and places.
|
189
189
|
def translation_cache_key
|
190
|
-
@available_codes ||= @translation_places
|
191
|
-
|
190
|
+
@available_codes ||= @translation_places
|
191
|
+
.inject([]) { |all, i| all + i.available }
|
192
|
+
.uniq.map { |i| i.code.downcase }
|
192
193
|
(@locales_codes & @available_codes).join(',') + '@' +
|
193
194
|
@filters.hash.to_s + '_' +
|
194
195
|
R18n.default_loader.hash.to_s + '_' +
|
@@ -202,18 +203,22 @@ module R18n
|
|
202
203
|
@translation_places = self.class.convert_places(@original_places)
|
203
204
|
|
204
205
|
available_in_places = @translation_places.map { |i| [i, i.available] }
|
205
|
-
available_in_extensions =
|
206
|
+
available_in_extensions =
|
207
|
+
R18n.extension_places.map { |i| [i, i.available] }
|
206
208
|
|
207
|
-
unless @locale
|
208
|
-
|
209
|
+
unless defined? @locale
|
210
|
+
# It's array!
|
211
|
+
# rubocop:disable Perfomance/HashEachMethods
|
212
|
+
available_in_places.each do |_place, available|
|
209
213
|
@locales.each do |locale|
|
210
214
|
if available.include? locale
|
211
215
|
@locale = locale
|
212
216
|
break
|
213
217
|
end
|
214
218
|
end
|
215
|
-
break if @locale
|
219
|
+
break if defined? @locale
|
216
220
|
end
|
221
|
+
# rubocop:enable Perfomance/HashEachMethods
|
217
222
|
end
|
218
223
|
@locale ||= @locales.first
|
219
224
|
unless @locale.supported?
|
@@ -228,17 +233,19 @@ module R18n
|
|
228
233
|
@translation = Translation.new(@locale, '', filters: @filters)
|
229
234
|
@locales.each do |locale|
|
230
235
|
loaded = false
|
236
|
+
|
231
237
|
available_in_places.each do |place, available|
|
232
238
|
if available.include? locale
|
233
239
|
@translation.merge! place.load(locale), locale
|
234
240
|
loaded = true
|
235
241
|
end
|
236
242
|
end
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
243
|
+
|
244
|
+
next unless loaded
|
245
|
+
|
246
|
+
available_in_extensions.each do |extension, available|
|
247
|
+
if available.include? locale
|
248
|
+
@translation.merge! extension.load(locale), locale
|
242
249
|
end
|
243
250
|
end
|
244
251
|
end
|
@@ -267,7 +274,7 @@ module R18n
|
|
267
274
|
def localize(object, format = nil, *params)
|
268
275
|
locale.localize(object, format, self, *params)
|
269
276
|
end
|
270
|
-
alias
|
277
|
+
alias l localize
|
271
278
|
|
272
279
|
# Return translations.
|
273
280
|
def t
|
data/lib/r18n-core/locale.rb
CHANGED
@@ -1,23 +1,22 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Locale to i18n support.
|
4
|
+
#
|
5
|
+
# Copyright (C) 2008 Andrey “A.I.” Sitnik <andrey@sitnik.ru>
|
6
|
+
#
|
7
|
+
# This program is free software: you can redistribute it and/or modify
|
8
|
+
# it under the terms of the GNU Lesser General Public License as published by
|
9
|
+
# the Free Software Foundation, either version 3 of the License, or
|
10
|
+
# (at your option) any later version.
|
11
|
+
#
|
12
|
+
# This program is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
# GNU Lesser General Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU Lesser General Public License
|
18
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
3
19
|
|
4
|
-
Copyright (C) 2008 Andrey “A.I.” Sitnik <andrey@sitnik.ru>
|
5
|
-
|
6
|
-
This program is free software: you can redistribute it and/or modify
|
7
|
-
it under the terms of the GNU Lesser General Public License as published by
|
8
|
-
the Free Software Foundation, either version 3 of the License, or
|
9
|
-
(at your option) any later version.
|
10
|
-
|
11
|
-
This program is distributed in the hope that it will be useful,
|
12
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
-
GNU Lesser General Public License for more details.
|
15
|
-
|
16
|
-
You should have received a copy of the GNU Lesser General Public License
|
17
|
-
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
=end
|
19
|
-
|
20
|
-
require 'pathname'
|
21
20
|
require 'singleton'
|
22
21
|
require 'bigdecimal'
|
23
22
|
|
@@ -55,7 +54,7 @@ module R18n
|
|
55
54
|
# You can see more available data about locale in samples in
|
56
55
|
# <tt>locales/</tt> dir.
|
57
56
|
class Locale
|
58
|
-
LOCALES_DIR =
|
57
|
+
LOCALES_DIR = File.join(__dir__, '..', '..', 'locales')
|
59
58
|
|
60
59
|
@@loaded = {}
|
61
60
|
|
@@ -68,19 +67,19 @@ module R18n
|
|
68
67
|
|
69
68
|
# Is +locale+ has info file.
|
70
69
|
def self.exists?(locale)
|
71
|
-
File.
|
70
|
+
File.exist?(File.join(LOCALES_DIR, "#{locale}.rb"))
|
72
71
|
end
|
73
72
|
|
74
73
|
# Load locale by RFC 3066 +code+.
|
75
74
|
def self.load(code)
|
76
75
|
original = code.to_s.gsub(/[^-_a-zA-Z]/, '')
|
77
|
-
code = original.
|
76
|
+
code = original.tr('_', '-').downcase
|
78
77
|
|
79
78
|
@@loaded[code] ||= begin
|
80
79
|
if exists? code
|
81
|
-
require
|
82
|
-
name = code.gsub(
|
83
|
-
|
80
|
+
require File.join(LOCALES_DIR, "#{code}.rb")
|
81
|
+
name = code.gsub(/\w+/, &:capitalize).delete('-')
|
82
|
+
R18n::Locales.const_get(name).new
|
84
83
|
else
|
85
84
|
UnsupportedLocale.new(original)
|
86
85
|
end
|
@@ -111,7 +110,7 @@ module R18n
|
|
111
110
|
lang.downcase + (culture ? '-' + culture.upcase : '')
|
112
111
|
end
|
113
112
|
|
114
|
-
set sublocales: %w
|
113
|
+
set sublocales: %w[en],
|
115
114
|
week_start: :monday,
|
116
115
|
time_am: 'AM',
|
117
116
|
time_pm: 'PM',
|
@@ -119,16 +118,26 @@ module R18n
|
|
119
118
|
full_format: '%e %B',
|
120
119
|
year_format: '_ %Y'
|
121
120
|
|
122
|
-
def month_standalone
|
123
|
-
|
124
|
-
|
121
|
+
def month_standalone
|
122
|
+
month_names
|
123
|
+
end
|
124
|
+
|
125
|
+
def month_abbrs
|
126
|
+
month_names
|
127
|
+
end
|
128
|
+
|
129
|
+
def wday_abbrs
|
130
|
+
wday_names
|
131
|
+
end
|
125
132
|
|
126
133
|
# Is locale has left-to-right write direction.
|
127
|
-
def ltr
|
134
|
+
def ltr?
|
135
|
+
true
|
136
|
+
end
|
128
137
|
|
129
138
|
# Is another locale has same code.
|
130
|
-
def ==(
|
131
|
-
self.class ==
|
139
|
+
def ==(other)
|
140
|
+
self.class == other.class
|
132
141
|
end
|
133
142
|
|
134
143
|
# Is locale has information file. In this class always return true.
|
@@ -156,13 +165,13 @@ module R18n
|
|
156
165
|
format_float(obj.to_f)
|
157
166
|
when Time, DateTime, Date
|
158
167
|
return strftime(obj, format) if format.is_a? String
|
159
|
-
return month_standalone[obj.month - 1] if
|
160
|
-
return obj.to_s if
|
168
|
+
return month_standalone[obj.month - 1] if format == :month
|
169
|
+
return obj.to_s if format == :human && !params.first.is_a?(I18n)
|
161
170
|
|
162
171
|
type = obj.is_a?(Date) && !obj.is_a?(DateTime) ? 'date' : 'time'
|
163
|
-
format
|
172
|
+
format ||= :standard
|
164
173
|
|
165
|
-
unless [
|
174
|
+
unless %i[human full standard].include? format
|
166
175
|
raise ArgumentError, "Unknown time formatter #{format}"
|
167
176
|
end
|
168
177
|
|
@@ -176,7 +185,7 @@ module R18n
|
|
176
185
|
# It will also put real typographic minus.
|
177
186
|
def format_integer(integer)
|
178
187
|
str = integer.to_s
|
179
|
-
str[0] = '−' if
|
188
|
+
str[0] = '−' if integer < 0 # Real typographic minus
|
180
189
|
group = number_group
|
181
190
|
|
182
191
|
str.gsub(/(\d)(?=(\d\d\d)+(?!\d))/) do |match|
|
@@ -188,7 +197,7 @@ module R18n
|
|
188
197
|
# It will also put real typographic minus.
|
189
198
|
def format_float(float)
|
190
199
|
decimal = number_decimal
|
191
|
-
|
200
|
+
format_integer(float.to_i) + decimal + float.to_s.split('.').last
|
192
201
|
end
|
193
202
|
|
194
203
|
# Same that <tt>Time.strftime</tt>, but translate months and week days
|
@@ -197,20 +206,21 @@ module R18n
|
|
197
206
|
def strftime(time, format)
|
198
207
|
translated = ''
|
199
208
|
format.scan(/%[EO]?.|./o) do |c|
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
209
|
+
translated +=
|
210
|
+
case c.sub(/^%[EO]?(.)$/o, '%\\1')
|
211
|
+
when '%A'
|
212
|
+
wday_names[time.wday]
|
213
|
+
when '%a'
|
214
|
+
wday_abbrs[time.wday]
|
215
|
+
when '%B'
|
216
|
+
month_names[time.month - 1]
|
217
|
+
when '%b'
|
218
|
+
month_abbrs[time.month - 1]
|
219
|
+
when '%p'
|
220
|
+
time.hour < 12 ? time_am : time_pm
|
221
|
+
else
|
222
|
+
c
|
223
|
+
end
|
214
224
|
end
|
215
225
|
time.strftime(translated)
|
216
226
|
end
|
@@ -223,42 +233,40 @@ module R18n
|
|
223
233
|
# Format +time+ in human usable form. For example “5 minutes ago” or
|
224
234
|
# “yesterday”. In +now+ you can set base time, which be used to get relative
|
225
235
|
# time. For special cases you can replace it in locale’s class.
|
226
|
-
def format_time_human(time, i18n, now = Time.now, *
|
236
|
+
def format_time_human(time, i18n, now = Time.now, *_params)
|
227
237
|
diff = time - now
|
228
238
|
minutes = time.is_a?(DateTime) ? diff * 24 * 60.0 : diff / 60.0
|
229
239
|
diff = minutes.abs
|
230
|
-
if (diff > 24 * 60)
|
240
|
+
if (diff > 24 * 60) || (time.mday != now.mday && diff > 12 * 24)
|
231
241
|
format_time(format_date_human(time.to_date, i18n, now.to_date), time)
|
242
|
+
elsif minutes > -1 && minutes < 1
|
243
|
+
i18n.human_time.now
|
244
|
+
elsif minutes >= 60
|
245
|
+
i18n.human_time.after_hours((diff / 60.0).floor)
|
246
|
+
elsif minutes <= -60
|
247
|
+
i18n.human_time.hours_ago((diff / 60.0).floor)
|
248
|
+
elsif minutes > 0
|
249
|
+
i18n.human_time.after_minutes(minutes.round)
|
232
250
|
else
|
233
|
-
|
234
|
-
i18n.human_time.now
|
235
|
-
elsif 60 <= minutes
|
236
|
-
i18n.human_time.after_hours((diff / 60.0).floor)
|
237
|
-
elsif -60 >= minutes
|
238
|
-
i18n.human_time.hours_ago((diff / 60.0).floor)
|
239
|
-
elsif 0 < minutes
|
240
|
-
i18n.human_time.after_minutes(minutes.round)
|
241
|
-
else
|
242
|
-
i18n.human_time.minutes_ago(minutes.round.abs)
|
243
|
-
end
|
251
|
+
i18n.human_time.minutes_ago(minutes.round.abs)
|
244
252
|
end
|
245
253
|
end
|
246
254
|
|
247
255
|
# Format +time+ in compact form. For example, “12/31/09 12:59”.
|
248
|
-
def format_time_standard(time, *
|
256
|
+
def format_time_standard(time, *_params)
|
249
257
|
format_time(format_date_standard(time), time)
|
250
258
|
end
|
251
259
|
|
252
260
|
# Format +time+ in most official form. For example, “December 31st, 2009
|
253
261
|
# 12:59”. For special cases you can replace it in locale’s class.
|
254
|
-
def format_time_full(time, *
|
262
|
+
def format_time_full(time, *_params)
|
255
263
|
format_time(format_date_full(time), time)
|
256
264
|
end
|
257
265
|
|
258
266
|
# Format +date+ in human usable form. For example “5 days ago” or
|
259
267
|
# “yesterday”. In +now+ you can set base time, which be used to get relative
|
260
268
|
# time. For special cases you can replace it in locale’s class.
|
261
|
-
def format_date_human(date, i18n, now = Date.today, *
|
269
|
+
def format_date_human(date, i18n, now = Date.today, *_params)
|
262
270
|
days = (date - now).to_i
|
263
271
|
case days
|
264
272
|
when -6..-2
|
@@ -277,14 +285,14 @@ module R18n
|
|
277
285
|
end
|
278
286
|
|
279
287
|
# Format +date+ in compact form. For example, “12/31/09”.
|
280
|
-
def format_date_standard(date, *
|
288
|
+
def format_date_standard(date, *_params)
|
281
289
|
strftime(date, date_format)
|
282
290
|
end
|
283
291
|
|
284
292
|
# Format +date+ in most official form. For example, “December 31st, 2009”.
|
285
293
|
# For special cases you can replace it in locale’s class. If +year+ is false
|
286
294
|
# date will be without year.
|
287
|
-
def format_date_full(date, year = true, *
|
295
|
+
def format_date_full(date, year = true, *_params)
|
288
296
|
format = full_format
|
289
297
|
format = year_format.sub('_', format) if year
|
290
298
|
strftime(date, format)
|
@@ -304,5 +312,6 @@ module R18n
|
|
304
312
|
end
|
305
313
|
end
|
306
314
|
|
315
|
+
# Namespace for Locale sub-classes
|
307
316
|
module Locales; end
|
308
317
|
end
|