Ship LNURL mint pages, indexing UI, and reviews rewrite.

Add lnurl list/detail routes, OG fixtures, i18n strings, and the write/
index client flows so the site surfaces the new mint type end to end.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
michilis
2026-08-22 03:44:43 +02:00
co-authored by Cursor
parent 2a9444942b
commit c74c7fc187
66 changed files with 7603 additions and 1241 deletions
+128 -9
View File
@@ -15,12 +15,12 @@
"time.justNow": "только что",
"time.none": "-",
"time.unknownDate": "неизвестная дата",
"time.ago.minute": "{n}m назад",
"time.ago.hour": "{n}h назад",
"time.ago.day": "{n}d назад",
"time.ago.week": "{n}w назад",
"time.ago.month": "{n}mo назад",
"time.ago.year": "{n}y назад",
"time.ago.minute": "{n} мин. назад",
"time.ago.hour": "{n} ч. назад",
"time.ago.day": "{n} дн. назад",
"time.ago.week": "{n} нед. назад",
"time.ago.month": "{n} мес. назад",
"time.ago.year": "{n} г. назад",
"time.short.minute": "{n}m",
"time.short.hour": "{n}h",
"time.short.day": "{n}d",
@@ -116,6 +116,8 @@
"card.reviewed": "отзыв оставлен {when}",
"card.noReviews": "пока нет отзывов",
"mint.title": "{name} · Отзывы о минте Cashu",
"mint.titleFedimint": "{name} · Отзывы о федерации Fedimint",
"mint.titleLnurl": "{name} · Отзывы о LNURL-минте",
"mint.breadcrumb": "Навигационная цепочка",
"mint.crumbMints": "Минты Cashu",
"mint.copyUrl": "Скопировать URL минта",
@@ -351,7 +353,7 @@
"reviews.validate.short": "Напишите не менее {n} символов, чтобы отзыв был полезен.",
"reviews.validate.long": "Длина отзыва ограничена {n} символами.",
"feed.title": "Последние отзывы о минтах и федерациях · Cashumints.space",
"feed.description": "Все отзывы о минтах и федерациях по мере публикации: {reviews} отзывов о {mints} минтах Cashu и {federations} федерациях Fedimint. Они подписаны в Nostr и показаны от новых к старым. Фильтруйте по экосистеме, рейтингу или названию.",
"feed.description": "Каждый отзыв о минте, федерации и LNURL-минте сразу после публикации: {reviews} отзывов о {mints} минтах Cashu, {federations} федерациях Fedimint и {lnurl} LNURL-минтах, подписанных в Nostr и доступных здесь начиная с самых новых. Фильтруйте по экосистеме, оценке или названию.",
"feed.heading": "Последние отзывы",
"feed.lede": "Все отзывы о минтах Cashu и федерациях Fedimint, от новых к старым, напрямую с Nostr relays. Каждый отзыв подписан автором и хранится на relays, а не в нашей базе данных.",
"feed.label": "Отзывы",
@@ -428,7 +430,14 @@
"notfound.fb.reviews": "Отзывы",
"notfound.fb.software": "Программное обеспечение",
"notfound.fb.lastOnline": "Последний раз онлайн",
"notfound.fb.note": "Эта запись была проиндексирована после последнего обновления сайта, поэтому это сводка данных из активного API. Полная страница с отзывами появится после следующего обновления сайта.",
"notfound.fb.note": "Этот минт был проиндексирован после последней сборки сайта, поэтому здесь сводка из живого API, а ниже его отзывы. Полная страница появится при следующей сборке.",
"notfound.resolve.checking": "Первое посещение: проверяем этот минт.",
"notfound.resolve.failed": "Не удалось добавить этот минт",
"notfound.resolve.failedFedimint": "Не удалось добавить эту федерацию",
"notfound.resolve.retry": "Попробовать другой адрес",
"notfound.resolve.switch": "Открыть как минт {kind}",
"notfound.resolve.fedimint": "Адрес страницы федерации не содержит её код приглашения, поэтому найти её по одной ссылке нельзя. Вставь код приглашения, и она будет добавлена.",
"notfound.resolve.ambiguous": "Этот адрес нельзя восстановить по одной ссылке. Вставь полный URL минта, и он будет добавлен.",
"wallets.title": "Кошельки Cashu · Cashumints.space",
"wallets.description": "Кошельки Cashu для перечисленных здесь минтов: мобильные, веб-кошельки, расширения и CLI, с описанием сильных сторон каждого.",
"wallets.heading": "Кошельки",
@@ -696,5 +705,115 @@
"footer.allFedimints": "Все федерации",
"reviews.dialog.bodyPlaceholder.cashu": "Как работали mint, melt и поддержка? Опишите конкретно.",
"reviews.dialog.bodyPlaceholder.fedimint": "Как прошло подключение к системе, работали ли платежи Lightning и поддержка? Расскажите подробнее.",
"fedimint.details.title": "Сведения о федерации"
"fedimint.details.title": "Сведения о федерации",
"nav.lnurlMints": "LNURL-минты",
"footer.allLnurlMints": "Все LNURL-минты",
"lnurlMints.title": "LNURL-минты: минты предъявительских нот lnurlcash с отзывами | Cashumints.space",
"lnurlMints.description": "Все {total} LNURL-минтов, проиндексированных из сети Nostr: {online} онлайн, {offline} офлайн. Оценки сообщества, лимиты вывода и возможности каждого.",
"lnurlMints.heading": "LNURL-минты",
"lnurlMints.lede": "Все LNURL-минты, которые знает этот сайт. LNURL-минт выпускает предъявительские ноты lnurlcash: ноты Lightning, которые вы храните как секрет и которые можно провернуть, разделить, объединить или расплавить обратно в платёж Lightning. Каждый проверяется по HTTPS раз в несколько минут.",
"lnurlMints.search.label": "Поиск LNURL-минтов",
"lnurlMints.search.placeholder": "Поиск по имени или адресу…",
"lnurlMints.sort.label": "Сортировать LNURL-минты по",
"lnurlMints.hideOffline": "Скрыть офлайн",
"lnurlMints.showing": "Показано {total} LNURL-минтов ({online} онлайн, {offline} офлайн)",
"lnurlMints.showingFiltered": "Показано {shown} из {total} LNURL-минтов ({online} онлайн, {offline} офлайн)",
"lnurlMints.noResults": "Ни один LNURL-минт не подходит.",
"lnurlMints.emptyIndex": "LNURL-минты ещё не проиндексированы.",
"lnurl.crumb": "LNURL-минты",
"lnurl.breadcrumb": "Хлебные крошки",
"lnurl.copyAddress": "Скопировать адрес",
"lnurl.more.title": "Другие LNURL-минты",
"lnurl.more.all": "Все LNURL-минты →",
"lnurl.disclaimer": "LNURL-минт хранит ваши саты, пока вы держите его ноты, так что пользоваться им — значит доверять его оператору. Оценки — это мнения сообщества, а «онлайн» означает доступен, а не надёжен.",
"lnurl.features.title": "Возможности",
"lnurl.features.none": "Этот минт не объявлял, что он поддерживает.",
"lnurl.features.note": "Возможности — это то, что оператор минта объявил в Nostr. Там, где сайт может проверить их по HTTPS, он это делает и сообщает, если объявленное сейчас недоступно.",
"lnurl.features.notListed": "не объявлено",
"lnurl.features.unavailable": "недоступно",
"lnurl.feature.mint": "Чеканка через Lightning (LUD-06)",
"lnurl.feature.melt": "Плавка в Lightning",
"lnurl.feature.notes": "Проворот / разделение / объединение нот",
"lnurl.feature.lud16": "Lightning-адрес",
"lnurl.feature.lud21": "Проверка платежа (LUD-21)",
"lnurl.feature.signed-notes": "Подписанные ноты (офлайн-проверка)",
"lnurl.feature.onion": "Tor-адрес",
"lnurl.feature.rotate": "Провернуть ноту",
"lnurl.feature.split": "Разделить ноту",
"lnurl.feature.merge": "Объединить ноты",
"lnurl.feature.lud06": "LUD-06 payRequest",
"lnurl.feature.lud03": "LUD-03 withdrawRequest",
"lnurl.limits.label": "Лимиты вывода",
"lnurl.limits.notPublished": "не опубликовано",
"lnurl.limits.withdrawRow": "Вывод",
"lnurl.limits.disabled": "отключено",
"lnurl.limits.sats.one": "{n} сат",
"lnurl.limits.sats.few": "{n} сата",
"lnurl.limits.sats.many": "{n} сатов",
"lnurl.limits.sats.other": "{n} сатов",
"lnurl.details.title": "Данные минта",
"lnurl.details.address": "Lightning-адрес",
"lnurl.details.mintPubkey": "Публичный ключ минта",
"lnurl.details.onion": "Tor-адрес",
"lnurl.details.fee": "Комиссия за чеканку",
"lnurl.details.node": "Узел",
"lnurl.details.capacity": "Объявленная ёмкость",
"lnurl.kind.lightningAddress": "Lightning-адрес",
"lnurl.kind.mintPubkey": "публичный ключ минта",
"lnurl.kind.onionAddress": "Tor-адрес",
"lnurl.confirmed.label": "Последнее подтверждение",
"lnurl.confirmed.when": "подтверждён {when}",
"lnurl.fee.base.one": "{n} сат",
"lnurl.fee.base.few": "{n} сата",
"lnurl.fee.base.many": "{n} сатов",
"lnurl.fee.base.other": "{n} сатов",
"lnurl.fee.percent": "{percent}%",
"home.topLnurl.title": "Лучшие LNURL-минты",
"home.topLnurl.sub": "по отзывам и оценке",
"home.topLnurl.all": "Все {n} LNURL-минтов →",
"feed.ecosystem.lnurl": "LNURL",
"reviews.dialog.bodyPlaceholder.lnurl": "Как прошли чеканка, плавка и проворот нот? Пишите конкретно.",
"reviews.byUrl.open": "Написать отзыв",
"reviews.byUrl.title": "Написать отзыв",
"reviews.byUrl.lede": "Вставь адрес. Если сайт его ещё не знает, он проверит его и добавит прямо сейчас.",
"reviews.byUrl.label.cashu": "URL минта",
"reviews.byUrl.label.fedimint": "Код приглашения федерации",
"reviews.byUrl.label.lnurl": "URL LNURL-минта",
"reviews.byUrl.placeholder.cashu": "mint.example.com",
"reviews.byUrl.placeholder.fedimint": "fed11…",
"reviews.byUrl.placeholder.lnurl": "mint.example.com",
"reviews.byUrl.check": "Проверить этот адрес",
"reviews.byUrl.checking": "Проверяем…",
"reviews.byUrl.back": "Другой адрес",
"reviews.byUrl.existing": "Уже в списке",
"reviews.byUrl.indexed": "Только что добавлен",
"reviews.byUrl.confirmClose": "Закрыть? Введённый адрес не сохранится.",
"reviews.byUrl.detected": "Этот адрес ответил как минт {kind}.",
"reviews.byUrl.switchTo": "Оценить как минт {kind}",
"reviews.byUrl.error.empty": "Сначала введи адрес.",
"reviews.byUrl.error.badUrl": "Это не похоже на URL минта.",
"reviews.byUrl.error.badInvite": "Это не код приглашения Fedimint. Коды начинаются с fed11.",
"reviews.byUrl.error.badInput": "Сайт не может проверить этот адрес.",
"reviews.byUrl.error.blocked": "Это не публичный адрес, поэтому проверить его нельзя.",
"reviews.byUrl.error.notAMint": "Адрес ответил, но не как минт этого типа.",
"reviews.byUrl.error.wrongType": "Адрес ответил, но как минт другого типа.",
"reviews.byUrl.error.unverifiable": "По этому адресу ничего не ответило, и в Nostr о нём пока нет ни следа.",
"reviews.byUrl.error.rateLimited.one": "Слишком много проверок с одного соединения. Попробуй снова примерно через {n} минуту.",
"reviews.byUrl.error.rateLimited.other": "Слишком много проверок с одного соединения. Попробуй снова примерно через {n} минут.",
"reviews.byUrl.error.network": "Не удалось связаться с индексом. Проверь соединение и попробуй снова.",
"seo.lnurl.titleNoReviews": "{name}: информация и отзывы о LNURL-минте | Cashumints.space",
"seo.desc.statusWithdraw": "{status}, вывод {min}–{max} сат.",
"mint.chip.noFunding": "Нет чеканки / плавки",
"mint.warnings.lnurlWithdrawalsDisabled.lead": "Вывод отключён.",
"mint.warnings.lnurlWithdrawalsDisabled.body.online": "Этот минт объявляет максимальный вывод в ноль, поэтому ни одну выпущенную им ноту нельзя ни на что обменять. Не чеканьте здесь, пока это не изменится.",
"mint.warnings.lnurlWithdrawalsDisabled.body.offline": "При последнем контакте этот минт объявлял максимальный вывод в ноль, поэтому ни одну выпущенную им ноту нельзя было ни на что обменять. Не чеканьте здесь, пока это не изменится.",
"mint.warnings.lnurlWithdrawalsDisabled.meta.online": "Вывод сейчас отключён",
"mint.warnings.lnurlWithdrawalsDisabled.meta.offline": "При последнем контакте вывод был отключён",
"mint.warnings.lnurlInvalid.lead": "Эндпоинт отвечает, но некорректно.",
"mint.warnings.lnurlInvalid.body": "Хост отвечает, но не объявлением минта, которое сайт может прочитать, поэтому вывод может не работать. Ниже — последнее состояние, которое удалось разобрать, а отзывы по-прежнему работают.",
"mint.warnings.lnurlInvalid.meta": "Отвечает, но не корректным объявлением минта",
"mint.warnings.lnurlNoFunding.lead": "Чеканка и плавка недоступны.",
"mint.warnings.lnurlNoFunding.body": "Существующие ноты по-прежнему можно провернуть, разделить или объединить, но сейчас через Lightning ничего не входит и не выходит. Сам минт работает и отвечает; узел Lightning за ним для него недоступен.",
"mint.warnings.lnurlNoFunding.meta": "Чеканка и плавка недоступны",
"mint.warnings.also.noFunding": "Его узел Lightning тоже был недоступен, поэтому ничего нельзя было отчеканить или расплавить."
}