commit 3094476a5a6e09a48db152d06ccfecf08378325f parent c06c869b5d0d22f3d22c210009400be3dff8c41d Author: Iván Ávalos <avalos@disroot.org> Date: Thu, 19 Mar 2026 15:40:28 +0100 [wallet] string unification with iOS + translations for Swiss onboarding Diffstat:
14 files changed, 162 insertions(+), 92 deletions(-)
diff --git a/taler-kotlin-android/src/main/res/values-de/strings.xml b/taler-kotlin-android/src/main/res/values-de/strings.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?><!-- + ~ This file is part of GNU Taler + ~ (C) 2026 Taler Systems S.A. + ~ + ~ GNU Taler is free software; you can redistribute it and/or modify it under the + ~ terms of the GNU General Public License as published by the Free Software + ~ Foundation; either version 3, or (at your option) any later version. + ~ + ~ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY + ~ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + ~ A PARTICULAR PURPOSE. See the GNU General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License along with + ~ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> + --> + +<resources> + <string name="version_invalid">Invalid version. Please try again later!</string> + <string name="close">Schließen</string> + <string name="share">Teilen</string> + <string name="copy">Kopieren</string> +</resources> +\ No newline at end of file diff --git a/taler-kotlin-android/src/main/res/values-fr/strings.xml b/taler-kotlin-android/src/main/res/values-fr/strings.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?><!-- + ~ This file is part of GNU Taler + ~ (C) 2026 Taler Systems S.A. + ~ + ~ GNU Taler is free software; you can redistribute it and/or modify it under the + ~ terms of the GNU General Public License as published by the Free Software + ~ Foundation; either version 3, or (at your option) any later version. + ~ + ~ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY + ~ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + ~ A PARTICULAR PURPOSE. See the GNU General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License along with + ~ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> + --> + +<resources> + <string name="version_invalid">Invalid version. Please try again later!</string> + <string name="close">Fermer</string> + <string name="share">Partager</string> + <string name="copy">Copier</string> +</resources> +\ No newline at end of file diff --git a/wallet/src/main/java/net/taler/wallet/balances/BalancesComposable.kt b/wallet/src/main/java/net/taler/wallet/balances/BalancesComposable.kt @@ -98,10 +98,6 @@ fun BalancesComposable( .fillMaxSize(), contentPadding = innerPadding, ) { - if (state.balances.isNotEmpty()) stickyHeader { - SectionHeader { Text(stringResource(R.string.assets_section_balances)) } - } - items(state.balances, key = { it.scopeInfo.hashCode() }) { balance -> BalanceRow( balance, @@ -111,7 +107,7 @@ fun BalancesComposable( } if (state.donauSummary.isNotEmpty()) stickyHeader { - SectionHeader { Text(stringResource(R.string.assets_section_statements)) } + SectionHeader { Text(stringResource(R.string.balances_section_statements)) } } items(state.donauSummary) { statement -> diff --git a/wallet/src/main/java/net/taler/wallet/compose/AmountScopeField.kt b/wallet/src/main/java/net/taler/wallet/compose/AmountScopeField.kt @@ -120,8 +120,8 @@ fun AmountScopeField( showSymbol = true, ) - val commonAmounts = amount.amount.spec?.commonAmounts?.map { - it.withSpec(amount.amount.spec) } + val commonAmounts = amount.amount.spec?.commonAmounts + ?.map { it.withSpec(amount.amount.spec) } AnimatedVisibility(showShortcuts && amount.amount.isZero() && commonAmounts != null) { if (commonAmounts != null) { AmountInputShortcuts( @@ -286,7 +286,7 @@ fun AmountInputFieldPreview() { TalerSurface { var amount by remember { mutableStateOf(AmountScope( - amount = Amount.fromJSONString("KUDOS:10").withSpec( + amount = Amount.fromJSONString("KUDOS:0").withSpec( CurrencySpecification( name = "Kudos", numFractionalInputDigits = 2, diff --git a/wallet/src/main/java/net/taler/wallet/compose/SelectionChip.kt b/wallet/src/main/java/net/taler/wallet/compose/SelectionChip.kt @@ -16,6 +16,7 @@ package net.taler.wallet.compose +import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.MaterialTheme import androidx.compose.material3.SuggestionChip import androidx.compose.material3.SuggestionChipDefaults @@ -35,6 +36,7 @@ fun <T> SelectionChip( SuggestionChip( label = label, modifier = modifier, + shape = CircleShape, onClick = { onSelected(value) }, diff --git a/wallet/src/main/java/net/taler/wallet/main/MainFragment.kt b/wallet/src/main/java/net/taler/wallet/main/MainFragment.kt @@ -65,6 +65,7 @@ import net.taler.wallet.R import net.taler.wallet.balances.BalanceState import net.taler.wallet.compose.TalerSurface import net.taler.wallet.compose.collectAsStateLifecycleAware +import net.taler.wallet.launchInAppBrowser import net.taler.wallet.settings.SettingsFragment import net.taler.wallet.transactions.Transaction import net.taler.wallet.transactions.TransactionMajorState @@ -111,7 +112,7 @@ class MainFragment: Fragment() { NavigationBar { NavigationBarItem( icon = { Icon(Icons.Default.BarChart, contentDescription = null) }, - label = { Text(stringResource(R.string.assets_title)) }, + label = { Text(stringResource(R.string.balances_title)) }, selected = tab == Tab.ASSETS, onClick = { tab = Tab.ASSETS @@ -247,7 +248,11 @@ class MainFragment: Fragment() { onDeposit = this@MainFragment::onDeposit, onWithdraw = this@MainFragment::onWithdraw, onEnterUri = this@MainFragment::onEnterUri, - onShoppingDiscovery = this@MainFragment::onShoppingDiscovery, + onShoppingDiscovery = { + selectedBalance?.shoppingUrls?.let { + onShoppingDiscovery(it) + } + } ) } } @@ -293,7 +298,7 @@ class MainFragment: Fragment() { (requireActivity() as AppCompatActivity).apply { supportActionBar?.title = when (tab) { Tab.ASSETS -> when(viewMode) { - is ViewMode.Assets -> getString(R.string.assets_title) + is ViewMode.Assets -> getString(R.string.balances_title) is ViewMode.Transactions -> getString(R.string.transactions_title) null -> getString(R.string.loading) } @@ -334,9 +339,11 @@ class MainFragment: Fragment() { findNavController().navigate(R.id.action_main_to_uriInput) } - private fun onShoppingDiscovery() { + private fun onShoppingDiscovery(shoppingUrls: List<String>) { model.settingsManager.saveActionButtonUsed(requireContext()) - findNavController().navigate(R.id.action_main_to_exchangeShopping) + if (shoppingUrls.size == 1) { + launchInAppBrowser(requireContext(), shoppingUrls[0]) + } else findNavController().navigate(R.id.action_main_to_exchangeShopping) } } diff --git a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullComposable.kt b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullComposable.kt @@ -41,7 +41,6 @@ import androidx.compose.ui.Alignment.Companion.CenterHorizontally import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester -import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.tooling.preview.Preview @@ -180,15 +179,8 @@ fun OutgoingPullComposable( if (input.length <= MAX_LENGTH_SUBJECT) subject = input.replace('\n', ' ') }, - isError = subject.isBlank(), - label = { - Text( - stringResource(R.string.send_peer_purpose), - color = if (subject.isBlank()) { - MaterialTheme.colorScheme.error - } else Color.Unspecified, - ) - }, + label = { Text(stringResource(R.string.send_peer_purpose)) }, + placeholder = { Text(stringResource(R.string.receive_peer_default_purpose)) }, supportingText = { Text( stringResource( @@ -252,17 +244,18 @@ fun OutgoingPullComposable( BottomInsetsSpacer() } + val defaultSubject = stringResource(R.string.receive_peer_default_purpose) BottomButtonBox(Modifier.fillMaxWidth()) { Button( modifier = Modifier .systemBarsPaddingBottom(), - enabled = tosReview || (res != null && !amount.amount.isZero() && subject.isNotBlank()), + enabled = tosReview || (res != null && !amount.amount.isZero()), onClick = { val ex = res?.exchangeBaseUrl ?: error("clickable without exchange") if (res.tosStatus?.isAccepted() == true) { onCreateInvoice( amount, - subject, + subject.ifBlank { defaultSubject }, hours, ex ) diff --git a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushComposable.kt b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushComposable.kt @@ -41,7 +41,6 @@ import androidx.compose.ui.Alignment.Companion.CenterHorizontally import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester -import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.tooling.preview.Preview @@ -232,15 +231,8 @@ fun OutgoingPushIntroComposable( if (input.length <= MAX_LENGTH_SUBJECT) subject = input.replace('\n', ' ') }, - isError = subject.isBlank(), - label = { - Text( - stringResource(R.string.send_peer_purpose), - color = if (subject.isBlank()) { - MaterialTheme.colorScheme.error - } else Color.Unspecified, - ) - }, + placeholder = { Text(stringResource(R.string.send_peer_default_purpose)) }, + label = { Text(stringResource(R.string.send_peer_purpose)) }, supportingText = { Text( stringResource( @@ -288,11 +280,16 @@ fun OutgoingPushIntroComposable( BottomInsetsSpacer() } + val defaultSubject = stringResource(R.string.send_peer_default_purpose) BottomButtonBox(Modifier.fillMaxWidth()) { Button( modifier = Modifier.systemBarsPaddingBottom(), - enabled = feeResult is Success && !amount.amount.isZero() && subject.isNotBlank(), - onClick = { onSend(amount, subject, hours) }, + enabled = feeResult is Success && !amount.amount.isZero(), + onClick = { onSend( + amount, + subject.ifBlank { defaultSubject }, + hours, + ) }, ) { Text(text = stringResource(R.string.send_peer_create_button_amount, amount.amount.withSpec(selectedSpec))) diff --git a/wallet/src/main/res/navigation/nav_graph.xml b/wallet/src/main/res/navigation/nav_graph.xml @@ -118,7 +118,7 @@ <fragment android:id="@+id/main" android:name="net.taler.wallet.main.MainFragment" - android:label="@string/assets_title"> + android:label="@string/balances_title"> <action android:id="@+id/action_main_to_uriInput" app:destination="@id/uriInput" /> @@ -199,7 +199,7 @@ <fragment android:id="@+id/wireTransferDetails" android:name="net.taler.wallet.transfer.WireTransferDetailsFragment" - android:label="@string/withdraw_manual_ready_details_intro" /> + android:label="@string/wire_transfer" /> <fragment android:id="@+id/deposit" diff --git a/wallet/src/main/res/values-de/strings.xml b/wallet/src/main/res/values-de/strings.xml @@ -104,11 +104,12 @@ <string name="exchange_add_url">Adresse des Zahlungsdienstleisters eingeben</string> <string name="button_back">Zurück</string> <string name="withdraw_manual_ready_iban">IBAN</string> - <string name="withdraw_manual_ready_intro">Sie müssen an den Zahlungsdienst %1$s von Ihrem normalen Bankkonto überweisen, damit diese elektronische Geldbörse %2$s als digitales Bargeld beziehen kann.</string> + <string name="withdraw_manual_ready_intro">Sie müssen %1$s von Ihrem regulären Bankkonto an den Zahlungsdienst überweisen, um %2$s als digitales Bargeld in diese Wallet zu erhalten.</string> <string name="withdraw_manual_ready_details_intro">Überweisungsanleitung</string> <string name="withdraw_manual_ready_subject">Buchungsvermerk</string> <string name="withdraw_manual_ready_bank_button">In Banking-App öffnen</string> - <string name="withdraw_manual_ready_warning">Dies ist obligatorisch, da Ihr Geld sonst nicht im Taler-Wallet ankommt.</string> + <string name="withdraw_manual_ready_warning">Dies ist obligatorisch, da Ihr Geld sonst nicht in dieser Wallet ankommt.</string> + <string name="reload">Aktualisieren</string> <string name="reset">Zurücksetzen</string> <string name="payment_prompt_title">Zahlung überprüfen</string> <string name="send_deposit_iban_error">Die IBAN ist unvollständig oder ungültig</string> @@ -123,12 +124,13 @@ <string name="payment_pay_template_title">Passen Sie Ihre Bestellung an</string> <string name="send_deposit_title">Einzahlung an Bankkonto</string> <string name="withdraw_manual_ready_account">Konto</string> - <string name="withdraw_manual_ready_receiver">Zahlungsempfänger</string> + <string name="withdraw_manual_ready_receiver">Empfänger</string> <string name="exchange_delete_force">Löschung erzwingen (bereinigen)</string> <string name="settings_db_export_summary">Interne Datenbank speichern</string> <string name="settings_db_clear_error">Fehler beim Bereinigen der Datenbank</string> <string name="settings_alert_reset_canceled">Zurücksetzen abgebrochen</string> <string name="exchange_not_contacted">Zahlungsdienstleister nicht kontaktiert</string> + <string name="send_peer_default_purpose">Gesendet mit GNU Taler</string> <string name="send_peer_expiration_1d">1 Tag</string> <string name="settings_test">Integrationstest durchführen</string> <string name="settings_test_summary">Führt Testtransaktionen zu Demonstrationszwecken durch</string> @@ -148,6 +150,7 @@ <string name="send_peer_expiration_custom">Benutzerdefiniert</string> <string name="exchange_delete">Zahlungsdienstleister löschen</string> <string name="settings_db_export_success">Datenbank in Datei exportiert</string> + <string name="receive_peer_default_purpose">Angefordert mit GNU Taler</string> <string name="receive_peer_invoice_uri">Alternativ kopieren und senden Sie diesen URI:</string> <string name="button_scan_qr_code_label">QR-Code scannen</string> <string name="send_deposit_check_fees_button">Gebühren prüfen</string> @@ -188,6 +191,7 @@ <string name="send_peer_expiration_30d">30 Tage</string> <string name="send_peer_expiration_7d">1 Woche</string> <string name="balance_scope_exchange">Von: %1$s</string> + <string name="balances_title">Salden</string> <string name="balance_scope_auditor">Auditor %1$s</string> <string name="receive_peer">Geld von einem anderen Wallet anfordern</string> <string name="char_count">%1$d/%2$d</string> @@ -198,6 +202,7 @@ <string name="transactions_fail">Verwerfen</string> <string name="transactions_fail_dialog_message">Sind Sie sicher, dass die Transaktion verworfen werden soll? Bereits abgesendete Guthaben GEHEN VERLOREN.</string> <string name="payment_create_order">Auftrag anlegen</string> + <string name="language">Sprache</string> <string name="loading">Lädt Daten</string> <string name="open">Öffnen</string> <string name="loss_reason_expired">Das Guthaben wurde nicht aufgefrischt, weil die Wallet-Anwendung zu lange keinen Internetzugang hatte</string> @@ -215,7 +220,8 @@ <string name="amount_send">Betrag, der überwiesen wird</string> <string name="amount_total">Gesamtbetrag</string> <string name="amount_total_label">Gesamt:</string> - <string name="amount_transfer">Überweisung</string> + <string name="amount_transfer">Betrag</string> + <string name="balances_empty_withdraw_kudos_button">Demo-Geld erhalten</string> <string name="balances_inbound_amount">+%1$s eingehend</string> <string name="balances_outbound_amount">-%1$s abgehend</string> <string name="transaction_deposit_to">Einzahlung an %1$s</string> @@ -240,6 +246,7 @@ <string name="withdraw_account_currency">Konto #%1$d (%2$s)</string> <string name="exchange_reload">Information erneut laden</string> <string name="show_logs">Protokolle anzeigen</string> + <string name="withdraw_manual_instruction_qr">Oder scannen Sie diesen QR-Code mit Ihrer Banking-App, um digitales Bargeld abzuheben</string> <string name="withdraw_manual_qr_epc">EPC-QR</string> <string name="withdraw_manual_qr_spc">Schweizer QR-Code</string> <string name="transaction_state_pending_bank">Warten auf Überweisungsfreigabe in der Bank</string> @@ -305,11 +312,11 @@ <string name="nav_prompt_withdraw_currency">%1$s abheben</string> <string name="payment_button_cancel">Abbrechen</string> <string name="payment_cancel_dialog_title">Bezahlvorgang abbrechen</string> - <string name="withdraw_manual_step"><b>Schritt %1$s:</b> %2$s</string> - <string name="withdraw_manual_step_finish">Nach Ihrer Überweisung von %1$s, die Sie durch Ihre Banking-App oder Ihr Online-Banking auslösen, wird diese Abhebung automatisch durchgeführt. Je nach Bank kann die Überweisung zwischen Minuten und zwei Werktagen dauern, bitte haben Sie etwas Geduld.</string> - <string name="withdraw_manual_step_iban">Sollte die Bankverbindung noch nicht in Ihrer Favoritenliste sein, kopieren Sie jetzt IBAN und Empfänger und füllen diese in Ihrer Banking-App bzw. im Online-Banking in die entsprechenden Felder, so dass Sie die Daten für das nächste Mal sofort zur Verfügung haben:</string> - <string name="withdraw_manual_step_subject">Kopieren Sie diese Zeichenkette ins Feld „Buchungsvermerk“ (bzw. „Verwendungszweck“) Ihrer Banking-App oder Online-Banking-Webseite:</string> - <string name="withdraw_review_terms">Sie müssen zunächst die Allgemeinen Geschäftsbedingungen des Zahlungsdiensts akzeptieren, bevor Sie digitales Bargeld in Ihre elektronische Geldbörse abheben können.</string> + <string name="withdraw_manual_step"><b>Schritt %1$s:</b> %2$s</string> + <string name="withdraw_manual_step_finish">Schließen Sie die Überweisung von %1$s in Ihrer Banking-App oder Bank-Website ab, dann wird diese Abhebung automatisch durchgeführt. Die Überweisung kann - je nach Bank - bis zu zwei Tage dauern. Bitte haben Sie etwas Geduld.</string> + <string name="withdraw_manual_step_iban">Wenn Sie es noch nicht in Ihrer Favoritenliste haben, kopieren Sie Empfänger und IBAN in Ihre Banking-App oder Bank-Webseite (und speichern den Kontakt als Favorit für das nächste Mal):</string> + <string name="withdraw_manual_step_subject">Kopieren Sie diesen Code und setzen ihn als Verwendungszweck (bzw. „Mitteilung an Empfänger“) in Ihrer Banking-App oder Bank-Website ein:</string> + <string name="withdraw_review_terms">Sie müssen zuerst die Allgemeinen Geschäftsbedingungen des Zahlungsdiensts akzeptieren, bevor Sie digitales Bargeld in Ihre Wallet abheben können.</string> <string name="payment_cancel_dialog_message">Sind Sie sicher, dass Sie diese Zahlung abbrechen möchten? Sie können sie später nicht mehr abschließen. Sie können den Vorgang aber an dieser Stelle auch einfach abbrechen und später erneut beginnen.</string> <string name="withdraw_manual_qr_intro">Wenn Sie Ihr Online-Banking auf einem anderen Gerät ausführen, scannen Sie einen dieser QR-Codes:</string> <string name="withdraw_manual_ready_details_qr">QR-Codes für die Überweisung</string> @@ -332,6 +339,7 @@ <string name="biometric_prompt_title">Taler Wallet entsperren</string> <string name="biometric_unlock_label">Zum Entsperren tippen</string> <string name="withdraw_manual_ready_postal_code">Postleitzahl</string> + <string name="wire_transfer">Überweisung</string> <string name="biometric_auth_error">Berechtigungsfehler: %1$s</string> <string name="error">Fehler</string> <string name="warning">Warnung</string> @@ -367,8 +375,7 @@ <string name="donau_url">URL der für Spendenbescheinigungen zuständigen Steuerbehörde</string> <string name="donau_statement_legal_domain">Rechtsbereich</string> <string name="empty">Es gibt nichts anzuzeigen</string> - <string name="assets_section_balances">Salden</string> - <string name="assets_section_statements">Spendenbescheinigungen</string> + <string name="balances_section_statements">Spendenbescheinigungen</string> <string name="settings_bank_accounts">Bankkonten</string> <string name="settings_bank_accounts_summary">Verwalten Sie hier Ihre Bankkonten für Einzahlungen</string> <string name="settings_donau">Steuerlich absetzbare Spenden</string> @@ -393,4 +400,9 @@ <string name="performance_stats_wallet_task">Wallet-Core-Aufgaben</string> <string name="settings_stats">Leistungsanalyse</string> <string name="settings_stats_summary">Zeitaufwändigste Vorgänge anzeigen</string> + <string name="balances_empty_withdraw_chf_title">Willkommen bei Taler Wallet!</string> + <string name="balances_empty_withdraw_chf_message">Um Ihre erste Zahlung zu tätigen, heben Sie digitales Bargeld ab</string> + <string name="balances_empty_withdraw_chf_button">CHF abheben</string> + <string name="balances_empty_withdraw_kudos_message">Mit Demo-Geld ausprobieren, wie Sie mit digitalem Geld bezahlen können.</string> + <string name="withdraw_manual_instruction_manual">Befolgen Sie die Anleitung, um die Überweisungsdaten in Ihrer Banking-App einzugeben</string> </resources> diff --git a/wallet/src/main/res/values-fr/strings.xml b/wallet/src/main/res/values-fr/strings.xml @@ -99,6 +99,7 @@ <string name="settings_version_protocol_merchant">Versions de Taler Merchant compatibles</string> <string name="settings_version_core">Version Wallet Core</string> <string name="settings_version_protocol_exchange">Versions des prestataires compatibles</string> + <string name="balances_title">Soldes</string> <string name="transaction_action_kyc">Compléter le KYC</string> <string name="transaction_deposit">Dépôt</string> <string name="receive_peer">Créer une demande</string> @@ -116,6 +117,8 @@ <string name="transactions_send_funds">Envoyer</string> <string name="char_count">%1$d/%2$d</string> <string name="transactions_delete_selected_dialog_message">Êtes-vous sûr de vouloir supprimer les transactions sélectionnées de votre portefeuille ?</string> + <string name="receive_peer_create_button_amount">Demander %1$s</string> + <string name="receive_peer_default_purpose">Demandé avec GNU Taler</string> <string name="receive_peer_invoice_uri">Sinon, copier et envoyer cet URI :</string> <string name="send_deposit_name">Titulaire du compte</string> <string name="send_deposit_bitcoin_address">Adresse Bitcoin</string> @@ -136,10 +139,10 @@ <string name="withdraw_manual_ready_subject">Référence</string> <string name="withdraw_manual_bitcoin_intro">Effectuez maintenant une transaction fractionnée avec les trois sorties suivantes.</string> <string name="withdraw_manual_ready_bank_button">Ouvrir dans l\'application bancaire</string> - <string name="withdraw_manual_ready_intro">Vous devez transférer %1$s de votre compte bancaire habituel vers le prestataire de services de paiement pour recevoir %2$s sous forme d\'argent électronique dans ce portefeuille.</string> + <string name="withdraw_manual_ready_intro">Vous devez transférer %1$s de votre compte bancaire habituel vers le prestataire de services de paiement pour recevoir %2$s sous forme d\'argent numérique dans ce portefeuille.</string> <string name="withdraw_manual_ready_details_intro">Instructions pour le virement bancaire</string> <string name="withdraw_manual_ready_iban">IBAN</string> - <string name="withdraw_manual_ready_warning">Ceci est obligatoire, sinon votre argent n\'arrivera pas dans ce portefeuille.</string> + <string name="withdraw_manual_ready_warning">Ceci est impératif, sinon votre argent n\'arrivera pas dans ce portefeuille.</string> <string name="transaction_state_aborted_manual">Cette transaction a été annulée. Si vous avez déjà envoyé de l\'argent à ce prestataire, il vous sera reversé dans %1$s</string> <string name="send_deposit_account">Compte</string> <string name="send_peer_expiration_7d">1 semaine</string> @@ -153,7 +156,7 @@ <string name="button_scan_qr_code_label">Scanner le code QR</string> <string name="qr_scan_context_receive_message">Il semble que vous aviez l’intention de recevoir de l’argent, mais le code QR que vous avez scanné correspond à une autre action. Voulez-vous continuer ?</string> <string name="qr_scan_context_send_message">Il semble que vous aviez l’intention d\'envoyer de l’argent, mais le code QR que vous avez scanné correspond à une autre action. Voulez-vous continuer ?</string> - <string name="amount_receive">Montant à recevoir</string> + <string name="amount_receive">Montant à demander</string> <string name="amount_send">Montant à envoyer</string> <string name="transactions_resume">Reprendre</string> <string name="send_deposit_iban_error">L\'IBAN n\'est pas valide</string> @@ -162,7 +165,7 @@ <string name="amount_excess">Le montant dépasse le maximum de %1$s</string> <string name="amount_total">Montant total</string> <string name="amount_total_label">Total :</string> - <string name="amount_transfer">Transfert</string> + <string name="amount_transfer">Montant</string> <string name="amount_withdraw">Montant à retirer du compte en banque</string> <string name="import_db">Importer</string> <string name="transactions_abort_dialog_title">Abandonner la transaction</string> @@ -181,7 +184,9 @@ <string name="transaction_state_expired">Cette transaction a expiré</string> <string name="transaction_state_failed">Cette transaction a échoué ou a été abandonnée</string> <string name="transaction_state_pending">Cette transaction est en attente</string> + <string name="send_peer_default_purpose">Envoyé avec GNU Taler</string> <string name="send_peer_expiration_1d">1 jour</string> + <string name="language">Langue</string> <string name="loading">Chargement</string> <string name="open">Ouvrir</string> <string name="edit">Modifier</string> @@ -231,6 +236,7 @@ <string name="settings_db_export">Export de la base de données</string> <string name="settings_db_import_success">Base de donnée importée depuis un fichier</string> <string name="settings_test">Executer le test d\'intégration</string> + <string name="withdraw_manual_instruction_qr">Ou scannez ce code QR avec votre application bancaire pour retirer de l\'argent numérique</string> <string name="withdraw_manual_qr_epc">QR code EPC</string> <string name="withdraw_manual_qr_spc">Code QR suisse</string> <string name="exchange_not_contacted">Prestataire non contacté</string> @@ -239,10 +245,12 @@ <string name="qr_scan_context_title">Action éventuellement involontaire</string> <string name="exchange_delete">Effacer le prestataire</string> <string name="balance_scope_auditor">Auditeur : %1$s</string> + <string name="balances_empty_withdraw_kudos_message">Obtenez de l\'argent fictif pour découvrir comment payer avec de l\'argent numérique.</string> <string name="balances_inbound_amount">+%1$s entrant</string> <string name="balances_outbound_amount">-%1$s sortant</string> <string name="exchange_delete_force">Forcer la suppression (purge)</string> <string name="payment_template_error">Erreur de création de la commande</string> + <string name="reload">Recharger</string> <string name="reset">Réinitialiser</string> <string name="payment_prompt_title">Vérifier le paiement</string> <string name="exchange_tos_forget">Refuser les conditions d\'utilisation</string> @@ -309,11 +317,11 @@ <string name="payment_button_cancel">Annuler</string> <string name="payment_cancel_dialog_message">Êtes-vous sûr de vouloir annuler ce paiement ? Vous ne pourrez pas le terminer plus tard. Vous pouvez simplement quitter cet écran et revenir plus tard.</string> <string name="payment_cancel_dialog_title">Annuler le Paiement</string> - <string name="receive_peer_review_terms">Vous devez d\'abord accepter les conditions générales d\'utilisation du prestataire de services de paiement avant de pouvoir retirer de l\'argent électronique.</string> + <string name="receive_peer_review_terms">Vous devez d\'abord accepter les conditions générales d\'utilisation du prestataire de services de paiement avant de pouvoir retirer de l\'argent numérique dans votre portefeuille.</string> <string name="send_deposit_kyc_auth_warning_account">N\'utilisez pas un compte bancaire différent pour le dépôt, sinon la vérification échouera.</string> <string name="send_deposit_kyc_auth_warning_subject">Ceci est obligatoire, sinon la vérification échouera.</string> - <string name="withdraw_manual_step"><b>Étape %1$s:</b> %2$s</string> - <string name="withdraw_manual_step_subject">Copiez ce code et collez-le dans le champ référence/objet de votre application bancaire ou du site web de votre banque :</string> + <string name="withdraw_manual_step"><b>Étape %1$s :</b> %2$s</string> + <string name="withdraw_manual_step_subject">Copiez ce code et collez-le dans le champ Référence (ou « Communication au bénéficiaire ») de votre application bancaire ou du site web de votre banque :</string> <string name="withdraw_review_terms">Vous devez d\'abord accepter les conditions d\'utilisation du prestataire de services de paiement avant de pouvoir retirer de l\'argent électronique dans votre portefeuille.</string> <string name="withdraw_manual_ready_details_qr">Codes QR pour le virement bancaire</string> <string name="currency_via">via</string> @@ -323,14 +331,15 @@ <string name="send_deposit_kyc_auth_intro_bank">Vous devez transférer %1$s du compte bancaire %2$s au prestataire de services de paiement pour prouver que vous avez le contrôle de ce compte.</string> <string name="send_deposit_kyc_auth_step_finish">Terminez le virement de %1$s dans votre application bancaire ou sur votre site web pour prouver que vous avez le contrôle du compte bancaire %2$s. Selon votre banque, le transfert peut prendre de quelques minutes à deux jours ouvrables, soyez patient.</string> <string name="withdraw_manual_qr_intro">Si votre logiciel bancaire fonctionne sur un autre appareil, vous pouvez scanner l\'un de ces codes QR :</string> - <string name="withdraw_manual_step_finish">Terminez le virement bancaire de %1$s dans votre application bancaire ou sur votre site web, puis ce retrait se fera automatiquement. Selon votre banque, le transfert peut prendre de quelques minutes à deux jours ouvrables, soyez patient.</string> - <string name="withdraw_manual_step_iban">Si vous ne l\'avez pas déjà dans votre liste de favoris bancaires, copiez et collez le destinataire et l\'IBAN dans les champs destinataire/IBAN de votre application ou site web bancaire (et sauvegardez-le en tant que favori pour la prochaine fois) :</string> + <string name="withdraw_manual_step_finish">Terminez le virement bancaire de %1$s dans votre application bancaire ou sur votre site web, et ce retrait se fera automatiquement. Selon votre banque, le transfert peut prendre de quelques minutes à deux jours ouvrables. Veuillez patienter.</string> + <string name="withdraw_manual_step_iban">Si vous ne l\'avez pas déjà dans votre liste de favoris bancaires, copiez et collez le destinataire et l\'IBAN dans les champs destinataire/IBAN de votre application bancaire ou de votre site web (et sauvegardez-le en tant que favori pour la prochaine fois) :</string> <string name="send_deposit_postal_code">Code postal (facultatif)</string> <string name="send_deposit_town">Ville (facultatif)</string> <string name="withdraw_manual_ready_postal_code">Code postal</string> <string name="withdraw_manual_ready_town">Ville</string> <string name="biometric_auth_failed">Echec de l\'authentification</string> <string name="biometric_unlock_label">Appuyez pour déverrouiller</string> + <string name="wire_transfer">Virement bancaire</string> <string name="biometric_auth_error">Erreur d\'authentification : %1$s</string> <string name="biometric_auth_unavailable">Aucune méthode d\'authentification n\'est disponible.</string> <string name="settings_lock_auth_summary">Nécessite une empreinte digitale ou un mot de passe pour accéder au portefeuille</string> @@ -344,4 +353,12 @@ <string name="donau_select_button">Sélectionner une autorité fiscale</string> <string name="donau_selector_confirm">Configurer un numéro fiscal</string> <string name="donau_selector_title">Sélectionner une autorité fiscale</string> + <string name="balances_empty_withdraw_chf_button">Retirer CHF</string> + <string name="balances_empty_withdraw_chf_message">Pour effectuer votre premier paiement, retirez de l\'argent numérique.</string> + <string name="balances_empty_withdraw_chf_title">Bienvenue dans Taler Wallet !</string> + <string name="balances_empty_withdraw_kudos_button">Obtenir de l\'argent de démonstration</string> + <string name="exchange_shopping_label">Où payer avec %1$s</string> + <string name="payment_button_confirm_amount">Paier %1$s</string> + <string name="settings_bank_accounts">Comptes bancaires</string> + <string name="withdraw_manual_instruction_manual">Suivez les instructions pour saisir les détails du virement dans votre application bancaire</string> </resources> diff --git a/wallet/src/main/res/values-hu/strings.xml b/wallet/src/main/res/values-hu/strings.xml @@ -98,9 +98,8 @@ <string name="amount_withdraw"/> <!-- Assets --> - <string name="assets_section_balances"/> - <string name="assets_section_statements"/> - <string name="assets_title"/> + <string name="balances_section_statements"/> + <string name="balances_title"/> <!-- Balances --> <string name="balance_scope_auditor"/> diff --git a/wallet/src/main/res/values-iw/strings.xml b/wallet/src/main/res/values-iw/strings.xml @@ -405,9 +405,8 @@ <string name="host_apdu_service_desc">תשלומי NFC של טאלר</string> <string name="wifi_connect_error">לא הצליח להתחבר ל־Wi-Fi חינמי: %1$s</string> <string name="wifi_disabled_error">יש להדליק את ה־Wi-Fi כדי לקבל Wi-Fi חינמי</string> - <string name="assets_section_balances">מאזנים</string> - <string name="assets_section_statements">הצהרות על תרומה</string> - <string name="assets_title">נכסים</string> + <string name="balances_section_statements">הצהרות על תרומה</string> + <string name="balances_title">נכסים</string> <string name="settings_bank_accounts">חשבונות בנק</string> <string name="settings_bank_accounts_summary">ניהול חשבונות הבנק להפקדות</string> <string name="donau_statement_tax_authority">רשות המיסים</string> diff --git a/wallet/src/main/res/values/strings.xml b/wallet/src/main/res/values/strings.xml @@ -61,7 +61,7 @@ GNU Taler is immune to many types of fraud such as credit card data theft, phish <string name="empty">No items were found</string> <string name="enter_uri">Enter Taler link</string> <string name="enter_uri_label">Taler link</string> - <string name="enter_uri_prefix">taler://</string> + <string name="enter_uri_prefix" translatable="false">taler://</string> <string name="error">Error</string> <string name="error_export">Export error diagnostics</string> <string name="import_db">Import</string> @@ -83,6 +83,7 @@ GNU Taler is immune to many types of fraud such as credit card data theft, phish <string name="uri_invalid">Not a valid Taler link</string> <string name="wallet">Wallet</string> <string name="warning">Warning</string> + <string name="wire_transfer">Wire transfer</string> <!-- Biometric lock --> <string name="biometric_auth_error">Authentication error: %1$s</string> @@ -123,26 +124,22 @@ GNU Taler is immune to many types of fraud such as credit card data theft, phish <string name="amount_sent">Amount sent</string> <string name="amount_total">Total amount</string> <string name="amount_total_label">Total:</string> - <string name="amount_transfer">Transfer</string> + <string name="amount_transfer">Amount</string> <string name="amount_withdraw">Amount to withdraw from bank</string> - <!-- Assets --> - - <string name="assets_section_balances">Balances</string> - <string name="assets_section_statements">Donation statements</string> - <string name="assets_title">Assets</string> - <!-- Balances --> <string name="balance_scope_auditor">Auditor: %1$s</string> <string name="balance_scope_exchange">From %1$s</string> - <string name="balances_empty_withdraw_chf_title">Welcome to Taler Wallet!</string> - <string name="balances_empty_withdraw_chf_message">To make your first payment, withdraw digital cash.</string> <string name="balances_empty_withdraw_chf_button">Withdraw CHF</string> - <string name="balances_empty_withdraw_kudos_message">Get demo cash to experience how to pay with digital cash.</string> + <string name="balances_empty_withdraw_chf_message">To make your first payment, withdraw digital cash.</string> + <string name="balances_empty_withdraw_chf_title">Welcome to Taler Wallet!</string> <string name="balances_empty_withdraw_kudos_button">Get demo cash</string> + <string name="balances_empty_withdraw_kudos_message">Get demo cash to experience how to pay with digital cash.</string> <string name="balances_inbound_amount">+%1$s incoming</string> <string name="balances_outbound_amount">-%1$s outgoing</string> + <string name="balances_section_statements">Donation statements</string> + <string name="balances_title">Balances</string> <!-- Transactions --> @@ -273,17 +270,33 @@ GNU Taler is immune to many types of fraud such as credit card data theft, phish <string name="receive_peer">Request money from another wallet</string> <string name="receive_peer_create_button_amount">Request %1$s</string> + <string name="receive_peer_default_purpose">Requested with GNU Taler</string> <string name="receive_peer_invoice_uri">Alternatively, copy and send this URI:</string> <string name="receive_peer_payment_instruction">Scan this QR code to pay %1$s</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_review_terms">You must first accept the payment service\'s terms of service before you can request electronic cash.</string> + <string name="receive_peer_review_terms">You must first accept the payment service\'s terms of service before you can request digital cash.</string> <string name="receive_peer_title">Request money</string> <!-- P2P send --> <string name="pay_peer_intro">Do you want to pay this request?</string> <string name="pay_peer_title">Pay request</string> + <string name="send_peer_create_button_amount">Send %1$s</string> + <string name="send_peer_default_purpose">Sent with GNU Taler</string> + <string name="send_peer_expiration_1d">1 day</string> + <string name="send_peer_expiration_30d">30 days</string> + <string name="send_peer_expiration_7d">1 week</string> + <string name="send_peer_expiration_custom">Custom</string> + <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">Scan this QR code to receive %1$s</string> + <string name="send_peer_purpose">Purpose</string> + <string name="send_peer_title">Send money to another wallet</string> + + <!-- Deposits --> + <string name="send_deposit_account">Account</string> <string name="send_deposit_account_add">Add account</string> <string name="send_deposit_account_edit">Edit account</string> @@ -318,17 +331,6 @@ GNU Taler is immune to many types of fraud such as credit card data theft, phish <string name="send_deposit_town">Town (optional)</string> <string name="send_deposit_title">Deposit to bank account</string> <string name="send_deposit_no_alias">No alias</string> - <string name="send_peer_create_button_amount">Send %1$s</string> - <string name="send_peer_expiration_1d">1 day</string> - <string name="send_peer_expiration_30d">30 days</string> - <string name="send_peer_expiration_7d">1 week</string> - <string name="send_peer_expiration_custom">Custom</string> - <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">Scan this QR code to receive %1$s</string> - <string name="send_peer_purpose">Purpose</string> - <string name="send_peer_title">Send money to another wallet</string> <!-- Withdrawals --> @@ -337,7 +339,7 @@ GNU Taler is immune to many types of fraud such as credit card data theft, phish <string name="withdraw_button_confirm">Confirm withdrawal</string> <string name="withdraw_button_confirm_bank">Authorize in bank</string> <string name="withdraw_button_label">Withdraw</string> - <string name="withdraw_button_tos">Terms of service</string> + <string name="withdraw_button_tos">Terms of Service</string> <string name="withdraw_cash_acceptor">The amount to be withdrawn will be determined by the cash acceptor</string> <string name="withdraw_error_already_confirmed">Withdrawal is already confirmed</string> <string name="withdraw_error_empty_exchanges">No payment services were configured by the bank.</string> @@ -358,7 +360,7 @@ GNU Taler is immune to many types of fraud such as credit card data theft, phish <string name="withdraw_manual_ready_details_intro">Wire transfer instructions</string> <string name="withdraw_manual_ready_details_qr">Wire transfer QR codes</string> <string name="withdraw_manual_ready_iban">IBAN</string> - <string name="withdraw_manual_ready_intro">You need to transfer %1$s from your regular bank account to the payment service to receive %2$s as electronic cash in this wallet.</string> + <string name="withdraw_manual_ready_intro">You need to transfer %1$s from your regular bank account to the payment service to receive %2$s as digital cash in this wallet.</string> <string name="withdraw_manual_ready_postal_code">Postal code</string> <string name="withdraw_manual_ready_receiver">Recipient</string> <string name="withdraw_manual_ready_subject">Subject</string> @@ -368,7 +370,7 @@ GNU Taler is immune to many types of fraud such as credit card data theft, phish <string name="withdraw_manual_step_cyclos">Copy and paste recipient and amount into the corresponding fields in your banking app or website.</string> <string name="withdraw_manual_step_finish">Finish the wire transfer of %1$s in your banking app or website, then this withdrawal will proceed automatically. Depending on your bank the transfer can take from minutes to two working days, please be patient.</string> <string name="withdraw_manual_step_iban">If you don\'t already have it in your banking favorites list, then copy and paste recipient and IBAN into the recipient/IBAN fields in your banking app or website (and save it as favorite for the next time):</string> - <string name="withdraw_manual_step_subject">Copy this code and paste it into the subject/purpose field in your banking app or bank website:</string> + <string name="withdraw_manual_step_subject">Copy this code and paste it into the subject/purpose field (or “Message to recipient”) in your banking app or bank website:</string> <string name="withdraw_restrict_age">Restrict usage to age</string> <string name="withdraw_restrict_age_unrestricted">Unrestricted</string> <string name="withdraw_review_terms">You must first accept the payment service\'s terms of service before you can withdraw electronic cash to your wallet.</string> @@ -414,7 +416,7 @@ GNU Taler is immune to many types of fraud such as credit card data theft, phish <string name="exchange_reload">Reload information</string> <string name="exchange_settings_summary">Manage the payment services known to this wallet</string> <string name="exchange_settings_title">Payment services</string> - <string name="exchange_tos_accept">Accept terms of service</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_missing">Terms of service were not provided by payment service</string> <string name="exchange_tos_view">Review terms of service</string>