Repository navigation
Expand file tree
/
Copy pathi18n.py
More file actions
663 lines (626 loc) · 43.1 KB
/
Copy pathi18n.py
File metadata and controls
663 lines (626 loc) · 43.1 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
# i18n.py
"""
Локализация приложения.
Языки: ru (базовый), en, es, de, fr, zh.
Как добавить язык:
1. Добавьте код в LANGUAGES.
2. Скопируйте словарь "ru", переведите и положите в TRANSLATIONS под новым кодом.
"""
LANGUAGES = {
"ru": "Русский",
"en": "English",
"es": "Español",
"de": "Deutsch",
"fr": "Français",
}
DEFAULT_LANG = "ru"
_current = {"lang": DEFAULT_LANG}
def set_language(lang: str):
_current["lang"] = lang if lang in LANGUAGES else DEFAULT_LANG
def get_language() -> str:
return _current["lang"]
def tr(key: str, **kwargs):
"""Возвращает строку (или список строк для инструкций) на текущем языке."""
lang = _current["lang"]
value = TRANSLATIONS.get(lang, {}).get(key)
if value is None:
value = TRANSLATIONS[DEFAULT_LANG].get(key, key)
if kwargs and isinstance(value, str):
try:
value = value.format(**kwargs)
except Exception:
pass
return value
# ===========================================================================
TRANSLATIONS = {
# ------------------------------- РУССКИЙ ----------------------------------
"ru": {
"nav_converter": "Конвертер",
"nav_merge": "Слияние",
"nav_import": "Импорт",
"console_title": "📋 Консоль выполнения",
"console_clear": "Очистить",
"lang_label": "Язык",
"help_tooltip": "Инструкция",
"help_ok": "Понятно, начать работу",
"pick_folder": "📂 Выбрать",
"pick_file": "📄 Выбрать",
"no_folder": "Папка не выбрана",
"no_file": "Файл не выбран",
"err_generic": "❌ Ошибка: {err}",
"conv_title": "📦 Конвертер HTML → JSON",
"conv_help_title": "📘 Инструкция: конвертация HTML → JSON",
"conv_folder": "Папка с HTML-бэкапом",
"conv_save": "Директория для сохранения JSON (необязательно)",
"conv_chatid": "Chat ID",
"conv_chatid_hint": "Например: 123456789",
"conv_map_title": "👥 Карта отправителей (sender_map)",
"conv_map_add": "Добавить пару «Имя → user_id»",
"conv_map_hint": "Укажите соответствие имён из HTML-бэкапа реальным user_id в Telegram.",
"conv_map_name": "Имя в бэкапе",
"conv_map_uid": "user_id",
"conv_map_remove": "Удалить",
"conv_start": "🚀 Запустить конвертацию",
"conv_ready": "Готов к конвертации",
"conv_starting": "Запуск конвертации...",
"conv_progress": "Обработка... {pct}%",
"conv_err_folder": "❌ Выберите папку с HTML-бэкапом!",
"conv_err_chatid": "❌ Введите корректный Chat ID (число)!",
"conv_warn_map": "⚠️ sender_map пуст — все from_id будут 'Unknown'.",
"conv_copied": "📁 Скопировано {n} JSON-файлов в {path}",
"conv_done": "✅ Конвертация завершена успешно!",
"conv_done_snack": "✅ Конвертация завершена!",
"conv_err": "❌ Конвертация завершилась с ошибками.",
"merge_title": "🔗 Слияние JSON-файлов",
"merge_help_title": "📘 Инструкция: слияние JSON",
"merge_desc": "Выберите папку с файлами messages.json, messages2.json, … — скрипт автоматически найдёт и объединит их в один result.json.",
"merge_folder": "Папка с JSON-файлами (messages*.json)",
"merge_start": "🔗 Запустить слияние",
"merge_ready": "Готов к слиянию",
"merge_running": "Слияние...",
"merge_done": "✅ Слияние завершено!",
"merge_done_snack": "✅ result.json успешно создан!",
"merge_err": "❌ Слияние завершилось с ошибками.",
"merge_err_snack": "❌ Ошибка при слиянии.",
"merge_err_folder": "❌ Выберите папку с JSON-файлами!",
"imp_title": "📤 Импорт в Telegram",
"imp_help_title": "📘 Инструкция: как выполнить импорт",
"imp_api_title": "🔑 Настройки Telegram API",
"imp_api_desc": "Получите api_id и api_hash на my.telegram.org. Данные сохраняются локально в settings.json.",
"imp_apiid_hint": "Например: 12345678",
"imp_apihash_hint": "Например: abcdef1234567890",
"imp_phone": "Номер телефона",
"imp_phone_hint": "+79991234567",
"imp_save": "💾 Сохранить настройки",
"imp_saved": "💾 Настройки сохранены!",
"imp_params": "📋 Параметры импорта",
"imp_folder": "Папка с result.json",
"imp_peer": "Chat ID или @username получателя",
"imp_peer_hint": "Например: -1001234567890 или @username",
"imp_test": "Тестовый режим (без финального импорта)",
"imp_onlyN": "Импортировать только первые N сообщений (пусто = все)",
"imp_start": "📤 Запустить импорт",
"imp_ready": "Готов к импорту",
"imp_init": "Инициализация...",
"imp_uploading": "Загрузка файла: {name}",
"imp_err_apiid": "❌ Введите корректный API ID (число)!",
"imp_err_apihash": "❌ Введите API Hash!",
"imp_err_phone": "❌ Введите номер телефона!",
"imp_err_folder": "❌ Выберите папку с result.json!",
"imp_err_peer": "❌ Введите Chat ID или @username получателя!",
"imp_err_onlyN": "❌ Некорректное значение «первые N сообщений»!",
"imp_done": "✅ Импорт завершён успешно!",
"imp_done_snack": "✅ Импорт истории завершён!",
"imp_err": "❌ Импорт завершился с ошибками.",
"imp_err_snack": "❌ Импорт завершился с ошибками.",
"auth_code_title": "🔐 Подтверждение входа",
"auth_code_desc": "Введите код, отправленный в Telegram или по СМС:",
"auth_code_label": "Код из Telegram / СМС",
"auth_pwd_title": "🔑 Двухфакторная аутентификация",
"auth_pwd_desc": "Аккаунт защищён паролем. Введите пароль 2FA:",
"auth_pwd_label": "Пароль 2FA",
"auth_cancel": "Отмена",
"auth_login": "Войти",
"auth_confirm": "Подтвердить",
"instr_converter": [
"1 Экспортируйте бэкап чата из Telegram Desktop: «Настройки → Продвинутые → Экспорт данных Telegram», отметьте сообщения и медиафайлы. Получится папка с messages.html и папками photos/, video_files/, files/ и т.д.",
"2 Нажмите «📂 Выбрать» у поля «Папка с HTML-бэкапом» и укажите эту папку (именно ту, где лежит messages.html).",
"3 Введите Chat ID — числовой идентификатор чата, который будет записан в JSON (реальный ID чата в Telegram).",
"4 (Необязательно) Укажите директорию для сохранения JSON — иначе .json-файлы будут созданы рядом с HTML-файлами.",
"5 Заполните карту отправителей: нажмите «+» и добавьте пары «Имя в бэкапе» → «user_id». user_id — числовой ID пользователя в Telegram (можно узнать через бота @userinfobot).",
"6 Нажмите «🚀 Запустить конвертацию». Прогресс виден по полосе загрузки, подробности — в консоли внизу.",
"7 Готово! В папке появятся файлы messages.json, messages2.json… — переходите на экран «Слияние».",
],
"instr_merge": [
"1 Этот экран используется после конвертации: в папке должны лежать файлы messages.json, messages2.json, messages3.json и т.д.",
"2 Нажмите «📂 Выбрать» и укажите папку с этими JSON-файлами.",
"3 Нажмите «🔗 Запустить слияние».",
"4 Программа автоматически найдёт все файлы messages*.json, объединит сообщения и создаст один итоговый result.json в той же папке.",
"5 Если какого-то файла нет — он будет пропущен с предупреждением в консоли, слияние не прервётся.",
"6 Готово! Переходите на экран «Импорт» — для него нужна папка с result.json и медиафайлами.",
],
"instr_import": [
"1 Получите API ID и API Hash: зайдите на my.telegram.org, войдите по номеру телефона и откройте «API development tools».",
"2 Впишите API ID, API Hash и номер телефона в поля сверху и нажмите «💾 Сохранить настройки» — они сохранятся локально в settings.json.",
"3 Подготовьте папку для импорта: в ней должен лежать файл result.json (создаётся на экране «Слияние») и все медиафайлы с той же структурой папок, что и после конвертации.",
"4 Нажмите «📂 Выбрать» у поля «Папка с result.json» и укажите эту папку.",
"5 В поле «Chat ID или @username получателя» укажите, КУДА импортировать: ID чата/канала (например, -1001234567890) или @username пользователя.",
"6 (Необязательно) Включите «Тестовый режим», чтобы прогнать весь процесс без финального импорта истории.",
"7 (Необязательно) Укажите «первые N сообщений», чтобы импортировать не всю историю, а только её начало.",
"8 Нажмите «📤 Запустить импорт». При первом запуске появится окно с просьбой ввести код из Telegram/SMS, а если включена двухфакторная защита — окно для пароля 2FA.",
"9 Дождитесь окончания: прогресс виден по полосе загрузки, все действия — в консоли внизу. Не закрывайте приложение во время импорта!",
],
},
# ------------------------------- ENGLISH ----------------------------------
"en": {
"nav_converter": "Converter",
"nav_merge": "Merge",
"nav_import": "Import",
"console_title": "📋 Execution console",
"console_clear": "Clear",
"lang_label": "Language",
"help_tooltip": "Guide",
"help_ok": "Got it, let's go",
"pick_folder": "📂 Choose",
"pick_file": "📄 Choose",
"no_folder": "No folder selected",
"no_file": "No file selected",
"err_generic": "❌ Error: {err}",
"conv_title": "📦 Converter HTML → JSON",
"conv_help_title": "📘 Guide: HTML → JSON conversion",
"conv_folder": "HTML backup folder",
"conv_save": "JSON output folder (optional)",
"conv_chatid": "Chat ID",
"conv_chatid_hint": "e.g. 123456789",
"conv_map_title": "👥 Sender map (sender_map)",
"conv_map_add": "Add a 'Name → user_id' pair",
"conv_map_hint": "Map the names from the HTML backup to real Telegram user_ids.",
"conv_map_name": "Name in backup",
"conv_map_uid": "user_id",
"conv_map_remove": "Remove",
"conv_start": "🚀 Start conversion",
"conv_ready": "Ready to convert",
"conv_starting": "Starting conversion...",
"conv_progress": "Processing... {pct}%",
"conv_err_folder": "❌ Please select the HTML backup folder!",
"conv_err_chatid": "❌ Please enter a valid Chat ID (number)!",
"conv_warn_map": "⚠️ sender_map is empty — all from_id will be 'Unknown'.",
"conv_copied": "📁 Copied {n} JSON file(s) to {path}",
"conv_done": "✅ Conversion completed successfully!",
"conv_done_snack": "✅ Conversion finished!",
"conv_err": "❌ Conversion finished with errors.",
"merge_title": "🔗 Merge JSON files",
"merge_help_title": "📘 Guide: merging JSON",
"merge_desc": "Select the folder with messages.json, messages2.json, … — the app will find and merge them into a single result.json.",
"merge_folder": "Folder with JSON files (messages*.json)",
"merge_start": "🔗 Start merge",
"merge_ready": "Ready to merge",
"merge_running": "Merging...",
"merge_done": "✅ Merge completed!",
"merge_done_snack": "✅ result.json created successfully!",
"merge_err": "❌ Merge finished with errors.",
"merge_err_snack": "❌ Merge error.",
"merge_err_folder": "❌ Please select the folder with JSON files!",
"imp_title": "📤 Import to Telegram",
"imp_help_title": "📘 Guide: how to import",
"imp_api_title": "🔑 Telegram API settings",
"imp_api_desc": "Get api_id and api_hash at my.telegram.org. Data is stored locally in settings.json.",
"imp_apiid_hint": "e.g. 12345678",
"imp_apihash_hint": "e.g. abcdef1234567890",
"imp_phone": "Phone number",
"imp_phone_hint": "+79991234567",
"imp_save": "💾 Save settings",
"imp_saved": "💾 Settings saved!",
"imp_params": "📋 Import parameters",
"imp_folder": "Folder with result.json",
"imp_peer": "Recipient Chat ID or @username",
"imp_peer_hint": "e.g. -1001234567890 or @username",
"imp_test": "Test mode (no final import)",
"imp_onlyN": "Import only the first N messages (empty = all)",
"imp_start": "📤 Start import",
"imp_ready": "Ready to import",
"imp_init": "Initializing...",
"imp_uploading": "Uploading file: {name}",
"imp_err_apiid": "❌ Please enter a valid API ID (number)!",
"imp_err_apihash": "❌ Please enter the API Hash!",
"imp_err_phone": "❌ Please enter the phone number!",
"imp_err_folder": "❌ Please select the folder with result.json!",
"imp_err_peer": "❌ Please enter the recipient Chat ID or @username!",
"imp_err_onlyN": "❌ Invalid 'first N messages' value!",
"imp_done": "✅ Import completed successfully!",
"imp_done_snack": "✅ History import finished!",
"imp_err": "❌ Import finished with errors.",
"imp_err_snack": "❌ Import finished with errors.",
"auth_code_title": "🔐 Login confirmation",
"auth_code_desc": "Enter the code sent to Telegram or by SMS:",
"auth_code_label": "Code from Telegram / SMS",
"auth_pwd_title": "🔑 Two-factor authentication",
"auth_pwd_desc": "The account is protected by a password. Enter your 2FA password:",
"auth_pwd_label": "2FA password",
"auth_cancel": "Cancel",
"auth_login": "Log in",
"auth_confirm": "Confirm",
"instr_converter": [
"1 Export the chat backup from Telegram Desktop: 'Settings → Advanced → Export Telegram data', tick messages and media. You'll get a folder with messages.html and photos/, video_files/, files/ etc.",
"2 Press '📂 Choose' next to 'HTML backup folder' and select that folder (the one containing messages.html).",
"3 Enter the Chat ID — the numeric chat identifier written into the JSON (the real Telegram chat ID).",
"4 (Optional) Specify a JSON output folder — otherwise .json files are created next to the HTML files.",
"5 Fill in the sender map: press '+' and add 'Name in backup' → 'user_id' pairs. user_id is the numeric Telegram ID of the user (e.g. via @userinfobot).",
"6 Press '🚀 Start conversion'. Progress is shown on the bar, details in the console below.",
"7 Done! messages.json, messages2.json… appear in the folder — go to the 'Merge' screen.",
],
"instr_merge": [
"1 Use this screen after conversion: the folder must contain messages.json, messages2.json, messages3.json, etc.",
"2 Press '📂 Choose' and select the folder with those JSON files.",
"3 Press '🔗 Start merge'.",
"4 The app finds all messages*.json files, merges the messages and creates a single result.json in the same folder.",
"5 If a file is missing it is skipped with a warning in the console — the merge is not interrupted.",
"6 Done! Go to the 'Import' screen — you'll need the folder with result.json and media files.",
],
"instr_import": [
"1 Get API ID and API Hash: go to my.telegram.org, log in with your phone number and open 'API development tools'.",
"2 Enter API ID, API Hash and phone number in the fields above and press '💾 Save settings' — they are stored locally in settings.json.",
"3 Prepare the import folder: it must contain result.json (created on the 'Merge' screen) and all media files with the same folder structure as after conversion.",
"4 Press '📂 Choose' next to 'Folder with result.json' and select that folder.",
"5 In 'Recipient Chat ID or @username' specify where to import: a chat/channel ID (e.g. -1001234567890) or a user's @username.",
"6 (Optional) Enable 'Test mode' to run the whole process without the final history import.",
"7 (Optional) Specify 'first N messages' to import only the beginning of the history.",
"8 Press '📤 Start import'. On first run a window will ask for the code from Telegram/SMS, and if 2FA is enabled — for the 2FA password.",
"9 Wait until it finishes: progress is shown on the bar, all actions in the console below. Do not close the app during import!",
],
},
# ------------------------------- ESPAÑOL ----------------------------------
"es": {
"nav_converter": "Conversor",
"nav_merge": "Fusión",
"nav_import": "Importar",
"console_title": "📋 Consola de ejecución",
"console_clear": "Limpiar",
"lang_label": "Idioma",
"help_tooltip": "Guía",
"help_ok": "Entendido, empezar",
"pick_folder": "📂 Elegir",
"pick_file": "📄 Elegir",
"no_folder": "Ninguna carpeta seleccionada",
"no_file": "Ningún archivo seleccionado",
"err_generic": "❌ Error: {err}",
"conv_title": "📦 Conversor HTML → JSON",
"conv_help_title": "📘 Guía: conversión HTML → JSON",
"conv_folder": "Carpeta con la copia HTML",
"conv_save": "Carpeta de salida JSON (opcional)",
"conv_chatid": "Chat ID",
"conv_chatid_hint": "p. ej. 123456789",
"conv_map_title": "👥 Mapa de remitentes (sender_map)",
"conv_map_add": "Añadir par 'Nombre → user_id'",
"conv_map_hint": "Asocie los nombres de la copia HTML con los user_id reales de Telegram.",
"conv_map_name": "Nombre en la copia",
"conv_map_uid": "user_id",
"conv_map_remove": "Eliminar",
"conv_start": "🚀 Iniciar conversión",
"conv_ready": "Listo para convertir",
"conv_starting": "Iniciando conversión...",
"conv_progress": "Procesando... {pct}%",
"conv_err_folder": "❌ ¡Seleccione la carpeta con la copia HTML!",
"conv_err_chatid": "❌ ¡Introduzca un Chat ID válido (número)!",
"conv_warn_map": "⚠️ sender_map está vacío — todos los from_id serán 'Unknown'.",
"conv_copied": "📁 Se copiaron {n} archivo(s) JSON a {path}",
"conv_done": "✅ ¡Conversión completada con éxito!",
"conv_done_snack": "✅ ¡Conversión terminada!",
"conv_err": "❌ La conversión terminó con errores.",
"merge_title": "🔗 Fusión de archivos JSON",
"merge_help_title": "📘 Guía: fusión de JSON",
"merge_desc": "Seleccione la carpeta con messages.json, messages2.json, … — la aplicación los encontrará y fusionará en un solo result.json.",
"merge_folder": "Carpeta con archivos JSON (messages*.json)",
"merge_start": "🔗 Iniciar fusión",
"merge_ready": "Listo para fusionar",
"merge_running": "Fusionando...",
"merge_done": "✅ ¡Fusión completada!",
"merge_done_snack": "✅ ¡result.json creado con éxito!",
"merge_err": "❌ La fusión terminó con errores.",
"merge_err_snack": "❌ Error durante la fusión.",
"merge_err_folder": "❌ ¡Seleccione la carpeta con archivos JSON!",
"imp_title": "📤 Importar a Telegram",
"imp_help_title": "📘 Guía: cómo importar",
"imp_api_title": "🔑 Ajustes de la API de Telegram",
"imp_api_desc": "Obtenga api_id y api_hash en my.telegram.org. Los datos se guardan localmente en settings.json.",
"imp_apiid_hint": "p. ej. 12345678",
"imp_apihash_hint": "p. ej. abcdef1234567890",
"imp_phone": "Número de teléfono",
"imp_phone_hint": "+79991234567",
"imp_save": "💾 Guardar ajustes",
"imp_saved": "💾 ¡Ajustes guardados!",
"imp_params": "📋 Parámetros de importación",
"imp_folder": "Carpeta con result.json",
"imp_peer": "Chat ID o @username del destinatario",
"imp_peer_hint": "p. ej. -1001234567890 o @username",
"imp_test": "Modo de prueba (sin importación final)",
"imp_onlyN": "Importar solo los primeros N mensajes (vacío = todos)",
"imp_start": "📤 Iniciar importación",
"imp_ready": "Listo para importar",
"imp_init": "Inicializando...",
"imp_uploading": "Subiendo archivo: {name}",
"imp_err_apiid": "❌ ¡Introduzca un API ID válido (número)!",
"imp_err_apihash": "❌ ¡Introduzca el API Hash!",
"imp_err_phone": "❌ ¡Introduzca el número de teléfono!",
"imp_err_folder": "❌ ¡Seleccione la carpeta con result.json!",
"imp_err_peer": "❌ ¡Introduzca el Chat ID o @username del destinatario!",
"imp_err_onlyN": "❌ ¡Valor de 'primeros N mensajes' no válido!",
"imp_done": "✅ ¡Importación completada con éxito!",
"imp_done_snack": "✅ ¡Importación del historial terminada!",
"imp_err": "❌ La importación terminó con errores.",
"imp_err_snack": "❌ La importación terminó con errores.",
"auth_code_title": "🔐 Confirmación de inicio de sesión",
"auth_code_desc": "Introduzca el código enviado a Telegram o por SMS:",
"auth_code_label": "Código de Telegram / SMS",
"auth_pwd_title": "🔑 Autenticación en dos pasos",
"auth_pwd_desc": "La cuenta está protegida con contraseña. Introduzca su contraseña 2FA:",
"auth_pwd_label": "Contraseña 2FA",
"auth_cancel": "Cancelar",
"auth_login": "Entrar",
"auth_confirm": "Confirmar",
"instr_converter": [
"1 Exporte la copia del chat desde Telegram Desktop: 'Ajustes → Avanzados → Exportar datos de Telegram', marque mensajes y multimedia. Obtendrá una carpeta con messages.html y carpetas photos/, video_files/, files/, etc.",
"2 Pulse '📂 Elegir' junto a 'Carpeta con la copia HTML' y seleccione esa carpeta (la que contiene messages.html).",
"3 Introduzca el Chat ID — el identificador numérico del chat que se escribirá en el JSON (el ID real del chat en Telegram).",
"4 (Opcional) Indique una carpeta de salida para los JSON — de lo contrario los .json se crearán junto a los HTML.",
"5 Rellene el mapa de remitentes: pulse '+' y añada pares 'Nombre en la copia' → 'user_id'. El user_id es el ID numérico del usuario en Telegram (p. ej. mediante @userinfobot).",
"6 Pulse '🚀 Iniciar conversión'. El progreso se muestra en la barra; los detalles, en la consola de abajo.",
"7 ¡Listo! En la carpeta aparecerán messages.json, messages2.json… — pase a la pantalla 'Fusión'.",
],
"instr_merge": [
"1 Esta pantalla se usa tras la conversión: la carpeta debe contener messages.json, messages2.json, messages3.json, etc.",
"2 Pulse '📂 Elegir' y seleccione la carpeta con esos archivos JSON.",
"3 Pulse '🔗 Iniciar fusión'.",
"4 La aplicación encontrará todos los messages*.json, unirá los mensajes y creará un único result.json en la misma carpeta.",
"5 Si falta algún archivo, se omitirá con un aviso en la consola — la fusión no se interrumpe.",
"6 ¡Listo! Pase a la pantalla 'Importar' — necesitará la carpeta con result.json y los archivos multimedia.",
],
"instr_import": [
"1 Obtenga API ID y API Hash: entre en my.telegram.org, inicie sesión con su número y abra 'API development tools'.",
"2 Escriba API ID, API Hash y número de teléfono arriba y pulse '💾 Guardar ajustes' — se guardarán localmente en settings.json.",
"3 Prepare la carpeta de importación: debe contener result.json (creado en 'Fusión') y todos los archivos multimedia con la misma estructura que tras la conversión.",
"4 Pulse '📂 Elegir' junto a 'Carpeta con result.json' y seleccione esa carpeta.",
"5 En 'Chat ID o @username del destinatario' indique el destino: ID del chat/canal (p. ej. -1001234567890) o el @username de un usuario.",
"6 (Opcional) Active 'Modo de prueba' para ejecutar el proceso sin la importación final del historial.",
"7 (Opcional) Indique 'primeros N mensajes' para importar solo el inicio del historial.",
"8 Pulse '📤 Iniciar importación'. En el primer arranque aparecerá una ventana pidiendo el código de Telegram/SMS y, si está activa la verificación en dos pasos, la contraseña 2FA.",
"9 Espere a que termine: el progreso se ve en la barra y las acciones en la consola de abajo. ¡No cierre la aplicación durante la importación!",
],
},
# ------------------------------- DEUTSCH ----------------------------------
"de": {
"nav_converter": "Konverter",
"nav_merge": "Zusammenführung",
"nav_import": "Import",
"console_title": "📋 Ausführungskonsole",
"console_clear": "Leeren",
"lang_label": "Sprache",
"help_tooltip": "Anleitung",
"help_ok": "Verstanden, los geht's",
"pick_folder": "📂 Auswählen",
"pick_file": "📄 Auswählen",
"no_folder": "Kein Ordner ausgewählt",
"no_file": "Keine Datei ausgewählt",
"err_generic": "❌ Fehler: {err}",
"conv_title": "📦 Konverter HTML → JSON",
"conv_help_title": "📘 Anleitung: HTML → JSON",
"conv_folder": "Ordner mit HTML-Backup",
"conv_save": "JSON-Ausgabeordner (optional)",
"conv_chatid": "Chat ID",
"conv_chatid_hint": "z. B. 123456789",
"conv_map_title": "👥 Absender-Zuordnung (sender_map)",
"conv_map_add": "Paar 'Name → user_id' hinzufügen",
"conv_map_hint": "Ordnen Sie die Namen aus dem HTML-Backup den echten Telegram-user_ids zu.",
"conv_map_name": "Name im Backup",
"conv_map_uid": "user_id",
"conv_map_remove": "Entfernen",
"conv_start": "🚀 Konvertierung starten",
"conv_ready": "Bereit zur Konvertierung",
"conv_starting": "Konvertierung wird gestartet...",
"conv_progress": "Verarbeitung... {pct}%",
"conv_err_folder": "❌ Bitte den Ordner mit dem HTML-Backup auswählen!",
"conv_err_chatid": "❌ Bitte eine gültige Chat-ID (Zahl) eingeben!",
"conv_warn_map": "⚠️ sender_map ist leer — alle from_id werden 'Unknown'.",
"conv_copied": "📁 {n} JSON-Datei(en) nach {path} kopiert",
"conv_done": "✅ Konvertierung erfolgreich abgeschlossen!",
"conv_done_snack": "✅ Konvertierung fertig!",
"conv_err": "❌ Konvertierung mit Fehlern abgeschlossen.",
"merge_title": "🔗 JSON-Dateien zusammenführen",
"merge_help_title": "📘 Anleitung: JSON-Zusammenführung",
"merge_desc": "Wählen Sie den Ordner mit messages.json, messages2.json, … — die App findet und führt sie zu einer einzigen result.json zusammen.",
"merge_folder": "Ordner mit JSON-Dateien (messages*.json)",
"merge_start": "🔗 Zusammenführung starten",
"merge_ready": "Bereit zum Zusammenführen",
"merge_running": "Zusammenführung...",
"merge_done": "✅ Zusammenführung abgeschlossen!",
"merge_done_snack": "✅ result.json erfolgreich erstellt!",
"merge_err": "❌ Zusammenführung mit Fehlern abgeschlossen.",
"merge_err_snack": "❌ Fehler bei der Zusammenführung.",
"merge_err_folder": "❌ Bitte den Ordner mit den JSON-Dateien auswählen!",
"imp_title": "📤 Import nach Telegram",
"imp_help_title": "📘 Anleitung: Import durchführen",
"imp_api_title": "🔑 Telegram-API-Einstellungen",
"imp_api_desc": "Holen Sie sich api_id und api_hash auf my.telegram.org. Die Daten werden lokal in settings.json gespeichert.",
"imp_apiid_hint": "z. B. 12345678",
"imp_apihash_hint": "z. B. abcdef1234567890",
"imp_phone": "Telefonnummer",
"imp_phone_hint": "+79991234567",
"imp_save": "💾 Einstellungen speichern",
"imp_saved": "💾 Einstellungen gespeichert!",
"imp_params": "📋 Importparameter",
"imp_folder": "Ordner mit result.json",
"imp_peer": "Chat-ID oder @username des Empfängers",
"imp_peer_hint": "z. B. -1001234567890 oder @username",
"imp_test": "Testmodus (ohne finalen Import)",
"imp_onlyN": "Nur die ersten N Nachrichten importieren (leer = alle)",
"imp_start": "📤 Import starten",
"imp_ready": "Bereit zum Import",
"imp_init": "Initialisierung...",
"imp_uploading": "Datei wird hochgeladen: {name}",
"imp_err_apiid": "❌ Bitte eine gültige API-ID (Zahl) eingeben!",
"imp_err_apihash": "❌ Bitte den API-Hash eingeben!",
"imp_err_phone": "❌ Bitte die Telefonnummer eingeben!",
"imp_err_folder": "❌ Bitte den Ordner mit result.json auswählen!",
"imp_err_peer": "❌ Bitte die Chat-ID oder den @username des Empfängers eingeben!",
"imp_err_onlyN": "❌ Ungültiger Wert für 'erste N Nachrichten'!",
"imp_done": "✅ Import erfolgreich abgeschlossen!",
"imp_done_snack": "✅ Verlaufimport abgeschlossen!",
"imp_err": "❌ Import mit Fehlern abgeschlossen.",
"imp_err_snack": "❌ Import mit Fehlern abgeschlossen.",
"auth_code_title": "🔐 Anmeldebestätigung",
"auth_code_desc": "Geben Sie den Code ein, der an Telegram oder per SMS gesendet wurde:",
"auth_code_label": "Code aus Telegram / SMS",
"auth_pwd_title": "🔑 Zwei-Faktor-Authentifizierung",
"auth_pwd_desc": "Das Konto ist durch ein Passwort geschützt. Geben Sie Ihr 2FA-Passwort ein:",
"auth_pwd_label": "2FA-Passwort",
"auth_cancel": "Abbrechen",
"auth_login": "Anmelden",
"auth_confirm": "Bestätigen",
"instr_converter": [
"1 Exportieren Sie das Chat-Backup aus Telegram Desktop: «Einstellungen → Erweitert → Telegram-Daten exportieren», Nachrichten und Medien anhaken. Es entsteht ein Ordner mit messages.html und Ordnern wie photos/, video_files/, files/.",
"2 Klicken Sie bei «Ordner mit HTML-Backup» auf «📂 Auswählen» und wählen Sie genau diesen Ordner (mit messages.html).",
"3 Geben Sie die Chat-ID ein — die numerische Kennung des Chats, die in die JSON geschrieben wird (die echte Telegram-Chat-ID).",
"4 (Optional) Geben Sie einen JSON-Ausgabeordner an — sonst werden die .json-Dateien neben den HTML-Dateien erstellt.",
"5 Füllen Sie die Absender-Zuordnung aus: Klicken Sie auf «+» und fügen Sie Paare «Name im Backup» → «user_id» hinzu. Die user_id ist die numerische Telegram-ID des Nutzers (z. B. über @userinfobot).",
"6 Klicken Sie auf «🚀 Konvertierung starten». Der Fortschritt erscheint im Balken, Details in der Konsole unten.",
"7 Fertig! Im Ordner erscheinen messages.json, messages2.json… — wechseln Sie zum Bildschirm «Zusammenführung».",
],
"instr_merge": [
"1 Dieser Bildschirm wird nach der Konvertierung verwendet: Im Ordner müssen messages.json, messages2.json, messages3.json usw. liegen.",
"2 Klicken Sie auf «📂 Auswählen» und wählen Sie den Ordner mit diesen JSON-Dateien.",
"3 Klicken Sie auf «🔗 Zusammenführung starten».",
"4 Die App findet alle messages*.json, führt die Nachrichten zusammen und erstellt eine einzige result.json im selben Ordner.",
"5 Fehlt eine Datei, wird sie mit einer Warnung in der Konsole übersprungen — die Zusammenführung wird nicht unterbrochen.",
"6 Fertig! Wechseln Sie zum Bildschirm «Import» — Sie benötigen den Ordner mit result.json und den Mediendateien.",
],
"instr_import": [
"1 Holen Sie sich API-ID und API-Hash: Öffnen Sie my.telegram.org, melden Sie sich mit Ihrer Telefonnummer an und öffnen Sie «API development tools».",
"2 Tragen Sie API-ID, API-Hash und Telefonnummer oben ein und klicken Sie auf «💾 Einstellungen speichern» — sie werden lokal in settings.json gespeichert.",
"3 Bereiten Sie den Import-Ordner vor: Er muss result.json (unter «Zusammenführung» erstellt) und alle Mediendateien mit derselben Ordnerstruktur wie nach der Konvertierung enthalten.",
"4 Klicken Sie bei «Ordner mit result.json» auf «📂 Auswählen» und wählen Sie diesen Ordner.",
"5 Geben Sie bei «Chat-ID oder @username des Empfängers» das Ziel an: die ID eines Chats/Kanals (z. B. -1001234567890) oder den @username eines Nutzers.",
"6 (Optional) Aktivieren Sie den «Testmodus», um den Ablauf ohne finalen Verlaufimport durchzuführen.",
"7 (Optional) Geben Sie «erste N Nachrichten» an, um nur den Anfang des Verlaufs zu importieren.",
"8 Klicken Sie auf «📤 Import starten». Beim ersten Start erscheint ein Fenster mit der Code-Eingabe (Telegram/SMS), bei aktivierter Zwei-Faktor-Authentifizierung zusätzlich das 2FA-Passwortfenster.",
"9 Warten Sie bis zum Abschluss: Der Fortschritt erscheint im Balken, alle Aktionen in der Konsole unten. Schließen Sie die App während des Imports nicht!",
],
},
# ------------------------------- FRANÇAIS ---------------------------------
"fr": {
"nav_converter": "Convertisseur",
"nav_merge": "Fusion",
"nav_import": "Import",
"console_title": "📋 Console d'exécution",
"console_clear": "Effacer",
"lang_label": "Langue",
"help_tooltip": "Guide",
"help_ok": "Compris, c'est parti",
"pick_folder": "📂 Choisir",
"pick_file": "📄 Choisir",
"no_folder": "Aucun dossier sélectionné",
"no_file": "Aucun fichier sélectionné",
"err_generic": "❌ Erreur : {err}",
"conv_title": "📦 Convertisseur HTML → JSON",
"conv_help_title": "📘 Guide : conversion HTML → JSON",
"conv_folder": "Dossier de la sauvegarde HTML",
"conv_save": "Dossier de sortie JSON (facultatif)",
"conv_chatid": "Chat ID",
"conv_chatid_hint": "p. ex. 123456789",
"conv_map_title": "👥 Carte des expéditeurs (sender_map)",
"conv_map_add": "Ajouter une paire « Nom → user_id »",
"conv_map_hint": "Associez les noms de la sauvegarde HTML aux user_id réels de Telegram.",
"conv_map_name": "Nom dans la sauvegarde",
"conv_map_uid": "user_id",
"conv_map_remove": "Supprimer",
"conv_start": "🚀 Démarrer la conversion",
"conv_ready": "Prêt à convertir",
"conv_starting": "Démarrage de la conversion...",
"conv_progress": "Traitement... {pct}%",
"conv_err_folder": "❌ Veuillez sélectionner le dossier de la sauvegarde HTML !",
"conv_err_chatid": "❌ Veuillez saisir un Chat ID valide (nombre) !",
"conv_warn_map": "⚠️ sender_map est vide — tous les from_id seront 'Unknown'.",
"conv_copied": "📁 {n} fichier(s) JSON copié(s) vers {path}",
"conv_done": "✅ Conversion terminée avec succès !",
"conv_done_snack": "✅ Conversion terminée !",
"conv_err": "❌ La conversion s'est terminée avec des erreurs.",
"merge_title": "🔗 Fusion des fichiers JSON",
"merge_help_title": "📘 Guide : fusion JSON",
"merge_desc": "Sélectionnez le dossier contenant messages.json, messages2.json, … — l'application les trouvera et les fusionnera en un seul result.json.",
"merge_folder": "Dossier des fichiers JSON (messages*.json)",
"merge_start": "🔗 Démarrer la fusion",
"merge_ready": "Prêt à fusionner",
"merge_running": "Fusion...",
"merge_done": "✅ Fusion terminée !",
"merge_done_snack": "✅ result.json créé avec succès !",
"merge_err": "❌ La fusion s'est terminée avec des erreurs.",
"merge_err_snack": "❌ Erreur pendant la fusion.",
"merge_err_folder": "❌ Veuillez sélectionner le dossier des fichiers JSON !",
"imp_title": "📤 Import vers Telegram",
"imp_help_title": "📘 Guide : comment importer",
"imp_api_title": "🔑 Paramètres de l'API Telegram",
"imp_api_desc": "Obtenez api_id et api_hash sur my.telegram.org. Les données sont enregistrées localement dans settings.json.",
"imp_apiid_hint": "p. ex. 12345678",
"imp_apihash_hint": "p. ex. abcdef1234567890",
"imp_phone": "Numéro de téléphone",
"imp_phone_hint": "+79991234567",
"imp_save": "💾 Enregistrer les paramètres",
"imp_saved": "💾 Paramètres enregistrés !",
"imp_params": "📋 Paramètres d'import",
"imp_folder": "Dossier contenant result.json",
"imp_peer": "Chat ID ou @username du destinataire",
"imp_peer_hint": "p. ex. -1001234567890 ou @username",
"imp_test": "Mode test (sans import final)",
"imp_onlyN": "Importer seulement les N premiers messages (vide = tous)",
"imp_start": "📤 Démarrer l'import",
"imp_ready": "Prêt à importer",
"imp_init": "Initialisation...",
"imp_uploading": "Envoi du fichier : {name}",
"imp_err_apiid": "❌ Veuillez saisir un API ID valide (nombre) !",
"imp_err_apihash": "❌ Veuillez saisir l'API Hash !",
"imp_err_phone": "❌ Veuillez saisir le numéro de téléphone !",
"imp_err_folder": "❌ Veuillez sélectionner le dossier contenant result.json !",
"imp_err_peer": "❌ Veuillez saisir le Chat ID ou le @username du destinataire !",
"imp_err_onlyN": "❌ Valeur « N premiers messages » invalide !",
"imp_done": "✅ Import terminé avec succès !",
"imp_done_snack": "✅ Import de l'historique terminé !",
"imp_err": "❌ L'import s'est terminé avec des erreurs.",
"imp_err_snack": "❌ L'import s'est terminé avec des erreurs.",
"auth_code_title": "🔐 Confirmation de connexion",
"auth_code_desc": "Saisissez le code envoyé sur Telegram ou par SMS :",
"auth_code_label": "Code Telegram / SMS",
"auth_pwd_title": "🔑 Authentification à deux facteurs",
"auth_pwd_desc": "Le compte est protégé par un mot de passe. Saisissez votre mot de passe 2FA :",
"auth_pwd_label": "Mot de passe 2FA",
"auth_cancel": "Annuler",
"auth_login": "Connexion",
"auth_confirm": "Confirmer",
"instr_converter": [
"1 Exportez la sauvegarde du chat depuis Telegram Desktop : « Paramètres → Avancé → Exporter les données Telegram », cochez messages et médias. Vous obtiendrez un dossier avec messages.html et des dossiers photos/, video_files/, files/, etc.",
"2 Cliquez sur « 📂 Choisir » près de « Dossier de la sauvegarde HTML » et sélectionnez ce dossier (celui qui contient messages.html).",
"3 Saisissez le Chat ID — l'identifiant numérique du chat qui sera écrit dans le JSON (le vrai ID du chat Telegram).",
"4 (Facultatif) Indiquez un dossier de sortie pour les JSON — sinon les .json seront créés à côté des HTML.",
"5 Remplissez la carte des expéditeurs : cliquez sur « + » et ajoutez des paires « Nom dans la sauvegarde » → « user_id ». Le user_id est l'ID numérique de l'utilisateur Telegram (par ex. via @userinfobot).",
"6 Cliquez sur « 🚀 Démarrer la conversion ». La progression s'affiche sur la barre, les détails dans la console en bas.",
"7 Terminé ! Les fichiers messages.json, messages2.json… apparaissent dans le dossier — passez à l'écran « Fusion ».",
],
"instr_merge": [
"1 Cet écran s'utilise après la conversion : le dossier doit contenir messages.json, messages2.json, messages3.json, etc.",
"2 Cliquez sur « 📂 Choisir » et sélectionnez le dossier contenant ces fichiers JSON.",
"3 Cliquez sur « 🔗 Démarrer la fusion ».",
"4 L'application trouve tous les messages*.json, fusionne les messages et crée un unique result.json dans le même dossier.",
"5 Si un fichier manque, il est ignoré avec un avertissement dans la console — la fusion n'est pas interrompue.",
"6 Terminé ! Passez à l'écran « Import » — il faut le dossier avec result.json et les fichiers médias.",
],
"instr_import": [
"1 Obtenez l'API ID et l'API Hash : allez sur my.telegram.org, connectez-vous avec votre numéro et ouvrez « API development tools ».",
"2 Saisissez l'API ID, l'API Hash et le numéro de téléphone en haut puis cliquez sur « 💾 Enregistrer les paramètres » — ils sont gardés localement dans settings.json.",
"3 Préparez le dossier d'import : il doit contenir result.json (créé dans « Fusion ») et tous les fichiers médias avec la même structure qu'après la conversion.",
"4 Cliquez sur « 📂 Choisir » près de « Dossier contenant result.json » et sélectionnez ce dossier.",
"5 Dans « Chat ID ou @username du destinataire », indiquez la destination : ID d'un chat/canal (p. ex. -1001234567890) ou @username d'un utilisateur.",
"6 (Facultatif) Activez le « Mode test » pour dérouler le processus sans l'import final de l'historique.",
"7 (Facultatif) Indiquez « N premiers messages » pour importer seulement le début de l'historique.",
"8 Cliquez sur « 📤 Démarrer l'import ». Au premier lancement, une fenêtre demandera le code Telegram/SMS, et si la double authentification est active — le mot de passe 2FA.",
"9 Attendez la fin : la progression s'affiche sur la barre, toutes les actions dans la console en bas. Ne fermez pas l'application pendant l'import !",
],
},
}