aboutsummaryrefslogtreecommitdiffstats
path: root/src/locales/ru.json
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-06-24 08:59:31 -0700
committerAdam Soltys <[email protected]>2026-06-24 08:59:31 -0700
commit17acf5ec80a0c0b0acc44a6a8373e154c68d4748 (patch)
treea3fb56b85cc9cd21962ed64b084294096948d75b /src/locales/ru.json
parentf59cca61111f38963099190bdbbce9a76bc3fafe (diff)
downloadcoinosv3-17acf5ec80a0c0b0acc44a6a8373e154c68d4748.tar.gz
coinosv3-17acf5ec80a0c0b0acc44a6a8373e154c68d4748.zip
Split translations into per-language files, lazy-loaded
Only English is bundled in index.html now; the other 19 languages are emitted as dist/locales/<code>.json and fetched on demand when a visitor actually uses one (via auto-detect, the picker, or ?lang=xx). This drops index.html from ~511KB to ~318KB; a non-English visitor fetches just their one ~8-10KB locale, which the service worker then caches for offline use. t() falls back to English until a locale resolves. - i18n.js keeps only en + a loadLocale() fetcher; locale data moved to src/locales/*.json. - build.js emits dist/locales/; dev.js serves /locales/<code>.json. - Deploy hook publishes the locales/ subdir. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Diffstat (limited to 'src/locales/ru.json')
-rw-r--r--src/locales/ru.json145
1 files changed, 145 insertions, 0 deletions
diff --git a/src/locales/ru.json b/src/locales/ru.json
new file mode 100644
index 0000000..7c700b8
--- /dev/null
+++ b/src/locales/ru.json
@@ -0,0 +1,145 @@
+{
+ "passphrase": "Парольная фраза",
+ "howItWorks": "Как это работает",
+ "installApp": "Установить приложение",
+ "hiwBasicsTitle": "Основы",
+ "hiwBasics1": "Когда вы создаёте кошелёк, страница генерирует двенадцать случайных слов. Эти слова — ключ к вашему кошельку. Любой, у кого они есть, может потратить монеты, поэтому запишите их на бумаге и храните там, куда можете добраться только вы.",
+ "hiwBasics2": "Если вы потеряете двенадцать слов и у вас нет резервной копии, монеты пропадут навсегда. Нет ссылки для сброса и некому позвонить, поэтому сделайте резервную копию, прежде чем класть деньги.",
+ "hiwBasics3": "Здесь нет сервера и нет учётной записи. Всё приложение — это одна страница, работающая в вашем браузере, поэтому никто не хранит ваши монеты и ничто на сервере никогда не видит ваши ключи. Чтобы показать баланс и историю, оно читает данные из публичного блок-эксплорера (по умолчанию mempool.space или вашего собственного узла, если вы укажете его в Настройках).",
+ "hiwBasics4": "Вы даже можете сохранить эту страницу и открыть её прямо с компьютера вообще без интернета. Она продолжает работать офлайн.",
+ "hiwBasics5": "Оно следует обычным стандартам Bitcoin (фраза из 12 слов BIP39 и нативные SegWit-ключи BIP84), поэтому, если этот сайт когда-нибудь исчезнет, вы сможете восстановить ту же фразу в Sparrow, Electrum или любом другом стандартном кошельке, и ваши монеты будут на месте.",
+ "hiwTribute": "Название Hal Wallet — это дань уважения легендарному шифропанку и пионеру Bitcoin, Hal Finney (1956–2014).",
+ "signExport": "Подписать и (передать в сеть в другом месте)",
+ "scanQr": "Сканировать QR",
+ "scanHint": "Наведите камеру на QR-код",
+ "scanNoCamera": "Не удалось получить доступ к камере.",
+ "scanNoDecoder": "Для сканирования QR при первом использовании нужно подключение.",
+ "scanUnrecognized": "Не удалось распознать адрес Bitcoin в этом QR.",
+ "broadcastScanned": "Передать транзакцию в сеть?",
+ "broadcastNow": "Передать в сеть",
+ "scanOffline": "Вы офлайн — переподключитесь, чтобы передать эту транзакцию в сеть.",
+ "loadingHistory": "Загрузка транзакций…",
+ "explorer": "Блок-эксплорер",
+ "explorerDesc": "Сервер, к которому этот кошелёк обращается за балансами и историей. Укажите свой собственный узел для максимальной приватности.",
+ "explorerUrl": "URL сервера",
+ "explorerUrlHint": "Базовый REST-адрес Esplora / electrs, например https://mempool.space/api",
+ "deviceSync": "Синхронизация устройств",
+ "deviceSyncDesc": "Держите этот кошелёк синхронизированным между вашими устройствами, храня зашифрованную копию на релее Nostr — прочитать её может только устройство с вашим сидом. Отключите, чтобы хранить всё на этом устройстве.",
+ "syncAcross": "Синхронизация между устройствами",
+ "syncOn": "Вкл",
+ "syncOff": "Выкл",
+ "relaysLabel": "Релеи",
+ "relaysHint": "Один URL wss:// на строку.",
+ "home": "Главная",
+ "logout": "Выйти",
+ "createNew": "Создать",
+ "importExisting": "Импортировать",
+ "genIntro": "Сгенерируйте новую сид-фразу из 12 слов. Запишите её. Это единственный способ восстановить кошелёк.",
+ "generateSeed": "Сгенерировать фразу",
+ "writeDownWarn": "⚠ Запишите эти 12 слов на бумаге, по порядку. Любой, у кого они есть, сможет потратить ваши монеты.",
+ "copyPhrase": "Копировать фразу",
+ "regenerate": "Сгенерировать заново",
+ "verifyBackup": "Проверить копию",
+ "skipVerification": "Пропустить проверку",
+ "confirmBackupIntro": "Подтвердите копию, введя запрошенные слова.",
+ "wordN": "Слово №{n}",
+ "reenterPassphrase": "Повторите пароль-фразу",
+ "back": "← Назад",
+ "openWallet": "Открыть кошелёк",
+ "wordsMismatch": "Эти слова не совпадают с вашей фразой. Проверьте копию.",
+ "passphraseMismatch": "Эта пароль-фраза не совпадает с введённой.",
+ "seedPhrase": "Сид-фраза",
+ "seedPlaceholder": "введите слова через пробел",
+ "optionalPassphrase": "Пароль-фраза (необязательно)",
+ "leaveBlank": "оставьте пустым, если не используется",
+ "show": "Показать",
+ "hide": "Скрыть",
+ "invalidSeed": "Неверная сид-фраза — проверьте написание и порядок слов.",
+ "keysNote": "Ключи не покидают браузер. Работает офлайн. Сохраните эту страницу и откройте локально.",
+ "balance": "Баланс",
+ "pending": "В ожидании",
+ "tabReceive": "Получить",
+ "tabSend": "Отправить",
+ "tabHistory": "История",
+ "tabSettings": "Настройки",
+ "copyAddress": "Копировать адрес",
+ "paymentReceived": "Платёж получен!",
+ "tapToProceed": "Нажмите в любом месте, чтобы продолжить",
+ "recipient": "Получатель",
+ "recipients": "Получатели",
+ "max": "Макс",
+ "feeRate": "Комиссия",
+ "feeEconomy": "Эконом",
+ "feeNormal": "Обычная",
+ "feePriority": "Приоритет",
+ "feeCustom": "Своя",
+ "selectedRate": "Выбрано: {n} sat/vB",
+ "coinSelection": "Выбор монет",
+ "automatic": "Авто",
+ "manual": "Вручную",
+ "noCoins": "Нет доступных монет.",
+ "nSelected": "выбрано: {n}",
+ "addRecipient": "+ Добавить получателя",
+ "reviewTx": "Проверить транзакцию",
+ "remove": "Удалить",
+ "enterRecipientAddr": "Введите адрес получателя.",
+ "enterAddrForN": "Введите адрес для получателя {n}.",
+ "enterValidAmtForN": "Введите корректную сумму для получателя {n}.",
+ "selectCoin": "Выберите хотя бы одну монету.",
+ "networkFee": "Комиссия сети",
+ "offlineSignNote": "Офлайн: подпишите сейчас, затем отправьте транзакцию с устройства с интернетом.",
+ "signBroadcast": "Подписать и отправить",
+ "signTx": "Подписать транзакцию",
+ "broadcastFailed": "Ошибка отправки: {msg}",
+ "signingFailed": "Ошибка подписи: {msg}",
+ "done": "Готово",
+ "txSignedNote": "✓ Транзакция подписана. Отправьте код ниже с устройства с интернетом (напр. mempool.space → Broadcast).",
+ "transactionId": "ID транзакции",
+ "signedTxRaw": "Подписанная транзакция (код)",
+ "copyHex": "Копировать код",
+ "downloadLabel": "Скачать",
+ "showQrAirgap": "Показать QR (для офлайн-передачи)",
+ "txBroadcast": "✓ Транзакция отправлена!",
+ "copyTxid": "Копировать ID транзакции",
+ "viewOnMempool": "Открыть на mempool.space ↗",
+ "noTxYet": "Транзакций пока нет.",
+ "received": "Получено",
+ "sent": "Отправлено",
+ "pendingTag": "⏳ в ожидании",
+ "awaitingConfirmation": "ожидает подтверждения",
+ "feeShort": "комиссия {x}",
+ "historyOffline": "История недоступна офлайн.",
+ "status": "Статус",
+ "confirmed": "Подтверждена",
+ "confirmedTag": "подтверждена",
+ "pendingInMempool": "В ожидании (в мемпуле)",
+ "block": "Блок",
+ "date": "Дата",
+ "copyId": "Копировать ID",
+ "backToHistory": "← К истории",
+ "recoveryPhrase": "Фраза восстановления",
+ "recoveryWarn": "⚠ Любой, кто увидит эти слова, может украсть ваши средства. Убедитесь, что никто не смотрит.",
+ "bip39Passphrase": "Пароль-фраза",
+ "copyPassphrase": "Копировать пароль-фразу",
+ "revealRecovery": "Показать фразу восстановления",
+ "offlineTransfer": "Офлайн-передача",
+ "offlineTransferDesc": "Экспортируйте монеты на устройстве с интернетом, затем импортируйте файл на офлайн-устройстве (с этим кошельком и сид-фразой), чтобы подписать без интернета.",
+ "exportSnapshot": "⤓ Экспорт снимка",
+ "importSnapshot": "Импорт снимка…",
+ "rescan": "Пересканировать",
+ "rescanDesc": "Текущий адрес обновляется автоматически. Пересканируйте, только если платёж пришёл на старый (повторно использованный) адрес и не отображается.",
+ "rescanWallet": "Пересканировать кошелёк",
+ "scanning": "Сканирование…",
+ "language": "Язык",
+ "offlineBanner": "Нет сети — работа офлайн. Импортируйте снимок в Настройках, чтобы загрузить монеты.",
+ "retry": "Повторить",
+ "copied": "Скопировано",
+ "snapshotExported": "Снимок экспортирован",
+ "importedNCoins": "Импортировано монет: {n}",
+ "unmatchedSuffix": " · {n} адрес(ов) не из этого кошелька",
+ "importFailed": "Ошибка импорта: {msg}",
+ "copy": "Копировать",
+ "switchUnit": "Переключить BTC / sats",
+ "footerMadeBy": "сделано —",
+ "footerSourceOn": "исходный код на"
+} \ No newline at end of file