feat: localisation with lyricist
This commit is contained in:
@@ -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",
|
||||
)
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<!-- NotificationHelper -->
|
||||
<string name="notif_channel_payments_name">Ordainketak</string>
|
||||
<string name="notif_channel_payments_desc">Lightning sarrerako eta irteerako ordainketen alertak</string>
|
||||
<string name="notif_channel_service_name">Zorro-monitorea</string>
|
||||
<string name="notif_channel_service_desc">Sarrerako ordainketak kontrolatzeko atzeko planoko zerbitzua</string>
|
||||
|
||||
<string name="notif_payment_received_title">Ordainketa jasota · +%1$d sat</string>
|
||||
<string name="notif_payment_received_no_memo">Oharrik gabe</string>
|
||||
<string name="notif_payment_received_summary">+%1$d sat</string>
|
||||
|
||||
<string name="notif_payment_sent_title">Ordainketa bidalita</string>
|
||||
<string name="notif_payment_sent_text">−%1$d sat</string>
|
||||
|
||||
<string name="notif_service_title">Gudari Wallet</string>
|
||||
<string name="notif_service_text">Sarrerako ordainketak kontrolatzen</string>
|
||||
|
||||
</resources>
|
||||
Reference in New Issue
Block a user