diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml index 12b6f28389..c1bb266ba5 100644 --- a/core/res/src/main/res/values-de/strings.xml +++ b/core/res/src/main/res/values-de/strings.xml @@ -35,7 +35,7 @@ Verstanden Guthaben sind ausgeblendet Bitte Karte oder Ring scannen - Bitte versuche es in 30 Sekunden erneut oder scanne die Karte + Bitte versuche es in 30 Sekunden erneut oder scanne die Karte oder Ring Zu viele Versuche Du hast die biometrische Authentifizierung auf deinem Telefon deaktiviert und kannst keine Wallets in der App speichern. Um Wallets zu speichern, aktiviere bitte die biometrische Authentifizierung in deinen Telefoneinstellungen. Backup-Prozess starten @@ -59,7 +59,7 @@ Du hast nicht alle deine Karten oder Ringe zurückgesetzt Auf Werkseinstellungen zurücksetzen Sicherheitsmodus - Karteneinstellungen + Karten oder Ring-Einstellungen Zusätzlich zu den Netzwerkgebühren erhebt das Cardano-Netzwerk %1$s ADA bei Transaktionen mit dem Token %2$s Cardano-Transaktionsanforderungen Um eine %1$s Transaktion durchzuführen, musst du einen gewissen ADA-Betrag einzahlen, um die Netzwerkgebühr und den ADA-Mindestwert zu decken (5 ADA werden empfohlen). @@ -213,7 +213,7 @@ Zugangscode Du musst den richtigen Zugangscode eingeben, bevor du die Karte oder Ring scannst. Langes Tippen - Dieser Mechanismus schützt vor Annäherungsangriffen auf eine Karte oder Ring. Es wird eine Verzögerung zwischen dem Empfang und der Ausführung eines Befehls erzwungen. Nach der ersten signierten Transaktion wird dieses Telefon mit der Karte oder Ring verknüpft und die Transaktionen werden sofort signiert. + Dieser Mechanismus schützt vor Annäherungsangriffen auf eine Karte oder einen Ring. Er erzwingt eine Verzögerung zwischen dem Empfang und der Ausführung eines Befehls. Passcode Bevor du einen Befehl ausführst, der eine Änderung des Kartenstatus zur Folge hat, musst du den Passcode eingeben. Empfehlungsprogramm @@ -257,6 +257,7 @@ Tauschen läuft Austauschen... Fehlgeschlagen + Pausiert Einzahlung empfangen Einzahlung wird erwartet Warten auf Einzahlung... @@ -307,7 +308,7 @@ Unbegrenzt Karte oder Ring bestellen Karte oder Ring scannen - Diese Information ist KI generiert + Diese Informationen wurden mithilfe von KI generiert. \n Tippe hier, wenn Du Fehler finden. Um den Zugangscode zu ändern, halte die Karte oder Ring wie oben gezeigt an das Gerät und entferne sie erst am Ende des Vorgangs. Um den Passcode zu ändern, halte die Karte oder Ring wie oben gezeigt an das Gerät und entferne sie erst am Ende des Vorgangs. Um die Wallet zu erstellen, halte die Karte oder Ring wie oben gezeigt an das Gerät und entferne sie erst am Ende des Vorgangs. @@ -459,7 +460,7 @@ Schützen Du kannst später auf jeder Karte oder Ring einen individuellen Zugangscode einrichten Personalisieren - Der Zugangscode kann mit einer verbundenen Karte oder Ring wiederhergestellt werden. Bewahre nicht alle Karten oder Ringe an einem Ort auf. + Stelle den Zugangscode mit einer verknüpften Karte oder einem Ring wieder her. Bewahre nicht alle Deine Geräte an einem Ort auf. Wiederherstellen Wähle ein beliebiges Wort, eine Phrase oder eine Zahl als Zugangscode Zugangscode erstellen @@ -470,7 +471,7 @@ Bitte wiederhole den Vorgang. Die Karte oder Ring wird auf Werkseinstellungen zurückgesetzt. Aktivierungsfehler Token hinzufügen - Du hast eine Backup-Karte oder Ring hinzugefügt. Wenn der Backup-Prozess abgeschlossen ist, kannst du keine weiteren Backup-Karten oder Ringe hinzufügen. Wenn du noch eine Karte oder Ring hast, füge diese zum Backup hinzu. Möchtest du den Backup-Prozess fortsetzen? + Du hast einee Backup-Karte oder einen Backup-Ring hinzugefügt. Wenn der Backup-Prozess abgeschlossen ist, kannst Du keine weiteren Backup-Geräte hinzufügen. Wenn Du noch eine Karte oder einen Ring hast, fügen diese(n) zum Backup hinzu. Möchtest Du den Backup-Prozess fortsetzen? Der Sicherungsvorgang ist teilweise abgeschlossen. Du kannst ihn jetzt nicht beenden. Die Passphrase ist eine fortschrittliche Sicherheitsfunktion, die von Krypto-Wallets verwendet wird. Sie fügt ein zusätzliches Wort oder eine Phrase deiner Wahl zu der bereits bestehenden Wiederherstellungsphrase hinzu, um einen brandneuen Satz von Adressen zu erzeugen. Hinzufügen einer Sicherungskarte oder Ring @@ -610,7 +611,7 @@ Beachte, dass für Transaktionen mit deinem Guthaben weiterhin deine Karte oder Ring erforderlich ist Karte oder Ring scannen Scanne die Karte oder Ring, um ihre Einstellungen zu ändern. Die Änderungen wirken sich nur auf die von dir gescannte Karte oder Ring aus und haben keine Auswirkungen auf andere mit deiner Wallet verknüpften Karten oder Ringe. - Halte deine Karte bereit! + Halte deine Karte oder Ring bereit! Bereits in der eingegebenen Adresse enthalten Der Provisionsbetrag ist %s mal der empfohlene Betrag. Stelle sicher, dass die benutzerdefinierten Einstellungen korrekt sind. Du hast eine Kommission angegeben, die unter dem empfohlenen Betrag liegt, was zu einer Verzögerung Ihrer Transaktion führen könnte. Weiter? @@ -710,7 +711,7 @@ Belohnungen beanspruchen Eine Möglichkeit, Staking-Belohnungen zu erhalten. Es kann automatisch oder manuell beansprucht werden. Belohnungszeitplan - Dabei handelt es sich um einen Zeitplan, der festlegt, wann die Teilnehmer am Staking ihre Belohnungen erhalten. + Dies ist ein Zeitplan, der bestimmt, wann Teilnehmer am Staking ihre Belohnungen erhalten. Der Zeitpunkt der Belohnungsverteilung kann je nach Validator und Netzwerklast leicht variieren. Belohnungen %s Staking %s Entbindungsdauer @@ -736,6 +737,7 @@ Aufgrund von Netzwerkproblemen ist Staking derzeit nicht verfügbar. Bitte versuche es später erneut. Beim Staking im %1$s -Netzwerk mit einem neuen Validator werden alle zuvor eingesetzten Kryptos automatisch an diesen Validator übertragen Reinvestiert Deine verdienten Prämien in Deinen Einsatzbetrag und erhöht so den potenziellen Gewinn. + Mit Restake kannst Du Dein Guthaben von einem Validator zu einem anderen verschieben, ohne dass Du den Stake aufheben musst. Entsperre dein Geld, um es aus dem Staking-Prozess abzuheben. Das Freischalten nimmt %s. Nach Ablauf der 21-tägigen Bindungsfrist kannst Du über Dein Guthaben verfügen. Die Prämie wird zusammen mit dem ungestaketen Guthaben abgehoben. Deine Assets steht Dir nach Ablauf der Frist für die Aufhebung der Bindung %s zur Verfügung. @@ -754,6 +756,7 @@ Täglich Alle %s Täglich + Alle %s Pro Epoche Pro Ära Stündlich @@ -762,7 +765,6 @@ Belohnungen Stake gesperrt Mehr staken - Du setzt %1$s ein und erhältst jährlich %2$s Zum Entsperren antippen Tippe zum Entsperren oder Abstimmen Zum abheben antippen @@ -955,7 +957,7 @@ Auf dieser Karte oder Ring sind nur noch %s Unterschriften übrig. Du musst dein gesamtes Guthaben abheben. Geringe Anzahl von Unterschriften Token in verschiedenen Netzwerken können unterschiedliche Adressen haben. Überprüfe bei der Überweisung noch einmal, ob deine Adresse mit der des Netzwerks übereinstimmt. - MATIC wird auf POL migriert. Es gibt jedoch keine Frist, und MATIC wird noch nicht abgeschafft. Du kannst MATIC-Token weiterhin verwenden oder sie über eien Exchange gegen POL tauschen. + MATIC wird zu POL migriert. Es gibt jedoch keine festgelegte Frist und MATIC wird noch nicht abgeschafft. Du kannst den MATIC-Token weiterhin bedenkenlos verwenden oder es gegen POL austauschen. Migration von MATIC zu POL Verwende deine Karte oder Ring, um eine Adresse für das %d-Netz zu erhalten diff --git a/core/res/src/main/res/values-es/strings.xml b/core/res/src/main/res/values-es/strings.xml index a0dc037e9d..67bc35be25 100644 --- a/core/res/src/main/res/values-es/strings.xml +++ b/core/res/src/main/res/values-es/strings.xml @@ -729,7 +729,9 @@ Manual Bloquear Día + Cada %s Cada día + Cada %s Época Era Hora @@ -738,7 +740,6 @@ Recompensas El stake está bloqueado Hacer más staking - Haga staking de %1$s y recibirá %2$s anualmente Toque para desbloquear Toque para retirar Stake %s diff --git a/core/res/src/main/res/values-fr/strings.xml b/core/res/src/main/res/values-fr/strings.xml index 7a6b959868..5efbcda226 100644 --- a/core/res/src/main/res/values-fr/strings.xml +++ b/core/res/src/main/res/values-fr/strings.xml @@ -729,7 +729,9 @@ Manuel Bloquer Jour + Chaque %s Chaque jour + Chaque %s Époque Ère Heure @@ -738,7 +740,6 @@ Récompenses Stake verrouillé Staker plus - Vous stakez %1$s et recevrez %2$s par an Appuyez pour déverrouiller Appuyez pour retirer Stake %s diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml index 9251296e0b..29694b640e 100644 --- a/core/res/src/main/res/values-ja/strings.xml +++ b/core/res/src/main/res/values-ja/strings.xml @@ -254,6 +254,7 @@ 交換中 交換中... 失敗しました + 停止中 入金済み 入金待ち 入金待ち... @@ -585,7 +586,7 @@ 工場出荷時設定にリセットすると、選択したカードやリングからウォレットが完全に削除されます。現在のウォレットを復元したり、カードやリングを使用してアクセスコードを復元することはできません。 工場出荷時の状態にリセットすると、選択したカードやリングからウォレットが完全に削除され、アプリから削除されます。現在のウォレットを復元することはできません。 Tangem Ringユーザーは、11/15日までChangelly経由でスワップを3回手数料ゼロで行えます! - 今すぐ手数料0%でスワップしましょう! + 今すぐ手数料0%%でスワップしましょう! 他の国の銀行カードと、ロシア連邦外での居住許可証または登録をお持ちですか? ロシアの銀行カードは現在ご利用いただけません アプリにログインして、カードまたはリングをスキャンせずに残高を確認できます @@ -725,6 +726,7 @@ ネットワークの状態により、現在ステーキングはご利用いただけません。しばらくしてからもう一度お試しください。 新しいバリデーターで%1$sネットワークにステーキングすると、以前にステーキングされた資金はすべてこのバリデーターに自動的に転送されます。 獲得した報酬をステーキングに再投資し、潜在的な収益を増やします。 + 再ステーキングを使うと、ステーキングを解除することなく、あるバリデータから別のバリデータに資金を移動できます。 資金をステーキングから引き出すには、ロックを解除してください。ロック解除には%sかかります。 資金は、21日間のロック解除期間後に使用可能になります。報酬は、ロック解除後の資金とともに引き出されます。 %sのステーキング解除期間後、資金はすぐ利用可能となります。 @@ -743,6 +745,7 @@ 毎日 %sごと 毎日 + %sごと エポック毎 時代毎 毎時間 @@ -751,7 +754,6 @@ 報酬 ステーキングはロックされています もっとステーキングする - %1$sをステーキングし、毎%2$s報酬を受け取ります タップしてロック解除 タップしてロック解除もしくは投票 タップして引き出す diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml index 170c6bfd5f..5c0cc709dd 100644 --- a/core/res/src/main/res/values-ru/strings.xml +++ b/core/res/src/main/res/values-ru/strings.xml @@ -261,6 +261,7 @@ Обмен Обмен... Неудачно + Приостановлен Депозит получен Ожидание депозита Ожидаем пополнения... @@ -752,6 +753,7 @@ Стейкинг временно недоступен из-за проблем в сети. Пожалуйста, попробуйте позже. Стейкинг в сети %1$s с новым валидатором автоматически переведет ваши текущие застейканные средства на него. Реинвестируйте свои заработанные награды в вашу застейканную сумму, увеличивая потенциальный доход + Рестейк позволяет вам переместить средства из одного валидатора в другого без необходимости выхода из стейкинга. Разблокируйте свои средства, чтобы вывести их из стейкинга. Разблокировка займёт %s. Ваши средства будут доступны для использования после 21-дневного периода отзыва. Награда будет выведена вместе с вашими выводими средствами. Ваши средства будут доступны после %s периода отзыва. @@ -767,7 +769,9 @@ Вручную За блок Ежедневно + Каждый %s Каждый день + Каждые %s дня За эпоху За эру Ежечасно @@ -776,7 +780,6 @@ Вознаграждения Стейкинг закрыт Застейкать еще - Вы стейкаете %1$s и будете получать %2$s ежегодно Нажмите для разблокировки Нажмите для разблокировки Нажмите для вывода 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 1d8ae684fb..baed26eb8c 100644 --- a/core/res/src/main/res/values-uk-rUA/strings.xml +++ b/core/res/src/main/res/values-uk-rUA/strings.xml @@ -262,6 +262,7 @@ Обмін Обмін... Не вдалося + Призупинено Депозит отримано Очікуємо на депозит Очікуємо на депозит... @@ -766,6 +767,7 @@ День Кожен %s Щодня + Кожен %s Епоха Ера Година @@ -774,7 +776,6 @@ Винагороди Стейкінг закрито Застейкати більше - Ви стейкаєте %1$s і будете отримувати %2$s щороку Натисніть, щоб розблокувати Натисніть, щоб розблокувати або проголосувати Натисніть, щоб вивести кошти diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index 46365c5cc0..46dfde4c7a 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -257,6 +257,7 @@ Exchanging Exchanging... Failed + Paused Deposit received Awaiting deposit Awaiting deposit... @@ -307,7 +308,7 @@ Unlimited Order Tangem Scan Tangem - This information was generated with AI.\nTap here, If you find any errors. + This information was generated with AI.\nTap here, if you find any errors. To change the access code tap the card or ring as shown above and do not remove until the end of the operation To change the passcode tap the card as shown above and do not remove until the end of the operation To create the wallet tap the card as shown above and do not remove until the end of the operation @@ -735,6 +736,7 @@ Staking is currently unavailable due to network conditions. Please try again later. Staking in the %1$s network with a new validator will automatically transfer all previously staked funds to this validator Reinvests your earned rewards in your staked amount, increasing potential earnings. + Restake lets you move your funds from one validator to another without the need to unstake Unlock your money to withdraw it from staking process. Unlocking takes %s. Your funds will be available for use after the 21-day unbonding period. Reward will be withdrawn along with your unstaking funds. Your funds will be available for use after the %s unbonding period. @@ -753,6 +755,7 @@ Daily Each %s Each day + Each %s days Per Epoch Per Era Hourly diff --git a/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ExchangeStatusConverter.kt b/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ExchangeStatusConverter.kt index d782b606f9..cb3ba18d9f 100644 --- a/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ExchangeStatusConverter.kt +++ b/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ExchangeStatusConverter.kt @@ -9,7 +9,7 @@ internal class ExchangeStatusConverter : Converter ExchangeStatusState( status = ExchangeStatus.Verifying, @@ -283,6 +287,12 @@ internal class TokenDetailsSwapTransactionsStateConverter( isActive = true, isDone = false, ) + isPaused -> ExchangeStatusState( + status = ExchangeStatus.Paused, + text = resourceReference(id = R.string.express_exchange_status_paused), + isActive = true, + isDone = false, + ) hasFailed || isFailed || isRefunded -> ExchangeStatusState( status = ExchangeStatus.Failed, text = TextReference.Res(R.string.express_exchange_status_failed), diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/components/exchange/ExchangeStatusBlock.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/components/exchange/ExchangeStatusBlock.kt index ff2dd3baff..ec2a2b3cfb 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/components/exchange/ExchangeStatusBlock.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/components/exchange/ExchangeStatusBlock.kt @@ -18,13 +18,17 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview import com.tangem.core.ui.components.SpacerWMax import com.tangem.core.ui.extensions.resolveReference +import com.tangem.core.ui.extensions.resourceReference import com.tangem.core.ui.res.TangemTheme +import com.tangem.core.ui.res.TangemThemePreview import com.tangem.feature.swap.domain.models.domain.ExchangeStatus import com.tangem.feature.tokendetails.presentation.tokendetails.state.ExchangeStatusState import com.tangem.features.tokendetails.impl.R import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.toImmutableList @Composable internal fun ExchangeStatusBlock( @@ -103,34 +107,34 @@ private fun ExchangeStatusStep( label = "Exchange Step Change Success", modifier = Modifier .size(TangemTheme.dimens.size20), - ) { + ) { state -> when { - it.status == ExchangeStatus.Cancelled -> ExchangeStep( - iconRes = R.drawable.ic_close_24, - color = TangemTheme.colors.icon.warning, - isDone = false, - ) - it.status == ExchangeStatus.Failed -> ExchangeStep( - iconRes = R.drawable.ic_close_24, - color = TangemTheme.colors.icon.warning, - isDone = it.isDone, - ) - it.status == ExchangeStatus.Refunded -> ExchangeStep( - iconRes = R.drawable.ic_close_24, - color = TangemTheme.colors.icon.warning, - isDone = it.isDone, - ) - it.status == ExchangeStatus.Verifying -> ExchangeStep( + state.status == ExchangeStatus.Cancelled -> { + ExchangeStep( + iconRes = R.drawable.ic_close_24, + color = TangemTheme.colors.icon.warning, + isDone = false, + ) + } + state.status == ExchangeStatus.Failed || state.status == ExchangeStatus.Refunded || + state.status == ExchangeStatus.Paused -> { + ExchangeStep( + iconRes = R.drawable.ic_close_24, + color = TangemTheme.colors.icon.warning, + isDone = state.isDone, + ) + } + state.status == ExchangeStatus.Verifying -> ExchangeStep( iconRes = R.drawable.ic_exclamation_24, color = TangemTheme.colors.icon.attention, - isDone = it.isDone, + isDone = state.isDone, ) - it.isDone -> ExchangeStep( + state.isDone -> ExchangeStep( iconRes = R.drawable.ic_check_24, color = TangemTheme.colors.icon.primary1, isDone = true, ) - it.isActive -> ExchangeStepInProgress() + state.isActive -> ExchangeStepInProgress() else -> ExchangeStepDefault() } } @@ -144,11 +148,14 @@ private fun ExchangeStatusStep( @Composable private fun ExchangeStatusStepText(stepStatus: ExchangeStatusState) { + val status = stepStatus.status + val textColor = when { - stepStatus.status == ExchangeStatus.Cancelled -> TangemTheme.colors.icon.warning - stepStatus.status == ExchangeStatus.Refunded -> TangemTheme.colors.icon.warning - stepStatus.status == ExchangeStatus.Failed && !stepStatus.isDone -> TangemTheme.colors.icon.warning - stepStatus.status == ExchangeStatus.Verifying && !stepStatus.isDone -> TangemTheme.colors.icon.attention + status == ExchangeStatus.Cancelled || status == ExchangeStatus.Refunded || status == ExchangeStatus.Paused -> { + TangemTheme.colors.icon.warning + } + status == ExchangeStatus.Failed && !stepStatus.isDone -> TangemTheme.colors.icon.warning + status == ExchangeStatus.Verifying && !stepStatus.isDone -> TangemTheme.colors.icon.attention stepStatus.isDone -> TangemTheme.colors.text.primary1 !stepStatus.isActive -> TangemTheme.colors.text.disabled else -> TangemTheme.colors.text.primary1 @@ -222,4 +229,35 @@ private fun ExchangeStepSeparator() { shape = CircleShape, ), ) +} + +@Preview +@Composable +private fun Preview_ExchangeStatusBlock() { + val base = ExchangeStatusState( + status = ExchangeStatus.Failed, + text = resourceReference(id = R.string.express_exchange_status_failed), + isActive = true, + isDone = false, + ) + + TangemThemePreview { + ExchangeStatusBlock( + statuses = listOf( + base, + base.copy(isActive = false, isDone = false), + base.copy(isActive = true, isDone = false), + base.copy(isActive = true, isDone = true), + ExchangeStatusState( + status = ExchangeStatus.Paused, + text = resourceReference(id = R.string.express_exchange_status_paused), + isActive = true, + isDone = false, + ), + ) + .toImmutableList(), + showLink = false, + onClick = {}, + ) + } } \ No newline at end of file