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:
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>