russian 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -191,6 +191,33 @@ h3. Хелперы
191
191
 
192
192
  Хелперы даты-времени получают ключ @:use_standalone_month_names@ для форсирования отображения отдельностоящего названия месяца ("Сентябрь" а не "сентября"). Такое имя месяца используется когда включен ключ @:use_standalone_month_names@ (для отдельностоящего @select_month@ он включается по умолчанию), либо когда есть ключ @:discard_day@.
193
193
 
194
+ В Russian включен плагин i18n_label, который подставляет в форм-хелпер @label@ перевод атрибута из таблицы переводов I18n. Например:
195
+
196
+ * в файле переводов:
197
+
198
+ <pre><code>
199
+ ru-RU:
200
+ activerecord:
201
+ attributes:
202
+ user:
203
+ name: "Имя"
204
+ </code></pre>
205
+
206
+ * во view:
207
+
208
+ <pre><code>
209
+ <% form_for @user do |f| %>
210
+ <%= f.label :name %>
211
+ <% end %>
212
+ </code></pre>
213
+
214
+ Даст:
215
+
216
+ <pre><code>
217
+ <label for="user_name">Имя</label>
218
+ </code></pre>
219
+
220
+
194
221
  h3. Валидация
195
222
 
196
223
  Обработка ошибок в ActiveRecord перегружается -- в Russian включен популярный плагин custom_error_message, с помощью которого можно переопределять стандартное отображение сообщений об ошибках. Так, например,
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ require 'rubygems/specification'
5
5
  require 'date'
6
6
 
7
7
  GEM = "russian"
8
- GEM_VERSION = "0.0.3"
8
+ GEM_VERSION = "0.0.4"
9
9
  AUTHOR = "Yaroslav Markin"
10
10
  EMAIL = "yaroslav@markin.net"
11
11
  HOMEPAGE = "http://github.com/yaroslav/russian/"
@@ -1,19 +1,28 @@
1
1
  $KCODE='u'
2
2
 
3
3
  $:.push File.join(File.dirname(__FILE__), 'russian')
4
- $:.push File.join(File.dirname(__FILE__), 'vendor', 'i18n', 'lib')
5
4
 
6
- require 'i18n' unless defined?(I18n)
5
+ # I18n require
6
+ unless defined?(I18n)
7
+ $:.push File.join(File.dirname(__FILE__), 'vendor', 'i18n', 'lib')
8
+ require 'i18n'
9
+ end
7
10
 
11
+ # Advanced backend
8
12
  require 'backend/advanced'
9
- require 'action_view_ext/helpers/date_helper'
10
- require 'active_record_ext/custom_error_message'
13
+
14
+ # Rails hacks
15
+ require 'active_record_ext/custom_error_message' if defined?(ActiveRecord)
16
+ if defined?(ActionView::Helpers)
17
+ require 'action_view_ext/helpers/date_helper'
18
+ require 'vendor/i18n_label/init'
19
+ end
11
20
 
12
21
  module Russian
13
22
  module VERSION
14
23
  MAJOR = 0
15
24
  MINOR = 0
16
- TINY = 3
25
+ TINY = 4
17
26
 
18
27
  STRING = [MAJOR, MINOR, TINY].join('.')
19
28
  end
@@ -1,53 +1,51 @@
1
- if defined?(ActiveRecord::Errors)
2
- # The following is taken from custom_error_message plugin by David Easley
3
- # (http://rubyforge.org/projects/custom-err-msg/)
4
- module ActiveRecord
5
- class Errors
6
-
7
- # Redefine the ActiveRecord::Errors::full_messages method:
8
- # Returns all the full error messages in an array. 'Base' messages are handled as usual.
9
- # Non-base messages are prefixed with the attribute name as usual UNLESS they begin with '^'
10
- # in which case the attribute name is omitted.
11
- # E.g. validates_acceptance_of :accepted_terms, :message => '^Please accept the terms of service'
12
- #
13
- #
14
- # Переопределяет метод ActiveRecord::Errors::full_messages. Сообщения об ошибках для атрибутов
15
- # теперь не имеют префикса с названием атрибута если в сообщении об ошибке первым символом указан "^".
16
- #
17
- # Так, например,
18
- #
19
- # validates_acceptance_of :accepted_terms, :message => 'нужно принять соглашение'
20
- #
21
- # даст сообщение
22
- #
23
- # Accepted terms нужно принять соглашение
24
- #
25
- # однако,
26
- #
27
- # validates_acceptance_of :accepted_terms, :message => '^Нужно принять соглашение'
28
- #
29
- # даст сообщение
30
- #
31
- # Нужно принять соглашение
32
- def full_messages
33
- full_messages = []
34
-
35
- @errors.each_key do |attr|
36
- @errors[attr].each do |msg|
37
- next if msg.nil?
38
-
39
- if attr == "base"
40
- full_messages << msg
41
- elsif msg =~ /^\^/
42
- full_messages << msg[1..-1]
43
- else
44
- full_messages << @base.class.human_attribute_name(attr) + " " + msg
45
- end
1
+ # The following is taken from custom_error_message plugin by David Easley
2
+ # (http://rubyforge.org/projects/custom-err-msg/)
3
+ module ActiveRecord
4
+ class Errors
5
+
6
+ # Redefine the ActiveRecord::Errors::full_messages method:
7
+ # Returns all the full error messages in an array. 'Base' messages are handled as usual.
8
+ # Non-base messages are prefixed with the attribute name as usual UNLESS they begin with '^'
9
+ # in which case the attribute name is omitted.
10
+ # E.g. validates_acceptance_of :accepted_terms, :message => '^Please accept the terms of service'
11
+ #
12
+ #
13
+ # Переопределяет метод ActiveRecord::Errors::full_messages. Сообщения об ошибках для атрибутов
14
+ # теперь не имеют префикса с названием атрибута если в сообщении об ошибке первым символом указан "^".
15
+ #
16
+ # Так, например,
17
+ #
18
+ # validates_acceptance_of :accepted_terms, :message => 'нужно принять соглашение'
19
+ #
20
+ # даст сообщение
21
+ #
22
+ # Accepted terms нужно принять соглашение
23
+ #
24
+ # однако,
25
+ #
26
+ # validates_acceptance_of :accepted_terms, :message => '^Нужно принять соглашение'
27
+ #
28
+ # даст сообщение
29
+ #
30
+ # Нужно принять соглашение
31
+ def full_messages
32
+ full_messages = []
33
+
34
+ @errors.each_key do |attr|
35
+ @errors[attr].each do |msg|
36
+ next if msg.nil?
37
+
38
+ if attr == "base"
39
+ full_messages << msg
40
+ elsif msg =~ /^\^/
41
+ full_messages << msg[1..-1]
42
+ else
43
+ full_messages << @base.class.human_attribute_name(attr) + " " + msg
46
44
  end
47
45
  end
48
-
49
- return full_messages
50
46
  end
47
+
48
+ return full_messages
51
49
  end
52
50
  end
53
- end
51
+ end
@@ -59,52 +59,52 @@ ru-RU:
59
59
  distance_in_words:
60
60
  half_a_minute: "меньше минуты"
61
61
  less_than_x_seconds:
62
- one: "меньше секунды"
62
+ one: "меньше {{count}} секунды"
63
63
  few: "меньше {{count}} секунд"
64
64
  many: "меньше {{count}} секунд"
65
- other: "меньше {{count}} секунд"
65
+ other: "меньше {{count}} секунды"
66
66
  x_seconds:
67
- one: "1 секунда"
67
+ one: "{{count}} секунда"
68
68
  few: "{{count}} секунды"
69
69
  many: "{{count}} секунд"
70
70
  other: "{{count}} секунды"
71
71
  less_than_x_minutes:
72
- one: "меньше минуты"
72
+ one: "меньше {{count}} минуты"
73
73
  few: "меньше {{count}} минут"
74
74
  many: "меньше {{count}} минут"
75
- other: "меньше {{count}} минут"
75
+ other: "меньше {{count}} минуты"
76
76
  x_minutes:
77
- one: "1 минуту"
77
+ one: "{{count}} минуту"
78
78
  few: "{{count}} минуты"
79
79
  many: "{{count}} минут"
80
80
  other: "{{count}} минуты"
81
81
  about_x_hours:
82
- one: "около часа"
82
+ one: "около {{count}} часа"
83
83
  few: "около {{count}} часов"
84
84
  many: "около {{count}} часов"
85
- other: "около {{count}} часов"
85
+ other: "около {{count}} часа"
86
86
  x_days:
87
- one: "1 день"
87
+ one: "{{count}} день"
88
88
  few: "{{count}} дня"
89
89
  many: "{{count}} дней"
90
90
  other: "{{count}} дня"
91
91
  about_x_months:
92
- one: "около 1 месяца"
92
+ one: "около {{count}} месяца"
93
93
  few: "около {{count}} месяцев"
94
94
  many: "около {{count}} месяцев"
95
- other: "около {{count}} месяцев"
95
+ other: "около {{count}} месяца"
96
96
  x_months:
97
- one: "1 месяц"
97
+ one: "{{count}} месяц"
98
98
  few: "{{count}} месяца"
99
99
  many: "{{count}} месяцев"
100
100
  other: "{{count}} месяца"
101
101
  about_x_years:
102
- one: "около 1 года"
102
+ one: "около {{count}} года"
103
103
  few: "около {{count}} лет"
104
104
  many: "около {{count}} лет"
105
105
  other: "около {{count}} лет"
106
106
  over_x_years:
107
- one: "больше 1 года"
107
+ one: "больше {{count}} года"
108
108
  few: "больше {{count}} лет"
109
109
  many: "больше {{count}} лет"
110
110
  other: "больше {{count}} лет"
@@ -115,10 +115,10 @@ ru-RU:
115
115
  template:
116
116
  # Заголовок сообщения об ошибке
117
117
  header:
118
- one: "{{model}}: сохранение не удалось из-за 1 ошибки"
118
+ one: "{{model}}: сохранение не удалось из-за {{count}} ошибки"
119
119
  few: "{{model}}: сохранение не удалось из-за {{count}} ошибок"
120
120
  many: "{{model}}: сохранение не удалось из-за {{count}} ошибок"
121
- other: "{{model}}: сохранение не удалосьиз-за {{count}} ошибок"
121
+ other: "{{model}}: сохранение не удалось из-за {{count}} ошибки"
122
122
 
123
123
  # Первый параграф сообщения об ошибке. Можно использовать макрос {{count}}
124
124
  #
@@ -24,17 +24,17 @@ ru-RU:
24
24
  empty: "не может быть пустым"
25
25
  blank: "не может быть пустым"
26
26
  too_long:
27
- one: "слишком большой длины (не может быть больше чем 1 символ)"
27
+ one: "слишком большой длины (не может быть больше чем {{count}} символ)"
28
28
  few: "слишком большой длины (не может быть больше чем {{count}} символа)"
29
29
  many: "слишком большой длины (не может быть больше чем {{count}} символов)"
30
30
  other: "слишком большой длины (не может быть больше чем {{count}} символа)"
31
31
  too_short:
32
- one: "недостаточной длины (не может быть меньше 1 символа)"
32
+ one: "недостаточной длины (не может быть меньше {{count}} символа)"
33
33
  few: "недостаточной длины (не может быть меньше {{count}} символов)"
34
34
  many: "недостаточной длины (не может быть меньше {{count}} символов)"
35
- other: "недостаточной длины (не может быть меньше {{count}} символов)"
35
+ other: "недостаточной длины (не может быть меньше {{count}} символа)"
36
36
  wrong_length:
37
- one: "неверной длины (может быть длиной ровно 1 символ)"
37
+ one: "неверной длины (может быть длиной ровно {{count}} символ)"
38
38
  few: "неверной длины (может быть длиной ровно {{count}} символа)"
39
39
  many: "неверной длины (может быть длиной ровно {{count}} символов)"
40
40
  other: "неверной длины (может быть длиной ровно {{count}} символа)"
@@ -66,25 +66,25 @@ ru-RU:
66
66
  # # Ниже определим собственное сообщение об ошибке для атрибута name модели User.
67
67
  # name:
68
68
  # blank: "Атрибут {{attribute}} особенный -- у него свое сообщение об ошибке при пустом атрибуте"
69
-
70
69
  models:
71
- # Перевод названий моделей
72
- #
73
- # Например,
74
- # user: "Пользователь"
75
- # переведет модель User как "Пользователь".
76
- #
77
- #
78
- # Overrides default messages
79
-
80
- attributes:
81
- # Перевод названий атрибутов моделей
82
- #
83
- # Например,
84
- # user:
85
- # name: "Имя"
86
- # переведет атрибут name модели User как "Имя".
87
- #
88
- #
89
- # Overrides model and default messages.
70
+
71
+ # Перевод названий моделей. Используется в Model.human_name().
72
+ #
73
+ #models:
74
+ # Например,
75
+ # user: "Пользователь"
76
+ # переведет модель User как "Пользователь".
77
+ #
78
+ #
79
+ # Overrides default messages
80
+
81
+ # Перевод названий атрибутов моделей. Используется в Model.human_attribute_name(attribute).
82
+ #attributes:
83
+ # Например,
84
+ # user:
85
+ # name: "Имя"
86
+ # переведет атрибут name модели User как "Имя".
87
+ #
88
+ #
89
+ # Overrides model and default messages.
90
90
 
@@ -6,13 +6,20 @@
6
6
  #
7
7
  # Russian language pluralization rules, taken from CLDR project, http://unicode.org/cldr/
8
8
  #
9
- # one -> n mod 10 is 1 and n mod 100 is not 11;
10
- # few -> n mod 10 in 2..4 and n mod 100 not in 12..14;
11
- # many -> n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14;
12
- # other -> everything else
9
+ # one -> n mod 10 is 1 and n mod 100 is not 11;
10
+ # few -> n mod 10 in 2..4 and n mod 100 not in 12..14;
11
+ # many -> n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14;
12
+ # other -> everything else
13
+ #
14
+ # Examples
15
+ #
16
+ # one = 1, 21, 31, 41, 51, 61...
17
+ # few = 2-4, 22-24, 32-34...
18
+ # many = 0, 5-20, 25-30, 35-40...
19
+ # other = 1.31, 2.31, 5.31...
13
20
  if n.modulo(10) == 1 && n.modulo(100) != 11
14
21
  :one
15
- elsif (n.modulo(10) >=2 && n.modulo(10) <= 4) && (n.modulo(100) >=12 && n.modulo(100) <= 14)
22
+ elsif (n.modulo(10) >=2 && n.modulo(10) <= 4) && !(n.modulo(100) >=12 && n.modulo(100) <= 14)
16
23
  :few
17
24
  elsif n.modulo(10) == 0 || (n.modulo(10) >=5 && n.modulo(10) <= 9) ||
18
25
  (n.modulo(100) >= 11 && n.modulo(100) <= 14)
@@ -0,0 +1,38 @@
1
+ h1. I18nLabel
2
+
3
+ Since labels don't use I18n in Rails 2.2 (I was too late in submitting the
4
+ patch), we'd have to make due with a plugin.
5
+
6
+ Installation and configuration consists of 1 easy steps:
7
+
8
+ # Run:
9
+
10
+ ./script/plugin install git://github.com/iain/i18n_label.git
11
+
12
+
13
+ h1. Example
14
+
15
+ In your translation file:
16
+
17
+ en-US:
18
+ activerecord:
19
+ attributes:
20
+ topic:
21
+ name: A nice name
22
+
23
+ In your view:
24
+
25
+ <% form_for @topic do |f| %>
26
+ <%= f.label :name %>
27
+ <% end %>
28
+
29
+ The result is:
30
+
31
+ &lt;label for="topic_name">A nice name</label> (please ignore the minor problem with html in github)
32
+
33
+
34
+
35
+ For more information about where to put your translations,
36
+ visit "my blog":http://iain.nl/2008/09/translating-activerecord/
37
+
38
+ Copyright (c) 2008 "Iain Hecker":http://iain.nl/, released under the MIT license
@@ -0,0 +1,11 @@
1
+ require 'rake'
2
+ require 'spec/rake/spectask'
3
+
4
+ desc 'Default: run specs.'
5
+ task :default => :spec
6
+
7
+ desc 'Run the specs'
8
+ Spec::Rake::SpecTask.new(:spec) do |t|
9
+ t.spec_opts = ['--colour --format progress --loadby mtime --reverse']
10
+ t.spec_files = FileList['spec/**/*_spec.rb']
11
+ end
@@ -0,0 +1 @@
1
+ require File.dirname(__FILE__) + '/lib/i18n_label.rb'
@@ -0,0 +1 @@
1
+ File.readlines(File.dirname(__FILE__)+'/README.textile').each { |line| puts line }
@@ -0,0 +1,23 @@
1
+ # Just replace the method...
2
+ module ActionView
3
+ module Helpers
4
+ class InstanceTag
5
+ def to_label_tag(text = nil, options = {})
6
+ options = options.stringify_keys
7
+ name_and_id = options.dup
8
+ add_default_name_and_id(name_and_id)
9
+ options.delete("index")
10
+ options["for"] ||= name_and_id["id"]
11
+ if text.blank?
12
+ content = method_name.humanize
13
+ if object.class.respond_to?(:human_attribute_name)
14
+ content = object.class.human_attribute_name(method_name)
15
+ end
16
+ else
17
+ content = text.to_s
18
+ end
19
+ label_tag(name_and_id["id"], content, options)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,20 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ # give a model to play with
4
+ class Reply < ActiveRecord::Base
5
+ attr_accessor :title
6
+ end
7
+
8
+ describe ActionView::Helpers do
9
+
10
+ # NOTE gives deprication warning in RSpec 1.1.4:
11
+ # Modules will no longer be automatically included in RSpec version 1.1.4. Called from ./spec/i18n_label_spec.rb:15
12
+ it "label should make a call to human_attribute_name" do
13
+ Reply.should_receive(:human_attribute_name).with('title').and_return("translated title")
14
+ reply = mock_model(Reply)
15
+ fields_for(reply) do |f|
16
+ f.label(:title).should == "<label for=\"reply_title\">translated title</label>"
17
+ end
18
+ end
19
+
20
+ end
@@ -0,0 +1,10 @@
1
+ begin
2
+ require File.dirname(__FILE__) + '/../../../../spec/spec_helper'
3
+ rescue LoadError
4
+ puts "You need to install rspec in your base app"
5
+ exit
6
+ end
7
+
8
+ plugin_spec_dir = File.dirname(__FILE__)
9
+ ActiveRecord::Base.logger = Logger.new(plugin_spec_dir + "/debug.log")
10
+
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :i18n_label do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1 @@
1
+ puts "Bye!"
@@ -16,5 +16,8 @@ describe I18n, "Russian pluralization" do
16
16
  @backend.send(:pluralize, :'ru-RU', @hash, 29).should == 'вещей'
17
17
  @backend.send(:pluralize, :'ru-RU', @hash, 129).should == 'вещей'
18
18
  @backend.send(:pluralize, :'ru-RU', @hash, 131).should == 'вещь'
19
+ @backend.send(:pluralize, :'ru-RU', @hash, 1.31).should == 'вещи'
20
+ @backend.send(:pluralize, :'ru-RU', @hash, 2.31).should == 'вещи'
21
+ @backend.send(:pluralize, :'ru-RU', @hash, 3.31).should == 'вещи'
19
22
  end
20
23
  end
@@ -0,0 +1,109 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Russian, "loading locales" do
4
+ before(:all) do
5
+ Russian.init_i18n
6
+ end
7
+
8
+ %w(
9
+ date.formats.default
10
+ date.formats.short
11
+ date.formats.long
12
+ date.day_names
13
+ date.standalone_day_names
14
+ date.abbr_day_names
15
+ date.month_names
16
+ date.standalone_month_names
17
+ date.abbr_month_names
18
+ date.standalone_abbr_month_names
19
+ date.order
20
+
21
+ time.formats.default
22
+ time.formats.short
23
+ time.formats.long
24
+ time.am
25
+ time.pm
26
+ ).each do |key|
27
+ it "should define '#{key}' in datetime translations" do
28
+ lookup(key).should_not be_nil
29
+ end
30
+ end
31
+
32
+ it "should load pluralization rules" do
33
+ lookup(:"pluralize").should_not be_nil
34
+ lookup(:"pluralize").is_a?(Proc).should be_true
35
+ end
36
+
37
+ %w(
38
+ number.format.separator
39
+ number.format.delimiter
40
+ number.format.precision
41
+ number.currency.format.format
42
+ number.currency.format.unit
43
+ number.currency.format.separator
44
+ number.currency.format.delimiter
45
+ number.currency.format.precision
46
+ number.percentage.format.delimiter
47
+ number.percentage.format.precision
48
+ number.precision.format.delimiter
49
+ number.human.format.delimiter
50
+ number.human.format.precision
51
+
52
+ datetime.distance_in_words.half_a_minute
53
+ datetime.distance_in_words.less_than_x_seconds
54
+ datetime.distance_in_words.x_seconds
55
+ datetime.distance_in_words.less_than_x_minutes
56
+ datetime.distance_in_words.x_minutes
57
+ datetime.distance_in_words.about_x_hours
58
+ datetime.distance_in_words.x_days
59
+ datetime.distance_in_words.about_x_months
60
+ datetime.distance_in_words.x_months
61
+ datetime.distance_in_words.about_x_years
62
+ datetime.distance_in_words.over_x_years
63
+
64
+ activerecord.errors.template.header
65
+ activerecord.errors.template.body
66
+ ).each do |key|
67
+ it "should define '#{key}' in actionview translations" do
68
+ lookup(key).should_not be_nil
69
+ end
70
+ end
71
+
72
+ %w(
73
+ activerecord.errors.messages.inclusion
74
+ activerecord.errors.messages.exclusion
75
+ activerecord.errors.messages.invalid
76
+ activerecord.errors.messages.confirmation
77
+ activerecord.errors.messages.accepted
78
+ activerecord.errors.messages.empty
79
+ activerecord.errors.messages.blank
80
+ activerecord.errors.messages.too_long
81
+ activerecord.errors.messages.too_short
82
+ activerecord.errors.messages.wrong_length
83
+ activerecord.errors.messages.taken
84
+ activerecord.errors.messages.not_a_number
85
+ activerecord.errors.messages.greater_than
86
+ activerecord.errors.messages.greater_than_or_equal_to
87
+ activerecord.errors.messages.equal_to
88
+ activerecord.errors.messages.less_than
89
+ activerecord.errors.messages.less_than_or_equal_to
90
+ activerecord.errors.messages.odd
91
+ activerecord.errors.messages.even
92
+ ).each do |key|
93
+ it "should define '#{key}' in activerecord translations" do
94
+ lookup(key).should_not be_nil
95
+ end
96
+ end
97
+
98
+ %w(
99
+ support.array.sentence_connector
100
+ ).each do |key|
101
+ it "should define '#{key}' in activesupport translations" do
102
+ lookup(key).should_not be_nil
103
+ end
104
+ end
105
+
106
+ def lookup(*args)
107
+ I18n.backend.send(:lookup, Russian.locale, *args)
108
+ end
109
+ end
@@ -35,41 +35,6 @@ describe Russian do
35
35
  Russian.init_i18n
36
36
  I18n.default_locale.should == Russian.locale
37
37
  end
38
-
39
- describe "loading locales" do
40
- before(:all) do
41
- Russian.init_i18n
42
- end
43
-
44
- it "should load datetime translations" do
45
- lookup(:"date.formats.default").should_not be_nil
46
- lookup(:"time.formats.default").should_not be_nil
47
- end
48
-
49
- it "should load pluralization rules" do
50
- lookup(:"pluralize").should_not be_nil
51
- lookup(:"pluralize").is_a?(Proc).should be_true
52
- end
53
-
54
- it "should load actionview translations" do
55
- lookup(:"number.currency.format.format").should_not be_nil
56
- lookup(:"datetime.distance_in_words.half_a_minute").should_not be_nil
57
- lookup(:"activerecord.errors.template.header").should_not be_nil
58
- end
59
-
60
- it "should load activerecord translations" do
61
- lookup(:"activerecord.errors.messages.invalid").should_not be_nil
62
- lookup(:"activerecord.errors.messages.greater_than_or_equal_to").should_not be_nil
63
- end
64
-
65
- it "should load activesupport translations" do
66
- lookup(:"support.array.sentence_connector").should_not be_nil
67
- end
68
-
69
- def lookup(*args)
70
- I18n.backend.send(:lookup, Russian.locale, *args)
71
- end
72
- end
73
38
  end
74
39
 
75
40
  describe "with localize proxy" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: russian
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yaroslav Markin
@@ -9,7 +9,7 @@ autorequire: russian
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-09-01 00:00:00 +04:00
12
+ date: 2008-09-14 00:00:00 +04:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -64,10 +64,24 @@ files:
64
64
  - lib/vendor/i18n/test/locale/en-US.rb
65
65
  - lib/vendor/i18n/test/locale/en-US.yml
66
66
  - lib/vendor/i18n/test/simple_backend_test.rb
67
+ - lib/vendor/i18n_label
68
+ - lib/vendor/i18n_label/init.rb
69
+ - lib/vendor/i18n_label/install.rb
70
+ - lib/vendor/i18n_label/lib
71
+ - lib/vendor/i18n_label/lib/i18n_label.rb
72
+ - lib/vendor/i18n_label/Rakefile
73
+ - lib/vendor/i18n_label/README.textile
74
+ - lib/vendor/i18n_label/spec
75
+ - lib/vendor/i18n_label/spec/i18n_label_spec.rb
76
+ - lib/vendor/i18n_label/spec/spec_helper.rb
77
+ - lib/vendor/i18n_label/tasks
78
+ - lib/vendor/i18n_label/tasks/i18n_label_tasks.rake
79
+ - lib/vendor/i18n_label/uninstall.rb
67
80
  - spec/i18n
68
81
  - spec/i18n/locale
69
82
  - spec/i18n/locale/datetime_spec.rb
70
83
  - spec/i18n/locale/pluralization_spec.rb
84
+ - spec/locale_spec.rb
71
85
  - spec/russian_spec.rb
72
86
  - spec/spec_helper.rb
73
87
  has_rdoc: true