Files
gudari/app/src/main/java/com/bitcointxoko/gudariwallet/i18n/EnStrings.kt
T
2026-06-10 16:08:38 +02:00

411 lines
24 KiB
Kotlin
Raw Blame History

This file contains ambiguous Unicode characters
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.
package com.bitcointxoko.gudariwallet.i18n
import cafe.adriel.lyricist.LyricistStrings
import kotlin.String
@LyricistStrings(languageTag = "en", default = true)
val EnHomeStrings = AppStrings(
// ── WalletScreen ──────────────────────────────────────────────────────────
tabReceive = "Receive",
tabSend = "Send",
scanContentDescription = "Scan",
dismissContentDescription = "Dismiss",
clipboardInvoiceDetected = "Invoice detected in clipboard",
clipboardLnurlDetected = "LNURL detected in clipboard",
clipboardAddressDetected = "Lightning Address detected in clipboard",
clipboardPaymentDetected = "Payment detected in clipboard",
clipboardTapToOpen = "Tap to open",
clipboardTapToPay = "Tap to pay",
nfcInvoiceDetected = "Invoice detected via NFC",
nfcLnurlDetected = "LNURL detected via NFC",
nfcAddressDetected = "Lightning Address detected via NFC",
nfcPaymentDetected = "Payment detected via NFC",
nfcTapToOpen = "Tap to open",
nfcTapToPay = "Tap to pay",
// ── HomeTab ───────────────────────────────────────────────────────────────
loadingBalance = "Loading balance…",
sats = "sats",
hideBalance = "Hide balance",
revealBalance = "Reveal balance",
changeCurrency = "Change currency",
showFiat = "+ Show fiat",
updatedAt = { label -> "Updated $label" },
justNow = "just now",
minAgo = {min -> "$min min ago"},
atTime = {time -> "at $time"},
viewHistory = "Activity",
selectCurrency = "Select currency",
currencyNone = "None",
hideFiatEquivalent = "Hide fiat equivalent",
selected = "Selected",
search = "Search…",
noCurrenciesAvailable = "No currencies available",
noCurrenciesMatch = { query -> "No currencies match \"$query\"" },
couldNotRefresh = "Could not refresh — pull down to try again",
couldNotLoadBalance = "Could not load balance — pull down to try again",
// ── Shared ────────────────────────────────────────────────────────────────
cancel = "Cancel",
tryAgain = "Try Again",
amount = "Amount",
next = "Next",
back = "← Back",
done = "Done",
details = "Details",
enterValidAmount = "Enter a valid amount",
satsUnit = { sats -> "$sats sats" },
// ── ReceiveScreen — general ───────────────────────────────────────────────
receive = "Receive",
// ── ReceiveScreen — error ─────────────────────────────────────────────────
receiveError = "Error",
// ── ReceiveScreen — QR / share ────────────────────────────────────────────
lightningAddressQrCode = "Lightning address QR code",
lightningAddressLabel = "Lightning Address",
shareLightningAddress = "Share Lightning Address",
lightningInvoiceQrCode = "Lightning invoice QR code",
invoiceLabel = "Invoice",
shareInvoice = "Share Invoice",
// ── ReceiveScreen — amount step ───────────────────────────────────────────
amountInSats = "Amount (sats)",
satsRange = { min, max -> "$min $max sats" },
// ── ReceiveScreen — memo step ─────────────────────────────────────────────
memoOptional = "Memo (optional)",
memoPlaceholder = "What's this for?",
creatingInvoice = "Creating invoice…",
createInvoice = "Create Invoice",
// ── ReceiveScreen — invoice ready ─────────────────────────────────────────
waiting = "Waiting…",
invoiceExpired = "Invoice expired",
newInvoice = "New Invoice",
// ── ReceiveScreen — lnurl withdraw ────────────────────────────────────────
withdrawFrom = "Withdraw from",
minimumSats = { min -> "Minimum is $min sats" },
maximumSats = { max -> "Maximum is $max sats" },
withdrawButton = "Withdraw",
withdrawButtonAmount = { amount -> "Withdraw $amount sats" },
// ── ReceiveScreen — success ───────────────────────────────────────────────
paymentReceived = "Payment Received!",
// ── AmountDisplay ─────────────────────────────────────────────────────────
amountDisplaySats = { amount -> "$amount ${if (amount == 1L) "sat" else "sats"}" },
// ── BrightnessToggleButton & QrDisplayCard ────────────────────────────────
brightnessReduce = "Reduce brightness",
brightnessBoost = "Boost brightness",
qrShare = "Share",
qrCopy = "Copy",
qrNfcStop = "Stop NFC sharing",
qrNfcStart = "Share via NFC",
openInApp = "Open in app",
noAppFound = "No compatible app found",
// ── ReceiveViewModel ──────────────────────────────────────────────────────
receiveVmFailedToCreateInvoice = "Failed to create invoice",
receiveVmWithdrawRejected = "Withdraw service rejected the invoice",
receiveVmWithdrawFailed = "Withdraw failed",
// ── SendScreen — general ──────────────────────────────────────────────────
send = "Send",
paste = "Paste",
continueButton = "Continue",
clear = "Clear",
sendAnother = "Send Another",
// ── SendScreen — input field ──────────────────────────────────────────────
sendInputLabel = "Invoice, LNURL, or Lightning Address",
sendInputPlaceholder = "lnbc… / lnurl1… / user@domain.com",
tapNfcHint = "Tap NFC device to receive invoice",
// ── SendScreen — states ───────────────────────────────────────────────────
resolving = "Resolving…",
sendingPayment = "Sending payment…",
// ── SendScreen — paying ───────────────────────────────────────────────────
paymentTakingLong = "This is taking longer than usual",
paymentTakingLongDetail = "Your payment is still on its way. This may be a hold invoice that settles when the recipient is ready. You'll get a notification when it completes — you can safely leave this screen.",
dismissPayment = "Dismiss",
// ── SendScreen — payment sent ─────────────────────────────────────────────
paymentSent = "Payment sent!",
amountSats = { sats -> "$sats sats" },
fiatEquivalent = { fiatStr -> "$fiatStr" },
noFees = "No fees",
routingFee = { sats, ppmSuffix -> "Routing fee: $sats sat${if (sats == 1L) "" else "s"}$ppmSuffix" },
// ── ConfirmCard ───────────────────────────────────────────────────────────
invoiceDetails = "Invoice Details",
payingTo = { label -> "Paying to $label" },
confirmAmount = { sats -> "$sats sats" },
confirmAmountWithFiat = { sats, fiat -> "$sats sats · $fiat" },
memo = "Memo",
destination = "Destination",
created = "Created",
expiresIn = "Expires in",
hash = "Hash",
invoice = "Invoice",
expiryExpired = "Expired",
expirySeconds = { s -> "${s}s" },
expiryMinutes = { m, s -> "${m}m ${s}s" },
expiryHours = { h, m -> "${h}h ${m}m" },
createdToday = { time -> "Today, $time" },
createdYesterday = { time -> "Yesterday, $time" },
payButton = { sats -> "Pay $sats sats" },
payButtonWithFiat = { sats, fiat -> "Pay $sats sats · $fiat" },
sendBiometricPrompt = { sats -> "Send $sats sats" },
sendBiometricPromptTo = { sats, label -> "Send $sats sats to $label" },
// ── LnurlPayForm ─────────────────────────────────────────────────────────
lnurlAmountError = { min, max -> "Enter an amount between $min and $max sats" },
lnurlFiatRange = { minFiat, maxFiat -> "$minFiat $maxFiat" },
lnurlSatsAndFiatRange = { min, max, minFiat, maxFiat -> "$min $max sats · $minFiat $maxFiat" },
commentOptional = { max -> "Comment (optional, max $max chars)" },
commentCounter = { current, max -> "$current/$max" },
lnurlPayButton = { sats -> "Pay $sats sats" },
lnurlPayButtonWithFiat = { sats, fiat -> "Pay $sats sats · $fiat" },
// ── RouteHintWarning ──────────────────────────────────────────────────────
routeHintHighFees = "High routing fees in invoice",
routeHintElevatedFees = "Elevated routing fees in invoice",
routeHintForcedChannel = { node -> "This invoice forces payment through a private channel operated by $node." },
routeHintFeeRate = { effectivePpm, worstPpm -> "Effective fee rate: $effectivePpm ppm ($worstPpm ppm)" },
routeHintFeeRateBase = { effectivePpm, worstPpm, baseLabel -> "Effective fee rate: $effectivePpm ppm ($worstPpm ppm + $baseLabel base)" },
routeHintEstimatedFee = { sats -> "Estimated extra fee on this payment: ~$sats sat${if (sats == 1L) "" else "s"}" },
routeHintShowDetails = "See details ▾",
routeHintHideDetails = "Hide details ▴",
routeHintHopsHeader = "Private route hint hops",
routeHintHopFees = { ppm, baseLabel -> "$ppm ppm · $baseLabel base" },
// ── SendViewModel ─────────────────────────────────────────────────────────
sendVmLnurlAuthNotSupported = "Lightning Login (LNURL-auth) is not yet supported",
sendVmUnrecognisedInput = "Unrecognised input — paste a BOLT-11 invoice, LNURL, or Lightning Address",
sendVmPaymentFailed = "Payment failed",
sendVmCouldNotFetchInvoice = "Could not fetch invoice from recipient",
sendVmCouldNotDecodeInvoice = "Could not decode invoice",
sendVmAuthFailed = { msg -> "Authentication failed: $msg" },
sendVmOnChainNotSupported = "On-chain Bitcoin payments are not supported — share a BIP-21 URI with a lightning= parameter",
sendVmChannelRequestNotSupported = "Channel requests (lnurlc) are not supported",
sendVmCouldNotResolveAddress = "Could not resolve address",
sendVmEmptyResponse = "Empty response from server",
sendVmUnsupportedType = { tag -> "Unsupported type: $tag" },
sendVmPaymentFailedRescan = "Payment failed — could not re-fetch address",
// ── HistoryScreen ─────────────────────────────────────────────────────────
historyTitle = "Activity",
historyClose = "Close",
historySearchPayments = "Search payments",
historyFilterPayments = "Filter payments",
historyRetry = "Retry",
historyNoPayments = "No payments yet.",
historySearchPlaceholder = "Search transactions",
historySearchHelp = "Search help",
historySearchPaste = "Paste",
historySearchClear = "Clear search",
historySearchChip = { tail -> "search: …$tail" },
historyClearSearch = "Clear search",
filterDirectionOutgoing = "Outgoing",
filterDirectionIncoming = "Incoming",
filterClearDirection = "Clear direction filter",
filterStatusCompleted = "Completed",
filterStatusPending = "Pending",
filterStatusFailed = "Failed",
filterRemoveStatus = "Remove status filter",
filterRemoveType = "Remove type filter",
filterAmountRange = { min, max -> "$min$max sats" },
filterAmountMin = { min -> "$min sats" },
filterAmountMax = { max -> "$max sats" },
filterClearAmount = "Clear amount filter",
filterDateThisWeek = "This week",
filterDateThisMonth = "This month",
filterDateThisYear = "This year",
filterDateRange = { from, to -> "$from$to" },
filterDateFrom = { from -> "From $from" },
filterDateUntil = { until -> "Until $until" },
filterClearDate = "Clear date filter",
// ── FilterBottomSheet ─────────────────────────────────────────────────────
filterSheetTitle = "Filter payments",
filterSectionDirection = "Direction",
filterDirectionAll = "All",
filterSectionStatus = "Status",
filterSectionType = "Type",
filterSectionAmount = "Amount (sats)",
filterAmountMin_label = "Min",
filterAmountMax_label = "Max",
filterAmountSuffix = "sats",
filterSectionDate = "Date",
filterDateFrom_label = "From",
filterDateTo_label = "To",
filterDialogOk = "OK",
filterDialogCancel = "Cancel",
// ── SearchInfoSheet ───────────────────────────────────────────────────────
searchInfoTitle = "What can I search for?",
searchInfoSubtitle = "Type any part of the following to find a payment:",
searchInfoMemoTitle = "Memo",
searchInfoMemoDesc = "The message or description attached to a payment. " +
"For example, \"coffee\" or \"rent March\".",
searchInfoInvoiceTitle = "Invoice",
searchInfoInvoiceDesc = "The payment request you scanned or pasted to send a payment. " +
"It usually starts with \"lnbc…\". " +
"You can paste just the first or last few characters.",
searchInfoHashTitle = "Hash",
searchInfoHashDesc = "A unique code that identifies this payment on the " +
"Lightning Network. Useful if someone asks you to " +
"confirm a specific transaction.",
searchInfoPreimageTitle = "Preimage",
searchInfoPreimageDesc = "A secret code that proves a payment was received. " +
"Only available after a payment completes successfully.",
searchInfoNodeAliasTitle = "Node alias",
searchInfoNodeAliasDesc = "The name of the Lightning node you sent a payment to. " +
"For example, \"ACINQ\" or \"Wallet of Satoshi\". " +
"Aliases are resolved automatically for outgoing payments.",
searchInfoNodeIdTitle = "Node ID (pubkey)",
searchInfoNodeIdDesc = "The public key of the destination node. " +
"A 66-character hex string — you can paste just the first few characters.",
searchInfoFooter = "You can paste a full value or search with just a few characters — " +
"partial matches work too.",
// ── PaymentDetailScreen ───────────────────────────────────────────────────
statusSuccess = "Success", // e.g. "Success"
statusPending = "Pending", // e.g. "Pending"
statusFailed = "Failed", // e.g. "Failed"
statusUnknown = "Unknown", // e.g. "Unknown"
detailOutgoingTitle = "Outgoing payment",
detailIncomingTitle = "Incoming payment",
detailBack = "Back",
detailCouldNotLoad = "Could not load full details",
detailFeeLabel = { feeSat, fiatPart, ppmPart ->
"Fee: $feeSat sats$fiatPart$ppmPart"
},
detailSectionDetails = "Details",
detailRowDate = "Date",
detailRowMemo = "Memo",
detailRowMemoEmpty = "",
detailRowType = "Type",
detailRowComment = "Comment",
detailSectionSuccessAction = "Success Action",
detailSuccessMessage = "Message",
detailSuccessUrl = "URL",
detailSuccessDescription = "Description",
detailSectionTechnical = "Technical",
detailRowPaymentHash = "Hash",
detailRowPreimage = "Preimage",
detailRowDestination = "Destination",
detailCopyNodeId = "Copy node ID",
detailRowBolt11 = "BOLT11",
// ── PaymentRow ────────────────────────────────────────────────────────────
paymentRowSentCD = "Sent",
paymentRowReceivedCD = "Received",
paymentRowNoMemo = "No memo",
paymentRowPending = "Pending",
paymentRowFailed = "Failed",
onboarding = OnboardingStrings(
back = "Back",
next = "Next",
done = "Done",
title = "Connect to LNbits",
subtitle = "Enter your LNbits server URL and API keys.",
serverUrl = "Server URL",
serverUrlHint = "https://bitcointxoko.org",
invoiceKey = "Invoice Key (read-only)",
invoiceKeySubtitle = "Used to generate payment requests.",
pasteInvoiceKey = "Paste invoice key",
adminKey = "Admin Key (for sending)",
adminKeySubtitle = "Required to send payments.",
pasteAdminKey = "Paste admin key",
hideAdminKey = "Hide",
showAdminKey = "Show",
fieldsRequired = "All fields are required.",
connect = "Connect",
notificationsTitle = "Stay in the loop",
notificationsSubtitle = "Get notified instantly when you receive a payment.",
notificationsAlreadyGranted = "You're all set - permissions have been granted.",
allowNotifications = "Allow Notifications",
notificationsNote = "You can change this later in system Settings.",
notificationsAutoGranted = "Notifications are enabled automatically on your device.",
batteryTitle = "Background activity",
batterySubtitle = "Allow Gudari Wallet to run unrestricted so notifications arrive even when the app is closed.",
openSettings = "Open Settings",
batteryNote = "Tap 'Battery' → 'Unrestricted'. You can skip this and change it later.",
batteryAlreadyUnrestricted = "You're all set — no restrictions detected.",
paymentHistory = "Payment history",
paymentHistorySubtitle = "Download your past payments so they're available offline.",
syncNow = "Sync now",
skipForNow = "Skip for now",
syncScheduled = "Sync scheduled — will run when your device is online. You will get a notification when the sync is done. You can already start using the app.",
continueToApp = "Continue to app →",
connecting = "Connecting...",
paymentsFetchedTotal = { fetched, total -> "$fetched / $total payments" },
paymentsSynced = { total -> "$total payments synced"},
syncComplete = "✓ Sync complete",
syncFailed = "Sync failed. You can retry from Settings.",
scheduleForLater = "Schedule for later",
scheduleSync = "Schedule sync",
schedule = "Schedule",
cancel = "Cancel"
),
nwc = NwcStrings(
back = "Back",
next = "Next",
done = "Done",
cancel = "Cancel",
schedule = "Schedule",
// ── Connection detail ─────────────────────────────────────────────────────
connectionDetailTitle = "Connection",
connectionUnknownWallet = "Unknown app",
connectionSectionDetails = "Details",
connectionRowCreated = "Connected",
connectionRowLastUsed = "Last used",
connectionRowExpires = "Expires",
connectionRowPubkey = "Public key",
connectionNeverUsed = "Never",
connectionNoExpiry = "Never",
connectionExpired = { date -> "Expired · $date" },
connectionSectionPermissions = "Permissions",
connectionSectionBudgets = "Spending budgets",
connectionBudgetTitle = { window -> "$window budget" },
connectionBudgetUsed = { sats -> "Used: $sats sats" },
connectionBudgetTotal = { sats -> "of $sats sats" },
connectionRevoke = "Revoke connection",
connectionStatusActive = "Active",
connectionStatusExpired = "Expired",
// ── NWC permissions ───────────────────────────────────────────────────────
permPayInvoice = "Pay invoices",
permGetBalance = "Read balance",
permGetInfo = "Read wallet info",
permMakeInvoice = "Create invoices",
permLookupInvoice = "Look up invoices",
permListTransactions = "View transaction history",
permSignMessage = "Sign messages",
permPay = "Send payments",
permInvoice = "Create invoices",
permLookupHistory = "Lookup status & transaction history",
permBalanceInfo = "Read balance & account info",
permSendPayments = "Send payments",
permCreateInvoices = "Create invoices",
permLookupInvoiceStatus = "Lookup status of invoice",
permReadTransactionHistory = "Read transaction history",
permReadWalletBalance = "Read wallet balance",
permReadAccountInfo = "Read account info",
revokeDialogTitle = "Revoke connection?",
revokeDialogBody = "This will permanently revoke this Nostr Wallet Connect key. Any app using it will lose access.",
revokeDialogConfirm = "Revoke",
revokeDialogDismiss = "Cancel",
)
)