feat(wallets): open external wallets in place via datadir link (no copy)
Replace the "Import" action — which copied an out-of-datadir wallet into the datadir and cluttered the list with hard-to-tell-apart duplicates — with an in-place "Open" that links the real file into the datadir under a stable per-target name (wallet-ip-<FNV8>.dat) and switches to it. The daemon only loads a bare filename from its own datadir, so a link is the minimal bridge: hard link first (no privileges, same volume — covers non-admin Windows), symlink fallback (cross-volume), then an error. Never a copy (that would fork the wallet) and never a delete of a real file. Also: - show each external wallet's originating sub-directory (…/Backups/2021) - add a per-row "open folder location" button - widen the modal (780 → 860) for the extra button - guard the daemon against a dangling link (external file moved / USB unplugged) by falling back to wallet.dat rather than creating an empty one Per-target link names (not one shared name) make switching between two external wallets a real -wallet switch, so the rescan/cache index tracks each correctly. Drops the now-dead wallets_import* i18n keys and back-fills the new open/folder strings across all 8 languages + rebuilds the CJK subset. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1344,20 +1344,18 @@
|
||||
"wallets_creating": "Создание кошелька — узел будет перезапущен…",
|
||||
"wallets_current": "текущий",
|
||||
"wallets_exists": "Кошелёк с таким именем уже существует.",
|
||||
"wallets_external_tt": "Вне вашего каталога данных — «Импорт» скопирует его.",
|
||||
"wallets_external_tt": "Вне каталога данных — «Открыть» создаёт ссылку на месте (без копирования).",
|
||||
"wallets_folder_hint": "/путь/к/папке с файлами кошельков .dat",
|
||||
"wallets_folder_invalid": "Такой папки не существует.",
|
||||
"wallets_import": "Импорт",
|
||||
"wallets_import_failed": "Не удалось импортировать этот файл кошелька.",
|
||||
"wallets_import_hint": "Импортировать для открытия",
|
||||
"wallets_import_tt": "Этот кошелёк находится вне папки данных. При открытии он сначала будет скопирован в неё (скоро).",
|
||||
"wallets_imported": "Кошелёк импортирован — переключение…",
|
||||
"wallets_intro": "Файлы кошельков в вашей папке данных (и в любых добавленных вами папках). Откройте один, чтобы переключиться — узел перезапустится, чтобы загрузить его, и у каждого кошелька свои данные.",
|
||||
"wallets_name_invalid": "Введите допустимое имя кошелька.",
|
||||
"wallets_never": "Не открывался",
|
||||
"wallets_new_hint": "Имя (например, savings)",
|
||||
"wallets_new_label": "Создать новый кошелёк:",
|
||||
"wallets_open": "Открыть",
|
||||
"wallets_open_failed": "Не удалось открыть этот кошелёк на месте. Вероятно, он на другом диске, чем каталог данных — переместите его на тот же диск (в Windows включённый режим разработчика также позволяет создавать ссылки между дисками).",
|
||||
"wallets_open_folder": "Открыть расположение папки",
|
||||
"wallets_open_inplace_tt": "Открывает этот кошелёк на месте — по ссылке в каталоге данных (без копирования)",
|
||||
"wallets_reveal": "Открыть папку",
|
||||
"wallets_sort_addresses": "Адреса",
|
||||
"wallets_sort_asc": "По возрастанию (сначала старые / меньше / меньший)",
|
||||
|
||||
Reference in New Issue
Block a user