r18n-rails-api 3.0.5 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.rspec DELETED
@@ -1 +0,0 @@
1
- --format documentation --colour --warnings --require spec_helper
data/Rakefile DELETED
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bundler/setup'
4
- Bundler::GemHelper.install_tasks
5
-
6
- require 'rspec/core/rake_task'
7
- RSpec::Core::RakeTask.new
8
- task default: :spec
9
-
10
- task :clobber_package do
11
- rm_rf 'pkg'
12
- end
13
- task clobber: [:clobber_package]
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../r18n-core/lib/r18n-core/version'
4
-
5
- Gem::Specification.new do |s|
6
- s.platform = Gem::Platform::RUBY
7
- s.name = 'r18n-rails-api'
8
- s.version = R18n::VERSION.dup
9
- s.date = Time.now.strftime('%Y-%m-%d')
10
-
11
- s.summary = 'Rails I18n compatibility for R18n'
12
- s.description = <<-DESC
13
- R18n backend for Rails I18n and R18n filters and loader to support Rails
14
- translation format.
15
- R18n has nice Ruby-style syntax, filters, flexible locales, custom loaders,
16
- translation support for any classes, time and number localization, several
17
- user language support, agnostic core package with out-of-box support for
18
- Rails, Sinatra and desktop applications.
19
- DESC
20
-
21
- s.files = `git ls-files`.split("\n")
22
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
23
- s.extra_rdoc_files = ['README.md', 'LICENSE']
24
- s.require_path = 'lib'
25
-
26
- s.author = 'Andrey Sitnik'
27
- s.email = 'andrey@sitnik.ru'
28
- s.homepage = 'https://github.com/ai/r18n/tree/master/r18n-rails-api'
29
- s.license = 'LGPL-3'
30
-
31
- s.add_dependency 'i18n'
32
- s.add_dependency 'r18n-core', "= #{R18n::VERSION}"
33
- end
data/spec/backend_spec.rb DELETED
@@ -1,125 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- describe R18n::Backend do
4
- before do
5
- I18n.load_path = [GENERAL]
6
- I18n.backend = R18n::Backend.new
7
- R18n.default_places = R18n::Loader::Rails.new
8
- R18n.set('en')
9
- end
10
-
11
- it 'returns available locales' do
12
- expect(I18n.available_locales).to match_array(%i[en ru])
13
- end
14
-
15
- it 'localizes objects' do
16
- time = Time.at(0).utc
17
- date = Date.parse('1970-01-01')
18
-
19
- expect(I18n.l(time)).to eq 'Thu, 01 Jan 1970 00:00:00 +0000'
20
- expect(I18n.l(date)).to eq '1970-01-01'
21
-
22
- expect(I18n.l(time, format: :short)).to eq '01 Jan 00:00'
23
- expect(I18n.l(time, format: :full)).to eq '1st of January, 1970 00:00'
24
-
25
- expect(I18n.l(-5000.5)).to eq '−5,000.5'
26
- end
27
-
28
- it 'translates by key and scope' do
29
- expect(I18n.t('in.another.level')).to eq 'Hierarchical'
30
- expect(I18n.t(:level, scope: 'in.another')).to eq 'Hierarchical'
31
- expect(I18n.t(:'another.level', scope: 'in')).to eq 'Hierarchical'
32
- end
33
-
34
- it 'uses pluralization and variables' do
35
- expect(I18n.t('users', count: 0)).to eq '0 users'
36
- expect(I18n.t('users', count: 1)).to eq '1 user'
37
- expect(I18n.t('users', count: 5)).to eq '5 users'
38
- end
39
-
40
- it 'uses another separator' do
41
- expect(I18n.t('in/another/level', separator: '/')).to eq 'Hierarchical'
42
- end
43
-
44
- it 'translates array' do
45
- expect(I18n.t(['in.another.level', 'in.default'])).to eq(
46
- %w[Hierarchical Default]
47
- )
48
- end
49
-
50
- it 'uses default value' do
51
- expect(I18n.t(:missed, default: 'Default')).to eq 'Default'
52
- expect(I18n.t(:missed, default: :default, scope: :in)).to eq 'Default'
53
- expect(I18n.t(:missed, default: %i[also_no in.default])).to eq 'Default'
54
- expect(I18n.t(:missed, default: proc { |key| key.to_s })).to eq 'missed'
55
- end
56
-
57
- it 'raises error on no translation' do
58
- expect(lambda {
59
- I18n.backend.translate(:en, :missed)
60
- }).to raise_error(::I18n::MissingTranslationData)
61
-
62
- expect(lambda {
63
- I18n.t(:missed)
64
- }).to raise_error(::I18n::MissingTranslationData)
65
- end
66
-
67
- it 'reloads translations' do
68
- expect(-> { I18n.t(:other) }).to raise_error(::I18n::MissingTranslationData)
69
- I18n.load_path << OTHER
70
- I18n.reload!
71
- expect(I18n.t(:other)).to eq 'Other'
72
- end
73
-
74
- it 'returns plain classes' do
75
- expect(I18n.t('in.another.level').class).to eq ActiveSupport::SafeBuffer
76
- expect(I18n.t('in.another').class).to eq Hash
77
- end
78
-
79
- it 'returns correct unpluralized hash' do
80
- expect(I18n.t('users')).to eq(one: '1 user', other: '%{count} users')
81
- end
82
-
83
- it 'corrects detect untranslated, whem path is deeper than string' do
84
- expect(lambda {
85
- I18n.t('in.another.level.deeper')
86
- }).to raise_error(::I18n::MissingTranslationData)
87
-
88
- expect(lambda {
89
- I18n.t('in.another.level.go.deeper')
90
- }).to raise_error(::I18n::MissingTranslationData)
91
- end
92
-
93
- it "doesn't call String methods" do
94
- expect(I18n.t('in.another').class).to eq Hash
95
- end
96
-
97
- it "doesn't call object methods" do
98
- expect(lambda {
99
- I18n.t('in.another.level.to_sym')
100
- }).to raise_error(::I18n::MissingTranslationData)
101
- end
102
-
103
- it 'works deeper pluralization' do
104
- expect(I18n.t('users.other', count: 5)).to eq '5 users'
105
- end
106
-
107
- it 'returns hash with symbols keys' do
108
- expect(I18n.t('in')).to eq(
109
- another: { level: 'Hierarchical' },
110
- default: 'Default'
111
- )
112
- end
113
-
114
- it 'changes locale in place' do
115
- I18n.load_path << PL
116
- expect(I18n.t('users', count: 5)).to eq '5 users'
117
- expect(I18n.t('users', count: 5, locale: :ru)).to eq 'Много'
118
-
119
- expect(I18n.l(Date.parse('1970-01-01'), locale: :ru)).to eq '01.01.1970'
120
- end
121
-
122
- it 'has transliterate method' do
123
- expect(I18n.transliterate('café')).to eq 'cafe'
124
- end
125
- end
@@ -1,21 +0,0 @@
1
- en:
2
- date:
3
- formats:
4
- default: "%Y-%m-%d"
5
- short: "%b %d"
6
- long: "%B %d, %Y"
7
-
8
- time:
9
- formats:
10
- default: "%a, %d %b %Y %H:%M:%S %z"
11
- short: "%d %b %H:%M"
12
- long: "%B %d, %Y %H:%M"
13
-
14
- in:
15
- another:
16
- level: Hierarchical
17
- default: Default
18
-
19
- users:
20
- one: 1 user
21
- other: "%{count} users"
@@ -1,4 +0,0 @@
1
- ru:
2
- date:
3
- formats:
4
- default: "%d.%m.%Y"
@@ -1,2 +0,0 @@
1
- en:
2
- other: Other
@@ -1,2 +0,0 @@
1
- ru:
2
- three: Три
data/spec/data/pl/ru.yml DELETED
@@ -1,6 +0,0 @@
1
- ru:
2
- users:
3
- zero: Ноль
4
- one: Один
5
- few: Несколько
6
- many: Много
@@ -1,2 +0,0 @@
1
- de-CH:
2
- a: 1
@@ -1,6 +0,0 @@
1
- en:
2
- users:
3
- zero: Zero
4
- one: One
5
- few: Few
6
- other: Other
@@ -1,3 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- { ru: { two: 'Два' } }
@@ -1,2 +0,0 @@
1
- ru:
2
- one: Один
data/spec/filters_spec.rb DELETED
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- describe 'Rails filters' do
4
- it 'uses named variables' do
5
- i18n = R18n::Translation.new(
6
- EN, '', locale: EN, translations: { 'echo' => 'Value is %{value}' }
7
- )
8
-
9
- expect(i18n.echo(value: 'R18n')).to eq 'Value is R18n'
10
- expect(i18n.echo(value: -5.5)).to eq 'Value is −5.5'
11
- expect(i18n.echo(value: 5000)).to eq 'Value is 5,000'
12
- expect(i18n.echo(value: '<b>')).to eq 'Value is &lt;b&gt;'
13
- expect(i18n.echo).to eq 'Value is %{value}'
14
- end
15
-
16
- it 'uses old variables syntax' do
17
- i18n = R18n::Translation.new(
18
- EN, '', locale: EN, translations: { 'echo' => 'Value is {{value}}' }
19
- )
20
- expect(i18n.echo(value: 'Old')).to eq 'Value is Old'
21
- end
22
-
23
- it 'pluralizes by variable %{count}' do
24
- i18n = R18n::Translation.new(
25
- EN, '', locale: EN, translations: {
26
- 'users' => R18n::Typed.new(
27
- 'pl',
28
- 0 => 'no users',
29
- 1 => '1 user',
30
- 'n' => '%{count} users'
31
- )
32
- }
33
- )
34
-
35
- expect(i18n.users(count: 0)).to eq 'no users'
36
- expect(i18n.users(count: 1)).to eq '1 user'
37
- expect(i18n.users(count: 5)).to eq '5 users'
38
- end
39
- end
data/spec/loader_spec.rb DELETED
@@ -1,60 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- describe R18n::Loader::Rails do
4
- before do
5
- I18n.load_path = [SIMPLE]
6
- @loader = R18n::Loader::Rails.new
7
- end
8
-
9
- it 'returns available locales' do
10
- expect(@loader.available).to match_array([DECH, EN, RU])
11
- end
12
-
13
- it 'loads translation' do
14
- expect(@loader.load(RU)).to eq('one' => 'Один', 'two' => 'Два')
15
- end
16
-
17
- it 'loads translation for dialects' do
18
- expect(@loader.load(DECH)).to eq('a' => 1)
19
- end
20
-
21
- it 'changes pluralization' do
22
- expect(@loader.load(EN)).to eq(
23
- 'users' => R18n::Typed.new(
24
- 'pl',
25
- 0 => 'Zero',
26
- 1 => 'One',
27
- 2 => 'Few',
28
- 'n' => 'Other'
29
- )
30
- )
31
- end
32
-
33
- it 'changes Russian pluralization' do
34
- I18n.load_path = [PL]
35
- expect(@loader.load(RU)).to eq(
36
- 'users' => R18n::Typed.new(
37
- 'pl',
38
- 0 => 'Ноль',
39
- 1 => 'Один',
40
- 2 => 'Несколько',
41
- 'n' => 'Много'
42
- )
43
- )
44
- end
45
-
46
- it 'reloads translations on load_path changes' do
47
- I18n.load_path << OTHER
48
- expect(@loader.load(RU)).to eq(
49
- 'one' => 'Один',
50
- 'two' => 'Два',
51
- 'three' => 'Три'
52
- )
53
- end
54
-
55
- it 'changes hash on load_path changes' do
56
- before = @loader.hash
57
- I18n.load_path << OTHER
58
- expect(@loader.hash).not_to eq before
59
- end
60
- end
data/spec/spec_helper.rb DELETED
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'pp'
4
- require 'i18n'
5
- require 'active_support'
6
-
7
- I18n.enforce_available_locales = true
8
-
9
- require_relative '../lib/r18n-rails-api'
10
-
11
- EN = R18n.locale(:en)
12
- RU = R18n.locale(:ru)
13
- DECH = R18n.locale(:'de-CH')
14
-
15
- GENERAL = Dir.glob(File.join(__dir__, 'data', 'general', '*'))
16
- SIMPLE = Dir.glob(File.join(__dir__, 'data', 'simple', '*'))
17
- OTHER = Dir.glob(File.join(__dir__, 'data', 'other', '*'))
18
- PL = Dir.glob(File.join(__dir__, 'data', 'pl', '*'))