GameSentenceMiner 2.13.0__py3-none-any.whl → 2.13.1__py3-none-any.whl

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.
@@ -0,0 +1,592 @@
1
+ {
2
+ "python": {
3
+ "config": {
4
+ "app": {
5
+ "title": "GameSentenceMiner Configuration",
6
+ "title_with_profile": "GameSentenceMiner Configuration - {profile_name}"
7
+ },
8
+ "buttons": {
9
+ "save": "Save Settings",
10
+ "sync_changes": {
11
+ "label": "Sync Changes to Profiles",
12
+ "tooltip": "Sync changes made to all profiles."
13
+ },
14
+ "reset_to_default": {
15
+ "text": "Reset to Default",
16
+ "tooltip": "Reset Current Tab Settings to default values."
17
+ },
18
+ "browse": "Browse",
19
+ "ok": "OK",
20
+ "run_function": "Run Function"
21
+ },
22
+ "tabs": {
23
+ "key_settings": {
24
+ "title": "Key Settings",
25
+ "description": "A simplified configuration interface for quick setup.",
26
+ "key_settings": {
27
+ "label": "Key Settings",
28
+ "tooltip": "These are the most important settings for quick setup. All of these settings are duplicated from other tabs."
29
+ },
30
+ "anki_enabled": {
31
+ "label": "Anki Enabled:",
32
+ "tooltip": "Enable or disable Anki integration."
33
+ },
34
+ "obs_enabled": {
35
+ "label": "OBS Enabled:",
36
+ "tooltip": "Enable or disable OBS integration."
37
+ },
38
+ "audio_enabled": {
39
+ "label": "Audio Enabled:",
40
+ "tooltip": "Enable or disable audio processing."
41
+ },
42
+ "screenshot_enabled": {
43
+ "label": "Screenshot Enabled:",
44
+ "tooltip": "Enable or disable screenshot processing."
45
+ },
46
+ "vad_enabled": {
47
+ "label": "VAD Enabled:",
48
+ "tooltip": "Enable or disable Voice Activity Detection (VAD) processing."
49
+ },
50
+ "ai_enabled": {
51
+ "label": "AI Enabled:",
52
+ "tooltip": "Enable or disable AI integration."
53
+ }
54
+ },
55
+ "general": {
56
+ "title": "General",
57
+ "websocket_enabled": {
58
+ "label": "Websocket Enabled:",
59
+ "tooltip": "Enable or disable WebSocket communication. Enabling this will disable the clipboard monitor."
60
+ },
61
+ "clipboard_enabled": {
62
+ "label": "Clipboard Enabled:",
63
+ "tooltip": "Enable or disable Clipboard monitoring."
64
+ },
65
+ "allow_both_simultaneously": {
66
+ "label": "Allow Both Simultaneously:",
67
+ "tooltip": "Enable to allow GSM to accept both clipboard and websocket input at the same time."
68
+ },
69
+ "merge_sequential_text": {
70
+ "label": "Merge Matching Sequential Text:",
71
+ "tooltip": "Enable to merge matching sequential text into a single entry. Designed for Luna's Speech Recognition feature. Very niche."
72
+ },
73
+ "websocket_uri": {
74
+ "label": "Websocket URI(s):",
75
+ "tooltip": "WebSocket URI for connecting. Allows Comma Separated Values for Connecting Multiple."
76
+ },
77
+ "texthook_regex": {
78
+ "label": "TextHook Replacement Regex:",
79
+ "tooltip": "Regex to run replacement on texthook input, set this to the same as what you may have in your texthook page."
80
+ },
81
+ "open_config_on_startup": {
82
+ "label": "Open Config on Startup:",
83
+ "tooltip": "Whether to open config when the script starts."
84
+ },
85
+ "open_texthooker_on_startup": {
86
+ "label": "Open GSM Texthooker on Startup:",
87
+ "tooltip": "Whether to open Texthooking page when the script starts."
88
+ },
89
+ "texthooker_port": {
90
+ "label": "GSM Texthooker Port:",
91
+ "tooltip": "Port for the Texthooker to run on. Only change if you know what you are doing."
92
+ },
93
+ "current_version": {
94
+ "label": "Current Version:",
95
+ "tooltip": "The current version of the application."
96
+ },
97
+ "latest_version": {
98
+ "label": "Latest Version:",
99
+ "tooltip": "The latest available version of the application."
100
+ },
101
+ "native_language": {
102
+ "label": "Native Language:",
103
+ "tooltip": "Select your native language. This is used for various features, but will not change the look of GSM."
104
+ },
105
+ "legend": {
106
+ "important": "Indicates important/required settings.",
107
+ "advanced": "Highlights Advanced Features that may break things.",
108
+ "recommended": "Indicates Recommended, but completely optional settings.",
109
+ "tooltip_info": "Every Label in settings has a tooltip with more information if you hover over them."
110
+ },
111
+ "locale": {
112
+ "label": "Language:",
113
+ "tooltip": "Select the application's language. This will change the interface language."
114
+ }
115
+ },
116
+ "paths": {
117
+ "title": "Paths",
118
+ "folder_to_watch": {
119
+ "label": "Folder to Watch:",
120
+ "tooltip": "Path where the OBS Replays will be saved."
121
+ },
122
+ "audio_destination": {
123
+ "label": "Audio Destination:",
124
+ "tooltip": "Path where the cut Audio will be saved."
125
+ },
126
+ "screenshot_destination": {
127
+ "label": "Screenshot Destination:",
128
+ "tooltip": "Path where the Screenshot will be saved."
129
+ },
130
+ "remove_video": {
131
+ "label": "Remove Video:",
132
+ "tooltip": "Remove video from the output."
133
+ },
134
+ "remove_audio": {
135
+ "label": "Remove Audio:",
136
+ "tooltip": "Remove audio from the output."
137
+ },
138
+ "remove_screenshot": {
139
+ "label": "Remove Screenshot:",
140
+ "tooltip": "Remove screenshots after processing."
141
+ }
142
+ },
143
+ "anki": {
144
+ "title": "Anki",
145
+ "update_anki": {
146
+ "label": "Update Anki:",
147
+ "tooltip": "Automatically update Anki with new data."
148
+ },
149
+ "url": {
150
+ "label": "Anki URL:",
151
+ "tooltip": "The URL to connect to your Anki instance."
152
+ },
153
+ "sentence_field": {
154
+ "label": "Sentence Field:",
155
+ "tooltip": "Field in Anki for the main sentence."
156
+ },
157
+ "sentence_audio_field": {
158
+ "label": "Sentence Audio Field:",
159
+ "tooltip": "Field in Anki for audio associated with the sentence. Leave Blank to Disable Audio Processing."
160
+ },
161
+ "picture_field": {
162
+ "label": "Picture Field:",
163
+ "tooltip": "Field in Anki for associated pictures."
164
+ },
165
+ "word_field": {
166
+ "label": "Word Field:",
167
+ "tooltip": "Field in Anki for individual words."
168
+ },
169
+ "previous_sentence_field": {
170
+ "label": "Previous Sentence Field:",
171
+ "tooltip": "Field in Anki for the previous line of dialogue. If Empty, will not populate"
172
+ },
173
+ "previous_image_field": {
174
+ "label": "Previous VoiceLine SS Field:",
175
+ "tooltip": "Field in Anki for the screenshot of previous line. If Empty, will not populate"
176
+ },
177
+ "custom_tags": {
178
+ "label": "Add Tags:",
179
+ "tooltip": "Comma-separated custom tags for the Anki cards."
180
+ },
181
+ "tags_to_check": {
182
+ "label": "Tags to work on:",
183
+ "tooltip": "Comma-separated Tags, script will only do 1-click on cards with these tags (Recommend keep empty, or use Yomitan Profile to add custom tag from texthooker page)"
184
+ },
185
+ "add_game_tag": {
186
+ "label": "Add Game as Tag:",
187
+ "tooltip": "Include a tag for the game on the Anki card."
188
+ },
189
+ "parent_tag": {
190
+ "label": "Game Parent Tag:",
191
+ "tooltip": "Parent tag for the Game Tag. If empty, no parent tag will be added. i.e. Game::{Game_Title}. You can think of this as a \"Folder\" for your tags"
192
+ },
193
+ "overwrite_audio": {
194
+ "label": "Overwrite Audio:",
195
+ "tooltip": "Overwrite existing audio in Anki cards."
196
+ },
197
+ "overwrite_picture": {
198
+ "label": "Overwrite Picture:",
199
+ "tooltip": "Overwrite existing pictures in Anki cards."
200
+ },
201
+ "multi_overwrites_sentence": {
202
+ "label": "Multi-line Mining Overwrite Sentence:",
203
+ "tooltip": "When using Multi-line Mining, overwrite the sentence with a concatenation of the lines selected."
204
+ }
205
+ },
206
+ "vad": {
207
+ "title": "VAD",
208
+ "do_postprocessing": {
209
+ "label": "Voice Detection Postprocessing:",
210
+ "tooltip": "Enable post-processing of audio to trim just the voiceline."
211
+ },
212
+ "language": {
213
+ "label": "Language:",
214
+ "tooltip": "Select the language for VAD. This is used for Whisper Only."
215
+ },
216
+ "whisper_model": {
217
+ "label": "Whisper Model:",
218
+ "tooltip": "Select the Whisper model size for VAD."
219
+ },
220
+ "selected_model": {
221
+ "label": "Select VAD Model:",
222
+ "tooltip": "Select which VAD model to use."
223
+ },
224
+ "backup_model": {
225
+ "label": "Backup VAD Model:",
226
+ "tooltip": "Select which model to use as a backup if no audio is found."
227
+ },
228
+ "add_on_no_results": {
229
+ "label": "Add Audio on No Results:",
230
+ "tooltip": "Add audio even if no results are found by VAD."
231
+ },
232
+ "audio_end_offset": {
233
+ "label": "Audio End Offset:",
234
+ "tooltip": "Offset in seconds from end of the video to extract."
235
+ },
236
+ "trim_beginning": {
237
+ "label": "Trim Beginning:",
238
+ "tooltip": "Beginning offset after VAD Trim, Only active if \"Trim Beginning\" is ON. Negative values = more time at the beginning"
239
+ },
240
+ "beginning_offset": {
241
+ "label": "Beginning Offset:",
242
+ "tooltip": "Beginning offset after VAD Trim, Only active if \"Trim Beginning\" is ON. Negative values = more time at the beginning"
243
+ },
244
+ "cut_and_splice": {
245
+ "label": "Cut and Splice Segments:",
246
+ "tooltip": "Cut Detected Voice Segments and Paste them back together. More Padding = More Space between voicelines."
247
+ },
248
+ "splice_padding": {
249
+ "label": "Padding:",
250
+ "tooltip": "Cut Detected Voice Segments and Paste them back together. More Padding = More Space between voicelines."
251
+ }
252
+ },
253
+ "features": {
254
+ "title": "Features",
255
+ "notify_on_update": {
256
+ "label": "Notify on Update:",
257
+ "tooltip": "Notify the user when an update occurs."
258
+ },
259
+ "open_anki_edit": {
260
+ "label": "Open Anki Note in Edit View:",
261
+ "tooltip": "Automatically open Anki for editing after updating."
262
+ },
263
+ "open_anki_browser": {
264
+ "label": "Open Anki Note in Browser View:",
265
+ "tooltip": "Open Anki note in browser after updating."
266
+ },
267
+ "browser_query": {
268
+ "label": "Browser Query:",
269
+ "tooltip": "Query to use when opening Anki notes in the browser. Ex: 'Added:1'"
270
+ },
271
+ "backfill_audio": {
272
+ "label": "Backfill Audio:",
273
+ "tooltip": "Fill in audio data for existing entries."
274
+ },
275
+ "full_auto": {
276
+ "label": "Full Auto Mode:",
277
+ "tooltip": "Yomitan 1-click anki card creation."
278
+ }
279
+ },
280
+ "screenshot": {
281
+ "title": "Screenshot",
282
+ "enabled": {
283
+ "label": "Enabled:",
284
+ "tooltip": "Enable or disable screenshot processing."
285
+ },
286
+ "width": {
287
+ "label": "Width:",
288
+ "tooltip": "Width of the screenshot in pixels."
289
+ },
290
+ "height": {
291
+ "label": "Height:",
292
+ "tooltip": "Height of the screenshot in pixels."
293
+ },
294
+ "quality": {
295
+ "label": "Quality:",
296
+ "tooltip": "Quality of the screenshot (0-100)."
297
+ },
298
+ "extension": {
299
+ "label": "Extension:",
300
+ "tooltip": "File extension for the screenshot format."
301
+ },
302
+ "ffmpeg_options": {
303
+ "label": "FFmpeg Reencode Options:",
304
+ "tooltip": "Custom FFmpeg options for re-encoding screenshots."
305
+ },
306
+ "timing": {
307
+ "label": "Screenshot Timing:",
308
+ "tooltip": "Select when to take the screenshot relative to the line: beginning, middle, or end."
309
+ },
310
+ "offset": {
311
+ "label": "Screenshot Offset:",
312
+ "tooltip": "Time in seconds to offset the screenshot based on the Timing setting above (should almost always be positive, can be negative if you use \"middle\")"
313
+ },
314
+ "use_selector": {
315
+ "label": "Use Screenshot Selector for every card:",
316
+ "tooltip": "Enable to use the screenshot selector to choose the screenshot point on every card."
317
+ },
318
+ "hotkey": {
319
+ "label": "Take Screenshot Hotkey:",
320
+ "tooltip": "Hotkey to take a screenshot."
321
+ },
322
+ "hotkey_updates_anki": {
323
+ "label": "Screenshot Hotkey Updates Anki:",
324
+ "tooltip": "Enable to allow Screenshot hotkey/button to update the latest anki card."
325
+ }
326
+ },
327
+ "audio": {
328
+ "title": "Audio",
329
+ "enabled": {
330
+ "label": "Enabled:",
331
+ "tooltip": "Enable or disable audio processing."
332
+ },
333
+ "extension": {
334
+ "label": "Audio Extension:",
335
+ "tooltip": "File extension for audio files."
336
+ },
337
+ "beginning_offset": {
338
+ "label": "Audio Extraction Beginning Offset:",
339
+ "tooltip": "Offset in seconds from beginning of the video to extract (Should Usually be negative or 0). If you find that the beginning of your audio is cut off, try decreasing this value."
340
+ },
341
+ "find_offset_button": "Find Offset (WIP)",
342
+ "end_offset": {
343
+ "label": "Audio Extraction End Offset:",
344
+ "tooltip": "Offset in seconds to trim from the end before VAD processing starts. Warning: May Result in lost audio if negative."
345
+ },
346
+ "ffmpeg_preset": {
347
+ "label": "FFmpeg Preset Options:",
348
+ "tooltip": "Select a preset FFmpeg option for re-encoding screenshots.",
349
+ "options": {
350
+ "no_reencode": "No Re-encode",
351
+ "fade_in": "Simple Fade-in, Avoids Audio Clipping (Default)",
352
+ "loudness_norm": "Simple loudness normalization (Simplest, Start Here)",
353
+ "downmix_norm": "Downmix to mono with normalization (Recommended(?))",
354
+ "downmix_norm_low_bitrate": "Downmix to mono, 30kbps, normalized (Optimal(?))",
355
+ "custom": "Custom"
356
+ }
357
+ },
358
+ "ffmpeg_options": {
359
+ "label": "FFmpeg Reencode Options:",
360
+ "tooltip": "Custom FFmpeg options for re-encoding audio files."
361
+ },
362
+ "anki_media_collection": {
363
+ "label": "Anki Media Collection:",
364
+ "tooltip": "Path of the Anki Media Collection, used for external Trimming tool. NO TRAILING SLASH"
365
+ },
366
+ "external_tool": {
367
+ "label": "External Audio Editing Tool:",
368
+ "tooltip": "Path to External tool that opens the audio up for manual trimming. I recommend OcenAudio for in-place Editing."
369
+ },
370
+ "external_tool_enabled": {
371
+ "label": "Enabled:",
372
+ "tooltip": "Send Audio to External Tool for Editing."
373
+ },
374
+ "install_ocenaudio_button": "Install Ocenaudio",
375
+ "get_anki_media_button": "Get Anki Media Collection"
376
+ },
377
+ "obs": {
378
+ "title": "OBS",
379
+ "enabled": {
380
+ "label": "Enabled:",
381
+ "tooltip": "Enable or disable OBS integration."
382
+ },
383
+ "open_obs": {
384
+ "label": "Open OBS:",
385
+ "tooltip": "Open OBS when the GSM starts."
386
+ },
387
+ "close_obs": {
388
+ "label": "Close OBS:",
389
+ "tooltip": "Close OBS when the GSM closes."
390
+ },
391
+ "host": {
392
+ "label": "Host:",
393
+ "tooltip": "Host address for the OBS WebSocket server."
394
+ },
395
+ "port": {
396
+ "label": "Port:",
397
+ "tooltip": "Port number for the OBS WebSocket server."
398
+ },
399
+ "password": {
400
+ "label": "Password:",
401
+ "tooltip": "Password for the OBS WebSocket server."
402
+ },
403
+ "game_from_scene": {
404
+ "label": "Get Game From Scene Name:",
405
+ "tooltip": "Changes Current Game to Scene Name"
406
+ },
407
+ "min_replay_size": {
408
+ "label": "Minimum Replay Size (KB):",
409
+ "tooltip": "Minimum Replay Size for OBS Replays in KB. If Replay is Under this, Audio/Screenshot Will not be grabbed."
410
+ }
411
+ },
412
+ "profiles": {
413
+ "title": "Profiles",
414
+ "select_profile": {
415
+ "label": "Select Profile:",
416
+ "tooltip": "Select a profile to load its settings."
417
+ },
418
+ "add_button": "Add Profile",
419
+ "copy_button": "Copy Profile",
420
+ "delete_button": "Delete Config",
421
+ "obs_scene": {
422
+ "label": "OBS Scene (Auto Switch Profile):",
423
+ "tooltip": "Select an OBS scene to associate with this profile. (Optional)"
424
+ },
425
+ "refresh_scenes_button": "Refresh Scenes",
426
+ "switch_to_default": {
427
+ "label": "Switch To Default If Not Found:",
428
+ "tooltip": "Enable to switch to the default profile if the selected OBS scene is not found."
429
+ }
430
+ },
431
+ "advanced": {
432
+ "title": "Advanced",
433
+ "player_note": "Note: Only one of these will take effect, prioritizing audio.",
434
+ "audio_player_path": {
435
+ "label": "Audio Player Path:",
436
+ "tooltip": "Path to the audio player executable. Will open the trimmed Audio"
437
+ },
438
+ "video_player_path": {
439
+ "label": "Video Player Path:",
440
+ "tooltip": "Path to the video player executable. Will seek to the location of the line in the replay"
441
+ },
442
+ "play_latest_hotkey": {
443
+ "label": "Play Latest Video/Audio Hotkey:",
444
+ "tooltip": "Hotkey to trim and play the latest audio."
445
+ },
446
+ "multiline_linebreak": {
447
+ "label": "Multi-line Line-Break:",
448
+ "tooltip": "Line break for multi-line mining. This goes between each sentence"
449
+ },
450
+ "multiline_storage_field": {
451
+ "label": "Multi-Line Sentence Storage Field:",
452
+ "tooltip": "Field in Anki for storing the multi-line sentence temporarily."
453
+ },
454
+ "ocr_port": {
455
+ "label": "OCR WebSocket Port:",
456
+ "tooltip": "Port for OCR WebSocket communication. GSM will also listen on this port"
457
+ },
458
+ "texthooker_comm_port": {
459
+ "label": "Texthooker Communication WebSocket Port:",
460
+ "tooltip": "Port for GSM Texthooker WebSocket communication. Does nothing right now, hardcoded to 55001"
461
+ },
462
+ "plaintext_export_port": {
463
+ "label": "Plaintext Websocket Export Port:",
464
+ "tooltip": "Port for GSM Plaintext WebSocket Export communication. Does nothing right now, hardcoded to 55002"
465
+ },
466
+ "reset_line_hotkey": {
467
+ "label": "Reset Line Hotkey:",
468
+ "tooltip": "Hotkey to reset the current line of dialogue."
469
+ },
470
+ "polling_rate": {
471
+ "label": "Polling Rate:",
472
+ "tooltip": "Rate at which Anki will check for updates (in milliseconds)."
473
+ }
474
+ },
475
+ "ai": {
476
+ "title": "AI",
477
+ "enabled": {
478
+ "label": "Enabled:",
479
+ "tooltip": "Enable or disable AI integration."
480
+ },
481
+ "provider": {
482
+ "label": "Provider:",
483
+ "tooltip": "Select the AI provider."
484
+ },
485
+ "gemini_model": {
486
+ "label": "Gemini AI Model:",
487
+ "tooltip": "Select the AI model to use."
488
+ },
489
+ "gemini_api_key": {
490
+ "label": "Gemini API Key:",
491
+ "tooltip": "API key for the selected AI provider (Gemini only currently)."
492
+ },
493
+ "groq_model": {
494
+ "label": "Groq AI Model:",
495
+ "tooltip": "Select the Groq AI model to use."
496
+ },
497
+ "groq_api_key": {
498
+ "label": "Groq API Key:",
499
+ "tooltip": "API key for Groq AI provider."
500
+ },
501
+ "local_model": {
502
+ "label": "Local AI Model:",
503
+ "tooltip": "Local AI Model to Use, Only very basic Translation is supported atm. May require some other setup, but idk."
504
+ },
505
+ "anki_field": {
506
+ "label": "Anki Field:",
507
+ "tooltip": "Field in Anki for AI-generated content."
508
+ },
509
+ "context_length": {
510
+ "label": "Dialogue Context Length:",
511
+ "tooltip": "Number of previous/next lines to include as context for AI. 0 to disable. -1 for as many as possible (Use With Caution)"
512
+ },
513
+ "use_canned_translation": {
514
+ "label": "Use Canned Translation Prompt:",
515
+ "tooltip": "Use a pre-defined translation prompt for AI."
516
+ },
517
+ "use_canned_context": {
518
+ "label": "Use Canned Context Prompt:",
519
+ "tooltip": "Use a pre-defined context prompt for AI."
520
+ },
521
+ "custom_prompt": {
522
+ "label": "Custom Prompt:",
523
+ "tooltip": "Custom prompt for AI processing."
524
+ }
525
+ },
526
+ "wip": {
527
+ "title": "WIP",
528
+ "warning_experimental": "Warning: These features are experimental and may not work as expected.",
529
+ "warning_overlay_deps": "Overlay requires OwOCR dependencies to be installed, and requires an external app to be running.",
530
+ "overlay_port": {
531
+ "label": "Overlay WebSocket Port:",
532
+ "tooltip": "Port for the overlay WebSocket communication. Used for experimental overlay features."
533
+ },
534
+ "overlay_send": {
535
+ "label": "Overlay WebSocket Send:",
536
+ "tooltip": "Enable to send overlay data via WebSocket. Experimental feature."
537
+ },
538
+ "monitor_capture": {
539
+ "label": "Monitor to Capture:",
540
+ "tooltip": "Select the monitor to capture (1-based index).",
541
+ "not_detected": "OwOCR Not Detected"
542
+ },
543
+ "error_setup": "Error setting up WIP tab"
544
+ }
545
+ },
546
+ "dialogs": {
547
+ "reset_to_default": {
548
+ "title": "Reset to Default",
549
+ "message": "Are you sure you want to reset all settings in this tab to default?"
550
+ },
551
+ "select_profile": {
552
+ "title": "Select Profile",
553
+ "message": "Multiple profiles match the current scene. Please select the profile:"
554
+ },
555
+ "config_error": {
556
+ "title": "Configuration Error",
557
+ "full_auto_and_backfill": "Cannot have Full Auto and Backfill mode on at the same time! Note: Backfill is a very niche workflow.",
558
+ "no_input_method": "Cannot have both Clipboard and Websocket Disabled."
559
+ },
560
+ "offset_copied": {
561
+ "title": "Clipboard",
562
+ "message": "Offset copied to clipboard!"
563
+ },
564
+ "add_profile": {
565
+ "title": "Input",
566
+ "prompt": "Enter new profile name:"
567
+ },
568
+ "copy_profile": {
569
+ "title": "Input",
570
+ "prompt": "Enter new profile name:"
571
+ },
572
+ "delete_profile": {
573
+ "title": "Confirm Delete",
574
+ "message": "Are you sure you want to delete the profile '{profile_name}'?",
575
+ "error_title": "Error",
576
+ "error_cannot_delete_default": "Cannot delete the Default profile."
577
+ },
578
+ "install_ocenaudio": {
579
+ "title": "Download OcenAudio?",
580
+ "message": "Would you like to download and install OcenAudio? It is a free audio editing software that works extremely well with GSM.",
581
+ "downloading_message": "Downloading OcenAudio...",
582
+ "success_title": "OcenAudio Downloaded",
583
+ "success_message": "OcenAudio has been downloaded and installed. You can find it at {path}."
584
+ },
585
+ "set_anki_media": {
586
+ "title": "Set Default Anki Media Collection?",
587
+ "message": "Would you like to set the default Anki media collection path? This will help the script find the media collection for external trimming.\n\nDefault: %APPDATA%/Anki2/User 1/collection.media"
588
+ }
589
+ }
590
+ }
591
+ }
592
+ }