From c3030d93c979f4ff6c6ef68fb4bfcfd39937e548 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 26 Jan 2026 18:10:18 +0200 Subject: [PATCH] Updated on 2026-08-14 --- core/res/src/main/res/values-de/strings.xml | 17 +++++++++++++++-- core/res/src/main/res/values-ja/strings.xml | 12 ++++++------ core/res/src/main/res/values/strings.xml | 1 + .../domain/models/staking/YieldBalanceItem.kt | 2 ++ .../state/converters/YieldBalancesConverter.kt | 2 ++ .../state/utils/StakingRewardsUtils.kt | 12 ++++++++++++ .../ui/StakingInitialInfoContent.kt | 4 ++++ .../factory/TokenDetailsStakingInfoConverter.kt | 1 + 8 files changed, 43 insertions(+), 8 deletions(-) diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml index 913619547d..e44b286ffe 100644 --- a/core/res/src/main/res/values-de/strings.xml +++ b/core/res/src/main/res/values-de/strings.xml @@ -323,6 +323,7 @@ Nein Keine Adresse Nicht hinzugefügt + Nicht verfügbar Nicht jetzt Jetzt OK @@ -561,6 +562,8 @@ Feedback zu Tangem Eine Transaktion kann nicht gesendet werden Fehler in der Coinbeschreibung + Nicht genügend Mittel + Transaktionsgebühr Es ist ein Fehler aufgetreten Es ist ein Fehler aufgetreten. Code: %s. Memo erforderlich @@ -602,7 +605,7 @@ Neue Wallet erstellen Erhöhe Deine Sicherheit mit der überlegenen Hardware-Wallet von Tangem. Hardware-Wallet - Übertrage Deine aktuelle Wallet in die Tangem Wallet. + Übertrage Deine aktuelle Wallet in die Tangem Hardware-Wallet. Aktualisiere Deine aktuelle Wallet Gehe zum Backup Bitte sicher Deine Wallet, bevor Du einen Zugangscode erstellst. @@ -827,7 +830,7 @@ Kurze Zusammenfassung Verwandte Nachrichten Verwandte Token - Quellen + Verwandte Nachrichten Auf dem Laufenden bleiben NFC ist auf deinem Gerät nicht verfügbar Über NFT @@ -995,6 +998,7 @@ Zugangscode wiederherstellen Identische Karten oder Ring Zugangscode + Du kannst nur eine mobile Wallet verwenden. Aktualisiere diese auf einer Tangem-Hardware-Wallet oder füge eine neue Hardware-Wallet hinzu. Alle Angebote Verfügbar mit %s Anbieter erleichtern Transaktionen @@ -1265,6 +1269,7 @@ Der Stakingbetrag wird aufgrund der Netzwerkregeln auf %1$s TRX aufgerundet. Der Betrag der unstaked wird, wird aufgrund der Netzwerkregeln auf %1$s TRX gerundet. Effektiver Jahreszins %1$s%% + Deine Staking-Belohnungen beginnen nach 5 Epochen (~25 Tage), während Deine Delegation vom Netzwerk registriert und gezählt wird. Nicht gestakte beanspruche Gebühr für das Staking-Konto Ein Staking-Konto ist ein spezielles Konto, auf dem eingesetzte SOL-Token gespeichert werden. Es wird erstellt, indem Sie Ihre Token an einen Validator delegieren, um an der Transaktionsvalidierung teilzunehmen und Belohnungen zu erhalten. Für die Einrichtung des Staking-Kontos wird eine geringe Gebühr erhoben, die nach Abschluss des Stakings zurückerstattet wird. @@ -1275,6 +1280,7 @@ Effektiver Jahreszins APY Belohnungen sammeln sich täglich automatisch in deinem Staking-Konto an. + Die Belohnungen werden auf Dein Stakingguthaben aufgezinst. Verdiente Gelder: %s Verfügbar Durchschnittliche Belohnungsquote Wie funktioniert Staking? @@ -1419,6 +1425,7 @@ Problemlos und intuitiv, sodass Deine Token mit nur wenigen Handgriffen getauscht werden können Einfach bequem Tausch über Anbieter + Dein Vermögen Der Betrag umfasst:\n- Gebühr des Dienstanbieters\n- Netzgebühr für die Rücksendung von %s von der Vermittlungsstelle an die Adresse des Nutzers. Der Betrag beinhaltet:\n• Honorar des Dienstleisters\n• Netzwerkgebühr für das Senden %1$s von der Börse zurück an die Adresse des Benutzers. \n\n Provider-Slippage kann bis zu %2$s Der Betrag enthält die Gebühren des Dienstleisters. @@ -1433,6 +1440,7 @@ Unzureichende Mittel Erlaubnis erteilen Tauschen + Tauschen... Du erhältst Token auswählen Nicht verfügbar @@ -1527,10 +1535,15 @@ Möchtest Du den KYC wirklich abbrechen? Du kannst später jederzeit weiter machen. Wir konnten Ihr Profil nicht verifizieren. Bei Fragen wenden Sie sich bitte an den Support. Leider konnten wir Ihre Identität nicht verifizieren + KYC ist gescheitert KYC in Bearbeitung Status anzeigen KYC für Tangem Pay in Arbeit Dokumente werden in der Regel innerhalb von 5 Minuten automatisch überprüft. In seltenen Fällen, wenn eine manuelle Überprüfung erforderlich ist, kann es bis zu 48 Stunden dauern. + KYC abgelehnt + KYC-Sperre ausblenden + Entschuldigung, wir konnten dies nicht überprüfen. + Dein Profil. Holen Sie sich Ihre kostenlose virtuelle Tangem Visa-Karte Nutzen Sie USDC für alltägliche Zahlungen Karte erhalten diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml index 619641f86b..96e91c5c3a 100644 --- a/core/res/src/main/res/values-ja/strings.xml +++ b/core/res/src/main/res/values-ja/strings.xml @@ -130,9 +130,9 @@ これらの単語は、紛失すると復元できません。安全に保管してください。 バックアップが完了しました シークレットリカバリーフレーズは、ウォレットへのアクセスおよび復元に使用する、%s個のランダムな単語のセットです。 - これらの単語は紛失した場合、復元できません。大切に保管してください。 + このフレーズを紛失すると、復元することはできません。厳重に保管してください。 安全に保管してください - これらの%s個の単語を安全な場所に保存し、決して誰とも共有しないでください。 + これらの%sの単語は、あなただけがアクセスできる安全な場所に保管し、決して他人と共有しないでください。 復元は不可能です リカバリーフレーズ 以下の%s個の単語が、あなたのウォレットのリカバリーフレーズです。これらの単語は絶対に他人と共有しないでください。Tangemがこれらを尋ねることは決してありません。デバイスを紛失した場合、このフレーズを使ってウォレットを復元できます。 @@ -446,7 +446,7 @@ 署名済み フィードバックを送信 詳細 - モバイルウォレットは同時に1つのみ利用できます。Tangemコールドウォレットにアップグレードすることも、新しいコールドウォレットと併用することも可能です。 + モバイルウォレットは1つしか作成できません。Tangemハードウェアウォレットにアップグレードするか、新しいハードウェアウォレットを追加してください。 インターネット接続を確認するか、別のネットワークに切り替えてください。 利用規約 デフォルトアドレス @@ -569,7 +569,7 @@ 続行するには、%1sスマートコントラクトに%2sを使用する権限を付与してください 許可を与える 無制限 - ハードウェアウォレット内に新しいアドレスが自動生成され、安全にすぐ利用できる状態になります。 + アドレスはTangemハードウェアウォレット上で直接生成され、そのまま安全に使用できます。 新しいアドレス Tangemウォレットを追加 秘密鍵はTangemカード内部で直接生成され、外部に出ることは一切ありません。 @@ -645,7 +645,7 @@ 操作中にエラーが発生しました。 処理中も、資金は安全に保たれ、常にアクセス可能です。 資金へのアクセス - アップグレード後、モバイルウォレットはアプリから削除され、ハードウェアウォレットに保存されます。リカバリーフレーズは引き続きご自身で管理してください。 + アップグレード後、モバイルウォレットはアプリから削除され、Tangemハードウェアウォレットに保存されます。リカバリーフレーズは引き続きお手元に保持されます。 セキュリティ全般 秘密鍵はアプリからTangemハードウェアウォレットへ移行されます キーの移行 @@ -984,7 +984,7 @@ アクセスコードの復元 同一のカード アクセスコード - 同時に利用できるのは、モバイルウォレットまたはハードウェアウォレットのいずれか一方のみです。Tangemのコールドウォレットを使用するには、ウォレットをアップグレードするか、アプリから削除してください。 + モバイルウォレットは1つまでしか作成できません。Tangemハードウェアウォレットにアップグレードするか、新しいハードウェアウォレットを追加してください。 すべてのオファー %sで利用可能 プロバイダーが取引を促進します diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index 8f7fdf9929..9ee6136ac8 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -1276,6 +1276,7 @@ Staking amount will be rounded to %1$s TRX due to network rules. Unstaking amount will be rounded to %1$s TRX due to network rules. APR %1$s%% + Your staking rewards will start after 5 epochs (~25 days) while your delegation is registered and counted by the network. Claim unstaked Stake account fee A staking account is a special account where staked SOL tokens are stored. It is created when you delegate your tokens to a validator to participate in transaction validation and receive rewards. A small fee is charged for creating the staking account, which is returned after the staking is completed. diff --git a/domain/models/src/main/kotlin/com/tangem/domain/models/staking/YieldBalanceItem.kt b/domain/models/src/main/kotlin/com/tangem/domain/models/staking/YieldBalanceItem.kt index 198e8a00f7..64bfab980e 100644 --- a/domain/models/src/main/kotlin/com/tangem/domain/models/staking/YieldBalanceItem.kt +++ b/domain/models/src/main/kotlin/com/tangem/domain/models/staking/YieldBalanceItem.kt @@ -109,6 +109,7 @@ enum class BalanceType(val order: Int) { @Serializable sealed interface RewardBlockType { data object NoRewards : RewardBlockType + data object CardanoNoRewards : RewardBlockType data object Rewards : RewardBlockType data object RewardsRequirementsError : RewardBlockType data object EthereumEarnedRewards : RewardBlockType @@ -125,6 +126,7 @@ sealed interface RewardBlockType { val isActionable: Boolean get() = when (this) { is NoRewards, + is CardanoNoRewards, is RewardUnavailable, is EthereumEarnedRewards, -> false diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/YieldBalancesConverter.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/YieldBalancesConverter.kt index 7725be5eee..f9599f7303 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/YieldBalancesConverter.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/YieldBalancesConverter.kt @@ -16,6 +16,7 @@ import com.tangem.domain.staking.model.StakingIntegration import com.tangem.features.staking.impl.presentation.state.InnerYieldBalanceState import com.tangem.features.staking.impl.presentation.state.YieldReward import com.tangem.lib.crypto.BlockchainUtils +import com.tangem.lib.crypto.BlockchainUtils.isCardano import com.tangem.lib.crypto.BlockchainUtils.isStakingRewardUnavailable import com.tangem.utils.Provider import com.tangem.utils.converter.Converter @@ -110,6 +111,7 @@ internal class YieldBalancesConverter( } isRewardsClaimable && isActionable -> RewardBlockType.Rewards isRewardsClaimable && !isActionable -> RewardBlockType.RewardsRequirementsError + isCardano(blockchainId) -> RewardBlockType.CardanoNoRewards else -> RewardBlockType.NoRewards } } diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/utils/StakingRewardsUtils.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/utils/StakingRewardsUtils.kt index 39bcf9c206..42505ce006 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/utils/StakingRewardsUtils.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/utils/StakingRewardsUtils.kt @@ -4,9 +4,11 @@ import com.tangem.core.ui.extensions.* import com.tangem.domain.staking.model.common.RewardSchedule import com.tangem.domain.staking.model.common.RewardType import com.tangem.features.staking.impl.R +import com.tangem.features.staking.impl.presentation.state.utils.StakingRewardScheduleConstants.CARDANO_SCHEDULE import com.tangem.features.staking.impl.presentation.state.utils.StakingRewardScheduleConstants.COSMOS_SCHEDULE import com.tangem.features.staking.impl.presentation.state.utils.StakingRewardScheduleConstants.SOLANA_SCHEDULE import com.tangem.features.staking.impl.presentation.state.utils.StakingRewardScheduleConstants.TON_SCHEDULE +import com.tangem.lib.crypto.BlockchainUtils.isCardano import com.tangem.lib.crypto.BlockchainUtils.isCosmos import com.tangem.lib.crypto.BlockchainUtils.isSolana import com.tangem.lib.crypto.BlockchainUtils.isTon @@ -15,6 +17,7 @@ import com.tangem.utils.StringsSigns.MINUS import com.tangem.utils.StringsSigns.NON_BREAKING_SPACE private data object StakingRewardScheduleConstants { + const val CARDANO_SCHEDULE = 5 val COSMOS_SCHEDULE = 5 to 12 val SOLANA_SCHEDULE = 2 to 3 val TON_SCHEDULE = 1 to 2 @@ -100,6 +103,15 @@ private fun getCustomRewardSchedule(networkId: String, decapitalize: Boolean = f count = TON_SCHEDULE.second, ), ) + isCardano(networkId) -> combinedReference( + resourceReference(id = R.string.staking_reward_schedule_each_plural, decapitalize = decapitalize), + stringReference(NON_BREAKING_SPACE.toString()), + stringReference("$CARDANO_SCHEDULE$NON_BREAKING_SPACE"), + pluralReference( + id = R.plurals.common_days_no_param, + count = CARDANO_SCHEDULE, + ), + ) else -> null } } \ No newline at end of file diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingInitialInfoContent.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingInitialInfoContent.kt index d0604549f9..eb514ea0ba 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingInitialInfoContent.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingInitialInfoContent.kt @@ -257,6 +257,10 @@ private fun StakingRewardBlock( resourceReference(R.string.staking_solana_details_auto_claiming_rewards_daily_text) to TangemTheme.colors.text.tertiary } + RewardBlockType.CardanoNoRewards -> { + resourceReference(R.string.staking_cardano_details_rewards_info_text) to + TangemTheme.colors.text.tertiary + } RewardBlockType.NoRewards -> { resourceReference(R.string.staking_details_no_rewards_to_claim) to TangemTheme.colors.text.tertiary } diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsStakingInfoConverter.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsStakingInfoConverter.kt index ba6a44c2be..ebf27e2456 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsStakingInfoConverter.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsStakingInfoConverter.kt @@ -194,6 +194,7 @@ internal class TokenDetailsStakingInfoConverter( return when (rewardBlockType) { RewardBlockType.NoRewards -> resourceReference(R.string.staking_details_no_rewards_to_claim) + RewardBlockType.CardanoNoRewards -> resourceReference(R.string.staking_cardano_details_rewards_info_text) RewardBlockType.RewardUnavailable.DefaultRewardUnavailable, RewardBlockType.RewardUnavailable.SolanaRewardUnavailable, -> TextReference.EMPTY