taler-android

Android apps for GNU Taler (wallet, PoS, cashier)
Log | Files | Refs | README | LICENSE

commit 0ef34dbdcfecfb7ab9ae92896d8e10f6047905fa
parent 3d7c04d13441ee98b80f1a04b75bbba58c64b5ac
Author: Iván Ávalos <avalos@disroot.org>
Date:   Thu, 14 Nov 2024 13:46:33 +0100

[wallet] QC: improved strings and set transaction type in title of transaction details

Diffstat:
Mwallet/src/main/java/net/taler/wallet/MainActivity.kt | 3---
Mwallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt | 1+
Mwallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt | 11+++++++++--
Mwallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt | 19+++++++++++++++++++
Mwallet/src/main/java/net/taler/wallet/transactions/Transactions.kt | 19++++++++++++++++---
Mwallet/src/main/java/net/taler/wallet/transactions/TransactionsComposable.kt | 30+++++++++++++++++++++++-------
Mwallet/src/main/res/navigation/nav_graph.xml | 14+++++++-------
Mwallet/src/main/res/values/strings.xml | 91+++++++++++++++++++++++++++++++++++++++++--------------------------------------
8 files changed, 122 insertions(+), 66 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/MainActivity.kt b/wallet/src/main/java/net/taler/wallet/MainActivity.kt @@ -25,10 +25,7 @@ import android.os.Bundle import android.util.Log import android.view.Menu import android.view.MenuItem -import android.view.View.GONE -import android.view.View.VISIBLE import android.view.ViewGroup.MarginLayoutParams -import android.view.WindowInsets import androidx.activity.enableEdgeToEdge import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity diff --git a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt @@ -54,6 +54,7 @@ fun ColumnScope.TransactionPeerPullCreditComposable( if (t.error == null) PeerQrCode( state = t.txState, + amount = t.amountRaw.withSpec(spec), talerUri = t.talerUri, ) diff --git a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt @@ -58,6 +58,7 @@ import net.taler.wallet.transactions.TransactionState fun ColumnScope.TransactionPeerPushDebitComposable(t: TransactionPeerPushDebit, spec: CurrencySpecification?) { if (t.error == null) PeerQrCode( state = t.txState, + amount = t.amountRaw.withSpec(spec), talerUri = t.talerUri, ) @@ -89,12 +90,18 @@ fun ColumnScope.TransactionPeerPushDebitComposable(t: TransactionPeerPushDebit, } @Composable -fun ColumnScope.PeerQrCode(state: TransactionState, talerUri: String?) { +fun ColumnScope.PeerQrCode( + state: TransactionState, + amount: Amount, + talerUri: String?, +) { if (state == TransactionState(Pending)) { Text( modifier = Modifier.padding(top = 16.dp, start = 16.dp, end = 16.dp), style = MaterialTheme.typography.titleLarge, - text = stringResource(id = R.string.send_peer_payment_instruction), + text = stringResource(id = R.string.send_peer_payment_instruction, + amount.spec?.name + ?: amount.currency), textAlign = TextAlign.Center, ) diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt @@ -20,6 +20,7 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.appcompat.app.AppCompatActivity import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth @@ -39,6 +40,10 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.colorResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import kotlinx.coroutines.launch import net.taler.common.Amount import net.taler.common.CurrencySpecification import net.taler.common.toAbsoluteTime @@ -75,6 +80,20 @@ class TransactionPeerFragment : TransactionDetailFragment(), ActionListener { } } + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.STARTED) { + transactionManager.selectedTransaction.collect { tx -> + val actionBar = (requireActivity() as? AppCompatActivity) + ?.supportActionBar + ?: return@collect + actionBar.title = tx?.getTitle(requireContext()) + } + } + } + } + override fun onActionButtonClicked(tx: Transaction, type: ActionListener.Type) { when (type) { ActionListener.Type.COMPLETE_KYC -> { diff --git a/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt b/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt @@ -45,6 +45,7 @@ import net.taler.wallet.backend.TalerErrorInfo import net.taler.common.CurrencySpecification import net.taler.common.RelativeTime import net.taler.wallet.refund.RefundPaymentInfo +import net.taler.wallet.transactions.TransactionMajorState.Done import net.taler.wallet.transactions.TransactionMajorState.None import net.taler.wallet.transactions.TransactionMajorState.Pending import net.taler.wallet.transactions.WithdrawalDetails.ManualTransfer @@ -440,7 +441,11 @@ class TransactionPeerPullDebit( @Transient override val amountType = AmountType.Negative override fun getTitle(context: Context): String { - return context.getString(R.string.transaction_peer_pull_debit) + return if (txState.major == Done) { + context.getString(R.string.transaction_peer_pull_debit) + } else { + context.getString(R.string.transaction_peer_pull_debit_pending) + } } override val generalTitleRes = R.string.transaction_peer_pull_debit @@ -500,7 +505,11 @@ class TransactionPeerPushDebit( @Transient override val amountType = AmountType.Negative override fun getTitle(context: Context): String { - return context.getString(R.string.transaction_peer_push_debit) + return if (txState.major == Done) { + context.getString(R.string.transaction_peer_push_debit) + } else { + context.getString(R.string.transaction_peer_push_debit_pending) + } } override val generalTitleRes = R.string.payment_title @@ -529,7 +538,11 @@ class TransactionPeerPushCredit( @Transient override val amountType = AmountType.Positive override fun getTitle(context: Context): String { - return context.getString(R.string.transaction_peer_push_credit) + return if (txState.major == Done) { + context.getString(R.string.transaction_peer_push_credit) + } else { + context.getString(R.string.transaction_peer_push_credit_pending) + } } override val generalTitleRes = R.string.transaction_peer_push_credit diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionsComposable.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionsComposable.kt @@ -56,6 +56,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment +import androidx.compose.ui.Alignment.Companion.Center import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.hapticfeedback.HapticFeedbackType @@ -99,7 +100,6 @@ import net.taler.wallet.transactions.TransactionMinorState.KycRequired import net.taler.wallet.transactions.TransactionsResult.Error import net.taler.wallet.transactions.TransactionsResult.None import net.taler.wallet.transactions.TransactionsResult.Success -import net.taler.wallet.withdraw.WithdrawalError @Composable fun TransactionsComposable( @@ -112,7 +112,7 @@ fun TransactionsComposable( onShowBalancesClicked: () -> Unit, ) = when (txResult) { is None -> LoadingScreen() - is Error -> WithdrawalError(txResult.error) + is Error -> ErrorTransactionsComposable(txResult.error) is Success -> if (txResult.transactions.isEmpty()) { EmptyTransactionsComposable() } else { @@ -121,8 +121,8 @@ fun TransactionsComposable( val selectedItems = remember { mutableStateListOf<String>() } if (showDeleteDialog) AlertDialog( - title = { Text(stringResource(R.string.transactions_delete_dialog_title)) }, - text = { Text(stringResource(R.string.transactions_delete_dialog_message)) }, + title = { Text(stringResource(R.string.transactions_delete_selected_dialog_title)) }, + text = { Text(stringResource(R.string.transactions_delete_selected_dialog_message)) }, onDismissRequest = { showDeleteDialog = false }, confirmButton = { TextButton(onClick = { @@ -225,7 +225,7 @@ fun TransactionsComposable( fun EmptyTransactionsComposable() { Box( modifier = Modifier.fillMaxSize(), - contentAlignment = Alignment.Center, + contentAlignment = Center, ) { Text( stringResource(R.string.transactions_empty), @@ -236,6 +236,22 @@ fun EmptyTransactionsComposable() { } @Composable +fun ErrorTransactionsComposable(error: TalerErrorInfo) { + Box( + modifier = Modifier + .padding(16.dp) + .fillMaxSize(), + contentAlignment = Center, + ) { + Text( + text = stringResource(R.string.transactions_error, error.userFacingMsg), + style = MaterialTheme.typography.titleLarge, + color = MaterialTheme.colorScheme.error, + ) + } +} + +@Composable fun TransactionsHeader( balance: BalanceItem, spec: CurrencySpecification?, @@ -320,7 +336,7 @@ fun TransactionRow( trailingContent = { Box( modifier = Modifier.padding(8.dp), - contentAlignment = Alignment.Center, + contentAlignment = Center, ) { TransactionAmountInfo(tx, spec) } @@ -328,7 +344,7 @@ fun TransactionRow( leadingContent = { Box( modifier = Modifier.padding(8.dp), - contentAlignment = Alignment.Center, + contentAlignment = Center, ) { if (!selectionMode) { Icon(painterResource(tx.icon), contentDescription = null) diff --git a/wallet/src/main/res/navigation/nav_graph.xml b/wallet/src/main/res/navigation/nav_graph.xml @@ -208,7 +208,7 @@ <fragment android:id="@+id/nav_transactions_detail_withdrawal" android:name="net.taler.wallet.transactions.TransactionWithdrawalFragment" - android:label="@string/transactions_detail_title"> + android:label="@string/withdraw_title"> <action android:id="@+id/action_nav_transactions_detail_withdrawal_to_nav_exchange_manual_withdrawal_success" app:destination="@id/nav_exchange_manual_withdrawal_success" /> @@ -217,22 +217,22 @@ <fragment android:id="@+id/nav_transactions_detail_payment" android:name="net.taler.wallet.transactions.TransactionPaymentFragment" - android:label="@string/transactions_detail_title" /> + android:label="@string/payment_title" /> <fragment android:id="@+id/nav_transactions_detail_refund" android:name="net.taler.wallet.transactions.TransactionRefundFragment" - android:label="@string/transactions_detail_title" /> + android:label="@string/refund_title" /> <fragment android:id="@+id/nav_transactions_detail_refresh" android:name="net.taler.wallet.transactions.TransactionRefreshFragment" - android:label="@string/transactions_detail_title" /> + android:label="@string/transaction_refresh" /> <fragment android:id="@+id/nav_transactions_detail_deposit" android:name="net.taler.wallet.transactions.TransactionDepositFragment" - android:label="@string/transactions_detail_title" /> + android:label="@string/transaction_deposit" /> <fragment android:id="@+id/nav_transactions_detail_peer" @@ -242,12 +242,12 @@ <fragment android:id="@+id/nav_transactions_detail_loss" android:name="net.taler.wallet.transactions.TransactionLossFragment" - android:label="@string/transactions_detail_title" /> + android:label="@string/transaction_denom_loss" /> <fragment android:id="@+id/nav_transactions_detail_dummy" android:name="net.taler.wallet.transactions.TransactionDummyFragment" - android:label="@string/transactions_detail_title" /> + android:label="@string/transaction_dummy_title" /> <fragment android:id="@+id/promptWithdraw" diff --git a/wallet/src/main/res/values/strings.xml b/wallet/src/main/res/values/strings.xml @@ -41,14 +41,14 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card <string name="nav_error">Error</string> <string name="nav_exchange_fees">Provider fees</string> - <string name="nav_exchange_tos">PSP\'s Terms of Service</string> - <string name="nav_prompt_withdraw">Withdraw Digital Cash</string> + <string name="nav_exchange_tos">PSP\'s terms of service</string> + <string name="nav_prompt_withdraw">Withdraw from bank</string> <!-- General --> <string name="actions">Actions</string> <string name="button_back">Go Back</string> - <string name="button_scan_qr_code">Scan Taler QR Code</string> + <string name="button_scan_qr_code">Scan Taler QR code</string> <string name="button_scan_qr_code_label">Scan QR code</string> <string name="cancel">Cancel</string> <!-- The count should be mirrored in RTL languages --> @@ -91,7 +91,7 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card <string name="amount_effective">Effective amount</string> <string name="amount_fee">Fee</string> <string name="amount_invalid">Amount invalid</string> - <string name="amount_invoiced">Amount invoiced</string> + <string name="amount_invoiced">Amount requested</string> <string name="amount_lost">Amount lost</string> <string name="amount_negative">-%s</string> <string name="amount_max">Maximum amount</string> @@ -124,15 +124,18 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card <string name="transaction_denom_loss">Loss of funds</string> <string name="transaction_deposit">Deposit</string> <string name="transaction_deposit_to">Deposit to %1$s</string> - <string name="transaction_dummy_title">Unknown Transaction</string> + <string name="transaction_dummy_title">Unknown transaction</string> <string name="transaction_order">Purchase</string> <string name="transaction_order_id">Order #%1$s</string> <string name="transaction_order_total">Total</string> <string name="transaction_paid">Paid</string> - <string name="transaction_peer_pull_credit">Invoice</string> - <string name="transaction_peer_pull_debit">Invoice paid</string> - <string name="transaction_peer_push_credit">Push payment</string> - <string name="transaction_peer_push_debit">Push payment</string> + <string name="transaction_peer_pull_credit">Request</string> + <string name="transaction_peer_pull_debit">Request paid</string> + <string name="transaction_peer_pull_debit_pending">Paying request</string> + <string name="transaction_peer_push_credit">Received</string> + <string name="transaction_peer_push_credit_pending">Receiving</string> + <string name="transaction_peer_push_debit">Sent</string> + <string name="transaction_peer_push_debit_pending">Sending</string> <string name="transaction_pending">PENDING</string> <string name="transaction_preparing_kyc">KYC required, preparing challenge</string> <string name="transaction_refresh">Coin expiry change fee</string> @@ -149,7 +152,7 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card <string name="transaction_state_suspended">This transaction is suspended</string> <string name="transactions_abort">Abort</string> <string name="transactions_abort_dialog_message">Are you sure you want to abort this transaction? Funds still in transit might get lost.</string> - <string name="transactions_abort_dialog_title">Abort Transaction</string> + <string name="transactions_abort_dialog_title">Abort transaction</string> <string name="transactions_balance">Balance</string> <!-- Currency name (symbol) --> <string name="transactions_currency">%1$s (%2$s)</string> @@ -180,7 +183,7 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card <string name="payment_already_paid">You\'ve already paid for this purchase.</string> <string name="payment_balance_insufficient">Balance insufficient!</string> <string name="payment_balance_insufficient_max">Balance insufficient! Maximum is %1$s</string> - <string name="payment_button_confirm">Confirm Payment</string> + <string name="payment_button_confirm">Confirm payment</string> <string name="payment_confirmation_code">Confirmation code</string> <string name="payment_create_order">Create order</string> <string name="payment_error">Error: %s</string> @@ -190,7 +193,7 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card <string name="payment_label_order_summary">Purchase</string> <string name="payment_pay_template_title">Customize your order</string> <string name="payment_pending">Payment not completed, it will be retried</string> - <string name="payment_prompt_title">Review Payment</string> + <string name="payment_prompt_title">Review payment</string> <!-- including <amount> <tax name> --> <string name="payment_tax">incl. %1$s %2$s</string> <string name="payment_template_error">Error creating order</string> @@ -198,30 +201,30 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card <!-- P2P receive --> - <string name="receive_peer">Invoice another wallet</string> - <string name="receive_peer_create_button">Create invoice</string> + <string name="receive_peer">Request money from another wallet</string> + <string name="receive_peer_create_button">Create request</string> <string name="receive_peer_invoice_uri">Alternatively, copy and send this URI:</string> <string name="receive_peer_payment_intro">Do you want to receive this payment?</string> <string name="receive_peer_payment_title">Receive payment</string> - <string name="receive_peer_title">Request payment</string> + <string name="receive_peer_title">Request money</string> <!-- P2P send --> - <string name="pay_peer_intro">Do you want to pay this invoice?</string> - <string name="pay_peer_title">Pay invoice</string> + <string name="pay_peer_intro">Do you want to pay this request?</string> + <string name="pay_peer_title">Pay request</string> <string name="send_deposit_account">Account</string> <string name="send_deposit_bitcoin_address">Bitcoin address</string> <string name="send_deposit_bitcoin_create_button">Transfer Bitcoin</string> <string name="send_deposit_button_label">Deposit</string> <string name="send_deposit_check_fees_button">Check fees</string> <string name="send_deposit_create_button">Make deposit</string> - <string name="send_deposit_host">Host</string> + <string name="send_deposit_host">Local currency bank</string> <string name="send_deposit_iban">IBAN</string> <string name="send_deposit_iban_error">IBAN is invalid</string> <string name="send_deposit_name">Account holder</string> <string name="send_deposit_no_methods_error">No supported wire methods</string> <string name="send_deposit_taler">x-taler-bank</string> - <string name="send_deposit_title">Deposit to a bank account</string> + <string name="send_deposit_title">Deposit to bank account</string> <string name="send_peer_create_button">Send funds now</string> <string name="send_peer_expiration_1d">1 day</string> <string name="send_peer_expiration_30d">30 days</string> @@ -230,7 +233,7 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card <string name="send_peer_expiration_days">Days</string> <string name="send_peer_expiration_hours">Hours</string> <string name="send_peer_expiration_period">Expires in</string> - <string name="send_peer_payment_instruction">Let the payee scan this QR code to receive:</string> + <string name="send_peer_payment_instruction">To send %1$s, let the payee scan this QR code:</string> <string name="send_peer_purpose">Purpose</string> <string name="send_peer_title">Send money to another wallet</string> @@ -239,13 +242,13 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card <string name="withdraw_account">Account #%1$d</string> <string name="withdraw_account_currency">Account #%1$d (%2$s)</string> <string name="withdraw_amount_error">Enter valid amount</string> - <string name="withdraw_button_confirm">Confirm Withdraw</string> + <string name="withdraw_button_confirm">Confirm withdraw</string> <string name="withdraw_button_confirm_bank">Authorize in bank</string> <string name="withdraw_button_label">Withdraw</string> - <string name="withdraw_button_tos">Review Terms</string> + <string name="withdraw_button_tos">Review terms</string> <string name="withdraw_error_message">Withdrawing is currently not possible. Please try again later!</string> <string name="withdraw_error_test">Error withdrawing TESTKUDOS</string> - <string name="withdraw_error_title">Withdrawal Error</string> + <string name="withdraw_error_title">Withdrawal error</string> <string name="withdraw_exchange">Provider</string> <string name="withdraw_fee">+%1$s withdrawal fees</string> <string name="withdraw_initiated">Withdrawal initiated</string> @@ -260,7 +263,7 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card <string name="withdraw_manual_ready_receiver">Receiver name</string> <string name="withdraw_manual_ready_subject">Subject</string> <string name="withdraw_manual_ready_warning">Make sure to use the correct subject, otherwise the money will not arrive in this wallet.</string> - <string name="withdraw_restrict_age">Restrict Usage to Age</string> + <string name="withdraw_restrict_age">Restrict usage to age</string> <string name="withdraw_restrict_age_unrestricted">Unrestricted</string> <string name="withdraw_select_amount">Select amount</string> <string name="withdraw_subtitle">Select target bank account</string> @@ -277,18 +280,18 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card <item quantity="one">Coin: %s (used %d time)</item> <item quantity="other">Coin: %s (used %d times)</item> </plurals> - <string name="exchange_fee_coin_expiration_label">Earliest Coin Expiry:</string> - <string name="exchange_fee_coin_fees_label">Coin Fees</string> - <string name="exchange_fee_deposit_fee">Deposit Fee: %1$s</string> - <string name="exchange_fee_overhead_label">Rounding Loss:</string> - <string name="exchange_fee_refresh_fee">Change Fee: %1$s</string> - <string name="exchange_fee_refund_fee">Refund Fee: %1$s</string> - <string name="exchange_fee_wire_fee_closing_fee">Closing Fee: %1$s</string> + <string name="exchange_fee_coin_expiration_label">Earliest coin expiry:</string> + <string name="exchange_fee_coin_fees_label">Coin fees</string> + <string name="exchange_fee_deposit_fee">Deposit fee: %1$s</string> + <string name="exchange_fee_overhead_label">Rounding loss:</string> + <string name="exchange_fee_refresh_fee">Change fee: %1$s</string> + <string name="exchange_fee_refund_fee">Refund fee: %1$s</string> + <string name="exchange_fee_wire_fee_closing_fee">Closing fee: %1$s</string> <string name="exchange_fee_wire_fee_timespan">Timespan: %1$s - %2$s</string> - <string name="exchange_fee_wire_fee_wire_fee">Wire Fee: %1$s</string> - <string name="exchange_fee_wire_fees_label">Wire Fees</string> - <string name="exchange_fee_withdraw_fee">Withdraw Fee: %1$s</string> - <string name="exchange_fee_withdrawal_fee_label">Withdrawal Fee:</string> + <string name="exchange_fee_wire_fee_wire_fee">Wire fee: %1$s</string> + <string name="exchange_fee_wire_fees_label">Wire fees</string> + <string name="exchange_fee_withdraw_fee">Withdraw fee: %1$s</string> + <string name="exchange_fee_withdrawal_fee_label">Withdrawal fee:</string> <string name="exchange_list_add">Add provider</string> <string name="exchange_list_add_dev">Add development providers</string> <string name="exchange_list_currency">Currency: %1$s</string> @@ -301,10 +304,10 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card <string name="exchange_reload">Reload information</string> <string name="exchange_settings_summary">Manage list of providers known to this wallet</string> <string name="exchange_settings_title">Providers</string> - <string name="exchange_tos_accept">Accept Terms of Service</string> - <string name="exchange_tos_forget">Reject Terms of Service</string> - <string name="exchange_tos_view">View Terms of Service</string> - <string name="exchange_tos_error">Error showing Terms of Service: %1$s</string> + <string name="exchange_tos_accept">Accept terms of service</string> + <string name="exchange_tos_forget">Reject terms of service</string> + <string name="exchange_tos_view">View terms of service</string> + <string name="exchange_tos_error">Error showing terms of service: %1$s</string> <!-- Losses --> @@ -335,7 +338,7 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card <string name="settings_db_import_error">Error importing database</string> <string name="settings_db_import_success">Database imported from file</string> <string name="settings_db_import_summary">Restore database from file</string> - <string name="settings_dev_mode">Developer Mode</string> + <string name="settings_dev_mode">Developer mode</string> <string name="settings_dev_mode_summary">Shows more information intended for debugging</string> <string name="settings_dialog_import_message">This operation will overwrite your existing database. Do you want to continue?</string> <string name="settings_dialog_reset_message">Do you really want to reset the wallet and lose all coins and purchases?</string> @@ -349,10 +352,10 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card <string name="settings_test_running">The integration test is now running</string> <string name="settings_test_summary">Performs test transactions with demo setup</string> <string name="settings_test_withdrawal">Now withdrawing TESTKUDOS</string> - <string name="settings_version_app">App Version</string> - <string name="settings_version_core">Wallet Core Version</string> - <string name="settings_version_protocol_exchange">Supported Exchange Versions</string> - <string name="settings_version_protocol_merchant">Supported Merchant Versions</string> + <string name="settings_version_app">App version</string> + <string name="settings_version_core">Wallet Core version</string> + <string name="settings_version_protocol_exchange">Supported Exchange versions</string> + <string name="settings_version_protocol_merchant">Supported Merchant versions</string> <string name="settings_version_unknown">Unknown</string> <string name="settings_withdraw_testkudos">Withdraw TESTKUDOS</string> <string name="settings_withdraw_testkudos_summary">Get money for testing</string>