phrase 0.2.4 → 0.2.5
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.
- data/lib/phrase/api/client.rb +2 -1
- data/lib/phrase/tool.rb +13 -10
- data/lib/phrase/tool/options.rb +6 -1
- data/lib/phrase/version.rb +1 -1
- metadata +18 -18
data/lib/phrase/api/client.rb
CHANGED
|
@@ -86,13 +86,14 @@ class Phrase::Api::Client
|
|
|
86
86
|
end
|
|
87
87
|
end
|
|
88
88
|
|
|
89
|
-
def upload(filename, file_content, tags=[])
|
|
89
|
+
def upload(filename, file_content, tags=[], locale=nil)
|
|
90
90
|
begin
|
|
91
91
|
params = {
|
|
92
92
|
"filename" => filename,
|
|
93
93
|
"file_content" => file_content,
|
|
94
94
|
"tags[]" => tags
|
|
95
95
|
}
|
|
96
|
+
params["locale_name"] = locale unless locale.nil?
|
|
96
97
|
perform_api_request("/translation_keys/upload", :post, params)
|
|
97
98
|
rescue Phrase::Api::Exceptions::ServerError => e
|
|
98
99
|
raise "File #{filename} could not be uploaded"
|
data/lib/phrase/tool.rb
CHANGED
|
@@ -9,8 +9,9 @@ class Phrase::Tool
|
|
|
9
9
|
autoload :Options, 'phrase/tool/options'
|
|
10
10
|
autoload :TagValidator, 'phrase/tool/tag_validator'
|
|
11
11
|
|
|
12
|
-
ALLOWED_FILE_TYPES = %w(yml pot po)
|
|
13
|
-
ALLOWED_DOWNLOAD_FORMATS = %w(yml po)
|
|
12
|
+
ALLOWED_FILE_TYPES = %w(yml pot po xml strings json resx ts qph ini plist properties xlf)
|
|
13
|
+
ALLOWED_DOWNLOAD_FORMATS = %w(yml po xml strings json resx ts qph ini plist properties xlf)
|
|
14
|
+
FORMATS_CONTAINING_LOCALE = %q(po yml qph ts xlf)
|
|
14
15
|
DEFAULT_DOWNLOAD_FORMAT = "yml"
|
|
15
16
|
DEFAULT_TARGET_FOLDER = "phrase/locales/"
|
|
16
17
|
|
|
@@ -63,6 +64,8 @@ protected
|
|
|
63
64
|
def push
|
|
64
65
|
check_config_available
|
|
65
66
|
tags = @options.get(:tags)
|
|
67
|
+
locale = @options.get(:locale)
|
|
68
|
+
|
|
66
69
|
unless tags.empty? or valid_tags_are_given?(tags)
|
|
67
70
|
print_error "Invalid tags: Only letters, numbers, underscores and dashes are allowed"
|
|
68
71
|
exit(43)
|
|
@@ -74,7 +77,7 @@ protected
|
|
|
74
77
|
exit(43)
|
|
75
78
|
end
|
|
76
79
|
|
|
77
|
-
upload_files(files, tags)
|
|
80
|
+
upload_files(files, tags, locale)
|
|
78
81
|
end
|
|
79
82
|
|
|
80
83
|
def pull
|
|
@@ -110,10 +113,10 @@ usage: phrase <command> [<args>]
|
|
|
110
113
|
|
|
111
114
|
phrase init --secret=<YOUR SECRET> --default-locale=<DEFAULT LOCALE>
|
|
112
115
|
|
|
113
|
-
phrase push FILE [--tags=<tags>]
|
|
114
|
-
phrase push DIRECTORY [--tags=<tags>]
|
|
116
|
+
phrase push FILE [--tags=<tags>] [--locale=<locale>]
|
|
117
|
+
phrase push DIRECTORY [--tags=<tags>] [--locale=<locale>]
|
|
115
118
|
|
|
116
|
-
phrase pull [LOCALE] [--target=<target-folder>]
|
|
119
|
+
phrase pull [LOCALE] [--target=<target-folder>] [--format=<format>]
|
|
117
120
|
|
|
118
121
|
phrase --version
|
|
119
122
|
USAGE
|
|
@@ -153,13 +156,13 @@ private
|
|
|
153
156
|
end
|
|
154
157
|
end
|
|
155
158
|
|
|
156
|
-
def upload_files(files, tags=[])
|
|
159
|
+
def upload_files(files, tags=[], locale=nil)
|
|
157
160
|
files.each do |file|
|
|
158
|
-
upload_file(file, tags)
|
|
161
|
+
upload_file(file, tags, locale)
|
|
159
162
|
end
|
|
160
163
|
end
|
|
161
164
|
|
|
162
|
-
def upload_file(file, tags=[])
|
|
165
|
+
def upload_file(file, tags=[], locale=nil)
|
|
163
166
|
valid = true
|
|
164
167
|
|
|
165
168
|
if File.directory?(file)
|
|
@@ -175,7 +178,7 @@ private
|
|
|
175
178
|
begin
|
|
176
179
|
tagged = " (tagged: #{tags.join(", ")})" if tags.size > 0
|
|
177
180
|
print_message "Uploading #{file}#{tagged}..."
|
|
178
|
-
api_client.upload(file, File.read(file), tags)
|
|
181
|
+
api_client.upload(file, File.read(file), tags, locale)
|
|
179
182
|
print_message "OK"
|
|
180
183
|
rescue Exception => e
|
|
181
184
|
print_message "Failed"
|
data/lib/phrase/tool/options.rb
CHANGED
|
@@ -17,7 +17,8 @@ class Phrase::Tool::Options
|
|
|
17
17
|
},
|
|
18
18
|
push: {
|
|
19
19
|
tags: [],
|
|
20
|
-
recursive: false
|
|
20
|
+
recursive: false,
|
|
21
|
+
locale: nil
|
|
21
22
|
},
|
|
22
23
|
pull: {
|
|
23
24
|
format: "yml",
|
|
@@ -56,6 +57,10 @@ private
|
|
|
56
57
|
opts.on("-R", "--recursive", "Push files in subfolders as well (recursively)") do |recursive|
|
|
57
58
|
@data[command_name][:recursive] = true
|
|
58
59
|
end
|
|
60
|
+
|
|
61
|
+
opts.on("--locale=en", String, "Locale of the translations your file contain (required for formats that do not include the name of the locale in the file content)") do |locale|
|
|
62
|
+
@data[command_name][:locale] = locale
|
|
63
|
+
end
|
|
59
64
|
end
|
|
60
65
|
when :pull
|
|
61
66
|
OptionParser.new do |opts|
|
data/lib/phrase/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: phrase
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.5
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,11 +9,11 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-10-
|
|
12
|
+
date: 2012-10-19 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: activesupport
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &70191400504960 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ~>
|
|
@@ -21,10 +21,10 @@ dependencies:
|
|
|
21
21
|
version: '3.0'
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *70191400504960
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: addressable
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &70191400504500 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ~>
|
|
@@ -32,10 +32,10 @@ dependencies:
|
|
|
32
32
|
version: 2.2.8
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *70191400504500
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: json
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &70191400504120 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ! '>='
|
|
@@ -43,10 +43,10 @@ dependencies:
|
|
|
43
43
|
version: '0'
|
|
44
44
|
type: :runtime
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *70191400504120
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: rspec
|
|
49
|
-
requirement: &
|
|
49
|
+
requirement: &70191400503660 !ruby/object:Gem::Requirement
|
|
50
50
|
none: false
|
|
51
51
|
requirements:
|
|
52
52
|
- - ! '>='
|
|
@@ -54,10 +54,10 @@ dependencies:
|
|
|
54
54
|
version: '0'
|
|
55
55
|
type: :development
|
|
56
56
|
prerelease: false
|
|
57
|
-
version_requirements: *
|
|
57
|
+
version_requirements: *70191400503660
|
|
58
58
|
- !ruby/object:Gem::Dependency
|
|
59
59
|
name: i18n
|
|
60
|
-
requirement: &
|
|
60
|
+
requirement: &70191400503240 !ruby/object:Gem::Requirement
|
|
61
61
|
none: false
|
|
62
62
|
requirements:
|
|
63
63
|
- - ! '>='
|
|
@@ -65,10 +65,10 @@ dependencies:
|
|
|
65
65
|
version: '0'
|
|
66
66
|
type: :development
|
|
67
67
|
prerelease: false
|
|
68
|
-
version_requirements: *
|
|
68
|
+
version_requirements: *70191400503240
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: webmock
|
|
71
|
-
requirement: &
|
|
71
|
+
requirement: &70191400502820 !ruby/object:Gem::Requirement
|
|
72
72
|
none: false
|
|
73
73
|
requirements:
|
|
74
74
|
- - ! '>='
|
|
@@ -76,10 +76,10 @@ dependencies:
|
|
|
76
76
|
version: '0'
|
|
77
77
|
type: :development
|
|
78
78
|
prerelease: false
|
|
79
|
-
version_requirements: *
|
|
79
|
+
version_requirements: *70191400502820
|
|
80
80
|
- !ruby/object:Gem::Dependency
|
|
81
81
|
name: vcr
|
|
82
|
-
requirement: &
|
|
82
|
+
requirement: &70191400502400 !ruby/object:Gem::Requirement
|
|
83
83
|
none: false
|
|
84
84
|
requirements:
|
|
85
85
|
- - ! '>='
|
|
@@ -87,10 +87,10 @@ dependencies:
|
|
|
87
87
|
version: '0'
|
|
88
88
|
type: :development
|
|
89
89
|
prerelease: false
|
|
90
|
-
version_requirements: *
|
|
90
|
+
version_requirements: *70191400502400
|
|
91
91
|
- !ruby/object:Gem::Dependency
|
|
92
92
|
name: timecop
|
|
93
|
-
requirement: &
|
|
93
|
+
requirement: &70191400501980 !ruby/object:Gem::Requirement
|
|
94
94
|
none: false
|
|
95
95
|
requirements:
|
|
96
96
|
- - ! '>='
|
|
@@ -98,7 +98,7 @@ dependencies:
|
|
|
98
98
|
version: '0'
|
|
99
99
|
type: :development
|
|
100
100
|
prerelease: false
|
|
101
|
-
version_requirements: *
|
|
101
|
+
version_requirements: *70191400501980
|
|
102
102
|
description: phrase allows you to edit translations in-place on the page itself. More
|
|
103
103
|
information at phraseapp.com
|
|
104
104
|
email:
|