russian 0.1.3 → 0.2.0
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.
- data/CHANGELOG +10 -0
- data/Rakefile +2 -2
- data/TODO +0 -2
- data/lib/russian.rb +5 -4
- data/lib/russian/action_view_ext/helpers/date_helper.rb +2 -0
- data/lib/russian/active_record_ext/custom_error_message.rb +2 -0
- data/lib/russian/active_support_ext/parameterize.rb +2 -0
- data/lib/russian/backend/advanced.rb +2 -0
- data/lib/russian/locale/actionview.yml +19 -1
- data/lib/russian/locale/pluralize.rb +2 -0
- data/lib/russian/transliteration.rb +2 -0
- data/lib/vendor/i18n/i18n.gemspec +2 -2
- data/lib/vendor/i18n/lib/i18n.rb +5 -0
- data/lib/vendor/i18n/lib/i18n/backend/simple.rb +8 -10
- data/lib/vendor/i18n/test/simple_backend_test.rb +67 -1
- data/spec/i18n/locale/datetime_spec.rb +4 -2
- data/spec/i18n/locale/pluralization_spec.rb +2 -0
- data/spec/locale_spec.rb +2 -0
- data/spec/russian_spec.rb +8 -1
- data/spec/spec_helper.rb +2 -0
- data/spec/transliteration_spec.rb +2 -0
- metadata +33 -34
data/CHANGELOG
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
=== 0.2.0 - 16.03.2009
|
2
|
+
|
3
|
+
* number_to_human_size() translations: using edge format (Rails 2.3)
|
4
|
+
* i18n gem updated (0.1.3)
|
5
|
+
* Rails 2.3 compat
|
6
|
+
|
7
|
+
* Перевод для number_to_human_size(): испольуется форматирование из edge (Rails 2.3)
|
8
|
+
* Обновлен gem i18n до версии 0.1.3
|
9
|
+
* Совместимость с Rails 2.3
|
10
|
+
|
1
11
|
=== 0.1.3 - 27.12.2008
|
2
12
|
|
3
13
|
* Add support.array.words_connector/two_words_connector/last_word_connector (Array#to_sentence) (Rails Edge)
|
data/Rakefile
CHANGED
@@ -5,7 +5,7 @@ require 'rubygems/specification'
|
|
5
5
|
require 'date'
|
6
6
|
|
7
7
|
GEM = "russian"
|
8
|
-
GEM_VERSION = "0.
|
8
|
+
GEM_VERSION = "0.2.0"
|
9
9
|
AUTHOR = "Yaroslav Markin"
|
10
10
|
EMAIL = "yaroslav@markin.net"
|
11
11
|
HOMEPAGE = "http://github.com/yaroslav/russian/"
|
@@ -52,4 +52,4 @@ task :make_spec do
|
|
52
52
|
File.open("#{GEM}.gemspec", "w") do |file|
|
53
53
|
file.puts spec.to_ruby
|
54
54
|
end
|
55
|
-
end
|
55
|
+
end
|
data/TODO
CHANGED
@@ -4,8 +4,6 @@ TODO
|
|
4
4
|
* check Unicode CLDR to ensure all datetime formats are correct
|
5
5
|
* refactor Advanced backend localize method (looks ugly)
|
6
6
|
* refactor DateTimeSelector#translated_month_names
|
7
|
-
* stuff from english gem
|
8
|
-
* Countries list (not in Rails I18n)
|
9
7
|
|
10
8
|
Questionable
|
11
9
|
============
|
data/lib/russian.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
1
3
|
$KCODE='u'
|
2
4
|
|
3
5
|
$:.push File.join(File.dirname(__FILE__), 'russian')
|
@@ -24,8 +26,8 @@ module Russian
|
|
24
26
|
|
25
27
|
module VERSION
|
26
28
|
MAJOR = 0
|
27
|
-
MINOR =
|
28
|
-
TINY =
|
29
|
+
MINOR = 2
|
30
|
+
TINY = 0
|
29
31
|
|
30
32
|
STRING = [MAJOR, MINOR, TINY].join('.')
|
31
33
|
end
|
@@ -48,10 +50,9 @@ module Russian
|
|
48
50
|
# Init Russian i18n: set custom backend, set default locale to Russian locale, load all translations
|
49
51
|
# shipped with library.
|
50
52
|
def init_i18n
|
51
|
-
old_load_path = I18n.load_path
|
52
53
|
I18n.backend = Russian.i18n_backend_class.new
|
53
54
|
I18n.default_locale = LOCALE
|
54
|
-
I18n.load_path
|
55
|
+
I18n.load_path.unshift(*locale_files)
|
55
56
|
end
|
56
57
|
|
57
58
|
# See I18n::translate
|
@@ -49,7 +49,25 @@ ru:
|
|
49
49
|
# separator:
|
50
50
|
delimiter: ""
|
51
51
|
precision: 1
|
52
|
-
|
52
|
+
|
53
|
+
# Rails 2.2
|
54
|
+
# storage_units: [байт, КБ, МБ, ГБ, ТБ]
|
55
|
+
|
56
|
+
# Rails 2.3
|
57
|
+
storage_units:
|
58
|
+
# Storage units output formatting.
|
59
|
+
# %u is the storage unit, %n is the number (default: 2 MB)
|
60
|
+
format: "%n %u"
|
61
|
+
units:
|
62
|
+
byte:
|
63
|
+
one: "байт"
|
64
|
+
few: "байта"
|
65
|
+
many: "байт"
|
66
|
+
other: "байта"
|
67
|
+
kb: "КБ"
|
68
|
+
mb: "МБ"
|
69
|
+
gb: "ГБ"
|
70
|
+
tb: "ТБ"
|
53
71
|
|
54
72
|
# Используется в хелперах distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words()
|
55
73
|
#
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "i18n"
|
3
|
-
s.version = "0.1.
|
4
|
-
s.date = "
|
3
|
+
s.version = "0.1.3"
|
4
|
+
s.date = "2009-01-09"
|
5
5
|
s.summary = "Internationalization support for Ruby"
|
6
6
|
s.email = "rails-i18n@googlegroups.com"
|
7
7
|
s.homepage = "http://rails-i18n.org"
|
data/lib/vendor/i18n/lib/i18n.rb
CHANGED
@@ -45,6 +45,11 @@ module I18n
|
|
45
45
|
Thread.current[:locale] = locale
|
46
46
|
end
|
47
47
|
|
48
|
+
# Returns an array of locales for which translations are available
|
49
|
+
def available_locales
|
50
|
+
backend.available_locales
|
51
|
+
end
|
52
|
+
|
48
53
|
# Sets the exception handler.
|
49
54
|
def exception_handler=(exception_handler)
|
50
55
|
@@exception_handler = exception_handler
|
@@ -69,6 +69,12 @@ module I18n
|
|
69
69
|
@initialized ||= false
|
70
70
|
end
|
71
71
|
|
72
|
+
# Returns an array of locales for which translations are available
|
73
|
+
def available_locales
|
74
|
+
init_translations unless initialized?
|
75
|
+
translations.keys
|
76
|
+
end
|
77
|
+
|
72
78
|
def reload!
|
73
79
|
@initialized = false
|
74
80
|
@translations = nil
|
@@ -76,7 +82,7 @@ module I18n
|
|
76
82
|
|
77
83
|
protected
|
78
84
|
def init_translations
|
79
|
-
load_translations(*I18n.load_path)
|
85
|
+
load_translations(*I18n.load_path.flatten)
|
80
86
|
@initialized = true
|
81
87
|
end
|
82
88
|
|
@@ -145,12 +151,7 @@ module I18n
|
|
145
151
|
def interpolate(locale, string, values = {})
|
146
152
|
return string unless string.is_a?(String)
|
147
153
|
|
148
|
-
|
149
|
-
original_encoding = string.encoding
|
150
|
-
string.force_encoding(Encoding::BINARY)
|
151
|
-
end
|
152
|
-
|
153
|
-
result = string.gsub(MATCH) do
|
154
|
+
string.gsub(MATCH) do
|
154
155
|
escaped, pattern, key = $1, $2, $2.to_sym
|
155
156
|
|
156
157
|
if escaped
|
@@ -163,9 +164,6 @@ module I18n
|
|
163
164
|
values[key].to_s
|
164
165
|
end
|
165
166
|
end
|
166
|
-
|
167
|
-
result.force_encoding(original_encoding) if original_encoding
|
168
|
-
result
|
169
167
|
end
|
170
168
|
|
171
169
|
# Loads a single translations file by delegating to #load_rb or
|
@@ -124,6 +124,16 @@ class I18nSimpleBackendTranslationsTest < Test::Unit::TestCase
|
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
127
|
+
class I18nSimpleBackendAvailableLocalesTest < Test::Unit::TestCase
|
128
|
+
def test_available_locales
|
129
|
+
@backend = I18n::Backend::Simple.new
|
130
|
+
@backend.store_translations 'de', :foo => 'bar'
|
131
|
+
@backend.store_translations 'en', :foo => 'foo'
|
132
|
+
|
133
|
+
assert_equal ['de', 'en'], @backend.available_locales.map{|locale| locale.to_s }.sort
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
127
137
|
class I18nSimpleBackendTranslateTest < Test::Unit::TestCase
|
128
138
|
include I18nSimpleBackendTestSetup
|
129
139
|
|
@@ -243,6 +253,32 @@ class I18nSimpleBackendInterpolateTest < Test::Unit::TestCase
|
|
243
253
|
assert_equal 'Häi David!', @backend.send(:interpolate, nil, 'Häi {{name}}!', :name => 'David')
|
244
254
|
end
|
245
255
|
|
256
|
+
def test_interpolate_given_an_unicode_value_hash_interpolates_to_the_string
|
257
|
+
assert_equal 'Hi ゆきひろ!', @backend.send(:interpolate, nil, 'Hi {{name}}!', :name => 'ゆきひろ')
|
258
|
+
end
|
259
|
+
|
260
|
+
def test_interpolate_given_an_unicode_value_hash_interpolates_into_unicode_string
|
261
|
+
assert_equal 'こんにちは、ゆきひろさん!', @backend.send(:interpolate, nil, 'こんにちは、{{name}}さん!', :name => 'ゆきひろ')
|
262
|
+
end
|
263
|
+
|
264
|
+
if Kernel.const_defined?(:Encoding)
|
265
|
+
def test_interpolate_given_a_non_unicode_multibyte_value_hash_interpolates_into_a_string_with_the_same_encoding
|
266
|
+
assert_equal euc_jp('Hi ゆきひろ!'), @backend.send(:interpolate, nil, 'Hi {{name}}!', :name => euc_jp('ゆきひろ'))
|
267
|
+
end
|
268
|
+
|
269
|
+
def test_interpolate_given_an_unicode_value_hash_into_a_non_unicode_multibyte_string_raises_encoding_compatibility_error
|
270
|
+
assert_raises(Encoding::CompatibilityError) do
|
271
|
+
@backend.send(:interpolate, nil, euc_jp('こんにちは、{{name}}さん!'), :name => 'ゆきひろ')
|
272
|
+
end
|
273
|
+
end
|
274
|
+
|
275
|
+
def test_interpolate_given_a_non_unicode_multibyte_value_hash_into_an_unicode_string_raises_encoding_compatibility_error
|
276
|
+
assert_raises(Encoding::CompatibilityError) do
|
277
|
+
@backend.send(:interpolate, nil, 'こんにちは、{{name}}さん!', :name => euc_jp('ゆきひろ'))
|
278
|
+
end
|
279
|
+
end
|
280
|
+
end
|
281
|
+
|
246
282
|
def test_interpolate_given_nil_as_a_string_returns_nil
|
247
283
|
assert_nil @backend.send(:interpolate, nil, nil, :name => 'David')
|
248
284
|
end
|
@@ -262,6 +298,12 @@ class I18nSimpleBackendInterpolateTest < Test::Unit::TestCase
|
|
262
298
|
def test_interpolate_given_a_string_containing_a_reserved_key_raises_reserved_interpolation_key
|
263
299
|
assert_raises(I18n::ReservedInterpolationKey) { @backend.send(:interpolate, nil, '{{default}}', {:default => nil}) }
|
264
300
|
end
|
301
|
+
|
302
|
+
private
|
303
|
+
|
304
|
+
def euc_jp(string)
|
305
|
+
string.encode!(Encoding::EUC_JP)
|
306
|
+
end
|
265
307
|
end
|
266
308
|
|
267
309
|
class I18nSimpleBackendLocalizeDateTest < Test::Unit::TestCase
|
@@ -472,6 +514,30 @@ class I18nSimpleBackendLoadTranslationsTest < Test::Unit::TestCase
|
|
472
514
|
end
|
473
515
|
end
|
474
516
|
|
517
|
+
class I18nSimpleBackendLoadPathTest < Test::Unit::TestCase
|
518
|
+
include I18nSimpleBackendTestSetup
|
519
|
+
|
520
|
+
def teardown
|
521
|
+
I18n.load_path = []
|
522
|
+
end
|
523
|
+
|
524
|
+
def test_nested_load_paths_do_not_break_locale_loading
|
525
|
+
@backend = I18n::Backend::Simple.new
|
526
|
+
I18n.load_path = [[File.dirname(__FILE__) + '/locale/en.yml']]
|
527
|
+
assert_nil backend_get_translations
|
528
|
+
assert_nothing_raised { @backend.send :init_translations }
|
529
|
+
assert_not_nil backend_get_translations
|
530
|
+
end
|
531
|
+
|
532
|
+
def test_adding_arrays_of_filenames_to_load_path_do_not_break_locale_loading
|
533
|
+
@backend = I18n::Backend::Simple.new
|
534
|
+
I18n.load_path << Dir[File.dirname(__FILE__) + '/locale/*.{rb,yml}']
|
535
|
+
assert_nil backend_get_translations
|
536
|
+
assert_nothing_raised { @backend.send :init_translations }
|
537
|
+
assert_not_nil backend_get_translations
|
538
|
+
end
|
539
|
+
end
|
540
|
+
|
475
541
|
class I18nSimpleBackendReloadTranslationsTest < Test::Unit::TestCase
|
476
542
|
include I18nSimpleBackendTestSetup
|
477
543
|
|
@@ -499,4 +565,4 @@ class I18nSimpleBackendReloadTranslationsTest < Test::Unit::TestCase
|
|
499
565
|
@backend.reload!
|
500
566
|
assert_equal @backend.initialized?, false
|
501
567
|
end
|
502
|
-
end
|
568
|
+
end
|
@@ -1,7 +1,9 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
1
3
|
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
4
|
|
3
5
|
describe I18n, "Russian Date/Time localization" do
|
4
|
-
before(:
|
6
|
+
before(:all) do
|
5
7
|
@date = Date.parse("1985-12-01")
|
6
8
|
@time = Time.local(1985, 12, 01, 16, 05)
|
7
9
|
end
|
@@ -88,4 +90,4 @@ describe I18n, "Russian Date/Time localization" do
|
|
88
90
|
def l(object, options = {})
|
89
91
|
I18n.l(object, options.merge( { :locale => Russian.locale }))
|
90
92
|
end
|
91
|
-
end
|
93
|
+
end
|
data/spec/locale_spec.rb
CHANGED
data/spec/russian_spec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
1
3
|
require File.dirname(__FILE__) + '/spec_helper'
|
2
4
|
|
3
5
|
describe Russian, "VERSION" do
|
@@ -26,6 +28,11 @@ describe Russian do
|
|
26
28
|
end
|
27
29
|
|
28
30
|
describe "during i18n initialization" do
|
31
|
+
after(:each) do
|
32
|
+
I18n.load_path = []
|
33
|
+
Russian.init_i18n
|
34
|
+
end
|
35
|
+
|
29
36
|
it "should set I18n backend to an instance of a custom backend" do
|
30
37
|
Russian.init_i18n
|
31
38
|
I18n.backend.class.should == Russian.i18n_backend_class
|
@@ -126,4 +133,4 @@ describe Russian do
|
|
126
133
|
end
|
127
134
|
end
|
128
135
|
end
|
129
|
-
end
|
136
|
+
end
|
data/spec/spec_helper.rb
CHANGED
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.
|
4
|
+
version: 0.2.0
|
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:
|
12
|
+
date: 2009-03-16 00:00:00 +03:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -32,67 +32,66 @@ files:
|
|
32
32
|
- TODO
|
33
33
|
- init.rb
|
34
34
|
- lib/russian
|
35
|
-
- lib/russian/action_view_ext
|
36
|
-
- lib/russian/action_view_ext/helpers
|
37
|
-
- lib/russian/action_view_ext/helpers/date_helper.rb
|
38
35
|
- lib/russian/active_record_ext
|
39
36
|
- lib/russian/active_record_ext/custom_error_message.rb
|
40
37
|
- lib/russian/active_support_ext
|
41
38
|
- lib/russian/active_support_ext/parameterize.rb
|
42
|
-
- lib/russian/backend
|
43
|
-
- lib/russian/backend/advanced.rb
|
44
|
-
- lib/russian/core_ext
|
45
39
|
- lib/russian/locale
|
46
40
|
- lib/russian/locale/actionview.yml
|
41
|
+
- lib/russian/locale/pluralize.rb
|
42
|
+
- lib/russian/locale/datetime.yml
|
47
43
|
- lib/russian/locale/activerecord.yml
|
48
44
|
- lib/russian/locale/activesupport.yml
|
49
|
-
- lib/russian/
|
50
|
-
- lib/russian/
|
45
|
+
- lib/russian/action_view_ext
|
46
|
+
- lib/russian/action_view_ext/helpers
|
47
|
+
- lib/russian/action_view_ext/helpers/date_helper.rb
|
51
48
|
- lib/russian/transliteration.rb
|
52
|
-
- lib/russian
|
49
|
+
- lib/russian/backend
|
50
|
+
- lib/russian/backend/advanced.rb
|
53
51
|
- lib/vendor
|
54
52
|
- lib/vendor/i18n
|
53
|
+
- lib/vendor/i18n/test
|
54
|
+
- lib/vendor/i18n/test/i18n_exceptions_test.rb
|
55
|
+
- lib/vendor/i18n/test/simple_backend_test.rb
|
56
|
+
- lib/vendor/i18n/test/all.rb
|
57
|
+
- lib/vendor/i18n/test/i18n_test.rb
|
58
|
+
- lib/vendor/i18n/test/locale
|
59
|
+
- lib/vendor/i18n/test/locale/en.yml
|
60
|
+
- lib/vendor/i18n/test/locale/en.rb
|
55
61
|
- lib/vendor/i18n/i18n.gemspec
|
56
62
|
- lib/vendor/i18n/lib
|
63
|
+
- lib/vendor/i18n/lib/i18n.rb
|
57
64
|
- lib/vendor/i18n/lib/i18n
|
65
|
+
- lib/vendor/i18n/lib/i18n/exceptions.rb
|
58
66
|
- lib/vendor/i18n/lib/i18n/backend
|
59
67
|
- lib/vendor/i18n/lib/i18n/backend/simple.rb
|
60
|
-
- lib/vendor/i18n/lib/i18n/exceptions.rb
|
61
|
-
- lib/vendor/i18n/lib/i18n.rb
|
62
68
|
- lib/vendor/i18n/MIT-LICENSE
|
63
|
-
- lib/vendor/i18n/Rakefile
|
64
69
|
- lib/vendor/i18n/README.textile
|
65
|
-
- lib/vendor/i18n/
|
66
|
-
- lib/vendor/i18n/test/all.rb
|
67
|
-
- lib/vendor/i18n/test/i18n_exceptions_test.rb
|
68
|
-
- lib/vendor/i18n/test/i18n_test.rb
|
69
|
-
- lib/vendor/i18n/test/locale
|
70
|
-
- lib/vendor/i18n/test/locale/en.rb
|
71
|
-
- lib/vendor/i18n/test/locale/en.yml
|
72
|
-
- lib/vendor/i18n/test/simple_backend_test.rb
|
70
|
+
- lib/vendor/i18n/Rakefile
|
73
71
|
- lib/vendor/i18n_label
|
72
|
+
- lib/vendor/i18n_label/spec
|
73
|
+
- lib/vendor/i18n_label/spec/spec_helper.rb
|
74
|
+
- lib/vendor/i18n_label/spec/i18n_label_spec.rb
|
74
75
|
- lib/vendor/i18n_label/init.rb
|
75
76
|
- lib/vendor/i18n_label/install.rb
|
77
|
+
- lib/vendor/i18n_label/uninstall.rb
|
76
78
|
- lib/vendor/i18n_label/lib
|
77
79
|
- lib/vendor/i18n_label/lib/i18n_label.rb
|
78
|
-
- lib/vendor/i18n_label/Rakefile
|
79
80
|
- lib/vendor/i18n_label/README.textile
|
80
|
-
- lib/vendor/i18n_label/spec
|
81
|
-
- lib/vendor/i18n_label/spec/i18n_label_spec.rb
|
82
|
-
- lib/vendor/i18n_label/spec/spec_helper.rb
|
83
81
|
- lib/vendor/i18n_label/tasks
|
84
82
|
- lib/vendor/i18n_label/tasks/i18n_label_tasks.rake
|
85
|
-
- lib/vendor/i18n_label/
|
86
|
-
-
|
87
|
-
- spec/
|
88
|
-
- spec/
|
83
|
+
- lib/vendor/i18n_label/Rakefile
|
84
|
+
- lib/russian.rb
|
85
|
+
- spec/russian_spec.rb
|
86
|
+
- spec/spec_helper.rb
|
87
|
+
- spec/locale_spec.rb
|
89
88
|
- spec/i18n
|
90
89
|
- spec/i18n/locale
|
91
|
-
- spec/i18n/locale/datetime_spec.rb
|
92
90
|
- spec/i18n/locale/pluralization_spec.rb
|
93
|
-
- spec/
|
94
|
-
- spec/
|
95
|
-
- spec/
|
91
|
+
- spec/i18n/locale/datetime_spec.rb
|
92
|
+
- spec/fixtures
|
93
|
+
- spec/fixtures/ru.yml
|
94
|
+
- spec/fixtures/en.yml
|
96
95
|
- spec/transliteration_spec.rb
|
97
96
|
has_rdoc: true
|
98
97
|
homepage: http://github.com/yaroslav/russian/
|