gettext_i18n_rails 0.2.8 → 0.2.9
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/gettext_i18n_rails.gemspec +2 -2
- data/lib/gettext_i18n_rails/backend.rb +24 -14
- data/lib/gettext_i18n_rails/i18n_hacks.rb +14 -0
- data/spec/gettext_i18n_rails/backend_spec.rb +12 -7
- metadata +3 -3
data/Rakefile
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'spec/rake/spectask'
|
2
|
-
Spec::Rake::SpecTask.new {|t| t.spec_opts = ['--color']}
|
2
|
+
Spec::Rake::SpecTask.new {|t| t.spec_opts = ['--color', '--backtrace']}
|
3
3
|
|
4
4
|
task :default do
|
5
5
|
puts `rake spec VERSION=2.3.9 RSPEC_COLOR=1`
|
@@ -20,4 +20,4 @@ begin
|
|
20
20
|
Jeweler::GemcutterTasks.new
|
21
21
|
rescue LoadError
|
22
22
|
puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install jeweler"
|
23
|
-
end
|
23
|
+
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.9
|
data/gettext_i18n_rails.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{gettext_i18n_rails}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.9"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Michael Grosser"]
|
12
|
-
s.date = %q{2010-10-
|
12
|
+
s.date = %q{2010-10-20}
|
13
13
|
s.email = %q{grosser.michael@gmail.com}
|
14
14
|
s.files = [
|
15
15
|
".gitignore",
|
@@ -14,21 +14,10 @@ module GettextI18nRails
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def translate(locale, key, options)
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
_(flat_key)
|
17
|
+
if gettext_key = gettext_key(key, options)
|
18
|
+
translation = FastGettext._(gettext_key)
|
19
|
+
interpolate(translation, options)
|
21
20
|
else
|
22
|
-
if self.class.translate_defaults
|
23
|
-
[*options[:default]].each do |default|
|
24
|
-
#try the more specific key first e.g. 'activerecord.errors.my custom message'
|
25
|
-
flat_key = flatten_key default, options
|
26
|
-
return FastGettext._(flat_key) if FastGettext.key_exist?(flat_key)
|
27
|
-
|
28
|
-
#try the short key thereafter e.g. 'my custom message'
|
29
|
-
return FastGettext._(default) if FastGettext.key_exist?(default)
|
30
|
-
end
|
31
|
-
end
|
32
21
|
backend.translate locale, key, options
|
33
22
|
end
|
34
23
|
end
|
@@ -39,6 +28,27 @@ module GettextI18nRails
|
|
39
28
|
|
40
29
|
protected
|
41
30
|
|
31
|
+
def gettext_key(key, options)
|
32
|
+
flat_key = flatten_key key, options
|
33
|
+
if FastGettext.key_exist?(flat_key)
|
34
|
+
flat_key
|
35
|
+
elsif self.class.translate_defaults
|
36
|
+
[*options[:default]].each do |default|
|
37
|
+
#try the scoped(more specific) key first e.g. 'activerecord.errors.my custom message'
|
38
|
+
flat_key = flatten_key default, options
|
39
|
+
return flat_key if FastGettext.key_exist?(flat_key)
|
40
|
+
|
41
|
+
#try the short key thereafter e.g. 'my custom message'
|
42
|
+
return default if FastGettext.key_exist?(default)
|
43
|
+
end
|
44
|
+
return nil
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def interpolate(string, values)
|
49
|
+
string % values.except(*I18n::Backend::Base::RESERVED_KEYS)
|
50
|
+
end
|
51
|
+
|
42
52
|
def flatten_key key, options
|
43
53
|
scope = [*(options[:scope] || [])]
|
44
54
|
scope.empty? ? key.to_s : "#{scope*'.'}.#{key}"
|
@@ -21,4 +21,18 @@ module I18n
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
24
|
+
|
25
|
+
# backport I18n.with_locale if it does not exist
|
26
|
+
unless respond_to?(:with_locale)
|
27
|
+
# Executes block with given I18n.locale set.
|
28
|
+
def with_locale(tmp_locale = nil)
|
29
|
+
if tmp_locale
|
30
|
+
current_locale = self.locale
|
31
|
+
self.locale = tmp_locale
|
32
|
+
end
|
33
|
+
yield
|
34
|
+
ensure
|
35
|
+
self.locale = current_locale if tmp_locale
|
36
|
+
end
|
37
|
+
end
|
24
38
|
end
|
@@ -12,29 +12,34 @@ describe GettextI18nRails::Backend do
|
|
12
12
|
subject.available_locales.should == [:xxx]
|
13
13
|
end
|
14
14
|
|
15
|
-
it "
|
16
|
-
FastGettext.should_receive(:available_locales)
|
15
|
+
it "and returns an empty array when FastGettext.available_locales is nil" do
|
16
|
+
FastGettext.should_receive(:available_locales).and_return nil
|
17
17
|
subject.available_locales.should == []
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
describe :translate do
|
22
|
-
it "uses gettext when the key is
|
23
|
-
FastGettext.
|
22
|
+
it "uses gettext when the key is translatable" do
|
23
|
+
FastGettext.stub(:current_repository).and_return 'xy.z.u'=>'a'
|
24
24
|
subject.translate('xx','u',:scope=>['xy','z']).should == 'a'
|
25
25
|
end
|
26
26
|
|
27
|
+
it "interpolates options" do
|
28
|
+
FastGettext.stub(:current_repository).and_return 'ab.c'=>'a%{a}b'
|
29
|
+
subject.translate('xx','c',:scope=>['ab'], :a => 'X').should == 'aXb'
|
30
|
+
end
|
31
|
+
|
27
32
|
it "can translate with gettext using symbols" do
|
28
|
-
FastGettext.
|
33
|
+
FastGettext.stub(:current_repository).and_return 'xy.z.v'=>'a'
|
29
34
|
subject.translate('xx',:v ,:scope=>['xy','z']).should == 'a'
|
30
35
|
end
|
31
36
|
|
32
37
|
it "can translate with gettext using a flat scope" do
|
33
|
-
FastGettext.
|
38
|
+
FastGettext.stub(:current_repository).and_return 'xy.z.x'=>'a'
|
34
39
|
subject.translate('xx',:x ,:scope=>'xy.z').should == 'a'
|
35
40
|
end
|
36
41
|
|
37
|
-
it "uses the super when the key is not
|
42
|
+
it "uses the super when the key is not translatable" do
|
38
43
|
lambda{subject.translate('xx','y',:scope=>['xy','z'])}.should raise_error(I18n::MissingTranslationData)
|
39
44
|
end
|
40
45
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 9
|
9
|
+
version: 0.2.9
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Michael Grosser
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-10-
|
17
|
+
date: 2010-10-20 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|