diff --git a/app/src/main/java/com/bitcointxoko/gudariwallet/i18n/EuStrings.kt b/app/src/main/java/com/bitcointxoko/gudariwallet/i18n/EuStrings.kt new file mode 100644 index 0000000..ed52863 --- /dev/null +++ b/app/src/main/java/com/bitcointxoko/gudariwallet/i18n/EuStrings.kt @@ -0,0 +1,310 @@ +package com.bitcointxoko.gudariwallet.i18n + +import cafe.adriel.lyricist.LyricistStrings + +@LyricistStrings(languageTag = "eu") +val EuStrings = AppStrings( + // ── WalletScreen ────────────────────────────────────────────────────────── + tabReceive = "Jaso", + tabSend = "Bidali", + scanContentDescription = "Eskaneatu", + dismissContentDescription = "Itxi", + clipboardInvoiceDetected = "Faktura arbelean aurkitu da", + clipboardLnurlDetected = "LNURL arbelean aurkitu da", + clipboardAddressDetected = "Lightning helbidea arbelean aurkitu da", + clipboardPaymentDetected = "Ordainketa arbelean aurkitu da", + clipboardTapToOpen = "Sakatu irekitzeko", + clipboardTapToPay = "Sakatu ordaintzeko", + nfcInvoiceDetected = "Faktura NFC bidez aurkitu da", + nfcLnurlDetected = "LNURL NFC bidez aurkitu da", + nfcAddressDetected = "Lightning helbidea NFC bidez aurkitu da", + nfcPaymentDetected = "Ordainketa NFC bidez aurkitu da", + nfcTapToOpen = "Sakatu irekitzeko", + nfcTapToPay = "Sakatu ordaintzeko", + + // ── HomeTab ─────────────────────────────────────────────────────────────── + loadingBalance = "Saldoa kargatzen…", + sats = "sat", + hideBalance = "Ezkutatu saldoa", + revealBalance = "Erakutsi saldoa", + changeCurrency = "Aldatu moneta", + showFiat = "+ Erakutsi fiat", + updatedAt = { label -> "Eguneratua $label" }, + justNow = "orain bertan", + minAgo = { min -> "duela $min minutu" }, + atTime = { time -> "$time-etan" }, + viewHistory = "Ikusi historia", + selectCurrency = "Hautatu moneta", + currencyNone = "Bat ere ez", + hideFiatEquivalent = "Ezkutatu fiat baliokidea", + selected = "Hautatuta", + search = "Bilatu…", + noCurrenciesAvailable = "Ez dago monetarik erabilgarri", + noCurrenciesMatch = { query -> "Ez dago \"$query\" batekin bat datorren monetarik" }, + couldNotRefresh = "Ezin izan da freskatu — arrastatu behera berriro saiatzeko", + couldNotLoadBalance = "Ezin izan da saldoa kargatu — arrastatu behera berriro saiatzeko", + + // ── Shared ──────────────────────────────────────────────────────────────── + cancel = "Utzi", + tryAgain = "Saiatu berriro", + amount = "Zenbatekoa", + next = "Hurrengoa", + back = "← Atzera", + done = "Eginda", + details = "Xehetasunak", + enterValidAmount = "Sartu zenbateko baliogarri bat", + satsUnit = { sats -> "$sats sat" }, + + // ── ReceiveScreen — general ─────────────────────────────────────────────── + receive = "Jaso", + + // ── ReceiveScreen — error ───────────────────────────────────────────────── + receiveError = "Errorea", + + // ── ReceiveScreen — QR / share ──────────────────────────────────────────── + lightningAddressQrCode = "Lightning helbidearen QR kodea", + lightningAddressLabel = "Lightning helbidea", + shareLightningAddress = "Partekatu Lightning helbidea", + lightningInvoiceQrCode = "Lightning fakturaren QR kodea", + invoiceLabel = "Faktura", + shareInvoice = "Partekatu faktura", + + // ── ReceiveScreen — amount step ─────────────────────────────────────────── + amountInSats = "Zenbatekoa (sat)", + satsRange = { min, max -> "$min – $max sat" }, + + // ── ReceiveScreen — memo step ───────────────────────────────────────────── + memoOptional = "Oharra (aukerakoa)", + memoPlaceholder = "Zertarako da hau?", + creatingInvoice = "Faktura sortzen…", + createInvoice = "Sortu faktura", + + // ── ReceiveScreen — invoice ready ───────────────────────────────────────── + waiting = "Zain…", + invoiceExpired = "Faktura iraungita", + newInvoice = "Faktura berria", + + // ── ReceiveScreen — lnurl withdraw ──────────────────────────────────────── + withdrawFrom = "Atera hemendik:", + minimumSats = { min -> "Gutxienekoa $min sat da" }, + maximumSats = { max -> "Gehienekoa $max sat da" }, + withdrawButton = "Atera", + withdrawButtonAmount = { amount -> "Atera $amount sat" }, + + // ── ReceiveScreen — success ─────────────────────────────────────────────── + paymentReceived = "Ordainketa jasota!", + + // ── AmountDisplay ───────────────────────────────────────────────────────── + amountDisplaySats = { amount -> "$amount sat" }, + + // ── BrightnessToggleButton & QrDisplayCard ──────────────────────────────── + brightnessReduce = "Murriztu distira", + brightnessBoost = "Handitu distira", + qrShare = "Partekatu", + qrCopy = "Kopiatu", + qrNfcStop = "Gelditu NFC partekatzea", + qrNfcStart = "Partekatu NFC bidez", + + // ── ReceiveViewModel ────────────────────────────────────────────────────── + receiveVmFailedToCreateInvoice = "Ezin izan da faktura sortu", + receiveVmWithdrawRejected = "Ateratzeko zerbitzuak faktura baztertu du", + receiveVmWithdrawFailed = "Ateratzeak huts egin du", + + // ── SendScreen — general ────────────────────────────────────────────────── + send = "Bidali", + paste = "Itsatsi", + continueButton = "Jarraitu", + clear = "Garbitu", + sendAnother = "Bidali beste bat", + + // ── SendScreen — input field ────────────────────────────────────────────── + sendInputLabel = "Faktura, LNURL edo Lightning helbidea", + sendInputPlaceholder = "lnbc… / lnurl1… / erabiltzailea@domeinua.com", + tapNfcHint = "Ukitu NFC gailua faktura jasotzeko", + + // ── SendScreen — states ─────────────────────────────────────────────────── + resolving = "Ebazten…", + sendingPayment = "Ordainketa bidaltzen…", + + // ── SendScreen — payment sent ───────────────────────────────────────────── + paymentSent = "Ordainketa bidalita!", + amountSats = { sats -> "$sats sat" }, + fiatEquivalent = { fiatStr -> "≈ $fiatStr" }, + noFees = "Komisiorik gabe", + routingFee = { sats, ppmSuffix -> "Bideratze-komisioa: $sats sat$ppmSuffix" }, + + // ── ConfirmCard ─────────────────────────────────────────────────────────── + invoiceDetails = "Fakturaren xehetasunak", + payingTo = { label -> "Ordaintzen: $label" }, + confirmAmount = { sats -> "$sats sat" }, + confirmAmountWithFiat = { sats, fiat -> "$sats sat · $fiat" }, + memo = "Oharra", + destination = "Helmuga", + created = "Sortua", + expiresIn = "Iraungitzen da", + hash = "Hash", + invoice = "Faktura", + expiryExpired = "Iraungita", + expirySeconds = { s -> "${s}s" }, + expiryMinutes = { m, s -> "${m}m ${s}s" }, + expiryHours = { h, m -> "${h}h ${m}m" }, + createdToday = { time -> "Gaur, $time" }, + createdYesterday = { time -> "Atzo, $time" }, + payButton = { sats -> "Ordaindu $sats sat" }, + payButtonWithFiat = { sats, fiat -> "Ordaindu $sats sat · $fiat" }, + sendBiometricPrompt = { sats -> "Bidali $sats sat" }, + sendBiometricPromptTo = { sats, label -> "Bidali $sats sat $label-i" }, + + // ── LnurlPayForm ────────────────────────────────────────────────────────── + lnurlAmountError = { min, max -> "Sartu $min eta $max sat arteko zenbatekoa" }, + lnurlFiatRange = { minFiat, maxFiat -> "$minFiat – $maxFiat" }, + lnurlSatsAndFiatRange = { min, max, minFiat, maxFiat -> "$min – $max sat · $minFiat – $maxFiat" }, + commentOptional = { max -> "Iruzkina (aukerakoa, gehienez $max karaktere)" }, + commentCounter = { current, max -> "$current/$max" }, + lnurlPayButton = { sats -> "Ordaindu $sats sat" }, + lnurlPayButtonWithFiat = { sats, fiat -> "Ordaindu $sats sat · $fiat" }, + + // ── RouteHintWarning ────────────────────────────────────────────────────── + routeHintHighFees = "Bideratze-komisio altuak fakturan", + routeHintElevatedFees = "Bideratze-komisio igoak fakturan", + routeHintForcedChannel = { node -> "Faktura honek ordainketa $node-k kudeatutako kanal pribatu baten bidez behartu du." }, + routeHintFeeRate = { effectivePpm, worstPpm -> "Komisio-tasa efektiboa: $effectivePpm ppm ($worstPpm ppm)" }, + routeHintFeeRateBase = { effectivePpm, worstPpm, baseLabel -> "Komisio-tasa efektiboa: $effectivePpm ppm ($worstPpm ppm + $baseLabel oinarria)" }, + routeHintEstimatedFee = { sats -> "Ordainketa honetako komisio gehigarri estimatua: ~$sats sat" }, + routeHintShowDetails = "Ikusi xehetasunak ▾", + routeHintHideDetails = "Ezkutatu xehetasunak ▴", + routeHintHopsHeader = "Ibilbide-aholku pribatuko salto-puntuak", + routeHintHopFees = { ppm, baseLabel -> "$ppm ppm · $baseLabel oinarria" }, + + // ── SendViewModel ───────────────────────────────────────────────────────── + sendVmLnurlAuthNotSupported = "Lightning Saio-hasiera (LNURL-auth) oraindik ez da onartzen", + sendVmUnrecognisedInput = "Sarrera ezezaguna — itsatsi BOLT-11 faktura, LNURL edo Lightning helbide bat", + sendVmPaymentFailed = "Ordainketak huts egin du", + sendVmCouldNotFetchInvoice = "Ezin izan da faktura hartzailearengandik eskuratu", + sendVmCouldNotDecodeInvoice = "Ezin izan da faktura deskodetu", + sendVmAuthFailed = { msg -> "Autentifikazioak huts egin du: $msg" }, + sendVmOnChainNotSupported = "Bitcoin kate-barneko ordainketak ez dira onartzen — partekatu BIP-21 URI bat lightning= parametroarekin", + sendVmChannelRequestNotSupported = "Kanal-eskaerak (lnurlc) ez dira onartzen", + sendVmCouldNotResolveAddress = "Ezin izan da helbidea ebatzi", + sendVmEmptyResponse = "Zerbitzariaren erantzuna hutsik dago", + sendVmUnsupportedType = { tag -> "Mota onartzen ez dena: $tag" }, + sendVmPaymentFailedRescan = "Ordainketak huts egin du — ezin izan da helbidea berriro eskuratu", + + // ── HistoryScreen ───────────────────────────────────────────────────────── + historyTitle = "Historia", + historyClose = "Itxi", + historySearchPayments = "Bilatu ordainketak", + historyFilterPayments = "Iragazi ordainketak", + historyRetry = "Saiatu berriro", + historyNoPayments = "Oraindik ez dago ordainketarik.", + historySearchPlaceholder = "Bilatu transakzioak", + historySearchHelp = "Bilaketa-laguntza", + historySearchPaste = "Itsatsi", + historySearchClear = "Garbitu bilaketa", + historySearchChip = { tail -> "bilaketa: …$tail" }, + historyClearSearch = "Garbitu bilaketa", + filterDirectionOutgoing = "Irteerako", + filterDirectionIncoming = "Sarrerako", + filterClearDirection = "Garbitu norabide-iragazkia", + filterStatusCompleted = "Osatuta", + filterStatusPending = "Zain", + filterStatusFailed = "Huts eginda", + filterRemoveStatus = "Kendu egoera-iragazkia", + filterRemoveType = "Kendu mota-iragazkia", + filterAmountRange = { min, max -> "$min–$max sat" }, + filterAmountMin = { min -> "≥ $min sat" }, + filterAmountMax = { max -> "≤ $max sat" }, + filterClearAmount = "Garbitu zenbateko-iragazkia", + filterDateThisWeek = "Aste honetan", + filterDateThisMonth = "Hilabete honetan", + filterDateThisYear = "Urte honetan", + filterDateRange = { from, to -> "$from–$to" }, + filterDateFrom = { from -> "$from-tik" }, + filterDateUntil = { until -> "$until arte" }, + filterClearDate = "Garbitu data-iragazkia", + + // ── FilterBottomSheet ───────────────────────────────────────────────────── + filterSheetTitle = "Iragazi ordainketak", + filterSectionDirection = "Norabidea", + filterDirectionAll = "Guztiak", + filterSectionStatus = "Egoera", + filterSectionType = "Mota", + filterSectionAmount = "Zenbatekoa (sat)", + filterAmountMin_label = "Gutxienekoa", + filterAmountMax_label = "Gehienekoa", + filterAmountSuffix = "sat", + filterSectionDate = "Data", + filterDateFrom_label = "Nondik", + filterDateTo_label = "Nora arte", + filterDialogOk = "Ados", + filterDialogCancel = "Utzi", + + // ── SearchInfoSheet ─────────────────────────────────────────────────────── + searchInfoTitle = "Zer bila dezaket?", + searchInfoSubtitle = "Idatzi hurrengoetako edozein zati ordainketa bat aurkitzeko:", + searchInfoMemoTitle = "Oharra", + searchInfoMemoDesc = "Ordainketa bati erantsitako mezua edo deskribapena. " + + "Adibidez, \"kafea\" edo \"martxoko alokairua\".", + searchInfoInvoiceTitle = "Faktura", + searchInfoInvoiceDesc = "Ordainketa bat bidaltzeko eskaneatu edo itsatsi zenuen ordainketa-eskaera. " + + "Normalean \"lnbc…\" hasierarekin dator. " + + "Lehen edo azken karaktere batzuk bakarrik itsats ditzakezu.", + searchInfoHashTitle = "Hash", + searchInfoHashDesc = "Ordainketa hau Lightning Sarean identifikatzen duen kode bakarra. " + + "Erabilgarria norbaitek transakzio zehatz bat berresteko eskatzen dizunean.", + searchInfoPreimageTitle = "Aurre-irudia", + searchInfoPreimageDesc = "Ordainketa bat jaso dela frogatzen duen kode sekretua. " + + "Ordainketa arrakastaz osatu ondoren bakarrik dago erabilgarri.", + searchInfoNodeAliasTitle = "Nodo-izengoitia", + searchInfoNodeAliasDesc = "Ordainketa bidali zenion Lightning nodoaren izena. " + + "Adibidez, \"ACINQ\" edo \"Wallet of Satoshi\". " + + "Izengoitiak automatikoki ebazten dira irteerako ordainketetan.", + searchInfoNodeIdTitle = "Nodo IDa (gako publikoa)", + searchInfoNodeIdDesc = "Helmuga-nodoaren gako publikoa. " + + "66 karaktereko hex katea — lehen karaktere batzuk bakarrik itsats ditzakezu.", + searchInfoFooter = "Balio osoa itsatsi dezakezu edo karaktere gutxi batzuekin bilatu — " + + "zati-bat datozenak ere funtzionatzen dute.", + + // ── PaymentDetailScreen ─────────────────────────────────────────────────── + detailOutgoingTitle = "Irteerako ordainketa", + detailIncomingTitle = "Sarrerako ordainketa", + detailBack = "Atzera", + detailCouldNotLoad = "Ezin izan dira xehetasun osoak kargatu", + detailFeeLabel = { feeSat, fiatPart, ppmPart -> + "Komisioa: $feeSat sat$fiatPart$ppmPart" + }, + detailSectionDetails = "Xehetasunak", + detailRowDate = "Data", + detailRowMemo = "Oharra", + detailRowMemoEmpty = "—", + detailRowType = "Mota", + detailRowComment = "Iruzkina", + detailSectionSuccessAction = "Arrakasta-ekintza", + detailSuccessMessage = "Mezua", + detailSuccessUrl = "URLa", + detailSuccessDescription = "Deskribapena", + detailSectionTechnical = "Teknikoa", + detailRowPaymentHash = "Hash", + detailRowPreimage = "Aurre-irudia", + detailRowDestination = "Helmuga", + detailCopyNodeId = "Kopiatu nodo IDa", + detailRowBolt11 = "BOLT11", + + // ── PaymentRow ──────────────────────────────────────────────────────────── + paymentRowSentCD = "Bidalita", + paymentRowReceivedCD = "Jasota", + paymentRowNoMemo = "Oharrik gabe", + paymentRowPending = "Zain", + + // ── OnboardingScreen ────────────────────────────────────────────────────── + onboardingTitle = "Konektatu LNbits-era", + onboardingSubtitle = "Sartu zure LNbits zerbitzariaren URLa eta API gakoak.", + onboardingServerUrl = "Zerbitzariaren URLa", + onboardingServerUrlHint = "https://bitcointxoko.org", + onboardingInvoiceKey = "Faktura-gakoa (irakurtzeko soilik)", + onboardingAdminKey = "Administrazio-gakoa (bidaltzeko)", + onboardingHideAdminKey = "Ezkutatu", + onboardingShowAdminKey = "Erakutsi", + onboardingFieldsRequired = "Eremu guztiak beharrezkoak dira.", + onboardingConnect = "Konektatu", +) diff --git a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/HomeTab.kt b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/HomeTab.kt index 88411da..0275465 100644 --- a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/HomeTab.kt +++ b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/HomeTab.kt @@ -46,7 +46,7 @@ fun HomeTab( val balanceHidden by vm.balanceHidden.collectAsState() // ── NEW: language switcher state ────────────────────────────────────────── - val supportedTags = remember { listOf("en", "es") } // add more as you add locale files + val supportedTags = remember { listOf("en", "es", "eu") } // add more as you add locale files val isRefreshing = balanceState is BalanceState.Loading || (balanceState as? BalanceState.Success)?.isRefreshing == true @@ -296,6 +296,7 @@ private fun LanguageSwitcherButton( when (tag) { "en" -> "English" "es" -> "Español" + "eu" -> "Euskara" else -> tag.uppercase() } } diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml new file mode 100644 index 0000000..14599e5 --- /dev/null +++ b/app/src/main/res/values-eu/strings.xml @@ -0,0 +1,20 @@ + + + + + Ordainketak + Lightning sarrerako eta irteerako ordainketen alertak + Zorro-monitorea + Sarrerako ordainketak kontrolatzeko atzeko planoko zerbitzua + + Ordainketa jasota · +%1$d sat + Oharrik gabe + +%1$d sat + + Ordainketa bidalita + −%1$d sat + + Gudari Wallet + Sarrerako ordainketak kontrolatzen + +