ripl-i18n 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gemspec +1 -1
- data/CHANGELOG.rdoc +4 -0
- data/README.rdoc +9 -3
- data/deps.rip +1 -1
- data/lib/ripl/i18n/locales/de.yml +4 -0
- data/lib/ripl/i18n/locales/en.yml +4 -0
- data/lib/ripl/i18n/locales/es.yml +4 -0
- data/lib/ripl/i18n/version.rb +1 -1
- data/lib/ripl/i18n.rb +7 -1
- data/test/i18n_test.rb +48 -29
- metadata +30 -4
data/.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.summary = "A ripl plugin que habla ta langue"
|
12
12
|
s.description = "A ripl plugin that translates ripl to your preferred language."
|
13
13
|
s.required_rubygems_version = ">= 1.3.6"
|
14
|
-
s.add_dependency 'ripl', '~> 0.4.
|
14
|
+
s.add_dependency 'ripl', '~> 0.4.1'
|
15
15
|
s.add_development_dependency 'bacon', '>= 1.1.0'
|
16
16
|
s.add_development_dependency 'bacon-bits'
|
17
17
|
s.rubyforge_project = 'tagaholic'
|
data/CHANGELOG.rdoc
CHANGED
data/README.rdoc
CHANGED
@@ -6,7 +6,11 @@ A ripl plugin that translates ripl to your preferred language.
|
|
6
6
|
Add to your ~/.riplrc:
|
7
7
|
|
8
8
|
require 'ripl/i18n'
|
9
|
-
|
9
|
+
|
10
|
+
If a locale exists for your language and is set via your shell variable $LANG,
|
11
|
+
this plugin automatically uses it. Otherwise, explicitly set your language with:
|
12
|
+
|
13
|
+
# :es maps to es.yml
|
10
14
|
Ripl.config[:i18n_locale] = :es
|
11
15
|
|
12
16
|
If you want to load and use your own locale:
|
@@ -19,12 +23,14 @@ If you want to load and use your own locale:
|
|
19
23
|
As I would like to make ripl available in as many languages as possible,
|
20
24
|
please do add your own! Here's all you have to do:
|
21
25
|
|
22
|
-
* Fork this project.
|
23
|
-
button}[https://github.com/blog/844-forking-with-the-edit-button].
|
26
|
+
* Fork this project.
|
24
27
|
* Create a .yml file under lib/ripl/i18n/locales/ for your language.
|
25
28
|
If you're not sure what locale to use for your language, {see
|
26
29
|
some examples}[https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale].
|
27
30
|
* Be sure to translate all the keys in lib/ripl/i18n/locales/en.yml.
|
28
31
|
|
32
|
+
== Credits
|
33
|
+
* janlelis for auto locale + de.yml
|
34
|
+
|
29
35
|
== Inspiration
|
30
36
|
http://yugui.jp/articles/863
|
data/deps.rip
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ripl ~>0.4.
|
1
|
+
ripl ~>0.4.1
|
@@ -12,3 +12,7 @@ load_rc: Ocurrió un error mientras cargando %s
|
|
12
12
|
parse_option: opción inválida
|
13
13
|
prompt: Ocurrió un error mientras creando prompt
|
14
14
|
print_result: Ocurrió un error impremiendo el resultado
|
15
|
+
usage: Uso
|
16
|
+
options: Opciones
|
17
|
+
args: ARGUMENTOS
|
18
|
+
command: COMANDO
|
data/lib/ripl/i18n/version.rb
CHANGED
data/lib/ripl/i18n.rb
CHANGED
@@ -32,6 +32,12 @@ module Ripl::I18n
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
+
def default_locale
|
36
|
+
( lang = ENV["LANG"] && ENV["LANG"][0,2] ) &&
|
37
|
+
File.exists?( File.dirname(__FILE__) + "/i18n/locales/#{lang}.yml" ) ?
|
38
|
+
lang.to_sym : :en
|
39
|
+
end
|
40
|
+
|
35
41
|
def internationalize
|
36
42
|
Ripl::Runner::OPTIONS.each { |opt, val| locales[:en][opt] = val[1] }
|
37
43
|
Ripl::Runner::OPTIONS.instance_eval %[
|
@@ -47,5 +53,5 @@ module Ripl::I18n
|
|
47
53
|
self.locales = {}
|
48
54
|
end
|
49
55
|
|
50
|
-
Ripl.config[:i18n_locale] ||=
|
56
|
+
Ripl.config[:i18n_locale] ||= Ripl::I18n.default_locale
|
51
57
|
Ripl::I18n.init
|
data/test/i18n_test.rb
CHANGED
@@ -33,7 +33,7 @@ describe Ripl::I18n do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
it "with the correct number of translations" do
|
36
|
-
Ripl::I18n.locales.values.each {|e| e.size.should ==
|
36
|
+
Ripl::I18n.locales.values.each {|e| e.size.should == 17 }
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -59,42 +59,61 @@ describe Ripl::I18n do
|
|
59
59
|
end
|
60
60
|
after_all { Ripl.config[:i18n_locale] = :en }
|
61
61
|
end
|
62
|
+
end
|
62
63
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
64
|
+
describe ".translate" do
|
65
|
+
before_all { Ripl::I18n.init }
|
66
|
+
it "returns translation missing message for missing translation" do
|
67
|
+
Ripl::I18n.translate('blah').should == "Translation missing: en.blah"
|
68
|
+
end
|
68
69
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
end
|
70
|
+
it "handles locales that haven't been defined yet" do
|
71
|
+
Ripl.config[:i18n_locale] = :zzz
|
72
|
+
Ripl::I18n.translate('-f').should =~ /^Translation missing/
|
73
|
+
Ripl.config[:i18n_locale] = :en
|
74
74
|
end
|
75
|
+
end
|
75
76
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
77
|
+
describe ".load" do
|
78
|
+
def fixture(name)
|
79
|
+
File.dirname(__FILE__) +"/fixtures/#{name}.yml"
|
80
|
+
end
|
80
81
|
|
81
|
-
|
82
|
+
before { Ripl::I18n.locales = {} }
|
82
83
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
84
|
+
it "prints warning for locale file with invalid syntax" do
|
85
|
+
capture_stderr {
|
86
|
+
Ripl::I18n.load(fixture('invalid_syntax'))
|
87
|
+
}.should =~ /^Error while loading/
|
88
|
+
end
|
88
89
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
90
|
+
it "sets locale using basename of locale file" do
|
91
|
+
Ripl::I18n.load fixture('rb')
|
92
|
+
Ripl::I18n.locales[:rb].should == {'-f' => 'woah dudez' }
|
93
|
+
end
|
93
94
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
95
|
+
it "skips locale if invalid basename" do
|
96
|
+
Ripl::I18n.load fixture('')
|
97
|
+
Ripl::I18n.locales.should.be.empty
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
describe '.default_locale' do
|
102
|
+
before { ENV['LANG'] = nil }
|
103
|
+
|
104
|
+
it "returns :en if no $LANG" do
|
105
|
+
ENV['LANG'] = nil
|
106
|
+
Ripl::I18n.default_locale.should == :en
|
107
|
+
end
|
108
|
+
|
109
|
+
it "returns :en if $LANG doesn't have an existing yml file" do
|
110
|
+
ENV['LANG'] = 'zzz'
|
111
|
+
Ripl::I18n.default_locale.should == :en
|
112
|
+
end
|
113
|
+
|
114
|
+
it "returns auto-detected locale if $LANG does have an existing yml file" do
|
115
|
+
ENV['LANG'] = 'es-PE'
|
116
|
+
Ripl::I18n.default_locale.should == :es
|
98
117
|
end
|
99
118
|
end
|
100
119
|
end
|
metadata
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ripl-i18n
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
4
|
+
hash: 23
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 0.2.0
|
6
11
|
platform: ruby
|
7
12
|
authors:
|
8
13
|
- Gabriel Horner
|
@@ -21,7 +26,12 @@ dependencies:
|
|
21
26
|
requirements:
|
22
27
|
- - ~>
|
23
28
|
- !ruby/object:Gem::Version
|
24
|
-
|
29
|
+
hash: 13
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
- 4
|
33
|
+
- 1
|
34
|
+
version: 0.4.1
|
25
35
|
type: :runtime
|
26
36
|
version_requirements: *id001
|
27
37
|
- !ruby/object:Gem::Dependency
|
@@ -32,6 +42,11 @@ dependencies:
|
|
32
42
|
requirements:
|
33
43
|
- - ">="
|
34
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 19
|
46
|
+
segments:
|
47
|
+
- 1
|
48
|
+
- 1
|
49
|
+
- 0
|
35
50
|
version: 1.1.0
|
36
51
|
type: :development
|
37
52
|
version_requirements: *id002
|
@@ -43,6 +58,9 @@ dependencies:
|
|
43
58
|
requirements:
|
44
59
|
- - ">="
|
45
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 3
|
62
|
+
segments:
|
63
|
+
- 0
|
46
64
|
version: "0"
|
47
65
|
type: :development
|
48
66
|
version_requirements: *id003
|
@@ -86,17 +104,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
86
104
|
requirements:
|
87
105
|
- - ">="
|
88
106
|
- !ruby/object:Gem::Version
|
107
|
+
hash: 3
|
108
|
+
segments:
|
109
|
+
- 0
|
89
110
|
version: "0"
|
90
111
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
112
|
none: false
|
92
113
|
requirements:
|
93
114
|
- - ">="
|
94
115
|
- !ruby/object:Gem::Version
|
116
|
+
hash: 23
|
117
|
+
segments:
|
118
|
+
- 1
|
119
|
+
- 3
|
120
|
+
- 6
|
95
121
|
version: 1.3.6
|
96
122
|
requirements: []
|
97
123
|
|
98
124
|
rubyforge_project: tagaholic
|
99
|
-
rubygems_version: 1.
|
125
|
+
rubygems_version: 1.3.7
|
100
126
|
signing_key:
|
101
127
|
specification_version: 3
|
102
128
|
summary: A ripl plugin que habla ta langue
|