localeapp 1.0.1 → 1.0.2

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MzAxNGJkZThkNjM0NDY1MWFhODFhNDhlY2Q5ZGRkMDQzZTEzNzE3Ng==
4
+ ZmEzMjU2ZmQyMTM1NDcxY2MxNmY1MjA4ZGRiY2Y0ZTg0YjAzNjgyZQ==
5
5
  data.tar.gz: !binary |-
6
- NjVkNzMyNTE3OTRlOGI1MmRiMGMzMTgxY2Y5Yzg3YzNhNTlkYWZmNA==
6
+ YTEwOGFlMWY2OTVjZjQ0NjRmMmE1NmQzZDMwMTkxMmQ0Y2Y0ZTMwMQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NmJlNzRmYjQ3ZmUxZWRhM2FiNGExNzdlYzc4MTEzY2QzMjlhMGM1MDQ0MjNl
10
- MTBkYTg2YmZmNDAxYmVlY2RhNDIwMmU0YTk1ZTQ4MzMyNWUzNDNhYzM1YzU2
11
- ODNiOWM4Y2NiZmMxNDYyNjAyNDVmZTdkMjkyNDY2M2NhNGMzYjc=
9
+ NzViMWZmNjNlNGZlOGVjZTA4M2ZiOWZkMDMyMDM0NjhlMDVkYWFmYzQ2MzNj
10
+ MDAzOWZlNDM0NWQ0NGJiMTBhYWQ3OGQ2M2U4ODVlYjI2MDRlMjdmODI3ZDZh
11
+ YjM2Nzc2YjdlOWYxNDYxNzIxNjE1ZGM4YjU4Yzc4NzNiZjRlZWE=
12
12
  data.tar.gz: !binary |-
13
- ZTE3NWYyN2EzNDMxNGUxZGFlNmEyYjU2ZWNmN2NlYjMwM2E4OTdiYWRlMDVh
14
- NzVmY2EzM2E3NzVmYTUzYjM2ZWRiZTFkYjZiZjc0ODFmMmM0OGI1OTQ3ZDEw
15
- OGRkYmQyOWE1M2YzMjhmMDk3ZTkyMDA2ODc4NTQ5ZjZkYzI3MjU=
13
+ NGY5MDhhNzZjNzE5MGU1NDI1OTIwODljZWJlNzU1OWIyNDU5ODc3MjhiMmE0
14
+ ZDVlYjI4NDkzYTBkMWE3YjVmY2I0MjE0ODZkZTRhYzAxZGFhYTEzNjQxYWI5
15
+ YzcwYTgwMTNiNzg0OTljYTA0ODM3Yzk1NjMyZTc1OWYxNGY2YWU=
data/.gitignore CHANGED
@@ -3,6 +3,7 @@ pkg/*
3
3
  .bundle
4
4
  Gemfile.lock
5
5
  Gemfile.*.lock
6
+ gemfiles/*.gemfile.lock
6
7
  .yardoc/*
7
8
  doc/*
8
9
  tmp/*
data/.travis.yml CHANGED
@@ -2,22 +2,27 @@ before_install:
2
2
  - gem update bundler
3
3
  rvm:
4
4
  - 1.9.3
5
- - 2.0.0
6
- - 2.1.0
7
- - 2.2.0
5
+ - 2.0
6
+ - 2.1
7
+ - 2.2
8
8
  - jruby
9
9
  - jruby-head
10
10
  gemfile:
11
- - Gemfile.i18n_037
12
- - Gemfile.i18n_050
13
- - Gemfile.i18n_060
11
+ - gemfiles/i18n_0.3.gemfile
12
+ - gemfiles/i18n_0.4.gemfile
13
+ - gemfiles/i18n_0.5.gemfile
14
+ - gemfiles/i18n_0.6.gemfile
15
+ - gemfiles/i18n_0.7.gemfile
14
16
  matrix:
15
17
  exclude:
16
- - rvm: 2.0.0
17
- gemfile: Gemfile.i18n_037
18
- - rvm: 2.1.0
19
- gemfile: Gemfile.i18n_037
20
- - rvm: 2.2.0
21
- gemfile: Gemfile.i18n_037
18
+ - rvm: 2.0
19
+ gemfile: gemfiles/i18n_0.3.gemfile
20
+ - rvm: 2.1
21
+ gemfile: gemfiles/i18n_0.3.gemfile
22
+ - rvm: 2.2
23
+ gemfile: gemfiles/i18n_0.3.gemfile
22
24
  - rvm: jruby-head
23
- gemfile: Gemfile.i18n_037
25
+ gemfile: gemfiles/i18n_0.3.gemfile
26
+ notifications:
27
+ slack:
28
+ secure: JryUWfe2JR0cfNT+TIHwryy8NS8m9/hbRhg+5UqwuYWuEp6gtcWCA05wKsajQyRrGaNGYKu81RA9jpQrirgQWzDUJl5o3sEWbqKZv3pW0ybn8Tx52N1mxW3Puar5KLZ8TPRphKKIJ8/1EhAh4zpC5Mtxv8Sz1/AHuqnlu6l+bb4=
data/Appraisals ADDED
@@ -0,0 +1,20 @@
1
+ appraise "i18n-0.3" do
2
+ gem "i18n", "~> 0.3.0"
3
+ gem "activesupport", "~> 2.3.18"
4
+ end
5
+
6
+ appraise "i18n-0.4" do
7
+ gem "i18n", "~> 0.4.0"
8
+ end
9
+
10
+ appraise "i18n-0.5" do
11
+ gem "i18n", "~> 0.5.0"
12
+ end
13
+
14
+ appraise "i18n-0.6" do
15
+ gem "i18n", "~> 0.6.0"
16
+ end
17
+
18
+ appraise "i18n-0.7" do
19
+ gem "i18n", "~> 0.7.0"
20
+ end
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # master
2
2
 
3
+ # Version 1.0.2
4
+
5
+ * Fix a XSS vulnerability where translations keys could contain unescaped HTML (@grekko)
6
+
3
7
  # Version 1.0.1
4
8
 
5
9
  * Fix error when bundling with Rails >= 4.2 (due to a dependency on i18n < 0.7)
@@ -0,0 +1,12 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "i18n", "~> 0.3.0"
6
+ gem "activesupport", "~> 2.3.18"
7
+
8
+ platforms :jruby do
9
+ gem "jruby-openssl"
10
+ end
11
+
12
+ gemspec :path => "../"
@@ -0,0 +1,11 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "i18n", "~> 0.4.0"
6
+
7
+ platforms :jruby do
8
+ gem "jruby-openssl"
9
+ end
10
+
11
+ gemspec :path => "../"
@@ -0,0 +1,11 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "i18n", "~> 0.5.0"
6
+
7
+ platforms :jruby do
8
+ gem "jruby-openssl"
9
+ end
10
+
11
+ gemspec :path => "../"
@@ -0,0 +1,11 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "i18n", "~> 0.6.0"
6
+
7
+ platforms :jruby do
8
+ gem "jruby-openssl"
9
+ end
10
+
11
+ gemspec :path => "../"
@@ -0,0 +1,11 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "i18n", "~> 0.7.0"
6
+
7
+ platforms :jruby do
8
+ gem "jruby-openssl"
9
+ end
10
+
11
+ gemspec :path => "../"
@@ -1,16 +1,17 @@
1
1
  module Localeapp
2
2
  class ExceptionHandler
3
- def self.call(exception, locale, key, options)
3
+ def self.call(exception, locale, key_or_keys, options)
4
+ keys = Array(key_or_keys).map { |key| ERB::Util.html_escape(key.to_s) }
4
5
  Localeapp.log(exception.message)
5
6
  # Which exact exception is set up by our i18n shims
6
7
  if exception.is_a? Localeapp::I18nMissingTranslationException
7
- Localeapp.log("Detected missing translation for key(s) #{key.inspect}")
8
+ Localeapp.log("Detected missing translation for key(s) #{keys.inspect}")
8
9
 
9
- [*key].each do |key|
10
+ keys.each do |key|
10
11
  Localeapp.missing_translations.add(locale, key, nil, options || {})
11
12
  end
12
13
 
13
- [locale, key].join(', ')
14
+ [locale, keys].join(', ')
14
15
  else
15
16
  Localeapp.log('Raising exception')
16
17
  raise
@@ -1,3 +1,5 @@
1
+ require 'set'
2
+
1
3
  module Localeapp
2
4
  MissingTranslationRecord = Struct.new(:key, :locale, :description, :options) do
3
5
  def blacklisted?
@@ -10,7 +12,7 @@ module Localeapp
10
12
  end
11
13
 
12
14
  class MissingTranslations
13
- @cached_keys = []
15
+ @cached_keys = Set.new
14
16
 
15
17
  class << self
16
18
  attr_accessor :cached_keys
@@ -1,142 +1,25 @@
1
1
  require 'rack/utils'
2
2
 
3
+ require "localeapp/routes/base"
4
+ require "localeapp/routes/projects"
5
+ require "localeapp/routes/translations"
6
+ require "localeapp/routes/export"
7
+ require "localeapp/routes/remove"
8
+ require "localeapp/routes/rename"
9
+ require "localeapp/routes/missing_translations"
10
+ require "localeapp/routes/import"
11
+
3
12
  module Localeapp
4
13
  module Routes
5
14
  VERSION = 'v1'
6
15
 
7
- def project_endpoint(options = {})
8
- [:get, project_url(options)]
9
- end
10
-
11
- def project_url(options = {})
12
- options[:format] ||= 'json'
13
- http_scheme.build(base_options.merge(:path => project_path(options[:format]))).to_s
14
- end
15
-
16
- def translations_url(options={})
17
- options[:format] ||= 'yml'
18
- url = http_scheme.build(base_options.merge(:path => translations_path(options[:format])))
19
- url.query = options[:query].map { |k,v| "#{k}=#{v}" }.join('&') if options[:query]
20
- url.to_s
21
- end
22
-
23
- def translations_endpoint(options = {})
24
- [:get, translations_url(options)]
25
- end
26
-
27
- def create_translation_endpoint(options = {})
28
- [:post, translations_url(options)]
29
- end
30
-
31
- def export_endpoint(options = {})
32
- [:get, export_url(options)]
33
- end
34
-
35
- def remove_endpoint(options = {})
36
- [:delete, remove_url(options)]
37
- end
38
-
39
- def remove_url(options = {})
40
- url = http_scheme.build(base_options.merge(:path => remove_path(options[:key], options[:format])))
41
- url.to_s
42
- end
43
-
44
- def rename_endpoint(options = {})
45
- [:post, rename_url(options)]
46
- end
47
-
48
- def rename_url(options = {})
49
- url = http_scheme.build(base_options.merge(:path => rename_path(options[:current_name], options[:format])))
50
- url.to_s
51
- end
52
-
53
- def export_url(options = {})
54
- options[:format] ||= 'yml'
55
- url = http_scheme.build(base_options.merge(:path => export_path(options[:format])))
56
- url.query = options[:query].map { |k,v| "#{k}=#{v}" }.join('&') if options[:query]
57
- url.to_s
58
- end
59
-
60
- def missing_translations_endpoint(options = {})
61
- [:post, missing_translations_url(options)]
62
- end
63
-
64
- def missing_translations_url(options={})
65
- options[:format] ||= 'json'
66
- url = http_scheme.build(base_options.merge(:path => missing_translations_path(options[:format])))
67
- url.query = options[:query].map { |k,v| "#{k}=#{v}" }.join('&') if options[:query]
68
- url.to_s
69
- end
70
-
71
- def import_endpoint(options = {})
72
- [:post, import_url(options)]
73
- end
74
-
75
- def import_url(options={})
76
- http_scheme.build(base_options.merge(:path => import_path)).to_s
77
- end
78
-
79
- private
80
- def http_scheme
81
- if Localeapp.configuration.secure
82
- URI::HTTPS
83
- else
84
- URI::HTTP
85
- end
86
- end
87
-
88
- def base_options
89
- options = {:host => Localeapp.configuration.host, :port => Localeapp.configuration.port}
90
- if Localeapp.configuration.http_auth_username
91
- options[:userinfo] = "#{Localeapp.configuration.http_auth_username}:#{Localeapp.configuration.http_auth_password}"
92
- end
93
- options
94
- end
95
-
96
- def project_path(format = nil)
97
- path = "/#{VERSION}/projects/#{Localeapp.configuration.api_key}"
98
- path << ".#{format}" if format
99
- path
100
- end
101
-
102
- def translations_path(format = nil)
103
- path = project_path << '/translations'
104
- path << ".#{format}" if format
105
- path
106
- end
107
-
108
- def remove_path(key, format = nil)
109
- raise "remove_path requires a key" if key.nil?
110
- path = translations_path << "/#{escape_key(key)}"
111
- path << ".#{format}" if format
112
- path
113
- end
114
-
115
- def rename_path(current_name, format = nil)
116
- raise "rename_path requires current name" if current_name.nil?
117
- path = translations_path << "/#{escape_key(current_name)}" << '/rename'
118
- path << ".#{format}" if format
119
- path
120
- end
121
-
122
- def escape_key(key)
123
- Rack::Utils.escape(key).gsub(/\./, '%2E')
124
- end
125
-
126
- def export_path(format = nil)
127
- path = project_path << '/translations/all'
128
- path << ".#{format}" if format
129
- path
130
- end
131
-
132
- def missing_translations_path(format = nil)
133
- path = project_path << '/translations/missing'
134
- path << ".#{format}" if format
135
- path
136
- end
137
-
138
- def import_path(format = nil)
139
- project_path << '/import/'
140
- end
16
+ include Base
17
+ include Projects
18
+ include Translations
19
+ include Export
20
+ include Remove
21
+ include Rename
22
+ include MissingTranslations
23
+ include Import
141
24
  end
142
25
  end
@@ -0,0 +1,28 @@
1
+ module Localeapp
2
+ module Routes
3
+ module Base
4
+
5
+ private
6
+
7
+ def http_scheme
8
+ if Localeapp.configuration.secure
9
+ URI::HTTPS
10
+ else
11
+ URI::HTTP
12
+ end
13
+ end
14
+
15
+ def base_options
16
+ options = {:host => Localeapp.configuration.host, :port => Localeapp.configuration.port}
17
+ if Localeapp.configuration.http_auth_username
18
+ options[:userinfo] = "#{Localeapp.configuration.http_auth_username}:#{Localeapp.configuration.http_auth_password}"
19
+ end
20
+ options
21
+ end
22
+
23
+ def escape_key(key)
24
+ Rack::Utils.escape(key).gsub(/\./, '%2E')
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,24 @@
1
+ module Localeapp
2
+ module Routes
3
+ module Export
4
+ def export_endpoint(options = {})
5
+ [:get, export_url(options)]
6
+ end
7
+
8
+ def export_url(options = {})
9
+ options[:format] ||= 'yml'
10
+ url = http_scheme.build(base_options.merge(:path => export_path(options[:format])))
11
+ url.query = options[:query].map { |k,v| "#{k}=#{v}" }.join('&') if options[:query]
12
+ url.to_s
13
+ end
14
+
15
+ private
16
+
17
+ def export_path(format = nil)
18
+ path = project_path << '/translations/all'
19
+ path << ".#{format}" if format
20
+ path
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ module Localeapp
2
+ module Routes
3
+ module Import
4
+ def import_endpoint(options = {})
5
+ [:post, import_url(options)]
6
+ end
7
+
8
+ def import_url(options={})
9
+ http_scheme.build(base_options.merge(:path => import_path)).to_s
10
+ end
11
+
12
+ private
13
+
14
+ def import_path(format = nil)
15
+ project_path << '/import/'
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ module Localeapp
2
+ module Routes
3
+ module MissingTranslations
4
+ def missing_translations_endpoint(options = {})
5
+ [:post, missing_translations_url(options)]
6
+ end
7
+
8
+ def missing_translations_url(options={})
9
+ options[:format] ||= 'json'
10
+ url = http_scheme.build(base_options.merge(:path => missing_translations_path(options[:format])))
11
+ url.query = options[:query].map { |k,v| "#{k}=#{v}" }.join('&') if options[:query]
12
+ url.to_s
13
+ end
14
+
15
+ private
16
+
17
+ def missing_translations_path(format = nil)
18
+ path = project_path << '/translations/missing'
19
+ path << ".#{format}" if format
20
+ path
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,22 @@
1
+ module Localeapp
2
+ module Routes
3
+ module Projects
4
+ def project_endpoint(options = {})
5
+ [:get, project_url(options)]
6
+ end
7
+
8
+ def project_url(options = {})
9
+ options[:format] ||= 'json'
10
+ http_scheme.build(base_options.merge(:path => project_path(options[:format]))).to_s
11
+ end
12
+
13
+ private
14
+
15
+ def project_path(format = nil)
16
+ path = "/#{VERSION}/projects/#{Localeapp.configuration.api_key}"
17
+ path << ".#{format}" if format
18
+ path
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,23 @@
1
+ module Localeapp
2
+ module Routes
3
+ module Remove
4
+ def remove_endpoint(options = {})
5
+ [:delete, remove_url(options)]
6
+ end
7
+
8
+ def remove_url(options = {})
9
+ url = http_scheme.build(base_options.merge(:path => remove_path(options[:key], options[:format])))
10
+ url.to_s
11
+ end
12
+
13
+ private
14
+
15
+ def remove_path(key, format = nil)
16
+ raise "remove_path requires a key" if key.nil?
17
+ path = translations_path << "/#{escape_key(key)}"
18
+ path << ".#{format}" if format
19
+ path
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,24 @@
1
+ module Localeapp
2
+ module Routes
3
+ module Rename
4
+ def rename_endpoint(options = {})
5
+ [:post, rename_url(options)]
6
+ end
7
+
8
+ def rename_url(options = {})
9
+ url = http_scheme.build(base_options.merge(:path => rename_path(options[:current_name], options[:format])))
10
+ url.to_s
11
+ end
12
+
13
+ private
14
+
15
+ def rename_path(current_name, format = nil)
16
+ raise "rename_path requires current name" if current_name.nil?
17
+ path = translations_path << "/#{escape_key(current_name)}" << '/rename'
18
+ path << ".#{format}" if format
19
+ path
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,28 @@
1
+ module Localeapp
2
+ module Routes
3
+ module Translations
4
+ def translations_url(options={})
5
+ options[:format] ||= 'yml'
6
+ url = http_scheme.build(base_options.merge(:path => translations_path(options[:format])))
7
+ url.query = options[:query].map { |k,v| "#{k}=#{v}" }.join('&') if options[:query]
8
+ url.to_s
9
+ end
10
+
11
+ def translations_endpoint(options = {})
12
+ [:get, translations_url(options)]
13
+ end
14
+
15
+ def create_translation_endpoint(options = {})
16
+ [:post, translations_url(options)]
17
+ end
18
+
19
+ private
20
+
21
+ def translations_path(format = nil)
22
+ path = project_path << '/translations'
23
+ path << ".#{format}" if format
24
+ path
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,3 +1,3 @@
1
1
  module Localeapp
2
- VERSION = '1.0.1'
2
+ VERSION = "1.0.2"
3
3
  end
data/localeapp.gemspec CHANGED
@@ -34,4 +34,5 @@ Gem::Specification.new do |s|
34
34
  s.add_development_dependency('aruba', '~> 0.8')
35
35
  s.add_development_dependency('cucumber', '~> 2.0')
36
36
  s.add_development_dependency('fakeweb')
37
+ s.add_development_dependency('appraisal')
37
38
  end
@@ -26,10 +26,20 @@ describe Localeapp::ExceptionHandler, '#call(exception, locale, key, options)' d
26
26
  end
27
27
 
28
28
  it "handles when the default is a Symbol that can't be resolved" do
29
- expect(Localeapp.missing_translations).to receive(:add).with(:en, :foo, nil, {:default => :bar})
29
+ expect(Localeapp.missing_translations).to receive(:add).with(:en, 'foo', nil, {:default => :bar})
30
30
  I18n.t(:foo, :default => :bar)
31
31
  end
32
32
 
33
+ it "escapes html tags from keys to prevent xss attacks" do
34
+ expect(Localeapp.missing_translations).to receive(:add).with(:en, '&lt;script&gt;alert(1);&lt;/script&gt;', nil, {})
35
+ expect(I18n.t('<script>alert(1);</script>')).to eq 'en, &lt;script&gt;alert(1);&lt;/script&gt;'
36
+ end
37
+
38
+ it "joins locale and keys correctly" do
39
+ expect(I18n.t('foo.bar')).to eq 'en, foo.bar'
40
+ expect(I18n.t(%w{foo.bar foo.baz})).to eq 'en, foo.bar, foo.baz'
41
+ end
42
+
33
43
  it "handles missing translation exception" do
34
44
  expect {
35
45
  exception = Localeapp::I18nMissingTranslationException.new(:en, 'foo', {})
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: localeapp
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Dell
@@ -194,6 +194,20 @@ dependencies:
194
194
  - - ! '>='
195
195
  - !ruby/object:Gem::Version
196
196
  version: '0'
197
+ - !ruby/object:Gem::Dependency
198
+ name: appraisal
199
+ requirement: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - ! '>='
202
+ - !ruby/object:Gem::Version
203
+ version: '0'
204
+ type: :development
205
+ prerelease: false
206
+ version_requirements: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - ! '>='
209
+ - !ruby/object:Gem::Version
210
+ version: '0'
197
211
  description: Synchronizes i18n translation keys and content with localeapp.com so
198
212
  you don't have to manage translations by hand.
199
213
  email:
@@ -210,13 +224,10 @@ files:
210
224
  - .rspec
211
225
  - .rvmrc
212
226
  - .travis.yml
227
+ - Appraisals
213
228
  - CHANGELOG.md
214
229
  - CONTRIBUTING.md
215
230
  - Gemfile
216
- - Gemfile.github_project.rb
217
- - Gemfile.i18n_037
218
- - Gemfile.i18n_050
219
- - Gemfile.i18n_060
220
231
  - README.md
221
232
  - Rakefile
222
233
  - bin/localeapp
@@ -233,6 +244,11 @@ files:
233
244
  - features/support/env.rb
234
245
  - features/support/hooks.rb
235
246
  - features/update.feature
247
+ - gemfiles/i18n_0.3.gemfile
248
+ - gemfiles/i18n_0.4.gemfile
249
+ - gemfiles/i18n_0.5.gemfile
250
+ - gemfiles/i18n_0.6.gemfile
251
+ - gemfiles/i18n_0.7.gemfile
236
252
  - init.rb
237
253
  - lib/localeapp.rb
238
254
  - lib/localeapp/api_call.rb
@@ -261,6 +277,14 @@ files:
261
277
  - lib/localeapp/rails/force_exception_handler_in_translation_helper.rb
262
278
  - lib/localeapp/rails/mimic_rails_missing_translation_display.rb
263
279
  - lib/localeapp/routes.rb
280
+ - lib/localeapp/routes/base.rb
281
+ - lib/localeapp/routes/export.rb
282
+ - lib/localeapp/routes/import.rb
283
+ - lib/localeapp/routes/missing_translations.rb
284
+ - lib/localeapp/routes/projects.rb
285
+ - lib/localeapp/routes/remove.rb
286
+ - lib/localeapp/routes/rename.rb
287
+ - lib/localeapp/routes/translations.rb
264
288
  - lib/localeapp/sender.rb
265
289
  - lib/localeapp/sync_file.rb
266
290
  - lib/localeapp/tasks/localeapp.rake
@@ -1,9 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- group :development do
4
- gem "rspec", ">= 2.4.0"
5
- gem "bundler"
6
- gem "jeweler", "> 1.6.4"
7
- gem 'i18n-spec'
8
- gem 'localeapp'
9
- end
data/Gemfile.i18n_037 DELETED
@@ -1,13 +0,0 @@
1
- source 'https://rubygems.org'
2
- gemspec
3
-
4
- gem 'i18n', '0.3.7'
5
- gem 'activesupport', '~> 2.3.18'
6
-
7
- platforms :ruby do
8
- gem 'iconv'
9
- end
10
-
11
- platform :jruby do
12
- gem 'jruby-openssl'
13
- end
data/Gemfile.i18n_050 DELETED
@@ -1,8 +0,0 @@
1
- source 'https://rubygems.org'
2
- gemspec
3
-
4
- gem 'i18n', '0.5.0'
5
-
6
- platform :jruby do
7
- gem 'jruby-openssl'
8
- end
data/Gemfile.i18n_060 DELETED
@@ -1,8 +0,0 @@
1
- source 'https://rubygems.org'
2
- gemspec
3
-
4
- gem 'i18n', '~> 0.6.0'
5
-
6
- platform :jruby do
7
- gem 'jruby-openssl'
8
- end