fastlane-plugin-google_sheet_localize 0.2.10 → 0.3.0
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: 7226e41700dadff517f0fbb7d0963ee8ee5bf72f27f5c44b983b4bf9d537e058
|
4
|
+
data.tar.gz: 9585d8c9e5ddc5c6ee25687f979a9505b93bd9f0eeb5a44e99823e628ad6f96a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 32085198f4d2c22cd773f62c65fa11eb9e1cbe3fedbabdfb1925f798b47610eec039e9b6b7268e632e7a21ae0bba82ea7bc1f425927c084ab3c5cbfac24058d2
|
7
|
+
data.tar.gz: 38cf66f5caf4123ad4dfccc74049929cf2baed2f1f805c394094348ba3a7a5401b808cbe0a55ee2a6539ab2dc306e2dffdec1880e745831e7463cc04983a28cb
|
@@ -19,6 +19,7 @@ module Fastlane
|
|
19
19
|
base_language = params[:base_language]
|
20
20
|
code_generation_path = params[:code_generation_path]
|
21
21
|
identifier_name = params[:identifier_name]
|
22
|
+
comment_example_language = params[:comment_example_language]
|
22
23
|
|
23
24
|
if identifier_name.to_s.empty?
|
24
25
|
if platform == "ios"
|
@@ -32,6 +33,10 @@ module Fastlane
|
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
36
|
+
if comment_example_language.to_s.empty?
|
37
|
+
comment_example_language = default_language
|
38
|
+
end
|
39
|
+
|
35
40
|
spreadsheet = session.spreadsheet_by_url(spreadsheet_id)
|
36
41
|
|
37
42
|
filterdWorksheets = []
|
@@ -80,7 +85,7 @@ module Fastlane
|
|
80
85
|
end
|
81
86
|
end
|
82
87
|
}
|
83
|
-
self.createFiles(result, platform, path, default_language, base_language, code_generation_path)
|
88
|
+
self.createFiles(result, platform, path, default_language, base_language, code_generation_path, comment_example_language)
|
84
89
|
end
|
85
90
|
|
86
91
|
def self.generateJSONObject(contentRows, index, identifierIndex)
|
@@ -126,7 +131,7 @@ module Fastlane
|
|
126
131
|
}
|
127
132
|
end
|
128
133
|
|
129
|
-
def self.createFiles(languages, platform, destinationPath, defaultLanguage, base_language, codeGenerationPath)
|
134
|
+
def self.createFiles(languages, platform, destinationPath, defaultLanguage, base_language, codeGenerationPath, comment_example_language)
|
130
135
|
self.createFilesForLanguages(languages, platform, destinationPath, defaultLanguage, base_language)
|
131
136
|
|
132
137
|
if platform == "web"
|
@@ -175,7 +180,9 @@ module Fastlane
|
|
175
180
|
swiftPath = destinationPath
|
176
181
|
end
|
177
182
|
|
178
|
-
|
183
|
+
languageItems = languages.select { |item| item["language"] == comment_example_language }.first
|
184
|
+
|
185
|
+
filteredItems = self.filterUnusedRows(languageItems["items"],'identifier', "true")
|
179
186
|
|
180
187
|
swiftFilepath = "#{swiftPath}/#{swiftFilename}"
|
181
188
|
|
@@ -212,18 +219,47 @@ module Fastlane
|
|
212
219
|
arguments = self.findArgumentsInText(text)
|
213
220
|
|
214
221
|
if arguments.count == 0
|
215
|
-
f.write(
|
222
|
+
f.write(self.createComment(item['comment'], item['text']))
|
223
|
+
f.write("public static let #{constantName} = localized(identifier: \"#{identifier}\")\n")
|
216
224
|
else
|
217
|
-
f.write(self.
|
225
|
+
f.write(self.createComment(item['comment'], item['text']))
|
226
|
+
f.write(self.createiOSFunction(constantName, identifier, arguments))
|
218
227
|
end
|
219
228
|
}
|
220
229
|
f.write("\n}")
|
221
|
-
f.write(self.createiOSFileEndString())
|
230
|
+
f.write(self.createiOSFileEndString(destinationPath))
|
222
231
|
end
|
223
232
|
|
224
233
|
end
|
225
234
|
end
|
226
235
|
|
236
|
+
def self.createComment(comment, example)
|
237
|
+
|
238
|
+
if comment.to_s.empty?
|
239
|
+
return %Q(
|
240
|
+
/**
|
241
|
+
- Example:
|
242
|
+
````
|
243
|
+
#{example}
|
244
|
+
````
|
245
|
+
*/
|
246
|
+
)
|
247
|
+
end
|
248
|
+
|
249
|
+
return %Q(
|
250
|
+
/**
|
251
|
+
- Sheet comment:
|
252
|
+
````
|
253
|
+
#{comment}
|
254
|
+
````
|
255
|
+
- Example:
|
256
|
+
````
|
257
|
+
#{example}
|
258
|
+
````
|
259
|
+
*/
|
260
|
+
)
|
261
|
+
end
|
262
|
+
|
227
263
|
def self.createFilesForLanguages(languages, platform, destinationPath, defaultLanguage, base_language)
|
228
264
|
|
229
265
|
languages.each { |language|
|
@@ -382,30 +418,30 @@ module Fastlane
|
|
382
418
|
|
383
419
|
text = text.gsub("\n", "|")
|
384
420
|
|
385
|
-
line = line + "
|
421
|
+
line = line + " <plurals name=\"#{identifier}\">\n"
|
386
422
|
|
387
423
|
plural = ""
|
388
424
|
|
389
425
|
text.split("|").each_with_index { |word, wordIndex|
|
390
426
|
if wordIndex % 2 == 0
|
391
|
-
plural = "
|
427
|
+
plural = " <item quantity=\"#{word}\">"
|
392
428
|
else
|
393
429
|
plural = plural + "<![CDATA[#{word}]]></item>\n"
|
394
430
|
line = line + plural
|
395
431
|
end
|
396
432
|
}
|
397
|
-
line = line + "
|
433
|
+
line = line + " </plurals>\n"
|
398
434
|
elsif text.start_with?("[\"") && text.end_with?("\"]")
|
399
435
|
|
400
|
-
line = line + "
|
436
|
+
line = line + " <string-array name=\"#{identifier}\">\n"
|
401
437
|
|
402
438
|
JSON.parse(text).each { |arrayItem|
|
403
|
-
line = line + "
|
439
|
+
line = line + " <item><![CDATA[#{arrayItem}]]></item>\n"
|
404
440
|
}
|
405
441
|
|
406
|
-
line = line + "
|
442
|
+
line = line + " </string-array>\n"
|
407
443
|
else
|
408
|
-
line = line + "
|
444
|
+
line = line + " <string name=\"#{identifier}\"><![CDATA[#{text}]]></string>\n"
|
409
445
|
end
|
410
446
|
|
411
447
|
f.write(line)
|
@@ -416,12 +452,32 @@ module Fastlane
|
|
416
452
|
}
|
417
453
|
end
|
418
454
|
|
419
|
-
def self.createiOSFileEndString()
|
420
|
-
|
455
|
+
def self.createiOSFileEndString(destinationPath)
|
456
|
+
|
457
|
+
bundle = "let bundle = Bundle(for: LocalizationHelper.self)"
|
458
|
+
|
459
|
+
puts destinationPath
|
460
|
+
|
461
|
+
if destinationPath.include?(".bundle")
|
462
|
+
|
463
|
+
bundle = %Q(let bundleUrl = Bundle(for: LocalizationHelper.self).url(forResource: "#{destinationPath.split('/').last.gsub(".bundle", "")}", withExtension: "bundle")
|
464
|
+
\n\t\tlet bundle = Bundle(url: bundleUrl!))
|
465
|
+
end
|
466
|
+
|
467
|
+
return %Q(
|
468
|
+
\n\nprivate class LocalizationHelper { }
|
469
|
+
\n\nextension Localization {
|
470
|
+
\n\tprivate static func localized(identifier key: String, _ args: CVarArg...) -> String {
|
471
|
+
\n\t\t#{bundle}
|
472
|
+
\n\t\tlet format = NSLocalizedString(key, tableName: nil, bundle: bundle, comment: \"\")
|
473
|
+
\n\t\tguard !args.isEmpty else { return format }
|
474
|
+
\n\t\treturn String(format: format, locale: .current, arguments: args)
|
475
|
+
\n\t}
|
476
|
+
\n})
|
421
477
|
end
|
422
478
|
|
423
|
-
def self.createiOSFunction(constantName, identifier, arguments
|
424
|
-
functionTitle = "
|
479
|
+
def self.createiOSFunction(constantName, identifier, arguments)
|
480
|
+
functionTitle = "public static func #{constantName}("
|
425
481
|
|
426
482
|
arguments.each_with_index do |item, index|
|
427
483
|
functionTitle = functionTitle + "_ arg#{index}: #{item[:type]}"
|
@@ -534,6 +590,11 @@ module Fastlane
|
|
534
590
|
description: "Default Language",
|
535
591
|
optional: true,
|
536
592
|
type: String),
|
593
|
+
FastlaneCore::ConfigItem.new(key: :comment_example_language,
|
594
|
+
env_name: "COMMENT_EXAMPLE_LANGUAGE",
|
595
|
+
description: "Comment Example Language",
|
596
|
+
optional: true,
|
597
|
+
type: String),
|
537
598
|
FastlaneCore::ConfigItem.new(key: :base_language,
|
538
599
|
env_name: "BASE_LANGUAGE",
|
539
600
|
description: "Base language for Xcode projects",
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-google_sheet_localize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mario Hahn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google_drive
|