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 +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