fastlane-plugin-translate_gpt 0.1.7 → 0.1.8
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,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e16882ee4e890369a5c14b579f362303a3196e4238d4d3b3f685a9e6b4fb21a
|
4
|
+
data.tar.gz: 59719d66698e72c02ae4c625a68a9b5fe8d7dfc34023a5c329d0625bed27b2e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23f15a4ca667b24e958ca6775cd6894dc43b85ecf3e705f4270526af2428a1e7a947824b0bbf74132dbc0fa55059edd9020f1dad10946f5e345ae2d69d7997ac
|
7
|
+
data.tar.gz: d94703743059519b4e3c17ea988a7591c8f67b981d3d38a075ed8fc801ce952509c146e3fb3f92207102680b490cefbc103f325da85c0f7c7e1c2e0281255e0b
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'fastlane_core/ui/ui'
|
2
|
-
require 'loco_strings'
|
2
|
+
require 'loco_strings/parsers/xcstrings_file'
|
3
3
|
require 'json'
|
4
|
+
# rubocop:disable all
|
4
5
|
|
5
6
|
module Fastlane
|
6
7
|
UI = FastlaneCore::UI unless Fastlane.const_defined?("UI")
|
@@ -17,14 +18,34 @@ module Fastlane
|
|
17
18
|
end
|
18
19
|
|
19
20
|
def prepare_xcstrings()
|
20
|
-
@xcfile = LocoStrings.
|
21
|
+
@xcfile = LocoStrings::XCStringsFile.new @params[:source_file]
|
21
22
|
@output_hash = {}
|
22
23
|
@to_translate = @xcfile.read
|
24
|
+
|
23
25
|
if @params[:skip_translated] == true
|
24
|
-
@to_translate = @to_translate.reject { |k,
|
26
|
+
@to_translate = @to_translate.reject { |k, original|
|
27
|
+
!check_value_for_translate(
|
28
|
+
@xcfile.unit(k, @params[:target_language]),
|
29
|
+
original
|
30
|
+
)
|
31
|
+
}
|
25
32
|
end
|
26
33
|
end
|
27
34
|
|
35
|
+
def check_value_for_translate(string, orignal_string)
|
36
|
+
return true unless string
|
37
|
+
if string.is_a? LocoStrings::LocoString
|
38
|
+
return false if orignal_string.value.nil? || orignal_string.value.empty?
|
39
|
+
return string.value.empty?
|
40
|
+
elsif string.is_a? LocoStrings::LocoVariantions
|
41
|
+
orignal_string.strings.each do |key, _|
|
42
|
+
return true unless string.strings.has_key?(key)
|
43
|
+
return true if string.strings[key].value.empty?
|
44
|
+
end
|
45
|
+
end
|
46
|
+
return false
|
47
|
+
end
|
48
|
+
|
28
49
|
def prepare_strings()
|
29
50
|
@input_hash = get_strings(@params[:source_file])
|
30
51
|
@output_hash = get_strings(@params[:target_file])
|
@@ -86,6 +107,10 @@ module Fastlane
|
|
86
107
|
@keys_associations = {}
|
87
108
|
@to_translate.each_slice(bunch_size) do |bunch|
|
88
109
|
prompt = prepare_bunch_prompt bunch
|
110
|
+
if prompt.empty?
|
111
|
+
UI.important "Empty prompt, skipping bunch"
|
112
|
+
next
|
113
|
+
end
|
89
114
|
max_retries = 10
|
90
115
|
times_retried = 0
|
91
116
|
|
@@ -135,20 +160,37 @@ module Fastlane
|
|
135
160
|
|
136
161
|
json_hash = []
|
137
162
|
strings.each do |key, string|
|
163
|
+
UI.message "Translating #{key} - #{string}"
|
164
|
+
next if string.nil?
|
165
|
+
|
138
166
|
string_hash = {}
|
139
167
|
context = string.comment
|
140
|
-
if context && !context.empty?
|
141
|
-
|
142
|
-
end
|
168
|
+
string_hash["context"] = context if context && !context.empty?
|
169
|
+
|
143
170
|
key = transform_string(string.key)
|
144
171
|
@keys_associations[key] = string.key
|
145
172
|
string_hash["key"] = key
|
146
|
-
|
173
|
+
|
174
|
+
if string.is_a? LocoStrings::LocoString
|
175
|
+
next if string.value.nil? || string.value.empty?
|
176
|
+
string_hash["string_to_translate"] = string.value
|
177
|
+
elsif string.is_a? LocoStrings::LocoVariantions
|
178
|
+
variants = {}
|
179
|
+
string.strings.each do |key, variant|
|
180
|
+
next if variant.nil? || variant.value.nil? || variant.value.empty?
|
181
|
+
variants[key] = variant.value
|
182
|
+
end
|
183
|
+
string_hash["strings_to_translate"] = variants
|
184
|
+
else
|
185
|
+
UI.warning "Unknown type of string: #{string.key}"
|
186
|
+
end
|
147
187
|
json_hash << string_hash
|
148
188
|
end
|
189
|
+
return '' if json_hash.empty?
|
149
190
|
prompt += "'''\n"
|
150
191
|
prompt += json_hash.to_json
|
151
192
|
prompt += "\n'''"
|
193
|
+
UI.message "Prompt: #{prompt}"
|
152
194
|
return prompt
|
153
195
|
end
|
154
196
|
|
@@ -221,13 +263,21 @@ module Fastlane
|
|
221
263
|
string_hash.delete("key")
|
222
264
|
string_hash.delete("context")
|
223
265
|
translated_string = string_hash.values.first
|
224
|
-
|
225
|
-
|
266
|
+
return unless key && !key.empty?
|
267
|
+
real_key = @keys_associations[key]
|
268
|
+
if translated_string.is_a? Hash
|
269
|
+
strings = {}
|
270
|
+
translated_string.each do |pl_key, value|
|
271
|
+
UI.message "#{index_log} Translating #{real_key} > #{pl_key} - #{value}"
|
272
|
+
strings[pl_key] = LocoStrings::LocoString.new(pl_key, value, context)
|
273
|
+
end
|
274
|
+
string = LocoStrings::LocoVariantions.new(real_key, strings, context)
|
275
|
+
elsif translated_string && !translated_string.empty?
|
226
276
|
UI.message "#{index_log} Translating #{real_key} - #{translated_string}"
|
227
277
|
string = LocoStrings::LocoString.new(real_key, translated_string, context)
|
228
|
-
@output_hash[real_key] = string
|
229
|
-
keys_to_translate.delete(key)
|
230
278
|
end
|
279
|
+
@output_hash[real_key] = string
|
280
|
+
keys_to_translate.delete(key)
|
231
281
|
end
|
232
282
|
|
233
283
|
if keys_to_translate.length > 0
|
@@ -252,7 +302,13 @@ module Fastlane
|
|
252
302
|
else
|
253
303
|
@xcfile.update_file_path(@params[:target_file])
|
254
304
|
@output_hash.each do |key, value|
|
255
|
-
|
305
|
+
if value.is_a? LocoStrings::LocoString
|
306
|
+
@xcfile.update(key, value.value, value.comment, "translated", @params[:target_language])
|
307
|
+
elsif value.is_a? LocoStrings::LocoVariantions
|
308
|
+
value.strings.each do |pl_key, variant|
|
309
|
+
@xcfile.update_variation(key, pl_key, variant.value, variant.comment, "translated", @params[:target_language])
|
310
|
+
end
|
311
|
+
end
|
256
312
|
end
|
257
313
|
@xcfile.write
|
258
314
|
end
|
@@ -333,3 +389,5 @@ module Fastlane
|
|
333
389
|
end
|
334
390
|
end
|
335
391
|
end
|
392
|
+
|
393
|
+
# rubocop:enable all
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-translate_gpt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aleksei Cherepanov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ruby-openai
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.1.
|
33
|
+
version: 0.1.4.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.1.
|
40
|
+
version: 0.1.4.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|