localeapp 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/.gitignore +1 -0
- data/.travis.yml +18 -13
- data/Appraisals +20 -0
- data/CHANGELOG.md +4 -0
- data/gemfiles/i18n_0.3.gemfile +12 -0
- data/gemfiles/i18n_0.4.gemfile +11 -0
- data/gemfiles/i18n_0.5.gemfile +11 -0
- data/gemfiles/i18n_0.6.gemfile +11 -0
- data/gemfiles/i18n_0.7.gemfile +11 -0
- data/lib/localeapp/exception_handler.rb +5 -4
- data/lib/localeapp/missing_translations.rb +3 -1
- data/lib/localeapp/routes.rb +17 -134
- data/lib/localeapp/routes/base.rb +28 -0
- data/lib/localeapp/routes/export.rb +24 -0
- data/lib/localeapp/routes/import.rb +19 -0
- data/lib/localeapp/routes/missing_translations.rb +24 -0
- data/lib/localeapp/routes/projects.rb +22 -0
- data/lib/localeapp/routes/remove.rb +23 -0
- data/lib/localeapp/routes/rename.rb +24 -0
- data/lib/localeapp/routes/translations.rb +28 -0
- data/lib/localeapp/version.rb +1 -1
- data/localeapp.gemspec +1 -0
- data/spec/localeapp/exception_handler_spec.rb +11 -1
- metadata +29 -5
- data/Gemfile.github_project.rb +0 -9
- data/Gemfile.i18n_037 +0 -13
- data/Gemfile.i18n_050 +0 -8
- data/Gemfile.i18n_060 +0 -8
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZmEzMjU2ZmQyMTM1NDcxY2MxNmY1MjA4ZGRiY2Y0ZTg0YjAzNjgyZQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YTEwOGFlMWY2OTVjZjQ0NjRmMmE1NmQzZDMwMTkxMmQ0Y2Y0ZTMwMQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NzViMWZmNjNlNGZlOGVjZTA4M2ZiOWZkMDMyMDM0NjhlMDVkYWFmYzQ2MzNj
|
10
|
+
MDAzOWZlNDM0NWQ0NGJiMTBhYWQ3OGQ2M2U4ODVlYjI2MDRlMjdmODI3ZDZh
|
11
|
+
YjM2Nzc2YjdlOWYxNDYxNzIxNjE1ZGM4YjU4Yzc4NzNiZjRlZWE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NGY5MDhhNzZjNzE5MGU1NDI1OTIwODljZWJlNzU1OWIyNDU5ODc3MjhiMmE0
|
14
|
+
ZDVlYjI4NDkzYTBkMWE3YjVmY2I0MjE0ODZkZTRhYzAxZGFhYTEzNjQxYWI5
|
15
|
+
YzcwYTgwMTNiNzg0OTljYTA0ODM3Yzk1NjMyZTc1OWYxNGY2YWU=
|
data/.gitignore
CHANGED
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
|
6
|
-
- 2.1
|
7
|
-
- 2.2
|
5
|
+
- 2.0
|
6
|
+
- 2.1
|
7
|
+
- 2.2
|
8
8
|
- jruby
|
9
9
|
- jruby-head
|
10
10
|
gemfile:
|
11
|
-
-
|
12
|
-
-
|
13
|
-
-
|
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
|
17
|
-
gemfile:
|
18
|
-
- rvm: 2.1
|
19
|
-
gemfile:
|
20
|
-
- rvm: 2.2
|
21
|
-
gemfile:
|
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:
|
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,16 +1,17 @@
|
|
1
1
|
module Localeapp
|
2
2
|
class ExceptionHandler
|
3
|
-
def self.call(exception, locale,
|
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) #{
|
8
|
+
Localeapp.log("Detected missing translation for key(s) #{keys.inspect}")
|
8
9
|
|
9
|
-
|
10
|
+
keys.each do |key|
|
10
11
|
Localeapp.missing_translations.add(locale, key, nil, options || {})
|
11
12
|
end
|
12
13
|
|
13
|
-
[locale,
|
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
|
data/lib/localeapp/routes.rb
CHANGED
@@ -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
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
data/lib/localeapp/version.rb
CHANGED
data/localeapp.gemspec
CHANGED
@@ -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,
|
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, '<script>alert(1);</script>', nil, {})
|
35
|
+
expect(I18n.t('<script>alert(1);</script>')).to eq 'en, <script>alert(1);</script>'
|
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.
|
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
|
data/Gemfile.github_project.rb
DELETED
data/Gemfile.i18n_037
DELETED
data/Gemfile.i18n_050
DELETED