-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbase.config.yaml
More file actions
689 lines (562 loc) · 24 KB
/
base.config.yaml
File metadata and controls
689 lines (562 loc) · 24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
---
#
# -------------------------------------------------------------
# ----------------- CROWDIN SETTINGS SECTION ------------------
# -------------------------------------------------------------
#
# Set defaults for Crowdin API integration for all of your projects.
# E.g., if all projects are hosted on your enterprise accounts,
# set `organization` here and you can omit it in crowdin.config.yaml.
#
# crowdin.config.yaml contains the exact same section.
# Any key present in crowdin.config.yaml overwrites these values.
# For security reasons, api token can only be set in crowdin.config.yaml.
# Never publish or share your API token or crowdin.config.yaml!
#
crowdin:
# Set to your organization name if the project is on enterprise account.
# Leave this empty, if the project is on crowdin.com.
organization: ""
# You CANNOT set it here, you can only set it in crowdin.config.yaml,
# which you should keep secret.
# token: <API TOKEN YOU GENERATE ON CROWDIN>
# Project ID on Crowdin.
project_id: 123456
#
# -------------------------------------------------------------
# ----------------- TASK DISCOVERY SECTION ------------------
# -------------------------------------------------------------
#
# Configure which tasks are available for execution
tasks:
test-lang:
module: "tasks.test_lang"
class: "ProcessTestAndHashLocales"
p4-checkout:
module: "tasks.p4_checkout"
class: "CheckoutAssets"
build-and-download:
module: "tasks.build_and_download"
class: "BuildAndDownloadTranslations"
ue-loc-gather-cmd:
module: "tasks.ue_loc_gather_cmd"
class: "UnrealLocGatherCommandlet"
update-source-files:
module: "tasks.update_source_files"
class: "UpdateSourceFile"
import-screens:
module: "tasks.import_screens"
class: "ImportScreenshots"
mt-pseudo:
module: "tasks.mt_pseudo"
class: "MTPseudo"
completion-rates:
module: "tasks.completion_rates"
class: "UpdateLanguageCompletionRates"
community-credits:
module: "tasks.community_credits"
class: "UpdateCommunityCredits"
po-csv-converter:
module: "tasks.po_csv_converter"
class: "UE_PO_CSV_Converter"
#
# -------------------------------------------------------------
# ----------------- LOCSYNC SETTINGS SECTION ------------------
# -------------------------------------------------------------
#
parameters:
# Should we stop if one task crashes or returns an error?
stop-on-errors: True
# Should we launch scripts that require unreal.py?
# Requires Unreal Python plugin to be enabled
# Launches scripts via unreal-cmd.exe to leverage the unreal.py
use-unreal: True
# Should we check out files from p4?
# By default, it checks out the whole Localization folder.
# You can also specify additional files for checkout in script settings below.
# UE editor P4 settings are used (Saved/Config/Windows/SourceControlSettings.ini)
p4-checkout: True
# Should we check in the files back to p4?
p4-checkin: False # TODO: implement this
# Default CL descripiton to use for check-outs and check-ins:
# TODO: check out the files into a separate CL with this description
p4-cl-desc: |
* Imported latest translations from Crowdin
* Updated language completion rates in the language selection menu
* Updated community translators in credits
* Updated the source file on Crowdin
################################
### Defaults for all scripts ###
################################
# Configure the default targets here and in script-parameters section.
# You can override these defaults in task lists
# (e.g., to have different prefixes in your debug IDs).
# PO Loc Targets: Prepped and uploaded as PO files
loc_targets: [Game, InputKeys]
# CSV Loc Targets: Prepped and converted to CSV, can be split
csv_loc_targets: [AllStringTables, Narrative]
# Default paths, relative to the script location
# Assume we're in Content/Python/loctools/
content_dir: ../../
project_dir: ../../../
engine_dir: ../../../../
# Relative to the engine directory
unreal_binary: Engine/Binaries/Win64/UnrealEditor-Cmd.exe # Standard UE5
# unreal_binary: Engine/Binaries/Win64/UE4Editor-Cmd.exe # Standard UE4
# -------------------------------------------------------------
# ----- SCRIPT PARAMETERS: SET DEFAULTS FOR SCRIPTS HERE ------
# -------------------------------------------------------------
script-parameters:
# Defining empty parameters here so that targets.py
# could run with command line parameters without any extra noise
targets:
source_target:
loc_targets:
locales:
### ### ### ### ### ### ### ### ### ### ### ### ###
# Create source locale (sorted, with debug IDs in context, with comments),
# which also serves as debug ID locale (simple unique debug IDs for all strings).
# And creating a Hash locale (basic pseudo-localization) if needed.
test-lang:
# loc_targets: [Game]
# Generate/update Excel file with all the strings from the specified loc targets
external_context_xlsx: ""
external_context_targets: []
external_context_create_backup: No
# External context to add to the PO entries (and CSVs later on)
additional_context:
# 'Title': ['List', 'of', 'files'] → will become Title: Context
# Leave title empty to skip the title label ( → Context)
Refs: [Localization/StringTableReferences.csv]
# Note: This is the recommended location for string table references
# in case you use CSLocTools to generate them: https://github.com/xabk/CSLocTools
# External context fields to add to the PO entries (in this order)
add_context_fields: [Context, MaxLength, Label, Refs, Screenshot]
skip_other_fields: Yes
# For CSV targets, Label and MaxLength will also go to their own columns
# Everything will be added to the comment field
hash_locale: ia # Set to '' (empty) to disable hash locale generation
hash_not_used_marker: NOT USED # If this is in comment, use not_used_prefix
hash_prefix: ‹
hash_suffix: ›
debug_ID_locale: io # Set to '' (empty) to disable debug ID locale generation
clear_translations: No
debug_prefix: "#" # Start over (clear_translations = True) if you change debug prefix
debug_separator: ":"
id_length: 4 # Start over (clear_translations = True) if you change id length
encoding: utf-8-sig
sort_po: No
sort_by_key: No
var_regex: '{[^}\[<]+}|<[^/>]+/>' # Looking for {variables} and <empty tags ... />
comments_criteria:
# Ths will add comments based on criteria (e.g., to explain a feature or syntax)
# Format is as follows:
# - - 'field' = PO entry field to search (msgctxt, msgid, msgstr, comment)
# - 'RegEx' = regex to use for checking
# - |-
# "Multiline comment that requires explicit \n for new lines"
# "This comment will be added if `RegEx` is found in the PO entry `field`"
- - msgid # Hint for lines with Unreal inline plurals
- '}\|plural\('
- |-
Please adapt to your language plural rules. We only support keywords:
zero, one, two, few, many, other
Check what the keywords mean: https://www.unicode.org/cldr/charts/47/supplemental/language_plural_rules.html.
delete_comments_criteria: [
"^Key:.*$", # Delete 'Key: NNN' comments: we have them in msgctxt
'InfoMetaData:\t".*?" : "\s*"', # Empty InfoMetaData fields
]
delete_occurrences: Yes # Delete occurences: we have them in SourceLocation comments
remove_source_loc_prefixes: [/Game, Source]
skip_empty_namespace: No
### ### ### ### ### ### ### ### ### ### ### ### ###
# Build the translation project on Crowdin, download it, unpack,
# move to the Unreal Localization directory to make it ready for import.
# Warning: This will overwrite any existing POs in Unreal Localization directory.
build-and-download:
# Set this to override project ID
# project_id: xx
loc_targets: [InputKeys]
# csv_loc_targets: []
# Relative to Content directory
zip_name: Localization/~Temp/LocFilesTemp.zip
temp_dir: Localization/~Temp/LocFilesTemp
dest_dir: Localization/{target}/
locales_to_delete: [en, en-US]
culture_mappings:
"af-ZA": "af"
"ar-SA": "ar"
"bg-BG": "bg"
"ca-ES": "ca"
"zh-CN": "zh-Hans"
"zh-TW": "zh-Hant"
"kw-GB": "kw"
"hr-HR": "hr"
"cs-CZ": "cs"
"da-DK": "da"
"nl-NL": "nl"
"en-AU": "en-AU"
"en-CA": "en-CA"
"en-PRT": "ia-001"
"en-SHAX": "vo"
"en-GB": "en-GB"
"eo-UY": "eo"
"et-EE": "et"
"fi-FI": "fi"
"fr-FR": "fr"
"de-DE": "de"
"el-GR": "el"
"he-IL": "he"
"hi-IN": "hi"
"hu-HU": "hu"
"id-ID": "id"
"it-IT": "it"
"ja-JP": "ja"
"ko-KR": "ko"
"lv-LV": "lv"
"lt-LT": "lt"
"lb-LU": "lb"
"mt-MT": "mt"
"no-NO": "no"
"fa-IR": "fa"
"pl-PL": "pl"
"pt-PT": "pt-PT"
"pt-BR": "pt-BR"
"ro-RO": "ro"
"ru-RU": "ru"
"sr-Cyrl": "sr-Cyrl"
"sr-Latn": "sr-Latn"
"sk-SK": "sk"
"es-ES": "es"
"es-MX": "es-419"
"sv-SE": "sv"
"th-TH": "th"
"tr-TR": "tr"
"uk-UA": "uk"
"vi-VN": "vi"
"cy-GB": "cy"
ignore_source_mismatch: No
ignore_unsafe_whitespace_mismatch: Yes
ignore_new_lines_mismatch: Yes
normalize_newlines_in_translation: Yes
### ### ### ### ### ### ### ### ### ### ### ### ###
# Check out Localization directory and any other assets from p4 server
p4-checkout:
# loc_targets: [Game]
add_assets_to_checkout: []
add_paths_to_checkout: []
config_name: "../Saved/Config/WindowsEditor/SourceControlSettings.ini" # UE5
# config_name: "../Saved/Config/Windows/SourceControlSettings.ini" # UE4
p4_config_section: "PerforceSourceControl.PerforceSourceControlSettings"
### ### ### ### ### ### ### ### ### ### ### ### ###
# Warning: For now this script only supports one config here, not in task lists.
# Warning: The ue-reimport-assets section is very sensitive to formatting
# because it's parsed without the yaml module.
# Add one asset per line like this (Copy Reference in UE):
# "AssetType'/Game/GameName/Path/To/Asset/Asset_Name.Asset_Name'",
# don't add any comments and don't change any other lines in this section.
ue-reimport-assets: # Don't change this line
assets_to_reimport: # Don't change this line, add assets one per line below
["DataTable'/Game/.../Name.Name'", "DataTable'/Game/.../Name.Name'"] # Don't change this line
### ### ### ### ### ### ### ### ### ### ### ### ###
# Run the Unreal gather text commandlet for any number of loc targets
# with any number of ini files as parameters
# Set the defaults here, and specify ini files (steps) in task lists
ue-loc-gather-cmd:
# loc_targets: [Game]
# Relative to Game/Content directory
tasks_to_perform: [Gather, Export]
# Steps to perform. Config/Localization .ini file suffixes:
# Gather, Export, Import, Сompile, GenerateReports, etc.
# Specify this in task lists to run specific tasks.
# E.g., [Gather, Export] or [Import, Compile, GenerateReports]
# Should we patch dependencies in *_Gather.ini files?
# This seems to be needed if the project and engine
# are in completely separate directories
try_patch_dependencies: No
# Logs to skip (to avoid irrelevant spam)
log_to_skip: ["LogLinker: "]
### ### ### ### ### ### ### ### ### ### ### ### ###
ue-loc-gather-cmd-2:
# loc_targets: [Game]
# Relative to Game/Content directory
tasks_to_perform: [Import, Compile, GenerateReports]
# Steps to perform. Config/Localization .ini file suffixes:
# Gather, Export, Import, Сompile, GenerateReports, etc.
# Specify this in task lists to run specific tasks.
# E.g., [Gather, Export] or [Import, Compile, GenerateReports]
# Should we patch dependencies in *_Gather.ini files?
# This seems to be needed if the project and engine
# are in completely separate directories
try_patch_dependencies: No
# Logs to skip (to avoid irrelevant spam)
log_to_skip: ["LogLinker: "]
### ### ### ### ### ### ### ### ### ### ### ### ###
# Update source files for several loc targets on Crowdin
update-source-files:
# Same script is used to add files to Crowdin:
# Set to Yes to only add files, without updating existing files.
add_files_only: No
# It's a good idea to use debug ID locale since it's enriched with context :)
src_locale: io
# Localization targets (PO)
loc_targets: [] # Reset here to avoid updating with defaults
# Localization targets (CSV)
csv_loc_targets: [] # Reset here to avoid updating with defaults
namespaces_to_skip: []
# Set this to Yes if you'd like to update the files manually
# E.g., to decide which translations to keep and which ones to drop
# Then the script will create the files and open the folder for you
# to upload the files manually
manual_upload: No
# Set this to yes if you want the script to wait until you upload the files
# (Recommended to set this to Yes if manual_upload is set to Yes)
wait_for_upload_confirmation: No
# Use Crowdin CLI to upload the files
# Config will be generated in the temp directory
# Requires Crowdin CLI to be installed and availalbe in PATH
cli_upload: Yes
# Branch for CLI upload, defaults to None / main branch
branch: ""
cli_cfg_name: "#Config/#crowdin.upload.yaml" # Will be generated in temp_dir
cli_sources_dir: "#Sources" # Relative to temp_dir
cli_csv_first_line_is_header: Yes
cli_csv_scheme: "identifier,source_phrase,translation,max_length,labels,context"
encoding: utf-8-sig
csv_dir: CSVs
split_csv_rules: [
[msgctxt, "([^,]*),.*", ""], # (string_table),key → {string_table}.csv
] # The lines that don't match any of these rules will be saved in {target}.csv
delete_unsafe_whitespace: No
delete_criteria:
# This will delete any entries that match any of the criteria before uploading
# Format is as follows:
# - - 'field' = PO entry field to search (msgctxt, msgid, msgstr, comment)
# - 'RegEx' = regex to use for checking
temp_dir: "Localization/~Temp"
### ### ### ### ### ### ### ### ### ### ### ### ###
# Import screens from links in strings context
# Defaults:
# - expects Doogle Drive links
# - .png screenshots
# - converts Google Drive view links to DL links
# - Google doesn't like scripts downloading things, so you might have to
# download screens in a few tries using VPNs...
import-screens:
src_google_drive: No
src_local: Yes
# Default file extension
def_ext: "png"
### Google Drive sourcing
# Link filter for Croql
# (part of the link common to all screenshots
# used to fetch strings with screenshot links from Crowdin)
link_croql_filter: "https://drive.google.com/file/d/"
# Link regex to extract link from comment
# Group 0 will be used as link
# Group 1 will be used as filename on Crowdin
# and as {name} to create a download link if dl_link is set
link_regex: "(https://drive.google.com/file/d/([^/]+)/view)"
# If set, it will be formatted with {name} and used to download the file
dl_link: "https://drive.google.com/uc?id={name}&export=download"
### Local sourcing
# Detach all screens to keep things tidy
# and avoid having a bunch of outdated screens attached to a string over time
# ### Filtered by `local_scr_name_prefix` ###
local_detach_all_auto_screens: Yes
# Delete all screens and reupload from scratch
# (useful if you want to clean up auto Screenshots on Crowdin)
# ### Filtered by `local_scr_name_prefix` ###
local_delete_all_auto_screens: No
# Base directory for screenshots
local_screens_base_dir: "../../LocalizationScreenshots"
# Subdirectory for screenshots, this is to allow for dirrerent types of screenshots
local_screens_sub_dir: "~"
local_scr_name_preprocessing: [
['(?<![\s^-])(?<!^)(?=[A-Z])', " "], # CamelCase → Camel Case
]
# Screenshot names prefixed before upload to make them easy to maintain
local_scr_name_prefix: "~~~"
local_croql_filter: ""
# If Yes, the script will try to find the main string, extract the key stem
# and use it to find all relevant strings
local_multi_tagging: Yes
### Local: Simple Tagging (UI context, etc.)
local_match_field: "context" # Crowdin field to match against
# {screenshot} will be replaced with the screenshot stem
local_match_regex: 'Screenshot:\s+{screenshot}'
### Local: Multi-Tagging (Cards, etc.)
# Only string keys matching this pattern will be used to match against screenshot names
local_all_strings_key_scope: "^Gameplay_Strings,(?!.*Intent).*_Name$"
# We exclude monster Intent cards since some of them have the same names as regular cards
# Group 1 will be used as a stem to find all relevant strings to attach the screenshot
local_extract_key_stem_pattern: "^(Gameplay_Strings,.*)_Name$"
# Patterns to filter out strings that are not relevant to the screenshot
local_relevant_strings_key_filter: ["^{stem}_.*$", "^{stem}Plus_.*$"]
# Patterns to exclude from filtered strings that are relevant to the screenshot
local_relevant_strings_key_exclude: []
# '^{stem}_NameModifier',
# E.g., we can exclude BaseKey_NameModifier strings
temp_dir: "Localization/~Temp/#Screenshots"
### ### ### ### ### ### ### ### ### ### ### ### ###
mt-pseudo:
# Project ID override, it's recommended not to use the main project for AI/MT
project_id: -1
loc_targets: [] # Reset here to avoid updating with defaults
languages:
"fr": "fr"
"it": "it"
"de": "de"
"es-ES": "es"
"zh-CN": "zh-Hans"
"zh-TW": "zh-Hant"
"ja": "ja"
"ko": "ko"
"pl": "pl"
"pt-BR": "pt-BR"
"ru": "ru"
"tr": "tr"
locales_to_skip: [io, ia]
engine_id: 0
file_format: gettext_unreal # gettext_unreal
src_locale: io
longest_locale: en-AE
export_pattern: "/{target}/%locale%/{target}.po"
po_encoding: "utf-8-sig"
prefix: "‹"
suffix: "›"
filler: "~"
var_regex: "{[^}]*}"
tags_regex: "<[^>]*>"
# TODO: Do I need this here? Or rather in smth from uetools lib?
temp_dir: "Localization/~Temp/MT+Pseudo/"
#
# -------------------------------------------------------------
# ------------------------ TASK LISTS -------------------------
# -------------------------------------------------------------
#
# Task lists are lists of scripts to be executed one after another.
# You can add as many task lists as you like.
# Launch them by running 'locsync.py scenario_name'
# A list of tasks, each task is a few of key-value pairs like this:
# description: required, this will be printed as the task is performed,
# and in the summary
# script: 'script_filename', required, relative path to the script file
# unreal: optional, True/False,
# flags if this script has to be launched via unreal-cmd.exe
# p4-checkout/p4-checkin: optional, True/False,
# flags if the script is checks out assets or checks them in
# script-parameters: can contain any script specific parameters
# that will override the defaults above
# All scripts use this config and crowdin.config.yaml for configuration.
"[X, ALL] #1 Check out all targets":
- description: "Checkout Localization folder"
# Enable p4-checkout to let this work or check out Localization folder and other assets manually
script: p4-checkout
p4-checkout: True
script-parameters:
# loc_targets: []
add_assets_to_checkout: [] # Add any additional assets to check out
add_paths_to_checkout: ["Localization/~Temp/#Sources"] # Add any additional paths to check out
"[X, ALL] #2 Gather and export all targets":
- description: "Gather the text in UE for all targets and export the source/test locale draft"
script: ue-loc-gather-cmd
script-parameters:
tasks: [Gather, Export]
# loc_targets: []
"[X] #3 Catch All Target: Generate test and hash locales":
- description: "Generate test from draft and source locale with comments and debug IDs"
script: test-lang
script-parameters:
loc_targets: [Game] # Catch-all target, if any
hash_prefix: "?"
debug_prefix: "?"
sort_by_key: Yes
clear_translations: No
"[X] #4 All String Tables: Test and hash":
- description: "Generate test from draft and source locale with comments and debug IDs"
script: test-lang
script-parameters:
loc_targets: [AllStringTables] # String table targets
debug_prefix: "#"
hash_prefix: "#"
clear_translations: No
"[X] #5 Narrative: Test and hash":
- description: "Generate test from draft and source locale with comments and debug IDs"
script: test-lang
script-parameters:
loc_targets: [Narrative] # String table targets
debug_prefix: "="
hash_prefix: "#"
clear_translations: No
"[X] #6 InputKeys: Test and hash":
- description: "Generate test from draft and source locale with comments and debug IDs"
script: test-lang
script-parameters:
loc_targets: [InputKeys] # String table targets
debug_prefix: "~"
hash_prefix: "#"
clear_translations: No
"[X, ALL] #7 Import Translations":
- description: "Build the project on Crowdin and download all targets to Content/Localization"
script: build-and-download
script-parameters:
# loc_targets: []
# csv_loc_targets: []
"[X, ALL] #8 Import and compile all targets":
- description: "Import and compile all targets in UE"
script: ue-loc-gather-cmd-2
script-parameters:
tasks: [Import, Compile, GenerateReports]
# loc_targets: []
### ### ### ### ### ### ### ### ### ### ### ### ###
### ### ### ### ### ### ### ### ### ### ### ### ###
### ### ### ### ### ### ### ### ### ### ### ### ###
"[X, ALL] #7 Update source on Crowdin (OBS! Relies on prior Gather and Source prep for each target)":
# Upload new source file from test/io locale to Crowdin
- description: "Upload the updated source files to Crowdin"
script: update-source-files
updates-source: Yes # Marker to warn the user that it updates the source file in CAT
script-parameters:
loc_targets: [InputKeys]
csv_loc_targets: [AllStringTables, Narrative]
# manual_upload: Yes
# wait_for_upload_confirmation: Yes
cli_upload: Yes
# end of upload-source
"[SRV] Add new files to Crowdin with correct export settings (OBS! Relies on prior Gather and Source prep for each target)":
- description: "Add new source files to Crowdin"
script: update-source-files
updates-source: Yes # Marker to warn the user that it updates the source file in CAT
script-parameters:
# Targets that have new files to be added to Crowdin:
loc_targets: []
csv_loc_targets: []
add_files_only: Yes # Won't update existing files
# end of add-source-files
"[SRV] Update files into the WordCount branch":
# Upload new source file from test/io locale to Crowdin WordCount branch
- description: "Upload the updated source files to Crowdin"
script: update-source-files
updates-source: Yes # Marker to warn the user that it updates the source file in CAT
script-parameters:
loc_targets: [InputKeys]
csv_loc_targets: [AllStringTables, Narrative]
# manual_upload: Yes
# wait_for_upload_confirmation: Yes
cli_upload: Yes
# cli_dry_run: Yes
branch: "DO-NOT-TRANSLATE-WordCountBranch"
"[SRV] Manual upload":
# Upload new source file from test/io locale to Crowdin WordCount branch
- description: "Upload the updated source files to Crowdin"
script: update-source-files
updates-source: Yes # Marker to warn the user that it updates the source file in CAT
script-parameters:
loc_targets: [InputKeys]
csv_loc_targets: [AllStringTables, Narrative]
manual_upload: Yes
wait_for_upload_confirmation: Yes
cli_upload: No
# end of add source files
### ### ### ### ### ### ### ### ### ### ### ### ###