r18n-rails-api 1.1.0 → 1.1.1

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.
@@ -37,14 +37,14 @@ module R18n
37
37
  scope, default, separator = options.values_at(*RESERVED_KEYS)
38
38
  params = options.reject { |name, value| RESERVED_KEYS.include?(name) }
39
39
 
40
- result = lookup(scope, key, separator, params)
40
+ result = lookup(locale, scope, key, separator, params)
41
41
 
42
42
  if result.is_a? Untranslated
43
43
  options = options.reject { |key, value| key == :default }
44
44
 
45
45
  Array(default).each do |entry|
46
46
  if entry.is_a? Symbol
47
- value = lookup(scope, entry, separator, params)
47
+ value = lookup(locale, scope, entry, separator, params)
48
48
  return value unless value.is_a? Untranslated
49
49
  else
50
50
  return entry
@@ -65,12 +65,13 @@ module R18n
65
65
  # +:only_day+ and +:only_second+) and R18n (+:full+, +:human+, +:standard+
66
66
  # and +:month+) time formatters.
67
67
  def localize(locale, object, format = :default, options = {})
68
+ i18n = get_i18n(locale)
68
69
  if format.is_a? Symbol
69
- key = format
70
+ key = format
70
71
  type = object.respond_to?(:sec) ? 'time' : 'date'
71
- format = R18n.get[type].formats[key] | format
72
+ format = i18n[type].formats[key] | format
72
73
  end
73
- R18n.get.localize(object, format)
74
+ i18n.localize(object, format)
74
75
  end
75
76
 
76
77
  # Return array of available locales codes.
@@ -85,6 +86,12 @@ module R18n
85
86
 
86
87
  protected
87
88
 
89
+ def get_i18n(locale)
90
+ i18n = R18n.get
91
+ i18n = R18n.change(locale.to_s) if i18n.locale.code != locale.to_s
92
+ i18n
93
+ end
94
+
88
95
  def format_value(result)
89
96
  if result.is_a? TranslatedString
90
97
  result.to_s
@@ -112,12 +119,12 @@ module R18n
112
119
 
113
120
  # Find translation by <tt>scope.key(params)</tt> in current R18n I18n
114
121
  # object.
115
- def lookup(scope, key, separator, params)
122
+ def lookup(locale, scope, key, separator, params)
116
123
  keys = (Array(scope) + Array(key)).map { |k|
117
124
  k.to_s.split(separator || ::I18n.default_separator) }.flatten
118
125
  last = keys.pop.to_sym
119
126
 
120
- result = keys.inject(R18n.get.t) do |node, key|
127
+ result = keys.inject(get_i18n(locale).t) do |node, key|
121
128
  if node.is_a? TranslatedString
122
129
  node.get_untranslated(key)
123
130
  else
@@ -33,15 +33,13 @@ module R18n
33
33
  # R18n::I18n.new('en',
34
34
  # R18n::Loader::Rails.new(I18n::Backend::ActiveRecord.new))
35
35
  class Rails
36
+ include ::R18n::YamlMethods
37
+
36
38
  # Create new loader for some +backend+ from Rails I18n. Backend must have
37
39
  # +reload!+, +init_translations+ and +translations+ methods.
38
40
  def initialize(backend = ::I18n::Backend::Simple.new)
39
41
  @backend = backend
40
- if ('1.8.' == RUBY_VERSION[0..3] || RUBY_PLATFORM == 'java')
41
- @private_type_class = ::YAML::PrivateType
42
- else
43
- @private_type_class = ::Syck::PrivateType
44
- end
42
+ detect_yaml_private_type
45
43
  end
46
44
 
47
45
  # Array of locales, which has translations in +I18n.load_path+.
@@ -52,6 +50,7 @@ module R18n
52
50
 
53
51
  # Return Hash with translations for +locale+.
54
52
  def load(locale)
53
+ initialize_types
55
54
  reload!
56
55
  @translations[locale.code.downcase]
57
56
  end
@@ -89,7 +88,7 @@ module R18n
89
88
  else
90
89
  Utils.hash_map(value) { |k, v| [k.to_s, transform(v)] }
91
90
  end
92
- elsif value.is_a? @private_type_class
91
+ elsif @private_type_class and value.is_a? @private_type_class
93
92
  Typed.new(value.type_id, value.value)
94
93
  else
95
94
  value
data/spec/backend_spec.rb CHANGED
@@ -9,7 +9,7 @@ describe R18n::Backend do
9
9
  end
10
10
 
11
11
  it "should return available locales" do
12
- I18n.available_locales.should =~ [:en]
12
+ I18n.available_locales.should =~ [:en, :ru]
13
13
  end
14
14
 
15
15
  it "should localize objects" do
@@ -108,4 +108,12 @@ describe R18n::Backend do
108
108
  }
109
109
  end
110
110
 
111
+ it "should change locale in place" do
112
+ I18n.load_path << PL
113
+ I18n.t('users', :count => 5).should == '5 users'
114
+ I18n.t('users', :count => 5, :locale => :ru).should == 'Много'
115
+
116
+ I18n.l(Date.parse('1970-01-01'), :locale => :ru).should == '01.01.1970'
117
+ end
118
+
111
119
  end
@@ -0,0 +1,4 @@
1
+ ru:
2
+ date:
3
+ formats:
4
+ default: "%d.%m.%Y"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: r18n-rails-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-15 00:00:00.000000000 Z
12
+ date: 2012-09-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: r18n-core
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 1.1.0
21
+ version: 1.1.1
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - '='
28
28
  - !ruby/object:Gem::Version
29
- version: 1.1.0
29
+ version: 1.1.1
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: i18n
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -186,6 +186,7 @@ files:
186
186
  - r18n-rails-api.gemspec
187
187
  - spec/backend_spec.rb
188
188
  - spec/data/general/en.yml
189
+ - spec/data/general/ru.yml
189
190
  - spec/data/other/en.yml
190
191
  - spec/data/other/ru.yml
191
192
  - spec/data/pl/ru.yml
@@ -209,7 +210,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
209
210
  version: '0'
210
211
  segments:
211
212
  - 0
212
- hash: 3135207149384542194
213
+ hash: -1841956301363324580
213
214
  required_rubygems_version: !ruby/object:Gem::Requirement
214
215
  none: false
215
216
  requirements:
@@ -218,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
218
219
  version: '0'
219
220
  segments:
220
221
  - 0
221
- hash: 3135207149384542194
222
+ hash: -1841956301363324580
222
223
  requirements: []
223
224
  rubyforge_project:
224
225
  rubygems_version: 1.8.23