From ca85fd3a6d1f4069c7aa3ac3c38f8d6fbd5eea27 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 1 Jul 2026 10:26:52 +0200 Subject: [PATCH] Updated on 2026-08-14 --- core/res/src/main/res/values-de/strings.xml | 26 ++++++++++++++++- core/res/src/main/res/values-es/strings.xml | 1 + core/res/src/main/res/values-fr/strings.xml | 1 + core/res/src/main/res/values-ja/strings.xml | 1 + core/res/src/main/res/values-ru/strings.xml | 1 + .../src/main/res/values-uk-rUA/strings.xml | 1 + .../src/main/res/values-zh-rCN/strings.xml | 1 + core/res/src/main/res/values/strings.xml | 29 +++++++++++++++---- .../foryou/impl/components/DonutChart.kt | 6 ++-- .../impl/components/DonutSegmentTooltip.kt | 2 +- .../foryou/impl/components/MarketChart.kt | 19 +++++++----- 11 files changed, 72 insertions(+), 16 deletions(-) diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml index 525e778b71..bc30111006 100644 --- a/core/res/src/main/res/values-de/strings.xml +++ b/core/res/src/main/res/values-de/strings.xml @@ -106,6 +106,7 @@ Kontakt Name der Kontaktperson Adresse kopieren + Kontakt hinzugefügt Es konnte kein Kontakt hergestellt werden. Bitte versuchen Sie es später erneut. Dieser Kontakt wird aus all Ihren Adressbüchern gelöscht. Der Kontakt konnte nicht gelöscht werden. Bitte versuchen Sie es später erneut. @@ -115,10 +116,17 @@ Adresse eingeben Ungültige Adresse Weiter bearbeiten + Sie können maximal 20 Adressen erstellen. Löschen Sie eine, um eine neue hinzuzufügen. + Neue Adresse kann nicht hinzugefügt werden + Der Name des Ansprechpartners ist erforderlich + Der Name des Ansprechpartners enthält ungültige Zeichen + Der Name des Ansprechpartners darf nicht länger als 50 Zeichen sein + Dieser Name ist bei dieser Wallet bereits vergeben. Neuer Kontakt Noch keine Kontakte Die von Ihnen hinzugefügten Kontakte werden hier angezeigt Adresse entfernen + In Wallet speichern Dieser Kontakt wird mit dem Adressbuch dieser Wallet verknüpft. Netzwerk auswählen Adressbuch @@ -348,10 +356,12 @@ Vom Von %s Adressen synchronisieren + Erhalten Erste Schritte Token erhalten Zum Anbieter gehen Zum Token + Zur Verifizierung gehen Verstanden Ausblenden Halten bis %s @@ -410,6 +420,7 @@ Datenschutzrichtlinie %1$s-%2$s %1$s — %2$s + Zinssatz Weiterlesen Empfangen Erhalten @@ -471,6 +482,7 @@ %d Token Transaktion fehlgeschlagen + Transaktions-ID Transaktionsstatus Transaktionen Überweisung @@ -566,7 +578,7 @@ Dynamische Adressen deaktivieren Dynamische Adressen deaktivieren Dynamische Adressen deaktiviert - Einige Adressen fehlen + Dynamische Adressen aktiviert Verwenden Sie für jede Transaktion eine neue Adresse, um die Rückverfolgbarkeit zu verringern und den Datenschutz in der Kette zu verbessern. Verbesserter Datenschutz Einfacher Geldempfang in UTXO-basierten Netzwerken mit automatischer Adressgenerierung - keine manuelle Adressverwaltung erforderlich. @@ -700,6 +712,8 @@ Feedback zu Tangem Eine Transaktion kann nicht gesendet werden Fehler in der Coinbeschreibung + Portfolio prüfen und Verdienstmöglichkeiten erkunden + Für dich Jetzt aktualisieren Aktualisiere die Anwendung auf die neueste Version, um die ordnungsgemäße Funktionalität zu gewährleisten Aktualisierung erforderlich @@ -731,6 +745,8 @@ Schlüsselgenerierung Alle kryptografischen Vorgänge finden innerhalb des sicheren Chips statt, der gegen Klonen und physische Manipulation zertifiziert ist. Sicherheit auf Hardwareebene + Das Netzwerk ist derzeit stark ausgelastet. Sie können jetzt fortfahren oder es später erneut versuchen, wenn die Gebühren möglicherweise niedriger sind. + Die Netzwerkgebühr ist höher als üblich Vorhandene Wallet hinzufügen Neues Wallet erstellen Karte oder Ring bestellen @@ -1215,6 +1231,7 @@ Der zu kaufende Betrag muss mindestens %s betragen Kumulierte Transaktionsbeträge über %1s können eine Identitätsüberprüfung mit %2s Kumulierte Transaktionsbeträge über dem Gegenwert von %1s können eine Identitätsprüfung mit %2s + Apple Pay-Transaktionen erfordern möglicherweise eine Identitätsprüfung mit %1s Indem du auf \"Bezahlen\" klicken, stimmen Sie %1s\'s %2s und %3szu. Keine verfügbaren Anbieter für diese Währung Schnellste Bearbeitung @@ -1401,6 +1418,7 @@ Memo Überprüfe deine Netzwerkverbindung Informationen zur Netzwerkgebühr nicht erreichbar + aus „ %1$s “ in %2$s Sie senden Von %s Grenzwert Gasgebühr @@ -1551,6 +1569,7 @@ Zurzeit sind keine Validierer verfügbar. Bitte versuche es später noch einmal. Staking nicht verfügbar Staking ist in Ihrer Region nicht verfügbar. + Staking ist in Ihrer Region derzeit nicht verfügbar. Falls Sie ein VPN aktiviert haben, deaktivieren Sie es bitte. Das Netzwerk erhebt eine Token-Genehmigungsgebühr, um zu überprüfen, ob Du die Verwendung Deines Tokens für das Staking genehmigst. Indem Du die Staking-Funktionalität nutzt, stimmst Du den %1$s und %2$s des Anbieters zu. Gesperrt @@ -1846,6 +1865,10 @@ PIN-Code ändern Kehren Sie zur App zurück, falls Sie ihn vergessen. Karte + Tarif wechseln + Kartenbezogen + Planbezogen + Aktueller Plan Limit von %s bis %s festlegen Limits festlegen Unzureichendes Guthaben @@ -2059,6 +2082,7 @@ Tippe auf die Doppelkarte oder Ring mit der Nummer %s und entferne sie erst am Ende des Vorgangs. Aufladen Aufgeladen + Du hast bezahlt Bitte versuche es später noch einmal. Sollte das Problem weiterhin bestehen, wende Dich bitte an den Support. Etwas ist schiefgelaufen! Es ist ein Fehler aufgetreten. Fehlercode: %s. Bitte kontaktiere unseren Support. diff --git a/core/res/src/main/res/values-es/strings.xml b/core/res/src/main/res/values-es/strings.xml index 3a5403aaec..303fe0d6c6 100644 --- a/core/res/src/main/res/values-es/strings.xml +++ b/core/res/src/main/res/values-es/strings.xml @@ -1208,6 +1208,7 @@ La cantidad a comprar debe ser como mínimo %s El importe acumulado de la transacción superior a %1s puede requerir la verificación de la identidad con %2s El importe acumulado de la transacción superior al equivalente de %1s puede requerir la verificación de la identidad con %2s + Las transacciones de Apple Pay pueden requerir verificación de identidad con %1s Al hacer clic en Pagar, usted acepta %1s\'s %2s y %3s. No hay proveedores disponibles para esta moneda Procesamiento más rápido diff --git a/core/res/src/main/res/values-fr/strings.xml b/core/res/src/main/res/values-fr/strings.xml index c1d9e544ef..98fe3c378b 100644 --- a/core/res/src/main/res/values-fr/strings.xml +++ b/core/res/src/main/res/values-fr/strings.xml @@ -1112,6 +1112,7 @@ Le montant à acheter doit être au moins %s Si le montant cumulé des transactions dépasse %1s, une vérification d\'identité via %2s pourrait être requise Si le montant cumulé des transactions dépasse l\'équivalent de %1s, une vérification d\'identité via %2s pourrait être requise + Les transactions Apple Pay peuvent nécessiter une vérification d\'identité avec %1s En appuyant sur Acheter, vous acceptez %1s %2s et %3s. Aucun fournisseur disponible pour cette devise Le plus rapide diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml index 1a9a334e93..95f8447cb8 100644 --- a/core/res/src/main/res/values-ja/strings.xml +++ b/core/res/src/main/res/values-ja/strings.xml @@ -1191,6 +1191,7 @@ 買付金額は少なくとも%sである必要があります 累計取引額が%1sを超えると、%2sでの本人確認が必要になる場合があります。 累計取引額が%1s相当額を超えると、%2sでの本人確認が必要になる場合があります。 + Apple Payの取引では、%1sによる本人確認が必要になる場合があります 「支払う」をタップすると、%1sの%2sおよび%3sに同意したものとみなされます。 この通貨で利用可能なプロバイダーはありません 最短で処理 diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml index 74baf3a874..e8dd470622 100644 --- a/core/res/src/main/res/values-ru/strings.xml +++ b/core/res/src/main/res/values-ru/strings.xml @@ -1251,6 +1251,7 @@ Сумма покупки должна составлять минимум %s Общая сумма транзакций свыше %1s может потребовать верификации личности через %2s Общая сумма транзакций, превышающая эквивалент %1s, может потребовать верификации личности через %2s + Для транзакций через Apple Pay может потребоваться верификация личности в %1s Нажимая «Оплатить», вы соглашаетесь с %1s\'s %2s и %3s. Нет доступных провайдеров для выбранной валюты Самый быстрый diff --git a/core/res/src/main/res/values-uk-rUA/strings.xml b/core/res/src/main/res/values-uk-rUA/strings.xml index 7924e3da11..bf61ef1442 100644 --- a/core/res/src/main/res/values-uk-rUA/strings.xml +++ b/core/res/src/main/res/values-uk-rUA/strings.xml @@ -1251,6 +1251,7 @@ Сума покупки повинна бути не менше %s Загальна сума транзакцій понад %1s може вимагати верифікації особи через %2s Загальна сума транзакцій, що перевищує еквівалент %1s, може вимагати верифікації особи через %2s + Для транзакцій через Apple Pay може знадобитися верифікація особи в %1s Натискаючи «Оплатити», ви погоджуєтеся з %1s\'s %2s і %3s. Для данної валюти немає доступних провайдерів Найшвидший diff --git a/core/res/src/main/res/values-zh-rCN/strings.xml b/core/res/src/main/res/values-zh-rCN/strings.xml index e1ea9ae35f..a6c24d30c2 100644 --- a/core/res/src/main/res/values-zh-rCN/strings.xml +++ b/core/res/src/main/res/values-zh-rCN/strings.xml @@ -1185,6 +1185,7 @@ 购买金额必须至少 %s 累计交易金额超过 %1s 时,可能需要通过 %2s进行身份验证 累计交易金额超过等值金额 %1s 可能需要通过 %2s进行身份验证 + Apple Pay 交易可能需要通过以下方式进行身份验证: %1s 点击“支付”即表示您同意 %1s的 %2s 和 %3s。 目前没有提供此货币的供应商 最快处理 diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index e315735ecf..ff0edfd0bf 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -98,6 +98,7 @@ Add address Add address and select network Add contact + This address is already saved as %1$s %d address %d addresses @@ -106,6 +107,7 @@ Contact Contact name Copy address + Contact added Couldn\'t create contact. Please try again later. This contact will be deleted from all your address books Couldn\'t delete contact. Please try again later. @@ -116,7 +118,8 @@ Invalid address Keep editing You can not create more than 20 addresses. Delete one to add new. - Can\'t add new address + Can\'t add new address + Memo / Destination Tag is a code separating transactions to a shared recipient in a crypto network.\n**Caution: Missing a memo may lead to fund loss.** Contact name is required Contact name contains invalid characters Contact name must not exceed 50 characters @@ -125,8 +128,10 @@ No contacts yet Contacts added will appear here Remove address + Save contact Save to Wallet This contact will be linked to this wallet’s address book. + No results found.\nTry another name Select network Address book Unsaved changes @@ -355,6 +360,7 @@ From From %s Synchronize addresses + Get Get started Get token Go to provider @@ -480,6 +486,7 @@ %d tokens Transaction failed + Transaction ID Transaction status Transactions Transfer @@ -880,6 +887,15 @@ The selected token is currently unavailable for actions within the crypto wallet. But worry not, you can express your interest by upvoting it. Upvote The wallet doesn\'t support more than one network + Al Total: + + %d asset + %d assets + + No data + Total value + Can’t load data + Top holding %s%% About coin To buy, exchange, or receive this asset, add it to your portfolio This asset is currently not supported in the wallet @@ -1229,6 +1245,7 @@ The amount to buy must be at least %s Cumulative transaction amount over %1s may require identity verification with %2s Cumulative transaction amount over equivalent of %1s may require identity verification with %2s + Apple Pay transactions may require identity verification with %1s By clicking Pay, you agree to %1s\'s %2s and %3s. No available providers for this currency Quickest processing @@ -1566,6 +1583,7 @@ No available validators at the moment. Please try again later. Staking Unavailable Staking is unavailable in your region + Staking is currently unavailable in your region. If you have VPN enabled – try disabling it. The network will charge a token approval fee to verify that you are authorizing the use of your token for the staking. By using staking functionality, you agree with provider’s %1$s and %2$s Locked @@ -1861,6 +1879,10 @@ Change PIN-code Come back to the app if you forget it. Card + Change plan + Card related + Plan related + Current plan Set a limit from %s to %s Set limits insufficient funds @@ -1951,10 +1973,6 @@ Pay Support Payment account Session expired - Current plan - Card related - Plan related - Change plan Invalid PIN: avoid sequences or repeats Replace card This generates a new set of card details. Your old details will stop working. You can\'t undo this. @@ -2078,6 +2096,7 @@ Tap the twin card with number %s and do not remove until the end of the operation Top up Topped up + You paid Please try again later. If the issue persists, please contact support. Something went wrong! We\'ve encountered an error. Error code: %s. Please contact our support. diff --git a/features/for-you/impl/src/main/java/com/tangem/features/foryou/impl/components/DonutChart.kt b/features/for-you/impl/src/main/java/com/tangem/features/foryou/impl/components/DonutChart.kt index 3ab9e0a3d1..50466990d9 100644 --- a/features/for-you/impl/src/main/java/com/tangem/features/foryou/impl/components/DonutChart.kt +++ b/features/for-you/impl/src/main/java/com/tangem/features/foryou/impl/components/DonutChart.kt @@ -38,10 +38,12 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.toSize import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import com.tangem.core.ui.extensions.stringResourceSafe import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreviewRedesign import com.tangem.features.foryou.impl.components.state.DonutSegment import kotlin.math.min +import com.tangem.features.foryou.impl.R /** * Ring (donut) chart drawn behind a center [content] slot. @@ -361,7 +363,7 @@ private fun PreviewDonutChart() { style = TangemTheme.typography3.heading.medium, ) Text( - text = "Total value", + text = stringResourceSafe(R.string.market_chart_buble_total_value), color = TangemTheme.colors3.text.secondary, style = TangemTheme.typography3.body.medium, ) @@ -387,7 +389,7 @@ private fun PreviewDonutChartEmpty() { segments = emptyList(), ) { Text( - text = "No data", + text = stringResourceSafe(R.string.market_chart_buble_no_data), color = TangemTheme.colors3.text.primary, style = TangemTheme.typography3.heading.medium, ) diff --git a/features/for-you/impl/src/main/java/com/tangem/features/foryou/impl/components/DonutSegmentTooltip.kt b/features/for-you/impl/src/main/java/com/tangem/features/foryou/impl/components/DonutSegmentTooltip.kt index 0748bbd462..c0592ae0ac 100644 --- a/features/for-you/impl/src/main/java/com/tangem/features/foryou/impl/components/DonutSegmentTooltip.kt +++ b/features/for-you/impl/src/main/java/com/tangem/features/foryou/impl/components/DonutSegmentTooltip.kt @@ -158,7 +158,7 @@ private fun TooltipPill( maxLines = 1, ) Text( - text = " • $percent", + text = " • $percent%", color = TangemTheme.colors3.text.tertiary, style = TangemTheme.typography3.caption.medium, maxLines = 1, diff --git a/features/for-you/impl/src/main/java/com/tangem/features/foryou/impl/components/MarketChart.kt b/features/for-you/impl/src/main/java/com/tangem/features/foryou/impl/components/MarketChart.kt index 051835a162..b525a71033 100644 --- a/features/for-you/impl/src/main/java/com/tangem/features/foryou/impl/components/MarketChart.kt +++ b/features/for-you/impl/src/main/java/com/tangem/features/foryou/impl/components/MarketChart.kt @@ -38,6 +38,7 @@ import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.boundsInWindow import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.withStyle @@ -51,7 +52,9 @@ import com.tangem.core.ui.components.haze.hazeSourceTangem import com.tangem.core.ui.ds.button.SecondaryTangemButton import com.tangem.core.ui.ds.button.TangemButtonSize import com.tangem.core.ui.ds2.surface.TangemSurface +import com.tangem.core.ui.extensions.pluralStringResourceSafe import com.tangem.core.ui.extensions.stringReference +import com.tangem.core.ui.extensions.stringResourceSafe import com.tangem.core.ui.res.LocalHazeState import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreviewRedesign @@ -62,6 +65,7 @@ import com.tangem.features.foryou.impl.components.state.MarketChartState import kotlinx.coroutines.Job import kotlinx.coroutines.launch import kotlin.Int +import com.tangem.features.foryou.impl.R @Composable internal fun MarketChart(marketChartState: MarketChartState, modifier: Modifier = Modifier) { @@ -145,7 +149,7 @@ private fun ColumnScope.DonutChartBlock(donutChartState: DonutChartState, cardBo ), ) Text( - text = "Total value", + text = stringResourceSafe(R.string.market_chart_buble_total_value), color = TangemTheme.colors3.text.secondary, style = TangemTheme.typography3.caption.medium, maxLines = 1, @@ -155,7 +159,7 @@ private fun ColumnScope.DonutChartBlock(donutChartState: DonutChartState, cardBo ) } else { Text( - text = "No data", + text = stringResourceSafe(R.string.market_chart_buble_no_data), color = TangemTheme.colors3.text.secondary, style = TangemTheme.typography3.body.medium, maxLines = 1, @@ -235,7 +239,7 @@ private fun DonutSegmentTooltipBlock( @Suppress("MagicNumber") private fun formatSegmentPercent(weight: Float): String { val percent = weight.coerceIn(0f, 1f) * 100 - return if (percent % 1f == 0f) "${percent.toInt()}%" else "%.2f%%".format(percent) + return if (percent % 1f == 0f) "${percent.toInt()}" else "%.2f%".format(percent) } private val DonutStrokeWidth = 28.dp @@ -245,14 +249,14 @@ private val DonutStartAngle = -90f private fun ColumnScope.TopHoldingBlock(assetCount: Int, topHoldingPercent: Float) { Text( modifier = Modifier.padding(horizontal = 16.dp), - text = "$assetCount assets", + text = pluralStringResourceSafe(R.plurals.market_chart_assets_android, assetCount, assetCount), color = TangemTheme.colors3.text.secondary, style = TangemTheme.typography3.heading.small, ) Text( modifier = Modifier.padding(horizontal = 16.dp), - text = "Top holding: ${formatSegmentPercent(topHoldingPercent)}", + text = stringResourceSafe(R.string.market_chart_top_holding, formatSegmentPercent(topHoldingPercent)), color = TangemTheme.colors3.text.primary, style = TangemTheme.typography3.heading.small, ) @@ -262,7 +266,7 @@ private fun ColumnScope.TopHoldingBlock(assetCount: Int, topHoldingPercent: Floa private fun ColumnScope.CantLoadDataBlock() { Text( modifier = Modifier.padding(horizontal = 16.dp), - text = "Can't load data", + text = stringResourceSafe(R.string.market_chart_can_not_load_data), color = TangemTheme.colors3.text.secondary, style = TangemTheme.typography3.heading.small, ) @@ -313,7 +317,8 @@ private fun AiInsightContent(aiInsightState: AiInsightState) { ), alpha = 1f, ), - ) { append("Al Total: ") } // TODO add localization + ) { append(stringResourceSafe(R.string.market_chart_ai_total)) } + append(" ") append(currentState.text) }, color = TangemTheme.colors3.text.secondary,