phrase 0.4.24 → 0.4.25
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/phrase/api/client.rb +8 -5
- data/lib/phrase/tool/commands.rb +4 -2
- data/lib/phrase/tool/commands/pull.rb +10 -5
- data/lib/phrase/tool/commands/push.rb +2 -1
- data/lib/phrase/tool/options_factory.rb +8 -0
- data/lib/phrase/version.rb +1 -1
- metadata +27 -49
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d19161a8b74d93add452fa8141fd6a7c3218736c
|
4
|
+
data.tar.gz: ccc2ffadca6cac58332e772def7ccb8a00798a91
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7743e6c862f1191d1dbc06b16aa95e982e9d84633bcbb61a1361c9fed8c8d9c9d84d6935b6f0319e702d939397d34c141cba6d526353cdfc5c577ef782d36a0b
|
7
|
+
data.tar.gz: e0ab46de6616360e7d31aec7a7e5d64d41024307c3638dce43b92c049a473cf9d8cff26340ba44021e41b40bb33a6f19c84c291b8a99f5319defff69cbb67a77
|
data/lib/phrase/api/client.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
2
|
|
3
3
|
require 'cgi'
|
4
4
|
require 'json'
|
@@ -82,7 +82,7 @@ class Phrase::Api::Client
|
|
82
82
|
true
|
83
83
|
end
|
84
84
|
|
85
|
-
def download_translations_for_locale(name, format, tag=nil, updated_since=nil, include_empty_translations=nil)
|
85
|
+
def download_translations_for_locale(name, format, tag=nil, updated_since=nil, include_empty_translations=nil, convert_emoji=nil)
|
86
86
|
raise "You must specify a name" if name.nil? || name.blank?
|
87
87
|
raise "You must specify a format" if format.nil? || format.blank?
|
88
88
|
|
@@ -92,8 +92,10 @@ class Phrase::Api::Client
|
|
92
92
|
locale: name,
|
93
93
|
tag: tag,
|
94
94
|
updated_since: updated_since,
|
95
|
-
include_empty_translations: include_empty_translations ? "1" : nil
|
95
|
+
include_empty_translations: include_empty_translations ? "1" : nil,
|
96
|
+
convert_emoji: convert_emoji ? "1" : nil
|
96
97
|
}
|
98
|
+
|
97
99
|
content = perform_api_request("/translations/download", :get, params)
|
98
100
|
return content
|
99
101
|
rescue Phrase::Api::Exceptions::ServerError => e
|
@@ -101,7 +103,7 @@ class Phrase::Api::Client
|
|
101
103
|
end
|
102
104
|
end
|
103
105
|
|
104
|
-
def upload(filename, file_content, tags=[], locale=nil, format=nil, update_translations=false, skip_unverification=false, skip_upload_tags=false)
|
106
|
+
def upload(filename, file_content, tags=[], locale=nil, format=nil, update_translations=false, skip_unverification=false, skip_upload_tags=false, convert_emoji=false)
|
105
107
|
begin
|
106
108
|
params = {
|
107
109
|
"file_format" => format,
|
@@ -110,7 +112,8 @@ class Phrase::Api::Client
|
|
110
112
|
"tags[]" => tags,
|
111
113
|
"update_translations" => update_translations ? "1" : "0",
|
112
114
|
"skip_unverification" => skip_unverification ? "1" : "0",
|
113
|
-
"skip_upload_tags" => skip_upload_tags ? "1" : "0"
|
115
|
+
"skip_upload_tags" => skip_upload_tags ? "1" : "0",
|
116
|
+
"convert_emoji" => convert_emoji ? "1" : "0"
|
114
117
|
}
|
115
118
|
params["locale_name"] = locale unless locale.nil?
|
116
119
|
perform_api_request("/translation_keys/upload", :post, params)
|
data/lib/phrase/tool/commands.rb
CHANGED
@@ -23,14 +23,16 @@ module Phrase::Tool::Commands
|
|
23
23
|
format: nil,
|
24
24
|
update_translations: false,
|
25
25
|
skip_unverification: false,
|
26
|
-
skip_upload_tags: false
|
26
|
+
skip_upload_tags: false,
|
27
|
+
convert_emoji: nil
|
27
28
|
},
|
28
29
|
pull: {
|
29
30
|
format: nil,
|
30
31
|
target: nil,
|
31
32
|
tag: nil,
|
32
33
|
updated_since: nil,
|
33
|
-
include_empty_translations: nil
|
34
|
+
include_empty_translations: nil,
|
35
|
+
convert_emoji: nil
|
34
36
|
},
|
35
37
|
tags: {
|
36
38
|
list: true
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
1
|
+
# -*- encoding : utf-8 -*-f
|
2
2
|
|
3
3
|
class Phrase::Tool::Commands::Pull < Phrase::Tool::Commands::Base
|
4
4
|
ALLOWED_DOWNLOAD_FORMATS = Phrase::Formats::SUPPORTED_FORMATS.keys.map(&:to_s)
|
@@ -16,6 +16,7 @@ class Phrase::Tool::Commands::Pull < Phrase::Tool::Commands::Base
|
|
16
16
|
@tag = @options.get(:tag)
|
17
17
|
@updated_since = @options.get(:updated_since)
|
18
18
|
@include_empty_translations = @options.get(:include_empty_translations)
|
19
|
+
@convert_emoji = @options.get(:convert_emoji)
|
19
20
|
@target ||= Phrase::Formats.target_directory(@format) if format_valid?(@format)
|
20
21
|
end
|
21
22
|
|
@@ -23,14 +24,14 @@ class Phrase::Tool::Commands::Pull < Phrase::Tool::Commands::Base
|
|
23
24
|
(print_error("Invalid format: #{@format}") and exit_command) unless format_valid?(@format)
|
24
25
|
locales_to_download.compact.each do |locale|
|
25
26
|
print_message "Downloading #{locale.name}..."
|
26
|
-
fetch_translations_for_locale(locale, @format, @tag, @updated_since, @include_empty_translations)
|
27
|
+
fetch_translations_for_locale(locale, @format, @tag, @updated_since, @include_empty_translations, @convert_emoji)
|
27
28
|
end
|
28
29
|
end
|
29
30
|
|
30
31
|
private
|
31
|
-
def fetch_translations_for_locale(locale, format, tag=nil, updated_since=nil, include_empty_translations=nil)
|
32
|
+
def fetch_translations_for_locale(locale, format, tag=nil, updated_since=nil, include_empty_translations=nil, convert_emoji=nil)
|
32
33
|
begin
|
33
|
-
content = api_client.download_translations_for_locale(locale.name, format, tag, updated_since, include_empty_translations)
|
34
|
+
content = api_client.download_translations_for_locale(locale.name, format, tag, updated_since, include_empty_translations, convert_emoji)
|
34
35
|
store_content_in_locale_file(locale, content)
|
35
36
|
rescue Exception => e
|
36
37
|
print_error "Failed"
|
@@ -47,7 +48,7 @@ private
|
|
47
48
|
begin
|
48
49
|
FileUtils.mkpath(path)
|
49
50
|
File.open(target, "w") do |file|
|
50
|
-
file.write(content
|
51
|
+
file.write(encode(content))
|
51
52
|
end
|
52
53
|
print_message "Saved to #{clean_path target}".green
|
53
54
|
rescue
|
@@ -56,6 +57,10 @@ private
|
|
56
57
|
end
|
57
58
|
end
|
58
59
|
|
60
|
+
def encode content
|
61
|
+
content.force_encoding("UTF-8")
|
62
|
+
end
|
63
|
+
|
59
64
|
def clean_path(str)
|
60
65
|
str.gsub("/./", "/")
|
61
66
|
end
|
@@ -16,6 +16,7 @@ class Phrase::Tool::Commands::Push < Phrase::Tool::Commands::Base
|
|
16
16
|
@update_translations = @options.get(:update_translations)
|
17
17
|
@skip_unverification = @options.get(:skip_unverification)
|
18
18
|
@skip_upload_tags = @options.get(:skip_upload_tags)
|
19
|
+
@convert_emoji = @options.get(:convert_emoji)
|
19
20
|
end
|
20
21
|
|
21
22
|
def execute!
|
@@ -91,7 +92,7 @@ private
|
|
91
92
|
locale = Phrase::Tool::Locale.find_default_locale.try(:name)
|
92
93
|
end
|
93
94
|
locale = @locale if @locale
|
94
|
-
api_client.upload(file, file_content(file), @tags, locale, @format, @update_translations, @skip_unverification, @skip_upload_tags)
|
95
|
+
api_client.upload(file, file_content(file), @tags, locale, @format, @update_translations, @skip_unverification, @skip_upload_tags, @convert_emoji)
|
95
96
|
print_message "OK".green
|
96
97
|
rescue Exception => e
|
97
98
|
print_error "Failed"
|
@@ -71,6 +71,10 @@ class OptionsFactory
|
|
71
71
|
set[:skip_upload_tags] = skip_upload_tags
|
72
72
|
end
|
73
73
|
|
74
|
+
opts.on("--convert-emoji", "Convert Emojis to store and display them correctly in PhraseApp") do |convert_emoji|
|
75
|
+
set[:convert_emoji] = convert_emoji
|
76
|
+
end
|
77
|
+
|
74
78
|
opts.on("--secret=YOUR_AUTH_TOKEN", String, "The Auth Token to use for this operation instead of the saved one (optional)") do |secret|
|
75
79
|
set[:secret] = secret
|
76
80
|
end
|
@@ -100,6 +104,10 @@ class OptionsFactory
|
|
100
104
|
set[:include_empty_translations] = include_empty_translations
|
101
105
|
end
|
102
106
|
|
107
|
+
opts.on("--convert-emoji", "Convert Emoji symbols") do |convert_emoji|
|
108
|
+
set[:convert_emoji] = convert_emoji
|
109
|
+
end
|
110
|
+
|
103
111
|
opts.on("--secret=YOUR_AUTH_TOKEN", String, "The Auth Token to use for this operation instead of the saved one (optional)") do |secret|
|
104
112
|
set[:secret] = secret
|
105
113
|
end
|
data/lib/phrase/version.rb
CHANGED
metadata
CHANGED
@@ -1,174 +1,153 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phrase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.25
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Dynport GmbH
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-05-26 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: colorize
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: json
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: i18n
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rake
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: rspec
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: webmock
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: vcr
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - '>='
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - '>='
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '0'
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: timecop
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
|
-
- -
|
115
|
+
- - '>='
|
132
116
|
- !ruby/object:Gem::Version
|
133
117
|
version: '0'
|
134
118
|
type: :development
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
|
-
- -
|
122
|
+
- - '>='
|
140
123
|
- !ruby/object:Gem::Version
|
141
124
|
version: '0'
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: genspec
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
|
-
- -
|
129
|
+
- - '>='
|
148
130
|
- !ruby/object:Gem::Version
|
149
131
|
version: '0'
|
150
132
|
type: :development
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
|
-
- -
|
136
|
+
- - '>='
|
156
137
|
- !ruby/object:Gem::Version
|
157
138
|
version: '0'
|
158
139
|
- !ruby/object:Gem::Dependency
|
159
140
|
name: rails
|
160
141
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
142
|
requirements:
|
163
|
-
- -
|
143
|
+
- - '>='
|
164
144
|
- !ruby/object:Gem::Version
|
165
145
|
version: '0'
|
166
146
|
type: :development
|
167
147
|
prerelease: false
|
168
148
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
149
|
requirements:
|
171
|
-
- -
|
150
|
+
- - '>='
|
172
151
|
- !ruby/object:Gem::Version
|
173
152
|
version: '0'
|
174
153
|
description: phrase allows you to edit translations in-place on the page itself. More
|
@@ -264,26 +243,25 @@ files:
|
|
264
243
|
- phrase.gemspec
|
265
244
|
homepage: https://phraseapp.com
|
266
245
|
licenses: []
|
246
|
+
metadata: {}
|
267
247
|
post_install_message:
|
268
248
|
rdoc_options: []
|
269
249
|
require_paths:
|
270
250
|
- lib
|
271
251
|
required_ruby_version: !ruby/object:Gem::Requirement
|
272
|
-
none: false
|
273
252
|
requirements:
|
274
|
-
- -
|
253
|
+
- - '>='
|
275
254
|
- !ruby/object:Gem::Version
|
276
255
|
version: '0'
|
277
256
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
278
|
-
none: false
|
279
257
|
requirements:
|
280
|
-
- -
|
258
|
+
- - '>='
|
281
259
|
- !ruby/object:Gem::Version
|
282
260
|
version: 1.3.6
|
283
261
|
requirements: []
|
284
262
|
rubyforge_project: phrase
|
285
|
-
rubygems_version:
|
263
|
+
rubygems_version: 2.2.2
|
286
264
|
signing_key:
|
287
|
-
specification_version:
|
265
|
+
specification_version: 4
|
288
266
|
summary: The best way to manage i18n.
|
289
267
|
test_files: []
|