SkateSpots/src/i18n/vi/batch4.ts

1159 lines
66 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Vietnamese (Tiếng Việt) — batch 4: namespace walletUi (ví Bitcoin
* Lightning + Cashu, zap, ký quỹ, mint, quyền riêng tư, Stash, thống kê
* cộng đồng, bản tin và những người ủng hộ).
*
* Tên giao thức và thương hiệu (Nostr, Lightning, Cashu, Zap, Relay, NWC,
* Stash, The Lab, Angor, sats, Lightning Address) giữ nguyên tiếng Anh; tên
* các trick giữ nguyên tiếng Anh.
*/
const viBatch4 = {
walletUi: {
page: {
title: 'Ví',
subtitle: 'Bitcoin Lightning + Cashu',
manage: 'Quản lý',
getAWallet: 'Tải ví',
learnPlanB: 'Tìm hiểu thêm tại Plan B Academy',
walletMinibits: 'Cashu di động · NWC',
walletAlby: 'Tiện ích trình duyệt · WebLN + NWC',
walletZeus: 'Lightning tự quản lý khóa',
walletCoinos: 'Trên web · chạy mọi nơi',
whatAreZaps: 'Zap là gì?',
whatAreZapsShort: 'Zap là gì?',
zapsDesc: 'Thanh toán Bitcoin Lightning tức thì. Gửi sats cho bất kỳ skater, người tạo spot hay coach nào — không qua trung gian, không bị nền tảng cắt phế.',
instant: 'Tức thì',
instantDesc: 'Hoàn tất trong vài giây',
flexible: 'Linh hoạt',
flexibleDesc: 'Ví của bạn, khóa của bạn',
private: 'Riêng tư',
privateDesc: 'Cashu che giấu người trả tiền',
direct: 'Trực tiếp',
directDesc: 'Giá trị đến tay người sáng tạo',
loginRequired: 'Cần đăng nhập',
loginRequiredDesc: 'Đăng nhập bằng tài khoản Nostr để kết nối ví Lightning và bắt đầu zap.',
browseMints: 'Xem các mint Cashu',
},
modal: {
walletName: 'Tên ví (không bắt buộc)',
walletNamePlaceholder: 'Ví Lightning của tôi',
connectionUri: 'URI kết nối',
spendLimitTitle: 'Đặt giới hạn chi tiêu trước',
spendLimitBody1: 'Chuỗi này cho phép SkateSpots thanh toán hóa đơn Lightning từ ví của bạn. Trong ứng dụng ví, hãy cấp cho kết nối này một',
dailyBudget: 'ngân sách hằng ngày',
spendLimitBody2: '(ví dụ vài nghìn sats) và chỉ bật',
spendLimitBody3: 'Tuyệt đối không dán kết nối có ngân sách không giới hạn. Bạn có thể thu hồi bất cứ lúc nào trong ví.',
addWallet: 'Thêm ví',
nwcConnection: 'Kết nối NWC',
lightningWallet: 'Ví Lightning',
pasteNwc: 'Dán chuỗi kết nối NWC để gửi zap',
connectWallet: 'Kết nối ví',
browserExtension: 'Tiện ích trình duyệt (WebLN)',
autoDetected: 'Tự phát hiện nếu đã cài',
ready: 'Sẵn sàng',
notFound: 'Không tìm thấy',
getNwcFrom: 'Lấy NWC từ:',
connectionRequired: 'Cần URI kết nối',
connectionRequiredDesc: 'Vui lòng nhập URI kết nối NWC hợp lệ.',
activeChanged: 'Đã đổi ví đang dùng',
activeChangedDesc: 'Ví được chọn giờ đang hoạt động cho zap.',
connectNwc: 'Kết nối ví NWC',
connectNwcDesc: 'Nhập chuỗi kết nối từ ví tương thích.',
connect: 'Kết nối',
connecting: 'Đang kết nối...',
walletSettings: 'Cài đặt ví',
connectDesc: 'Kết nối ví Lightning để gửi zap tức thì.',
},
cashu: {
title: 'Ví Cashu',
desc: 'Ví ecash tích hợp — không cần thiết lập bên ngoài',
initializing: 'Đang khởi tạo ví...',
walletError: 'Lỗi ví',
balance: 'Số dư',
balanceAria: 'Số dư ví {{amount}} sats',
activeMint: 'Mint đang dùng',
selectMint: 'Chọn một mint',
receive: 'Nhận',
send: 'Gửi',
receiveViaLightning: '⚡ Nhận qua Lightning',
amountSats: 'Số tiền theo sats',
generateInvoice: 'Tạo hóa đơn',
generating: 'Đang tạo…',
or: 'Hoặc',
receiveCashu: '🥜 Nhận token Cashu',
scanQr: 'Quét QR',
pasteCashu: 'Dán token Cashu (cashu...)',
receiveToken: 'Nhận token',
receiving: 'Đang nhận…',
createCashu: '🥜 Tạo token Cashu',
createToken: 'Tạo token',
creating: 'Đang tạo…',
payInvoice: '⚡ Thanh toán hóa đơn Lightning',
pasteInvoice: 'Dán hóa đơn Lightning (lnbc...)',
payInvoiceBtn: 'Thanh toán hóa đơn',
processing: 'Đang xử lý...',
payAddress: '📧 Thanh toán Lightning Address',
sendToAddress: 'Gửi đến địa chỉ',
sending: 'Đang gửi…',
recentActivity: 'Hoạt động gần đây',
receivedLightning: 'Đã nhận ⚡ Lightning',
sentLightning: 'Đã gửi ⚡ Lightning',
sentToken: 'Đã gửi 🥜 token',
receivedToken: 'Đã nhận 🥜 token',
whatIsCashu: 'Cashu là gì?',
whatIsCashuDesc: 'Cashu là tiền kỹ thuật số được đảm bảo bằng Bitcoin Lightning. Hãy coi nó như những token Bitcoin bạn giữ trong trình duyệt.',
benefitOffline: 'Hoạt động ngoại tuyến tại các spot',
benefitInstant: 'Thanh toán ngang hàng tức thì',
benefitPrivacy: 'Tập trung vào quyền riêng tư (mint không thể theo dõi bạn)',
benefitRedeemable: 'Luôn có thể đổi lấy sats Lightning',
findMints: 'Tìm mint tại mintradar.pedani.eu',
backupTitle: 'Sao lưu ví của bạn',
backupDesc: 'Ví của bạn được bảo vệ bằng cụm 12 từ khôi phục. Hãy cất giữ an toàn — bạn sẽ cần nó để khôi phục số dư nếu xóa dữ liệu trình duyệt.',
viewRecovery: 'Xem cụm từ khôi phục',
backupNote: 'Giống như nsec Nostr của bạn — hãy giữ bí mật và sao lưu!',
tokenReceived: 'Đã nhận token',
tokenReceivedDesc: 'Đã đổi token Cashu thành công!',
receiveFailed: 'Nhận thất bại',
unknownError: 'Lỗi không xác định',
requestUnsupported: 'Chưa hỗ trợ yêu cầu Cashu',
requestUnsupportedDesc: 'Ví này chưa thể thanh toán yêu cầu Cashu (creq) — hãy yêu cầu hóa đơn hoặc địa chỉ Lightning.',
onchainUnsupported: 'Không hỗ trợ on-chain ở đây',
onchainUnsupportedDesc: 'Đó là địa chỉ Bitcoin. Ví này chỉ gửi token Cashu và thanh toán Lightning.',
nostrProfile: 'Đó là hồ sơ Nostr',
nostrProfileDesc: 'Quét token Cashu, hóa đơn Lightning hoặc Lightning Address để thanh toán.',
clinkUnsupported: 'Chưa hỗ trợ mã thanh toán',
clinkUnsupportedDesc: 'Ví này chưa thể thanh toán mã CLINK. Hãy dùng hóa đơn hoặc địa chỉ Lightning.',
unrecognizedQr: 'Mã QR không nhận diện được',
unrecognizedQrDesc: 'Quét token Cashu, hóa đơn Lightning hoặc Lightning Address.',
invalidAmount: 'Số tiền không hợp lệ',
invalidAmountDesc: 'Vui lòng nhập số tiền hợp lệ',
paymentSent: 'Đã gửi thanh toán',
paymentSentDesc: 'Đã gửi {{amount}} sats đến {{address}}',
paymentFailed: 'Thanh toán thất bại',
copied: 'Đã sao chép',
copiedDesc: 'Đã sao chép {{label}} vào clipboard',
receiveSats: 'Nhận {{amount}} sats',
payInvoiceHint: 'Thanh toán hóa đơn này từ bất kỳ ví Lightning nào',
invoiceQrAlt: 'Mã QR hóa đơn',
lightningInvoice: 'Hóa đơn Lightning',
invoiceLabel: 'Hóa đơn',
waiting: '⏳ Đang chờ thanh toán...',
tokenReady: 'Token sẵn sàng để gửi',
shareToken: 'Chia sẻ token này với người nhận',
tokenQrAlt: 'Mã QR token',
cashuToken: 'Token Cashu',
tokenLabel: 'Token',
copyToken: 'Sao chép token',
tokenWarning: 'Bất kỳ ai có token này đều có thể đổi nó - hãy coi như tiền mặt!',
browser: {
title: 'Ví ecash tích hợp',
appOnly: 'Chỉ trên ứng dụng',
desc: 'Cashu ecash tự quản lý khóa, vận hành bằng Bitcoin Lightning',
unlockTitle: 'Mở khóa ví đầy đủ trong ứng dụng SkateSpots',
unlockDesc: 'Ví ecash tích hợp cho phép bạn mint, gửi và đổi token Cashu ngay tại spot. Nó nằm trong ứng dụng gốc, nơi có thể kết nối trực tiếp với các mint — trình duyệt chặn những kết nối đó để bảo vệ bạn.',
zapTipTitle: 'Zap & tip — hoạt động ngay trên trình duyệt',
zapTipDesc: 'Gửi sats đến spot, sự kiện, coach và crew hoạt động ngay tại đây. Chỉ cần kết nối ví Lightning bên dưới — Nostr Wallet Connect hoặc tiện ích trình duyệt như Alby. Không cần mint Cashu.',
},
},
escrow: {
title: 'Ký quỹ',
desc: 'Bán an toàn: bật ký quỹ và người mua có thể khóa sats cho bạn để giao dịch. Bạn giải phóng khi giao hàng — nếu không, người mua có thể đòi lại sau thời gian đã thỏa thuận.',
active: 'Ký quỹ đang bật',
publish: 'Bật ký quỹ',
published: 'Ký quỹ đang bật',
publishedDesc: 'Người mua giờ có thể khóa tiền cho bạn để giao dịch.',
failed: 'Không thể bật ký quỹ',
},
escrowSettings: {
title: 'Cài đặt ký quỹ',
desc: 'Mặc định cho giao dịch ký quỹ Cashu. Lưu trên thiết bị.',
lockWindow: 'Thời gian khóa mặc định',
lockWindowHint: 'Thời gian tiền bị khóa trước khi người mua có thể đòi lại. Càng dài càng an toàn cho người bán.',
days: 'ngày',
preferredMint: 'Mint cho ký quỹ',
activeMint: 'Mint đang dùng',
preferredMintHint: 'Mint nào tài trợ ký quỹ. Hãy dùng mint đáng tin cậy.',
requireListings: 'Bắt buộc ký quỹ cho tin đăng mới',
requireListingsHint: 'Tự động chọn “Bắt buộc ký quỹ” khi bạn đăng bán.',
},
privacy: {
title: 'Mẹo riêng tư',
subtitle: 'Tìm hiểu cách bảo vệ quyền riêng tư tài chính của bạn',
cashuRecommended: 'CASHU (Khuyến nghị)',
anon: 'Giao dịch ẩn danh',
blind: 'Chữ ký mù che giấu hoạt động',
noIp: 'Không lộ IP',
trustMint: 'Phải tin mint giữ tiền',
lightningAddress: 'LIGHTNING ADDRESS',
linked: 'Có thể bị liên kết với danh tính',
traceable: 'Lịch sử thanh toán có thể truy vết',
ipVisible: 'Lộ IP khi tạo hóa đơn',
selfCustody: 'Có thể tự quản lý khóa',
bestPractices: 'Thực hành tốt nhất',
tip1Title: 'Dùng Cashu để nhận tip',
tip1Desc: 'Ví Cashu tích hợp là cách riêng tư nhất để nhận zap',
tip2Title: 'Dùng ví riêng cho SkateSpots',
tip2Desc: 'Đừng dùng ví tiết kiệm chính - hãy tách tiền của ứng dụng',
tip3Title: 'Cân nhắc dùng VPN hoặc Tor',
tip3Desc: 'Che giấu địa chỉ IP khi thực hiện giao dịch',
tip4Title: 'Tránh địa chỉ Lightning gắn với danh tính',
tip4Desc: 'Dùng địa chỉ ẩn danh không gắn với tên thật của bạn',
proTip: 'Mẹo hay:',
proTipDesc: 'Hãy nhận thanh toán vào ví Cashu trước, rồi định kỳ chuyển số lớn hơn sang ví cá nhân qua VPN.',
warnTitle: 'Lưu ý riêng tư',
warnDesc: 'Địa chỉ Lightning có thể liên kết hoạt động SkateSpots của bạn với danh tính thật.',
betterPrivacy: 'Để riêng tư hơn:',
bullet1: 'Dùng ví riêng cho ứng dụng này',
bullet2: 'Cân nhắc dùng ví Cashu thay thế',
bullet3: 'Dùng VPN/Tor khi giao dịch',
useCashu: 'Dùng Cashu thay thế',
understand: 'Tôi hiểu',
},
mintPrivacy: {
title: 'Riêng tư mint',
desc: 'Dùng nhiều mint giúp tăng quyền riêng tư vì không mint nào thấy hết giao dịch của bạn',
distribution: 'Phân bổ tiền',
singleWarning: 'Chỉ dùng một mint nghĩa là mint đó thấy hết thời điểm và số tiền giao dịch của bạn. Cân nhắc thêm mint để riêng tư hơn.',
yourMints: 'Mint của bạn ({{count}})',
default: 'Mặc định',
addMint: 'Thêm mint',
addMintDesc: 'Thêm mint Cashu mới vào ví',
mintUrl: 'URL mint',
add: 'Thêm',
adding: 'Đang thêm...',
orChoose: 'Hoặc chọn từ danh sách',
recommended: 'Mint được khuyến nghị',
allMints: 'Tất cả mint (danh bạ)',
searchMints: 'Tìm mint…',
noDirectoryMints: 'Không có mint nào khớp tìm kiếm.',
directoryHint: 'Từ danh bạ MintRadar cộng đồng — không chính thức và có thể lỗi thời.',
added: 'Đã thêm',
soon: 'Sắp có',
autoDistribute: 'Tự động phân bổ tiền',
autoDesc: 'Trải tiền nhận được ra nhiều mint',
autoAria: 'Tự động phân bổ tiền (sắp ra mắt)',
tip1: 'Dùng tối thiểu 2-3 mint khác nhau để riêng tư hơn',
tip2: 'Đừng để hết tiền trong một mint - hãy trải ra',
tip3: 'Cân nhắc thẩm quyền pháp lý của mint (quốc gia khác nhau = quyền truy cập pháp lý khác nhau)',
tip4: 'Mint thấy thời điểm giao dịch nhưng KHÔNG thấy bạn trả cho ai (chữ ký mù)',
future: 'Tính năng tương lai: luân chuyển mint và chấm điểm riêng tư - hãy chờ nhé!',
findMore: 'Tìm thêm mint tại mintradar.pedani.eu',
trustWarning: 'Cảnh báo tin cậy:',
trustWarningDesc: 'Mint là dịch vụ giữ hộ - họ giữ tiền của bạn. Chỉ dùng mint bạn tin. Nếu mint biến mất, tiền của bạn có thể mất. Trải tiền ra nhiều mint giúp giảm rủi ro.',
removeTitle: 'Xóa mint?',
removeDesc: 'Bạn chắc chắn muốn xóa {{name}}?',
removeMint: 'Xóa mint',
warning: 'Cảnh báo:',
withdrawWarning: 'Mint này có {{amount}} sats. Hãy rút tiền trước khi xóa!',
invalidUrl: 'URL không hợp lệ',
invalidUrlDesc: 'URL mint phải bắt đầu bằng https://',
mintAdded: 'Đã thêm mint',
mintAddedDesc: 'Đã thêm mint mới thành công',
mintAddedNamed: 'Đã thêm {{name}} thành công',
failedAdd: 'Thêm mint thất bại',
failed: 'Thất bại',
noMints: 'Không có mint',
singleMint: 'Một mint',
concentrated: 'Tập trung',
moderate: 'Vừa phải',
wellDistributed: 'Phân bổ tốt',
mintCoinosWebDesc: 'Mint thân thiện web (khuyến nghị cho trình duyệt)',
mintMinibitsWebDesc: '⚠ Chỉ ứng dụng gốc — không truy cập được từ trình duyệt web',
mintMinibitsNativeDesc: 'Mint của SkateSpots — khuyến nghị',
mintCoinosDesc: 'Mint thân thiện web',
mintLnbitsDesc: 'Mint cộng đồng trên LNbits',
},
nwc: {
title: 'Ví Lightning',
noConnection: 'Ví NWC',
refresh: 'Làm mới số dư',
createInvoice: 'Tạo hóa đơn',
copyInvoice: 'Sao chép hóa đơn',
pasteInvoice: 'Dán hóa đơn Lightning (lnbc…)',
amount: 'Số tiền: {{amount}} sats',
pasteToSee: 'Dán hóa đơn để xem số tiền',
pay: 'Thanh toán',
invoiceQrAlt: 'Mã QR hóa đơn Lightning',
enterAmount: 'Nhập số tiền theo sats',
readBalanceFailed: 'Không đọc được số dư',
readBalanceFailedDesc: 'Ví của bạn không phản hồi.',
createInvoiceFailed: 'Không tạo được hóa đơn',
createInvoiceFailedDesc: 'Thử lại sau giây lát.',
paymentSent: 'Đã gửi thanh toán',
paidAmount: 'Đã trả {{amount}} sats.',
paid: 'Đã trả.',
paymentRejected: 'Ví từ chối thanh toán.',
},
qr: {
title: 'Quét mã QR',
desc: 'Đưa mã QR vào khung camera để quét',
paste: 'Dán từ clipboard',
hint: 'Quét token Cashu, hóa đơn Lightning hoặc Lightning Address',
clipboardEmpty: 'Clipboard trống',
clipboardEmptyDesc: 'Không tìm thấy văn bản trong clipboard',
pasteFailed: 'Dán thất bại',
pasteFailedDesc: 'Không đọc được từ clipboard',
},
recovery: {
title: 'Cụm từ khôi phục',
desc: '12 từ này là cách duy nhất khôi phục số dư ecash. Hãy ghi lại theo đúng thứ tự và cất ngoại tuyến — tuyệt đối không chia sẻ với ai.',
tapReveal: 'Chạm để hiện',
noWatching: 'Đảm bảo không ai đang nhìn',
hide: 'Ẩn',
reveal: 'Hiện',
paperHint: 'Ghi ra giấy là an toàn nhất — sao chép vào clipboard có thể lộ sang ứng dụng khác.',
written: 'Tôi đã ghi lại',
revealFirst: 'Hãy hiện các từ trước',
copiedDesc: 'Đã sao chép cụm từ khôi phục — dán vào nơi an toàn, rồi xóa clipboard.',
copyFailed: 'Sao chép thất bại',
copyFailedDesc: 'Vui lòng ghi các từ ra giấy thay vì sao chép.',
},
guide: {
quickGuide: 'Hướng dẫn nhanh',
fullGuide: 'Hướng dẫn ví (bản cho skater)',
cashuSummary: 'Riêng tư + Tiện lợi',
mintHoldsFunds: '(mint giữ tiền)',
lightningSummary: 'Kiểm soát + An toàn',
youHoldKeys: '(bạn giữ khóa)',
useBoth: 'Dùng cả hai: Cashu để tip, Lightning để tiết kiệm',
cashuTitle: 'VÍ CASHU',
cashuTagline: 'Như tiền mặt trong túi bạn ở skatepark',
cashuBullet1: 'Rút ra tip nhanh chóng',
cashuBullet2: 'Đừng mang theo toàn bộ tiền tiết kiệm ở đây',
cashuBullet3: 'Nếu mint biến mất, tiền có thể mất',
cashuBullet4: 'Không ai biết bạn có bao nhiêu (riêng tư!)',
cashuPerfectFor: 'Ăn vặt buổi chơi, zap clip, tip nhỏ',
lightningTitle: 'VÍ LIGHTNING',
lightningTagline: 'Như tài khoản ngân hàng - bạn nắm quyền',
lightningBullet1: 'An toàn, bạn kiểm soát khóa',
lightningBullet2: 'Mất chút thời gian thiết lập',
lightningBullet3: 'Lịch sử giao dịch đầy đủ',
lightningBullet4: 'Tốt hơn cho số tiền lớn',
lightningPerfectFor: 'Mua gear, tiết kiệm, zap lớn',
perfectFor: 'Hoàn hảo cho:',
proTips: 'MẸO HAY',
tip1Title: 'Dùng cả hai ví',
tip1Desc: 'Để tiền đi chơi trong Cashu, tiền tiết kiệm trong Lightning',
tip2Title: 'Thử các ví khác nhau',
tip2Desc: 'Thử nghiệm để tìm cái phù hợp. Mỗi ví có tính năng và đánh đổi khác nhau',
tip3Title: 'Riêng tư hơn',
tip3Desc: 'Dùng nhiều ví nghĩa là không ứng dụng nào thấy hết hoạt động của bạn',
tip4Title: 'Tích lũy kinh nghiệm',
tip4Desc: 'Bạn càng biết nhiều công cụ, càng có nhiều lựa chọn. Bắt đầu nhỏ, học dần',
tldr: 'Tóm lại:',
tldrDesc: 'Không có ví "tốt nhất" - còn tùy nhu cầu. Hãy thử cả hai, dùng cái thấy phù hợp, và đừng để hết sats ở một chỗ!',
},
zap: {
count: '{{count}} zap',
connectFirst: 'Kết nối ví trước',
connectFirstDesc: 'Để gửi zap (tip Bitcoin), bạn cần kết nối ví Lightning.',
quickSetup: 'Thiết lập nhanh (30 giây)',
quickSetupDesc: 'Kết nối ví Lightning hiện có bằng Nostr Wallet Connect (NWC). Không cần thêm tài khoản.',
connectNwc: 'Kết nối ví bằng NWC',
noWallet: 'Chưa có ví? Tìm hiểu cách',
skip: 'Bỏ qua lúc này (hóa đơn thủ công)',
note: 'ℹ️ Lưu ý:',
noteDesc: 'Bạn vẫn có thể tạo hóa đơn mà không cần kết nối ví, nhưng phải tự sao chép để thanh toán.',
payWithWebln: 'Thanh toán bằng WebLN',
processing: 'Đang xử lý...',
openInWallet: 'Mở trong ví Lightning',
scanHint: 'Quét mã QR hoặc sao chép hóa đơn để thanh toán bằng bất kỳ ví Lightning nào.',
cashuInstant: 'Thanh toán tức thì bằng ví tích hợp',
satsAvailable: 'sats khả dụng',
or: 'HOẶC',
customAmount: 'Số tiền tùy chọn',
addComment: 'Thêm bình luận (không bắt buộc)',
insufficientBanner: '⚠️ Số dư Cashu không đủ. Bạn cần thêm {{amount}} sats. Hãy chuyển sang Lightning hoặc nạp thêm ví Cashu.',
creatingInvoice: 'Đang tạo hóa đơn...',
zapAmount: 'Zap {{amount}} sats',
zapAmountCashu: 'Zap {{amount}} sats bằng Cashu',
lightningInvoice: 'Hóa đơn Lightning',
qrAlt: 'Mã QR hóa đơn Lightning',
enterAmount: 'Nhập số tiền',
enterAmountDesc: 'Chọn mức đặt sẵn hoặc nhập số sats hợp lệ.',
cashuUnavailable: 'Ví Cashu không khả dụng',
cashuUnavailableDesc: 'Ví Cashu chưa sẵn sàng. Hãy chuyển sang Lightning hoặc mở ví trước.',
insufficientCashu: 'Số dư Cashu không đủ',
insufficientCashuDesc: 'Bạn cần thêm {{amount}} sats. Hãy chuyển sang Lightning hoặc nạp thêm.',
zapSentCashu: 'Đã gửi zap! 🥜',
zapSentCashuDesc: 'Đã zap {{amount}} sats từ ví Cashu.',
cashuFailed: 'Thanh toán Cashu thất bại',
cashuFailedDesc: 'Không thể thanh toán bằng ví Cashu.',
invoiceCopied: 'Đã sao chép hóa đơn',
invoiceCopiedDesc: 'Đã sao chép hóa đơn Lightning vào clipboard',
defaultComment: 'Đã zap trên SkateSpots! 🛹',
titleConnect: 'Kết nối ví',
titlePayment: 'Thanh toán Lightning',
titleZap: 'Gửi zap',
descConnect: 'Kết nối ví Lightning để gửi zap',
descPayment: 'Thanh toán bằng Bitcoin Lightning Network',
descZap: 'Zap là khoản thanh toán Bitcoin nhỏ để ủng hộ người tạo nội dung này. Nếu bạn thấy thích, hãy cân nhắc gửi một zap!',
descZapShort: 'Zap là khoản thanh toán Bitcoin nhỏ để ủng hộ người sáng tạo. Hãy cân nhắc gửi một zap!',
},
zapCrew: {
title: 'Zap cả crew',
desc: 'Chia đều một zap cho {{count}} thành viên crew có Lightning Address.',
noMembers: 'Hiện không có thành viên crew nào khác để zap.',
totalAmount: 'Tổng số tiền',
customTotal: 'Tổng tùy chọn',
each: 'sats mỗi người',
rounded: '(đã làm tròn)',
noWallet: 'Chưa kết nối ví — bạn sẽ nhận một hóa đơn cho mỗi thành viên để trả thủ công. Kết nối ví để chia chỉ với một chạm.',
zapAcross: 'Zap {{amount}} sats cho {{count}} người',
sentTo: '⚡ Đã gửi đến {{done}}/{{total}}',
none: 'Không có thanh toán tự động nào hoàn tất',
copyPending: 'Sao chép các hóa đơn còn lại để trả thủ công.',
thanks: 'Cảm ơn đã ủng hộ crew!',
payingCrew: 'Đang trả cho crew…',
defaultComment: 'Đã zap crew {{crew}}! 🤘',
sent: 'Đã gửi',
paying: 'Đang trả',
resolving: 'Đang xử lý',
skipped: 'Đã bỏ qua',
failed: 'Thất bại',
waiting: 'Đang chờ',
copyInvoice: 'Sao chép hóa đơn',
invoiceCopied: 'Đã sao chép hóa đơn',
invoiceCopiedDesc: 'Dán vào bất kỳ ví Lightning nào',
},
zapBadges: {
title: 'Huy hiệu zap',
zaps: 'zap',
satsSent: 'sats đã gửi',
rank: 'hạng',
footnote: 'Dựa trên 30 ngày zap gần nhất.',
first: 'Zap đầu tiên',
firstHint: 'Gửi zap đầu tiên của bạn',
regular: 'Thường xuyên',
regularHint: 'Gửi 10 zap',
generous: 'Hào phóng',
generousHint: 'Gửi 10.000 sats',
patron: 'Mạnh thường quân',
patronHint: 'Gửi 100.000 sats',
top10: 'Top 10',
top10Hint: 'Lọt vào top 10 người ủng hộ',
},
trust: {
unavailable: 'Không có điểm tin cậy',
yourContent: 'Đây là nội dung của bạn',
following: 'Bạn theo dõi người dùng này',
friendOfFriend: 'Bạn của bạn (2 bước)',
nip05: 'Người dùng đã xác minh NIP-05',
unknown: 'Người dùng không xác định',
help: 'Điểm tin cậy giúp nhận diện những người đóng góp đáng tin trong cộng đồng trượt ván.',
},
share: {
title: 'Chia sẻ hồ sơ',
desc: 'Hướng camera điện thoại vào mã để mở hồ sơ của {{name}}.',
qrAlt: 'Mã QR hồ sơ',
copyLink: 'Sao chép liên kết',
copyFailed: 'Sao chép thất bại',
copyFailedDesc: 'Không thể sao chép liên kết.',
shareEllipsis: 'Chia sẻ…',
},
addToCollection: {
title: 'Lưu vào bộ sưu tập',
desc: 'Lưu "{{spot}}" vào một trong các bộ sưu tập của bạn',
loginRequired: 'Vui lòng đăng nhập để lưu spot vào bộ sưu tập',
noCollections: 'Bạn chưa có bộ sưu tập nào',
createFirst: 'Tạo bộ sưu tập đầu tiên bên dưới!',
spotCount: '{{count}} spot',
alreadySavedTag: 'Đã lưu',
alreadySaved: 'Đã lưu',
alreadySavedDesc: '“{{spot}}” đã có trong “{{collection}}”',
saved: 'Đã lưu spot!',
savedDesc: 'Đã thêm "{{spot}}" vào "{{collection}}"',
saveFailed: 'Lưu thất bại',
somethingWrong: 'Đã xảy ra lỗi',
created: 'Đã tạo bộ sưu tập!',
createdDesc: 'Đã thêm "{{spot}}" vào bộ sưu tập mới "{{collection}}"',
createFailed: 'Tạo bộ sưu tập thất bại',
name: 'Tên bộ sưu tập',
descriptionOptional: 'Mô tả (không bắt buộc)',
creating: 'Đang tạo...',
createAndSave: 'Tạo & Lưu',
createNew: 'Tạo bộ sưu tập mới',
},
collection: {
back: 'Quay lại Bộ sưu tập',
created: 'Đã tạo {{date}}',
deleteTitle: 'Xóa bộ sưu tập?',
deleteDesc: 'Thao tác này sẽ xóa vĩnh viễn "{{title}}". Bản thân các spot không bị ảnh hưởng.',
deleting: 'Đang xóa...',
deleteFailed: 'Xóa bộ sưu tập thất bại',
deleted: 'Đã xóa bộ sưu tập',
deletedDesc: 'Đã xóa "{{title}}"',
empty: 'Không có spot trong bộ sưu tập này',
emptyOwner: 'Thêm spot vào bộ sưu tập bằng cách nhấn "Lưu vào bộ sưu tập" trên bất kỳ spot nào',
emptyOther: 'Bộ sưu tập này trống',
browseSpots: 'Xem các spot',
linkCopied: 'Đã sao chép liên kết!',
linkCopiedDesc: 'Đã sao chép liên kết bộ sưu tập vào clipboard',
map: 'Bản đồ bộ sưu tập',
removeFailed: 'Xóa spot thất bại',
shareText: 'Xem bộ sưu tập spot này: {{title}}',
spotRemoved: 'Đã xóa spot',
spotRemovedDesc: 'Đã xóa "{{title}}" khỏi bộ sưu tập này',
},
mints: {
title: 'Mint',
subtitle: 'Xem các mint Cashu và tình trạng hoạt động. Thao tác ví Cashu chạy trong ứng dụng SkateSpots.',
searchPlaceholder: 'Tìm mint theo tên hoặc URL…',
onlineOnly: 'Chỉ trực tuyến',
count: '{{filtered}} trên {{total}} mint',
directoryError: 'Không tải được danh bạ mint.',
directoryHint: 'Danh bạ do cộng đồng vận hành và bị giới hạn tần suất — có thể tạm thời không khả dụng.',
goToWallet: 'Đến Ví',
appOnly: 'Việc thêm mint diễn ra trong ứng dụng SkateSpots (Cashu chỉ chạy trên ứng dụng).',
noMatch: 'Không có mint nào khớp “{{query}}”.',
footer: 'Dữ liệu tình trạng từ dự án MintRadar cộng đồng — không chính thức và có thể lỗi thời. Luôn xem điều khoản của mint trước khi tin tưởng giao tiền.',
archived: 'Đã lưu trữ',
degraded: 'Suy giảm',
offline: 'Ngoại tuyến',
online: 'Trực tuyến',
terms: 'Điều khoản',
reliability: 'độ tin cậy',
add: 'Thêm',
addToWallet: 'Thêm vào ví',
copyUrl: 'Sao chép URL',
openMint: 'Mở mint',
inWallet: 'Trong ví của bạn',
addedBadge: 'Đã thêm',
urlCopied: 'Đã sao chép URL mint',
added: 'Đã thêm mint',
addedDesc: '{{host}} giờ đã có trong ví của bạn.',
couldNotAdd: 'Không thể thêm mint',
communityRating: 'Đánh giá cộng đồng',
reliabilityLabel: 'Độ tin cậy',
uptime: 'Thời gian hoạt động 24h / 7d',
location: 'Vị trí',
latency: 'Độ trễ',
nuts: 'NUT được hỗ trợ',
units: 'Đơn vị',
version: 'Phiên bản',
ratedBy: 'Được {{count}} người chấm {{rating}}/5 trên MintRadar.',
noRating: 'Chưa có đánh giá cộng đồng trên MintRadar.',
reviewsNote1: 'Đánh giá bằng văn bản không thuộc danh bạ —',
openMintRadar: 'mở MintRadar',
reviewsNote2: 'để đọc hoặc để lại một đánh giá.',
liveness: 'Kiểm tra hoạt động: đã thử {{mints}} mint và {{melts}} melt',
livenessErrors: ' · {{errors}}/{{total}} lỗi gần đây',
whatsAMint: 'Mint là gì?',
whatsAMintDesc: 'Một mint Cashu phát hành và đổi ecash trong ví của bạn. Nó giữ Bitcoin đảm bảo cho token của bạn — nên mint bạn không tự vận hành là mint bạn phải tin.',
mintWarning: 'Mint có thể ngừng hoạt động, đổi điều khoản hoặc biến mất cùng tiền. Chỉ giữ số dư nhỏ trừ khi bạn tin người vận hành.',
healthDisclaimer: 'Dữ liệu tình trạng do cộng đồng vận hành (MintRadar) — không chính thức và có thể lỗi thời.',
},
appShop: {
title: 'App Shop',
subtitle: 'Đồ SkateSpots cho những người giữ sân chơi luôn lăn bánh.',
comingSoon: 'Sắp ra mắt',
wearThe: 'Mặc lấy',
scene: 'Cộng đồng',
heroDesc1: 'Đồ cho những người giữ thứ này lăn bánh — bán',
locally: 'tại địa phương, theo yêu cầu',
heroDesc2: '. Bạn nhắn cho tôi, chúng ta sắp xếp chi tiết, và bạn trả bằng',
heroDesc3: '— Lightning hoặc Cashu — khi nhận hàng. Không thẻ, không tài khoản, không robot thanh toán, không trung gian ăn chênh.',
requestItem: 'Yêu cầu một món',
dmHint: 'Mở tin nhắn riêng tư, mã hóa với tôi.',
lightning: 'Lightning',
cashu: 'Cashu',
localHandover: 'Trao tay tại địa phương',
inTheWorks: 'Đang làm',
notForSale: 'chưa bán',
soon: 'sắp có',
tees: 'Áo thun & hoodie',
decks: 'Deck',
shopTools: 'Dụng cụ làm shop',
stickerPacks: 'Bộ sticker',
stickerPacksDesc: 'Các bộ đang tới. Nhưng thiết kế thì có — in hai cái này ngay bây giờ, miễn phí.',
sticker: 'Sticker',
stickerTip: 'Cắt màu đen. In trên giấy sticker, cắt theo viền đen.',
poster: 'Poster',
posterTip: 'In trên A3; thu nhỏ về A4 (50%) vẫn quét tốt.',
printableAlt: 'SkateSpots {{title}} — bản in được',
print: 'In',
printNote1: 'In ở',
actualSize: '100% / “Kích thước thực”',
printNote2: 'để kích thước chính xác và mã QR sắc nét — nó trỏ đến skate-spots.org. Tệp vector nên phóng to không bị mờ.',
howBuying: 'Cách mua hoạt động',
dmNotCart: 'đây là tin nhắn, không phải giỏ hàng',
step1Title: 'Nhắn cho tôi',
step1Desc: 'Gửi tin nhắn với món bạn muốn — món, cỡ, màu, bất cứ gì bạn cần.',
step2Title: 'Chúng ta sắp xếp',
step2Desc: 'Giá bằng sats, và địa điểm, thời gian gặp. Đây là trò chuyện, không phải thanh toán.',
step3Title: 'Trả bằng sats',
step3Desc: 'Lightning hoặc Cashu khi trao hàng, thế là của bạn. Không giao hàng, không phòng chờ.',
},
newsletter: {
newIssue: 'Số mới',
composerTitle: 'Xuất bản một số bản tin',
composerDesc: 'Xuất bản dưới dạng bài NIP-23 (kind 30023) trên relay cộng đồng. Người đăng ký nhận trong chuông thông báo. Nội dung hỗ trợ Markdown.',
fieldTitle: 'Tiêu đề',
identifier: 'Định danh (slug)',
leaveBlank: 'để trống để tự tạo',
reusingSlug: 'Dùng lại slug có sẵn sẽ sửa số đó thay vì tạo số mới.',
summary: 'Tóm tắt',
optional: 'không bắt buộc',
coverImage: 'URL ảnh bìa',
bodyMarkdown: 'Nội dung (Markdown)',
characters: '{{count}} ký tự',
publishIssue: 'Xuất bản số',
issuePublished: 'Đã xuất bản số! 🛹',
issuePublishedDesc: 'Người đăng ký sẽ thấy trong chuông thông báo.',
publishFailed: 'Xuất bản thất bại',
couldNotReachRelay: 'Không kết nối được relay nào — kiểm tra kết nối và thử lại.',
tryAgain: 'Vui lòng thử lại.',
publishedToNostr: 'Đã xuất bản lên Nostr',
publishedToast: 'Đã xuất bản!',
postedToNostr: 'Drop {{number}} đã đăng lên Nostr.',
postToNostr: 'Đăng lên Nostr',
previewLabel: 'Xem trước',
editFirst: 'Sửa trước',
previewNoteDesc: 'Đây là cách ghi chú sẽ hiển thị trên hầu hết client Nostr. Định dạng tùy client.',
editNoteDesc: 'Sửa nội dung ghi chú bên dưới. Thay đổi chỉ ảnh hưởng lần xuất bản này — tệp nguồn giữ nguyên.',
dropNumber: 'Drop {{number}}',
publish: 'Xuất bản',
publishing: 'Đang xuất bản...',
dropIsOut: 'Drop {{number}} đã ra',
daysAgo: '{{count}} ngày trước',
dismiss: 'Bỏ qua',
itsMonday: 'Hôm nay là thứ Hai',
mondayDesc: 'Đến lúc phát bản tin hằng tuần. Một cú nhấn và AI viết từ git log.',
writeDrop: 'Viết Drop {{number}}',
dismissReminder: 'Bỏ qua nhắc nhở',
loginPrompt: 'Đăng nhập bằng Nostr để nhận drop mới vào hộp thư.',
subscribedToast: 'Bạn đã đăng ký! 🛹',
subscribedToastDesc: 'Drop mới sẽ vào chuông thông báo trong mục "News".',
unsubscribed: 'Đã hủy đăng ký',
unsubscribedDesc: 'Bạn vẫn có thể đọc mọi số ở đây bất cứ lúc nào.',
checking: 'Đang kiểm tra…',
subscribed: 'Đã đăng ký',
unsubscribe: 'Hủy đăng ký',
subscribeCta: 'Đăng ký bản tin',
archiveSynced: 'Kho lưu đã đồng bộ lên Nostr',
missingCount: '{{count}} số lưu trữ chưa có trên Nostr',
backfillDesc: 'Xuất bản {{list}} dưới dạng bài NIP-23 để người đăng ký và người đọc bài dài thấy toàn bộ kho lưu. Trang vẫn giữ bố cục phong phú.',
backfill: 'Điền bù {{count}} lên Nostr',
publishing2: 'Đang xuất bản…',
publishingLabel: 'Đang xuất bản…',
backfilled: 'Đã điền bù {{count}} số 🛹',
backfilledDesc: 'Kho lưu giờ đã có trên Nostr cho người đăng ký và độc giả.',
partialBackfill: 'Đã xuất bản {{published}}, {{failed}} thất bại',
retryFinish: 'Thử lại để hoàn tất: {{list}}.',
notLoggedIn: 'Chưa đăng nhập',
allIssues: 'Tất cả số',
brand: 'Bản tin SkateSpots',
digTheDrop: 'Thích drop này? Hãy zap và đừng bỏ lỡ số tới.',
sectionStats: 'Cộng đồng qua những con số',
sectionWhatsNew: 'Có gì mới',
sectionSpotOfWeek: 'Spot của tuần',
sectionCommunity: 'Cộng đồng',
sectionSupport: 'Ủng hộ dự án',
sectionLatestDrops: 'Drop mới nhất · Trực tiếp từ Nostr',
mappedBy: 'Được vẽ bởi',
viewOnMap: 'Xem trên bản đồ',
noSpotPicked: 'Tuần này chưa chọn spot. Gửi spot của bạn, biết đâu vào số tới.',
browseMap: 'Xem bản đồ',
spotMap: 'Bản đồ spot',
statsBadge: 'Thống kê',
supportDesc: '100% mã nguồn mở, do cộng đồng tài trợ, không quảng cáo, không nhà đầu tư. Nếu thấy hữu ích, hãy zap hoặc ủng hộ trên Angor.',
readFull: 'Đọc toàn bộ số',
joinSkaters: 'Tham gia cùng {{count}} skater nhận drop',
weeklyDrops: 'Drop hằng tuần',
tagline: 'Bản tin hằng tuần · phát bất cứ khi nào chúng tôi muốn',
freeNote: 'Miễn phí. Vận hành bằng Nostr — đăng ký của bạn nằm trên khóa của bạn và theo bạn qua mọi thiết bị. Drop mới vào chuông thông báo.',
live: 'Trực tiếp',
builtOn: 'Xây trên',
openSource: 'Mã nguồn mở',
supportUs: 'Ủng hộ chúng tôi',
freeToSkate: 'Bạn được tự do trượt ván',
},
stats: {
subtitle: 'Chỉ số trực tiếp lấy từ mạng Nostr. Minh bạch, phi tập trung, ai cũng kiểm chứng được.',
dataSource: 'Nguồn dữ liệu:',
updated: 'cập nhật {{age}}',
refresh: 'Làm mới',
partial: 'Không kết nối được mọi relay — những con số này có thể chưa đầy đủ.',
error: 'Hiện không kết nối được relay. Thống kê sẽ tải khi kết nối được khôi phục.',
atAGlance: 'Cộng đồng trong nháy mắt',
skateSpots: 'Skate Spot',
listedShops: 'Shop niêm yết',
events: 'Sự kiện',
mappers: 'Người vẽ bản đồ',
uniqueContributors: 'người đóng góp riêng biệt',
labHeader: 'The Lab · Người sáng tạo & Dịch vụ',
total: '{{count}} tổng cộng',
coaches: 'Coach',
filmers: 'Filmer',
editors: 'Editor',
photographers: 'Nhiếp ảnh gia',
builders: 'Thợ làm',
artists: 'Nghệ sĩ',
graffiti: 'Graffiti',
tattoo: 'Hình xăm',
trainers: 'Huấn luyện viên',
musicians: 'Nhạc sĩ',
judges: 'Giám khảo',
organizers: 'Nhà tổ chức',
barbers: 'Thợ cắt tóc',
designers: 'Nhà thiết kế',
showFewer: 'Hiện ít hơn',
showAllCrafts: 'Hiện cả 15 nghề',
community: 'Cộng đồng',
tours: 'Tour',
crews: 'Crew',
marketplace: 'Chợ',
liveListings: 'Tin đăng đang hoạt động',
tradesRecorded: 'Giao dịch đã ghi',
satsTraded: 'Sats đã giao dịch',
zapsToMappers: 'Zap cho người vẽ bản đồ',
tradesNote1: 'giao dịch tương hỗ giữa',
tradesNote2: 'người. Sats do người giao dịch tự khai — ứng dụng không thể quan sát khoản trả ngoài ứng dụng — nên con số chính chỉ đếm các',
mutual: 'giao dịch tương hỗ',
tradesNote3: 'với giới hạn mỗi cặp; con số thô là',
tradesNote4: 'sats. "Zap cho người vẽ bản đồ" chỉ đếm biên lai gửi đến những người đóng góp hàng đầu của chúng ta — đây',
not: 'không phải',
tradesNote5: 'tổng khối lượng zap toàn cầu.',
byRegion: 'Spot & Shop theo khu vực',
resolving: 'Đang phân giải {{count}} vị trí chưa gắn thẻ từ tọa độ… một lần, rồi lưu trên thiết bị này.',
topCountries: 'Quốc gia hàng đầu',
topCities: 'Thành phố hàng đầu',
other: 'Khác',
otherCountriesTitle: 'Quốc gia ngoài top 6',
otherCitiesTitle: 'Thành phố ngoài top 6',
uncategorised: 'Chưa phân loại',
uncategorisedTitle: 'Không có thẻ thành phố/quốc gia',
regionNote1: 'Đếm',
spotsAndShops: 'spot & shop',
regionNote2: ', không phải skater — từ thẻ thành phố/quốc gia của chính mỗi mục, hoặc suy ra từ tọa độ ghim khi không có (lưu trên thiết bị; quốc gia nhóm theo mã ISO nếu có), chỉ relay cộng đồng, loại trừ nội dung bị kiểm duyệt ẩn.',
ofTotal: '{{count}} trên {{total}}',
regionNote3: 'vị trí không có thẻ vị trí và hiện là "Chưa phân loại".',
growth: 'Tăng trưởng theo thời gian',
chartCumulativeTitle: 'Spot đã vẽ (lũy kế)',
chartCumulativeDesc: 'Tổng số spot thêm vào bản đồ theo thời gian',
chartMonthlyTitle: 'Hoạt động hằng tháng',
chartMonthlyDesc: 'Nội dung mới xuất bản mỗi tháng',
chartMappersTitle: 'Người vẽ tích cực / tháng',
chartMappersDesc: 'Người đóng góp riêng biệt xuất bản mỗi tháng',
chartMixTitle: 'Cơ cấu nội dung',
chartMixDesc: 'Phân tích theo loại nội dung (mọi thời gian)',
noData: 'Chưa có dữ liệu',
topMappers: 'Người vẽ hàng đầu',
mostSpots: '— thêm nhiều spot nhất',
noMapperData: 'Chưa có dữ liệu người vẽ',
topShops: 'Shop hàng đầu',
mostShops: '— thêm nhiều shop nhất',
shopCount: '{{count}} shop',
noShopData: 'Chưa có dữ liệu shop',
supporters: 'Người ủng hộ cộng đồng',
fundedTitle: 'Được cộng đồng tài trợ',
fundedDesc1: 'Gây quỹ Bitcoin phi tập trung qua Angor.',
fundedDesc2: 'Không quảng cáo, không nhà đầu tư, không bán dữ liệu.',
backAngor: 'Ủng hộ trên Angor',
communityLink: 'Cộng đồng →',
footer1: 'Mọi dữ liệu được lấy trực tiếp từ',
footer2: '— một relay Nostr công khai.',
footer3: 'Mọi sự kiện đều được người tạo ký và kiểm chứng bằng mật mã.',
footer4: 'Không con số nào có thể bị làm giả.',
spots: 'Spot',
shops: 'Shop',
lab: 'Lab',
thisMonth: '+{{count}} tháng này',
fromActive: '{{count}} từ tài khoản hoạt động',
viewAll: 'Xem tất cả',
spotCount: '{{count}} spot',
},
leaderboard: {
mapEarn: 'Vẽ bản đồ & Nhận thưởng',
helpMap: 'GIÚP VẼ BẢN ĐỒ THẾ GIỚI',
intro: 'Thêm spot và shop, nhận zap từ những skater biết ơn. Người đóng góp hàng đầu có thể nhận thưởng thêm!',
howItWorks: 'Cách hoạt động',
step1Title: '1. Vẽ bản đồ',
step1Desc: 'Thêm spot & shop kèm ảnh và chi tiết',
step2Title: '2. Nhận zap',
step2Desc: 'Skaters thấy spot của bạn hữu ích sẽ tip bạn',
step3Title: '3. Thưởng thêm',
step3Desc: 'Người vẽ hàng đầu có thể nhận thưởng thêm từ quỹ của chúng tôi',
proTips: '💡 Mẹo hay để nhận nhiều zap hơn:',
tipPhotos: 'Thêm 3+ ảnh',
tipDescriptions: 'Viết mô tả chi tiết',
tipLocation: 'Vị trí chính xác',
mapShop: 'Vẽ một shop',
mapShopDesc: 'Skate shop, cửa hàng ván',
mapSpot: 'Vẽ một spot',
mapSpotDesc: 'Công viên, spot đường phố, DIY',
shops: 'Shop',
spotsLower: 'spot',
shopsLower: 'shop',
contributions: 'đóng góp',
yourRanking: 'Xếp hạng của bạn',
spotsShops: '{{spots}} spot • {{shops}} shop',
totalLower: 'tổng',
overall: 'Tổng thể',
noContributions: 'Chưa có đóng góp. Hãy là người đầu tiên!',
addFirstSpot: 'Thêm spot đầu tiên',
noShops: 'Chưa có shop nào được vẽ',
addFirstShop: 'Thêm shop đầu tiên',
noSpots: 'Chưa có spot nào được vẽ',
poweredBy: 'Vận hành bởi Zap cộng đồng',
poweredByDesc: 'Khi bạn thấy một spot hữu ích, hãy zap người vẽ! Đó là cách cảm ơn tốt nhất và khích lệ thêm đóng góp.',
you: 'Bạn',
zapTitle: 'Bảng xếp hạng zap',
zapSubtitle: 'Những spot được yêu thích nhất — và những skater trao đi.',
thisWeek: 'Tuần này',
thisMonth: 'Tháng này',
allTime: 'Mọi thời gian',
topZappedSpots: 'Spot được zap nhiều nhất',
noZaps: 'Chưa có zap trong kỳ này. Hãy là người đầu tiên — nhấn ⚡ trên spot bạn thích.',
topSupporters: 'Người ủng hộ hàng đầu',
noZapsSent: 'Chưa ai gửi zap trong kỳ này.',
fromTop10: '⚡ {{amount}} sats từ top 10',
supporter: 'Người ủng hộ',
skateShop: 'Skate shop',
skateSpot: 'Skate spot',
},
supporters: {
our: 'CỦA CHÚNG TÔI',
community: 'CỘNG ĐỒNG',
heroDesc: 'SkateSpots được xây bởi và vì cộng đồng. Những người ủng hộ, cộng tác viên, đối tác và bạn bè cùng giữ điều này miễn phí và phi tập trung.',
grantsSection: 'Tổ chức tài trợ Bitcoin',
grantsSectionDesc: 'Dành cho các tổ chức cấp tài trợ cho các dự án Bitcoin mã nguồn mở.',
grantsTitle: 'Mở cho tài trợ · Tổ chức tài trợ Bitcoin',
grantsDisclaimer: 'Muốn quyên góp cho dự án này? Hãy điền biểu mẫu. Không phải để KYC chúng tôi — mà để KYC BẠN.',
grantsDisclaimerDesc: 'Kênh này chỉ dành cho các tổ chức tài trợ thực hiện KYC/KYB với người nhận tài trợ. Nếu bạn là một skater chỉ muốn quyên góp, hãy dùng các kênh Lightning, Silent Payments hoặc Angor ở trên — không ai cần hộ chiếu của bạn.',
grantsOrg: 'Tổ chức',
grantsContact: 'Liên hệ (npub, thư điện tử hoặc tên người dùng)',
grantsWebsite: 'Trang web',
grantsProgram: 'Chương trình / vòng tài trợ',
grantsSize: 'Quy mô tài trợ',
grantsKyc: 'Quy trình KYC / KYB',
grantsFund: 'Bạn muốn tài trợ cho điều gì?',
grantsAck: 'Tôi xác nhận chúng tôi là tổ chức tài trợ thực hiện KYC/KYB với người nhận tài trợ.',
grantsSend: 'Mở cuộc trò chuyện về tài trợ',
grantsNoKycTitle: 'Không KYC SkateSpots',
grantsNoKycDesc: 'Chúng tôi không bao giờ hỏi giấy tờ của bạn hay của chúng tôi. Kênh KYC/KYB là dành cho người nhận tài trợ của bạn.',
grantsNoTrackingTitle: 'Không theo dõi',
grantsNoTrackingDesc: 'Không phân tích, CRM hay danh sách thư. Trang này không lưu gì cả.',
grantsPrivateTitle: 'Tin nhắn riêng',
grantsPrivateDesc: 'Mở cuộc trò chuyện NIP-17 được mã hóa với chủ sở hữu.',
grantsEthos: 'Chúng tôi chỉ nhận tài trợ giúp SkateSpots duy trì mã nguồn mở, tự lưu trữ và không có phân tích. Không kèm điều kiện nào đóng dự án.',
grantsNote: 'Mở tin nhắn riêng tới chủ sở hữu SkateSpots. Không có gì được lưu trên trang này.',
backAngor: 'Ủng hộ trên Angor',
backers: 'Người ủng hộ',
backersDesc: 'Những skater đã ủng hộ SkateSpots — tài trợ on-chain qua Angor, và zap Lightning cho dự án.',
sourceAngor: 'Angor',
supportersTotals: '{{count}} người ủng hộ · {{angor}} sats qua Angor · {{zap}} sats đã zap',
quietNote: 'Cùng tất cả những ai ủng hộ âm thầm — cảm ơn bạn. ❤️',
silentTitle: 'Riêng tư on-chain (silent payments)',
silentDesc: 'Một tên, một địa chỉ mới cho mỗi lần trả — on-chain qua silent payments, hoặc Lightning từ cùng bản ghi. Không gì để dùng lại, không gì để liên kết.',
silentCopyName: 'Sao chép tên',
silentCopied: 'Đã sao chép',
silentWallets: 'Cần ví hỗ trợ payment names / silent payments: Sparrow, Cake, Dana, Phoenix, BlueWallet, Wasabi, Nunchuk hoặc BitBox02.',
wayLightningTitle: 'Tức thì & công khai',
wayLightningDesc: 'Zap SkateSpots, hoặc trả âm thầm. Hoạt động cả khi chưa đăng nhập.',
waySilentTitle: 'Riêng tư on-chain',
waySilentDesc: 'Một tên silent-payments — địa chỉ mới cho mỗi lần trả.',
wayAngorTitle: 'Tài trợ việc xây dựng',
wayAngorDesc: 'Angor — giải ngân theo giai đoạn, hoàn lại khi trên 100k sats.',
donateTitle: 'Ủng hộ SkateSpots',
donateDesc: 'Ba kênh, ba lý do — chọn cái hợp với bạn. Mỗi sat giữ bản đồ miễn phí, không quảng cáo và mã nguồn mở.',
donatePageLink: 'Mở trang quyên góp đơn giản',
updatedAt: 'Cập nhật {{when}}',
tiersNote: 'Cấp bậc: Người ủng hộ dưới 100k sats · Mạnh thường quân 100k–1M · Huyền thoại 1M+',
tierEmpty: 'Chưa có ai — hãy là người đầu tiên.',
joinSupporters: 'Tham gia cùng {{count}} người ủng hộ',
showAll: 'Hiện tất cả {{count}}',
showLess: 'Hiện ít hơn',
impactSeeStats: 'Xem bức tranh đầy đủ →',
impactAsOf: 'trực tiếp từ các relay cộng đồng',
anonymousBacker: 'Người ủng hộ ẩn danh',
beFirstBacker: 'Chưa có người ủng hộ công khai — hãy là người đầu tiên.',
backersTotal: '{{count}} người ủng hộ · {{amount}} sats đã gây quỹ',
verifiedOnChain: 'Đã xác minh on-chain',
supportedBy: 'Được {{count}} ủng hộ',
tierSupporter: 'Người ủng hộ',
tierPatron: 'Mạnh thường quân',
tierLegend: 'Huyền thoại',
topZappers: 'Đã zap SkateSpots',
topZappersDesc: 'Những skater đã gửi zap công khai thẳng cho dự án. Các khoản trả âm thầm không được liệt kê.',
paysFor: 'Sự ủng hộ của bạn chi trả cho gì',
paysForDesc: 'Mỗi sat đi đâu — không lương, không văn phòng, không quảng cáo.',
payRelay: 'Lưu trữ relay',
payDomain: 'Tên miền & TLS',
payAi: 'Nút AI / ContextVM',
payDev: 'Thời gian phát triển',
payOps: 'Vận hành',
payMarketing: 'Tiếp thị',
payRelayDesc: 'Giữ bản đồ luôn hoạt động và bền bỉ.',
payDomainDesc: 'Tên miền, chứng chỉ, kết nối an toàn.',
payAiDesc: 'Sasquatch, người hướng dẫn cộng đồng.',
payDevDesc: 'Xây dựng và sửa SkateSpots.',
payOpsDesc: 'Công việc âm thầm giữ mọi thứ chạy.',
payMarketingDesc: 'Vươn tới các sân chơi địa phương và skateshop mới.',
impact: 'Tác động đến nay',
impactDesc: 'Những gì cộng đồng đã xây — tài trợ bởi skater.',
impactSpots: 'Spot',
impactCrews: 'Crew',
impactEvents: 'Sự kiện',
impactLab: 'Lab pro',
impactShops: 'Shop',
impactMappers: 'Người vẽ',
support: 'Ủng hộ',
supportDesc: 'Tài trợ SkateSpots trên Angor — gây quỹ Bitcoin phi tập trung, on-chain. Không trung gian, không KYC.',
collaborators: 'Cộng tác viên',
collaboratorsDesc: 'Những người đang tích cực xây SkateSpots — lập trình viên, nhà thiết kế, người vận hành relay.',
partners: 'Đối tác',
partnersDesc: 'Các tổ chức và dự án chúng tôi hợp tác chặt chẽ.',
friends: 'Bạn bè',
friendsDesc: 'Những người chúng tôi hợp gu.',
backTitle: 'Ủng hộ dự án trên Angor',
backDesc: 'Angor là hình thức tài trợ Bitcoin on-chain phi tập trung xây trên Nostr — tiền của bạn vẫn trong tầm kiểm soát, giải ngân theo giai đoạn, không bên giữ hộ nào giữ quỹ. Khoản góp tới 100.000 sats hoạt động như quyên góp (không cần handshake thu hồi); khoản lớn hơn là đầu tư và phần chưa dùng có thể thu hồi. Mỗi sat đi vào phát triển, lưu trữ relay và giữ SkateSpots miễn phí cho mọi skater trên trái đất.',
donateNote: 'Thích quyên góp thẳng hơn? ⚡ Zap bên dưới — không gì phải hoàn, không gì phải thu hồi.',
openAngor: 'Mở Angor',
orZap: 'hoặc ⚡ zap trực tiếp bất kỳ spot, crew hay người sáng tạo nào trong ứng dụng',
wantCollaborate: 'Muốn cộng tác?',
wantCollaborateDesc: 'Lập trình viên, nhà thiết kế, skater có kỹ năng — hãy liên hệ.',
viewNostrHub: 'Xem trên NostrHub',
wantPartner: 'Muốn hợp tác với SkateSpots? Hãy liên hệ trên Nostr.',
comingSoon: 'Sắp ra mắt',
wantListed: 'Muốn được liệt kê ở đây?',
wantListedDesc: 'Gửi logo (PNG/WebP, nền trong suốt, tối thiểu 200×200px) và URL qua tin nhắn riêng trên Nostr, nếu bạn thấy hợp gu.',
whyTitle1: 'Vì sao chúng tôi cần',
whyTitle2: 'Sự ủng hộ',
whyDesc: 'SkateSpots hoàn toàn miễn phí, mã nguồn mở, xây trên Nostr — giao thức phi tập trung không có server trung tâm để đóng. Không quảng cáo, không bán dữ liệu, không nhà đầu tư. Mỗi sat đi thẳng vào phát triển, lưu trữ relay và giữ điều này miễn phí cho mọi skater trên trái đất.',
why1Title: 'Thuần Nostr',
why1Desc: 'Không server trung tâm. Dữ liệu của bạn nằm trên relay bạn chọn.',
why2Title: 'Vận hành bằng Bitcoin',
why2Desc: 'Kiếm sats từ việc vẽ bản đồ. Tiêu chúng ở shop địa phương.',
why3Title: 'Miễn phí mãi mãi',
why3Desc: 'Mã nguồn mở, không paywall, không theo dõi, không vốn đầu tư mạo hiểm.',
thankYou: 'Cảm ơn bạn. Mỗi sat giữ các spot trên bản đồ. 🛹⚡',
license: 'Giấy phép',
faq: 'FAQ',
},
admin: {
confirmed: 'Đã xác nhận',
title: 'Hàng chờ duyệt',
subtitle: 'Spot, shop, sự kiện, tour và gear vi phạm tín hiệu rác. Ẩn và Xác nhận là nhãn mềm, có thể đảo ngược; báo cáo xếp trước. Không gì bị xóa.',
tabReports: 'Báo cáo',
tabSpots: 'Spot',
tabShops: 'Shop',
tabEvents: 'Sự kiện',
tabTours: 'Tour',
tabGear: 'Gear',
tabCrews: 'Crew',
tabLab: 'Lab',
tabClaims: 'Yêu cầu',
nothingToReview: 'Không có gì để duyệt — không có mục nào loại này vi phạm tín hiệu rác.',
hideActioned: 'Ẩn mục đã xử lý',
showActioned: 'Hiện mục đã xử lý ({{count}})',
undoAll: 'Hoàn tác tất cả {{count}}',
undoAllTitle: 'Hoàn tác mọi phán quyết trong tab này?',
undoAllDesc: 'Thao tác này đưa từng mục về trung lập — không ẩn, không xác nhận. Nó xuất bản một nhãn công khai cho mỗi mục, nên với Amber bạn sẽ nhận {{count}} màn hình phê duyệt.',
undoCount: 'Hoàn tác {{count}}',
undo: 'Hoàn tác',
confirm: 'Xác nhận',
hide: 'Ẩn',
hideIt: 'Ẩn nó',
hideForEveryone: 'Ẩn điều này với mọi người?',
hideForEveryoneDesc: 'Thao tác này xóa mục khỏi duyệt và tìm kiếm với mọi người dùng SkateSpots. Đây là nhãn công khai, có thể đảo ngược — bạn có thể Hoàn tác từ hàng chờ này.',
hidden: 'Đã ẩn',
hiddenDesc: 'Đã xóa khỏi ứng dụng bằng nhãn công khai. Có thể đảo ngược.',
couldNotHide: 'Không thể ẩn',
notASpot: 'Không phải skate spot',
lookAtIt: 'Xem nó',
},
profile: {
nip05Verified: 'Đã xác minh NIP-05',
nip05NotVerified: 'NIP-05 chưa được xác minh với khóa này',
message: 'Nhắn tin',
eventsHosted: 'Sự kiện đã tổ chức',
labServices: 'Dịch vụ Lab',
openToSponsorships: 'Sẵn sàng nhận tài trợ',
forSponsors: 'Dành cho nhà tài trợ & hợp tác',
sponsorPitch: 'Tài trợ, hợp tác, ảnh/video hay sự kiện? Bắt đầu trò chuyện nhé.',
startCollab: 'Bắt đầu trò chuyện hợp tác',
viewRiderCard: 'Xem thẻ người trượt ván',
collabMessage: 'Chào {{name}}, tôi muốn trao đổi về tài trợ hoặc hợp tác.',
followers: 'Người theo dõi',
followersHint: 'Danh sách người theo dõi do relay báo cáo — không phải số liệu phân tích đã kiểm toán.',
following: 'Đang theo dõi',
follow: 'Theo dõi',
unfollow: 'Bỏ theo dõi',
zapsReceived: 'zap đã nhận',
memberSince: 'Thành viên từ',
badges: 'Huy hiệu',
sponsorsSupport: 'Nhà tài trợ & ủng hộ',
skater: 'Skater',
stance: 'Tư thế',
skating: 'Trượt ván',
homeSpot: 'Spot nhà',
basedIn: 'Ở tại',
addSkateDetails: 'Thêm chi tiết trượt ván của bạn',
addSkateDetailsDesc: 'Đặt tư thế, phong cách & trình độ để xuất hiện trong danh bạ Skater.',
spotsAdded: 'Spot đã thêm',
shopsAdded: 'Shop đã thêm',
noSpots: 'Bạn chưa thêm spot nào',
noSpotsDesc: 'Đưa spot địa phương của bạn lên bản đồ →',
stash: 'Stash',
gear: 'Gear',
crews: 'Crew',
info: 'Thông tin',
lightning: 'Lightning',
silentPayment: 'Silent Payment',
coordinator: 'Coordinator',
coordinatorAdded: 'Đã thêm coordinator',
add: 'Thêm',
messagePrivately: 'Nhắn riêng',
founder: 'Người sáng lập',
member: 'Thành viên',
supportSkater: 'Ủng hộ skater này',
supportSkaterDesc: 'Gửi tip để cảm ơn những đóng góp của họ',
},
index: {
joinCommunity: 'Tham gia cộng đồng để thêm spot, tạo sự kiện & hơn nữa',
topZapped: 'ZAP NHIỀU NHẤT',
topZappedDesc: 'Spot được ủng hộ nhiều nhất tháng này',
leaderboard: 'Bảng xếp hạng',
newHere: 'MỚI ĐẾN?',
newHereDesc: 'Tạo tài khoản miễn phí để thêm spot, tham gia sự kiện, kết nối với skater và trở thành một phần của cộng đồng. Không cần email.',
followFounder: 'Theo dõi Người sáng lập',
followFounderDesc: 'Giữ avatar 3 giây để theo dõi và cập nhật tính năng, sự kiện mới!',
createAccount: 'Tạo tài khoản',
accountWorks: 'Tài khoản của bạn hoạt động trên mọi ứng dụng trong mạng lưới',
footerTagline: 'Mã nguồn mở • Cộng đồng sở hữu • Không quảng cáo',
},
stash: {
title: 'Stash của tôi',
loginDesc: 'Kho gear riêng tư của bạn. Theo dõi những gì bạn có, đặt giá, và chia sẻ chọn lọc với người giao dịch.',
encrypted: 'Đã mã hóa',
syncsEverywhere: 'Đồng bộ mọi nơi',
p2pTrading: 'Giao dịch P2P',
encryptionRequired: 'Cần mã hóa',
encryptionRequiredDesc: 'Stash của bạn được mã hóa để riêng tư. Vui lòng dùng signer hỗ trợ mã hóa NIP-44 (như Alby, nos2x hoặc Amber).',
learnSigners: 'Tìm hiểu về Signer',
select: 'Chọn',
stash: 'Stash',
wishlist: 'Danh sách mong muốn',
allCategories: 'Mọi danh mục',
sortNewest: 'Mới nhất',
sortValue: 'Giá trị',
sortCondition: 'Tình trạng',
sortAz: 'A–Z',
friendsOnly: 'Chỉ bạn bè',
addToWishlist: 'Thêm vào danh sách mong muốn',
addItemToStash: 'Thêm món vào Stash',
addItem: 'Thêm món',
editItem: 'Sửa món',
publicStash: 'Stash công khai',
listView: 'Xem dạng danh sách',
gridView: 'Xem dạng lưới',
uploading: 'Đang tải lên...',
addPhotos: 'Thêm ảnh',
wishlistReqPlaceholder: 'Yêu cầu cụ thể nào...',
itemDescPlaceholder: 'Mô tả món, hư hỏng...',
itemsCount: '{{count}} món',
wishlistEmpty: 'Danh sách mong muốn trống',
wishlistEmptyDesc: 'Thêm gear bạn đang tìm — chúng tôi sẽ ghép bạn với stash của bạn bè.',
stashEmpty: 'Stash của bạn trống',
stashEmptyDesc: 'Bắt đầu theo dõi gear. Deck, truck, giày — thêm một lần, truy cập mọi nơi qua Nostr.',
noMatch: 'Không có món nào khớp',
noMatchDesc: 'Thử điều chỉnh bộ lọc.',
backupTransfer: 'Sao lưu & chuyển',
backupDesc: 'Stash của bạn được mã hóa trên Nostr. Giữ một bản bạn kiểm soát — relay chết hay tài khoản mới không thể làm mất danh sách gear.',
exportTitle: 'Sao lưu mã hóa',
exportDialogDesc: 'Lưu {{count}} món vào tệp. Mã hóa để tệp bị lộ không thành rò rỉ.',
modePassword: 'Mật khẩu',
modeKey: 'Khóa của tôi',
password: 'Mật khẩu',
confirmPassword: 'Xác nhận mật khẩu',
passwordHint: 'Dùng ít nhất 8 ký tự. Không có cách khôi phục — đừng quên.',
keyModeHint: 'Mã hóa bằng khóa Nostr của bạn. Chỉ khóa đó mở được — không cần nhớ gì.',
exportPlaintext: 'Xuất không mã hóa',
pwTooShort: 'Dùng ít nhất 8 ký tự.',
pwMismatch: 'Mật khẩu không khớp.',
exportFailed: 'Không thể tạo bản sao lưu.',
unlockTitle: 'Mở khóa bản sao lưu',
unlockDesc: 'Bản sao lưu này được bảo vệ bằng mật khẩu.',
unlock: 'Mở khóa',
unlockFailed: 'Không thể mở khóa bản sao lưu.',
show: 'Hiện',
hide: 'Ẩn',
strength: 'Độ mạnh mật khẩu',
strengthWeak: 'Yếu',
strengthFair: 'Tạm',
strengthGood: 'Tốt',
strengthStrong: 'Mạnh',
filenameWillSave: 'Sẽ lưu thành {{name}}',
export: 'Xuất',
import: 'Nhập',
exported: 'Đã xuất Stash',
exportedDesc: 'Đã lưu {{count}} món vào tệp.',
noItemsInFile: 'Không tìm thấy món nào trong tệp đó.',
noValidItems: 'Không tìm thấy món hợp lệ trong tệp đó.',
imported: 'Đã nhập {{count}} món',
importSkipped: '{{count}} bị bỏ qua (đã có trong stash).',
importAdded: 'Đã thêm vào stash.',
importFailed: 'Nhập thất bại',
couldNotRead: 'Không đọc được tệp đó.',
updateFailed: 'Không thể cập nhật stash',
updatedCount: 'Đã cập nhật {{count}} món',
markedForSale: 'Đã đánh dấu bán {{count}} món',
unmarkedCount: 'Đã bỏ đánh dấu {{count}}',
removedCount: 'Đã xóa {{count}} món',
selectedCount: 'Đã chọn {{count}}',
selectAll: 'Chọn tất cả',
visibilityPublic: 'Công khai',
visibilityPrivate: 'Riêng tư',
forSale: 'Đang bán',
remove: 'Xóa',
bulkDeleteTitle: 'Xóa {{count}} món?',
bulkDeleteDesc: 'Thao tác này viết lại stash đã mã hóa bằng một chữ ký và không thể hoàn tác ở đây. Hãy xuất sao lưu trước nếu chưa chắc.',
deleteTitle: 'Xóa khỏi stash?',
deleteDesc: '“{{title}}” sẽ bị xóa khỏi stash',
deleteDescPublic: ' và bỏ niêm yết khỏi gian hàng công khai',
deleteUndone: '. Không thể hoàn tác.',
deleteDescGeneric: 'Món này sẽ bị xóa khỏi stash. Không thể hoàn tác.',
listOnMarketplace: 'Đăng lên Chợ',
noPriceSet: 'Chưa đặt giá',
categoryLabel: 'Danh mục',
photosLabel: 'Ảnh',
willingToSell: 'Sẵn sàng bán',
willingToTrade: 'Sẵn sàng trao đổi',
whereIsThisItem: 'Món này ở đâu?',
visibilityLabel: 'Hiển thị',
visibilityPrivateOnlyYou: 'Riêng tư - Chỉ bạn',
visibilityFriendsMutual: 'Bạn bè - Theo dõi lẫn nhau',
visibilityPublicAnyone: 'Công khai - Mọi người',
visibilityFriends: 'Bạn bè',
brandLabel: 'Thương hiệu',
sizeLabel: 'Cỡ',
descriptionLabel: 'Mô tả',
conditionLabel: 'Tình trạng',
itemName: 'Tên món',
saveChanges: 'Lưu thay đổi',
listItemDialogTitle: 'Đăng "{{title}}"',
pickUpWhere: 'Người mua có thể nhận món này ở đâu?',
linkToSpot: 'Liên kết với một Skate Spot',
linkToSpotDesc: 'Tốt nhất cho bán địa phương • Hiện trên trang spot & bản đồ',
recommended: 'Khuyến nghị',
noSpecificSpot: 'Không có spot cụ thể',
noSpecificSpotDesc: 'Chỉ hiện trên trang Chợ',
tipLinkedSpots: '💡 Mẹo: Tin đăng liên kết với spot dễ tìm hơn cho skater địa phương.',
anyoneCanSee: 'Mọi người đều thấy những mục này trên hồ sơ của bạn.',
seeWhatOthersSee: 'Xem như người khác thấy',
inventory: 'Kho',
publicWantsNote: 'Mong muốn công khai được đăng lên Chợ dưới dạng tin "cần mua", để người bán tìm thấy bạn.',
howItWorks: 'Cách hoạt động',
tapToMarketplace: 'Nhấn để đến Chợ →',
viewWishlist: 'Xem danh sách mong muốn',
tipEditItems: 'Sửa món bằng nút bút',
tipListForSale: 'Đăng bán bằng nút cửa hàng',
tipAddPhotos: 'Thêm ảnh để nhận đề nghị trao đổi tốt hơn',
tipKeySyncs: 'Khóa Nostr đồng bộ mọi thiết bị',
itemsReadyToSell: '{{count}} món sẵn sàng bán',
},
},
};
export default viBatch4;