From 8471435b7065515bf00aef59c8d8778379ad82f8 Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Tue, 19 Mar 2024 17:16:53 +0100 Subject: [PATCH 01/17] Update strings.xml --- common/src/main/res/values-ru/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/main/res/values-ru/strings.xml b/common/src/main/res/values-ru/strings.xml index 821de4470e..5a9a932619 100644 --- a/common/src/main/res/values-ru/strings.xml +++ b/common/src/main/res/values-ru/strings.xml @@ -755,7 +755,7 @@ Выберите до 3 кошельков для которых вы будете получать уведомления о событиях кошелька Не сейчас Включить push-уведомления - Получайте уведомления об операциях кошелька, обновлениях демократии, наград стейкинга и безопасности, чтобы вы всегда быть в куре событий + Получайте уведомления об операциях кошелька, обновлениях демократии, наград стейкинга и безопасности, чтобы всегда быть в куре событий Включая push-уведомления, вы соглашаетесь с нашими %s и %s Повторите попытку позже, открыв настройки уведомлений на вкладке «Настройки» Не пропустите ничего! From 329eaf3435fcf039bf769f996c68640bf862cc25 Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Wed, 20 Mar 2024 11:14:03 +0100 Subject: [PATCH 02/17] Removed wallet-api module from account-impl --- .../ProxyExtrinsicValidationRequestBusHandler.kt | 11 +++++++---- .../validation/ProxiedExtrinsicValidationSystem.kt | 6 ++---- .../account/proxy/ProxySigningPresenter.kt | 4 +--- feature-account-impl/build.gradle | 1 - .../proxy/sign/RealProxySigningPresenter.kt | 14 ++++---------- 5 files changed, 14 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/io/novafoundation/nova/app/root/presentation/requestBusHandler/ProxyExtrinsicValidationRequestBusHandler.kt b/app/src/main/java/io/novafoundation/nova/app/root/presentation/requestBusHandler/ProxyExtrinsicValidationRequestBusHandler.kt index 6744416146..9c52fcfea4 100644 --- a/app/src/main/java/io/novafoundation/nova/app/root/presentation/requestBusHandler/ProxyExtrinsicValidationRequestBusHandler.kt +++ b/app/src/main/java/io/novafoundation/nova/app/root/presentation/requestBusHandler/ProxyExtrinsicValidationRequestBusHandler.kt @@ -8,8 +8,10 @@ import io.novafoundation.nova.feature_account_api.data.proxy.validation.ProxyExt import io.novafoundation.nova.feature_account_api.data.proxy.validation.ProxyExtrinsicValidationRequestBus.ValidationResponse import io.novafoundation.nova.feature_account_api.data.proxy.validation.ProxiedExtrinsicValidationFailure import io.novafoundation.nova.feature_account_api.data.proxy.validation.ProxiedExtrinsicValidationPayload +import io.novafoundation.nova.feature_wallet_api.domain.model.amountFromPlanks import io.novafoundation.nova.feature_wallet_api.domain.validation.ProxyHaveEnoughFeeValidationFactory import io.novafoundation.nova.feature_wallet_api.domain.validation.proxyHasEnoughFeeValidation +import io.novafoundation.nova.feature_wallet_api.presentation.formatters.formatTokenAmount import kotlinx.coroutines.flow.launchIn class ProxyExtrinsicValidationRequestBusHandler( @@ -41,11 +43,12 @@ class ProxyExtrinsicValidationRequestBusHandler( call = { it.call }, chainWithAsset = { it.chainWithAsset }, proxyNotEnoughFee = { payload, availableBalance, fee -> + val asset = payload.chainWithAsset.asset ProxiedExtrinsicValidationFailure.ProxyNotEnoughFee( - payload.proxyMetaAccount, - payload.chainWithAsset.asset, - availableBalance, - fee + metaAccount = payload.proxyMetaAccount, + asset = asset, + fee = asset.amountFromPlanks(fee.amount).formatTokenAmount(asset), + availableBalance = asset.amountFromPlanks(availableBalance).formatTokenAmount(asset) ) } ) diff --git a/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/data/proxy/validation/ProxiedExtrinsicValidationSystem.kt b/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/data/proxy/validation/ProxiedExtrinsicValidationSystem.kt index e19ceec34f..58af57f03d 100644 --- a/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/data/proxy/validation/ProxiedExtrinsicValidationSystem.kt +++ b/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/data/proxy/validation/ProxiedExtrinsicValidationSystem.kt @@ -2,11 +2,9 @@ package io.novafoundation.nova.feature_account_api.data.proxy.validation import io.novafoundation.nova.common.validation.ValidationSystem import io.novafoundation.nova.common.validation.ValidationSystemBuilder -import io.novafoundation.nova.feature_account_api.data.model.Fee import io.novafoundation.nova.feature_account_api.domain.model.MetaAccount import io.novafoundation.nova.runtime.multiNetwork.ChainWithAsset import io.novafoundation.nova.runtime.multiNetwork.chain.model.Chain -import java.math.BigInteger import io.novasama.substrate_sdk_android.runtime.AccountId import io.novasama.substrate_sdk_android.runtime.definitions.types.generics.GenericCall @@ -25,7 +23,7 @@ sealed interface ProxiedExtrinsicValidationFailure { class ProxyNotEnoughFee( val metaAccount: MetaAccount, val asset: Chain.Asset, - val availableBalance: BigInteger, - val fee: Fee + val fee: String, + val availableBalance: String ) : ProxiedExtrinsicValidationFailure } diff --git a/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/presenatation/account/proxy/ProxySigningPresenter.kt b/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/presenatation/account/proxy/ProxySigningPresenter.kt index 041f4d2fad..5c6aede27b 100644 --- a/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/presenatation/account/proxy/ProxySigningPresenter.kt +++ b/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/presenatation/account/proxy/ProxySigningPresenter.kt @@ -1,10 +1,8 @@ package io.novafoundation.nova.feature_account_api.presenatation.account.proxy -import io.novafoundation.nova.feature_account_api.data.model.Fee import io.novafoundation.nova.feature_account_api.domain.model.MetaAccount import io.novafoundation.nova.feature_proxy_api.domain.model.ProxyType import io.novafoundation.nova.runtime.multiNetwork.chain.model.Chain -import java.math.BigInteger interface ProxySigningPresenter { @@ -14,5 +12,5 @@ interface ProxySigningPresenter { suspend fun signingIsNotSupported() - suspend fun notEnoughFee(metaAccount: MetaAccount, chainAsset: Chain.Asset, availableBalance: BigInteger, fee: Fee) + suspend fun notEnoughFee(metaAccount: MetaAccount, chainAsset: Chain.Asset, availableBalance: String, fee: String) } diff --git a/feature-account-impl/build.gradle b/feature-account-impl/build.gradle index edf6c95407..9766047d0a 100644 --- a/feature-account-impl/build.gradle +++ b/feature-account-impl/build.gradle @@ -39,7 +39,6 @@ dependencies { implementation project(':common') implementation project(':runtime') implementation project(':feature-account-api') - implementation project(':feature-wallet-api') implementation project(':feature-currency-api') implementation project(':feature-ledger-api') implementation project(':feature-versions-api') diff --git a/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/presentation/proxy/sign/RealProxySigningPresenter.kt b/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/presentation/proxy/sign/RealProxySigningPresenter.kt index d2687c04b8..c78e66d2ad 100644 --- a/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/presentation/proxy/sign/RealProxySigningPresenter.kt +++ b/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/presentation/proxy/sign/RealProxySigningPresenter.kt @@ -8,18 +8,14 @@ import io.novafoundation.nova.common.utils.colorSpan import io.novafoundation.nova.common.utils.formatting.spannable.SpannableFormatter import io.novafoundation.nova.common.utils.toSpannable import io.novafoundation.nova.common.view.dialog.dialog -import io.novafoundation.nova.feature_account_api.data.model.Fee import io.novafoundation.nova.feature_account_api.domain.model.MetaAccount import io.novafoundation.nova.feature_account_api.presenatation.account.proxy.ProxySigningPresenter import io.novafoundation.nova.feature_account_impl.R import io.novafoundation.nova.feature_account_impl.presentation.common.sign.notSupported.SigningNotSupportedPresentable import io.novafoundation.nova.feature_proxy_api.domain.model.ProxyType -import io.novafoundation.nova.feature_wallet_api.domain.model.amountFromPlanks -import io.novafoundation.nova.feature_wallet_api.presentation.formatters.formatTokenAmount import io.novafoundation.nova.runtime.multiNetwork.chain.model.Chain import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext -import java.math.BigInteger import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine @@ -77,8 +73,8 @@ class RealProxySigningPresenter( override suspend fun notEnoughFee( metaAccount: MetaAccount, chainAsset: Chain.Asset, - availableBalance: BigInteger, - fee: Fee + availableBalance: String, + fee: String ) = withContext(Dispatchers.Main) { suspendCoroutine { continuation -> dialog(contextManager.getActivity()!!) { @@ -87,13 +83,11 @@ class RealProxySigningPresenter( resourceManager.getString( R.string.proxy_error_not_enough_to_pay_fee_message, metaAccount.name, - chainAsset.amountFromPlanks(fee.amount).formatTokenAmount(chainAsset), - chainAsset.amountFromPlanks(availableBalance).formatTokenAmount(chainAsset), + fee, + availableBalance ) ) - chainAsset.amountFromPlanks(availableBalance).formatTokenAmount(chainAsset) - setPositiveButton(io.novafoundation.nova.common.R.string.common_close) { _, _ -> continuation.resume(Unit) } } } From 2552ee363d163b8716e84d725f014c5d904a4ca3 Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Wed, 20 Mar 2024 12:46:21 +0100 Subject: [PATCH 03/17] Fixed memory leak --- .../parallaxCard/CardGyroscopeListener.kt | 70 ------------------- .../parallaxCard/ParallaxCardBitmapBaking.kt | 2 +- .../view/parallaxCard/ParallaxCardView.kt | 44 ++++++------ .../gyroscope/CardGyroscopeListener.kt | 64 ++++++++++------- 4 files changed, 61 insertions(+), 119 deletions(-) delete mode 100644 common/src/main/java/io/novafoundation/nova/common/view/parallaxCard/CardGyroscopeListener.kt diff --git a/common/src/main/java/io/novafoundation/nova/common/view/parallaxCard/CardGyroscopeListener.kt b/common/src/main/java/io/novafoundation/nova/common/view/parallaxCard/CardGyroscopeListener.kt deleted file mode 100644 index 7080cd5059..0000000000 --- a/common/src/main/java/io/novafoundation/nova/common/view/parallaxCard/CardGyroscopeListener.kt +++ /dev/null @@ -1,70 +0,0 @@ -package io.novafoundation.nova.common.view.parallaxCard - -import android.animation.TimeAnimator -import android.content.Context -import android.hardware.Sensor -import android.hardware.SensorEvent -import android.hardware.SensorEventListener -import android.hardware.SensorManager -import androidx.core.content.ContextCompat - -private const val SECOND_IN_MILLIS = 1000f -private const val VELOCITY = 0.1f -private const val SENSOR_Z_INDEX = 1 - -class CardGyroscopeListener( - context: Context, - private val deviceRotationAngle: Float, - private val callback: (rotation: Float) -> Unit -) : SensorEventListener { - - private val timeAnimator = TimeAnimator() - private val sensorManager = ContextCompat.getSystemService(context, SensorManager::class.java) - - private var screenRotation = 0f - private var deviceRotation = 0f - private var previousEventMillis: Long = 0 - - init { - timeAnimator.setTimeListener(::onTimeChanged) - } - - fun start() { - if (sensorManager != null) { - val gyroscopeSensor = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) - if (gyroscopeSensor != null) { - previousEventMillis = System.currentTimeMillis() - sensorManager.registerListener(this, gyroscopeSensor, SensorManager.SENSOR_DELAY_UI) - timeAnimator.start() - } - } - } - - fun cancel() { - if (sensorManager != null) { - previousEventMillis = System.currentTimeMillis() - sensorManager.unregisterListener(this) - timeAnimator.cancel() - } - } - - private fun onTimeChanged(animator: TimeAnimator, totalTime: Long, deltaTime: Long) { - screenRotation += (deviceRotation - screenRotation) * VELOCITY - val resultRotation = screenRotation / deviceRotationAngle - callback(resultRotation) - } - - override fun onSensorChanged(event: SensorEvent) { - val currentMillis = System.currentTimeMillis() - val dT = (currentMillis - previousEventMillis) / SECOND_IN_MILLIS - val rotationDistanceInRadians = event.values[SENSOR_Z_INDEX] * dT - val rotationDistanceInDegrees = Math.toDegrees(rotationDistanceInRadians.toDouble()) - deviceRotation += rotationDistanceInDegrees.toFloat() - - deviceRotation = deviceRotation.coerceIn(-deviceRotationAngle, deviceRotationAngle) - - previousEventMillis = currentMillis - } - - override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {} -} diff --git a/common/src/main/java/io/novafoundation/nova/common/view/parallaxCard/ParallaxCardBitmapBaking.kt b/common/src/main/java/io/novafoundation/nova/common/view/parallaxCard/ParallaxCardBitmapBaking.kt index 980fd8266e..a7cf75ec88 100644 --- a/common/src/main/java/io/novafoundation/nova/common/view/parallaxCard/ParallaxCardBitmapBaking.kt +++ b/common/src/main/java/io/novafoundation/nova/common/view/parallaxCard/ParallaxCardBitmapBaking.kt @@ -18,7 +18,7 @@ import kotlinx.coroutines.cancel import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -class ParallaxCardBitmapBaking(private val context: Context, val lruCache: BackingParallaxCardLruCache) { +class ParallaxCardBitmapBaking(context: Context, val lruCache: BackingParallaxCardLruCache) { private var callback: OnBakingPreparedCallback? = null diff --git a/common/src/main/java/io/novafoundation/nova/common/view/parallaxCard/ParallaxCardView.kt b/common/src/main/java/io/novafoundation/nova/common/view/parallaxCard/ParallaxCardView.kt index 02ebef2ca9..10e242cc73 100644 --- a/common/src/main/java/io/novafoundation/nova/common/view/parallaxCard/ParallaxCardView.kt +++ b/common/src/main/java/io/novafoundation/nova/common/view/parallaxCard/ParallaxCardView.kt @@ -28,12 +28,6 @@ open class ParallaxCardView @JvmOverloads constructor( defStyleAttr: Int = 0 ) : ConstraintLayout(context, attrs, defStyleAttr), ParallaxCardBitmapBaking.OnBakingPreparedCallback { - private val gyroscopeListener = CardGyroscopeListener( - context, - TravelVector(DEVICE_ROTATION_ANGLE_RADIUS, DEVICE_ROTATION_ANGLE_RADIUS), - ::onGyroscopeRotation - ) - private val frostedGlassLayer: FrostedGlassLayer = FrostedGlassLayer() private val cardRect = RectF() private val cardPath = Path() @@ -61,6 +55,23 @@ open class ParallaxCardView @JvmOverloads constructor( private val cardBackgroundBitmap: Bitmap + private var gyroscopeListenerCallback: ((TravelVector) -> Unit)? = { rotation: TravelVector -> + travelOffset = rotation + + if (helper.isPrepared) { + updateHighlights() + updateFrostedGlassLayer() + } + + invalidate() + } + + private var gyroscopeListener: CardGyroscopeListener? = CardGyroscopeListener( + context, + TravelVector(DEVICE_ROTATION_ANGLE_RADIUS, DEVICE_ROTATION_ANGLE_RADIUS), + gyroscopeListenerCallback + ) + init { clipToPadding = false @@ -82,14 +93,16 @@ open class ParallaxCardView @JvmOverloads constructor( setWillNotDraw(false) postDelayed({ - gyroscopeListener.start() + gyroscopeListener?.start() }, 300) // Added small delay to avoid wrong parallax initial position } - override fun onViewRemoved(view: View?) { - super.onViewRemoved(view) + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() helper.onViewRemove() - gyroscopeListener.cancel() + gyroscopeListener?.cancel() + gyroscopeListener = null + gyroscopeListenerCallback = null } override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) { @@ -162,17 +175,6 @@ open class ParallaxCardView @JvmOverloads constructor( return LayoutParams(p) } - private fun onGyroscopeRotation(rotation: TravelVector) { - travelOffset = rotation - - if (helper.isPrepared) { - updateHighlights() - updateFrostedGlassLayer() - } - - invalidate() - } - override fun onDraw(canvas: Canvas) { super.onDraw(canvas) canvas.clipPath(cardPath) diff --git a/common/src/main/java/io/novafoundation/nova/common/view/parallaxCard/gyroscope/CardGyroscopeListener.kt b/common/src/main/java/io/novafoundation/nova/common/view/parallaxCard/gyroscope/CardGyroscopeListener.kt index 779e02aaf8..a81c6569a3 100644 --- a/common/src/main/java/io/novafoundation/nova/common/view/parallaxCard/gyroscope/CardGyroscopeListener.kt +++ b/common/src/main/java/io/novafoundation/nova/common/view/parallaxCard/gyroscope/CardGyroscopeListener.kt @@ -1,6 +1,7 @@ package io.novafoundation.nova.common.view.parallaxCard.gyroscope import android.animation.TimeAnimator +import android.animation.TimeAnimator.TimeListener import android.content.Context import android.hardware.Sensor import android.hardware.SensorEvent @@ -19,8 +20,8 @@ private val SENSOR_FREQUENCY_MICROSECONDS = (1.seconds.inWholeMicroseconds / 60) class CardGyroscopeListener( context: Context, private val deviceRotationAngle: TravelVector, - private val callback: (rotation: TravelVector) -> Unit -) : SensorEventListener { + private var callback: ((rotation: TravelVector) -> Unit)? +) { private val sensorManager = ContextCompat.getSystemService(context, SensorManager::class.java) private val timeAnimator = TimeAnimator() @@ -33,43 +34,52 @@ class CardGyroscopeListener( val gyroscopeSensor = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) if (gyroscopeSensor != null) { previousEventMillis = System.currentTimeMillis() - sensorManager.registerListener(this, gyroscopeSensor, SENSOR_FREQUENCY_MICROSECONDS) - timeAnimator.setTimeListener(::onTimerUpdate) + sensorManager.registerListener(sensorListener, gyroscopeSensor, SENSOR_FREQUENCY_MICROSECONDS) + timeAnimator.setTimeListener(timeListener) timeAnimator.start() } } } - private fun onTimerUpdate(timeAnimator: TimeAnimator, totalTime: Long, deltaTime: Long) { - interpolatedRotation += (deviceRotation - interpolatedRotation) * INTERPOLATION_VELOCITY - callback(interpolatedRotation / deviceRotationAngle) + var sensorListener: SensorEventListener? = object : SensorEventListener { + override fun onSensorChanged(event: SensorEvent) { + val currentMillis = System.currentTimeMillis() + val dT = (currentMillis - previousEventMillis) / SECOND_IN_MILLIS + val yRadians = event.values[SENSOR_Y_INDEX] * dT.toDouble() + val xRadians = event.values[SENSOR_X_INDEX] * dT.toDouble() + + // y and x are inverted due to the device orientation + deviceRotation += TravelVector( + x = Math.toDegrees(yRadians).toFloat(), + y = Math.toDegrees(xRadians).toFloat() + ) + + deviceRotation = deviceRotation.coerceIn(-deviceRotationAngle, deviceRotationAngle) + + previousEventMillis = currentMillis + } + + override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {} + } + + var timeListener: TimeListener? = object : TimeListener { + + override fun onTimeUpdate(animation: TimeAnimator?, totalTime: Long, deltaTime: Long) { + interpolatedRotation += (deviceRotation - interpolatedRotation) * INTERPOLATION_VELOCITY + callback?.invoke(interpolatedRotation / deviceRotationAngle) + } } fun cancel() { if (sensorManager != null) { previousEventMillis = System.currentTimeMillis() - sensorManager.unregisterListener(this) + sensorManager.unregisterListener(sensorListener) timeAnimator.setTimeListener(null) timeAnimator.cancel() - } - } - - override fun onSensorChanged(event: SensorEvent) { - val currentMillis = System.currentTimeMillis() - val dT = (currentMillis - previousEventMillis) / SECOND_IN_MILLIS - val yRadians = event.values[SENSOR_Y_INDEX] * dT.toDouble() - val xRadians = event.values[SENSOR_X_INDEX] * dT.toDouble() - // y and x are inverted due to the device orientation - deviceRotation += TravelVector( - x = Math.toDegrees(yRadians).toFloat(), - y = Math.toDegrees(xRadians).toFloat() - ) - - deviceRotation = deviceRotation.coerceIn(-deviceRotationAngle, deviceRotationAngle) - - previousEventMillis = currentMillis + sensorListener = null + timeListener = null + callback = null + } } - - override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {} } From 41742a8ebaf80093173b4865b1eb5f9e7b4b04fd Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Wed, 20 Mar 2024 12:58:39 +0100 Subject: [PATCH 04/17] Update RuntimeSyncServiceTest.kt --- .../multiNetwork/runtime/RuntimeSyncServiceTest.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/runtime/src/test/java/io/novafoundation/nova/runtime/multiNetwork/runtime/RuntimeSyncServiceTest.kt b/runtime/src/test/java/io/novafoundation/nova/runtime/multiNetwork/runtime/RuntimeSyncServiceTest.kt index 48ed54fcb8..074fa53542 100644 --- a/runtime/src/test/java/io/novafoundation/nova/runtime/multiNetwork/runtime/RuntimeSyncServiceTest.kt +++ b/runtime/src/test/java/io/novafoundation/nova/runtime/multiNetwork/runtime/RuntimeSyncServiceTest.kt @@ -10,10 +10,10 @@ import io.novafoundation.nova.runtime.multiNetwork.runtime.types.TypesFetcher import io.novafoundation.nova.test_shared.any import io.novafoundation.nova.test_shared.eq import io.novafoundation.nova.test_shared.whenever -import jp.co.soramitsu.fearless_utils.runtime.metadata.GetMetadataRequest -import jp.co.soramitsu.fearless_utils.wsrpc.SocketService -import jp.co.soramitsu.fearless_utils.wsrpc.request.runtime.RuntimeRequest -import jp.co.soramitsu.fearless_utils.wsrpc.response.RpcResponse +import io.novasama.substrate_sdk_android.runtime.metadata.GetMetadataRequest +import io.novasama.substrate_sdk_android.wsrpc.SocketService +import io.novasama.substrate_sdk_android.wsrpc.request.runtime.RuntimeRequest +import io.novasama.substrate_sdk_android.wsrpc.response.RpcResponse import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.first From 6dea4e8de61b42b8ef99532c90e4548dedbac63e Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Wed, 20 Mar 2024 13:57:38 +0100 Subject: [PATCH 05/17] Fixed slippage message --- .../domain/validation/SwapValidationFailure.kt | 3 ++- .../validation/validations/SwapSlippageRangeValidation.kt | 2 +- .../presentation/main/SwapValidationFailureUi.kt | 6 ++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/domain/validation/SwapValidationFailure.kt b/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/domain/validation/SwapValidationFailure.kt index 354b76cdf4..14ca6704a7 100644 --- a/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/domain/validation/SwapValidationFailure.kt +++ b/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/domain/validation/SwapValidationFailure.kt @@ -1,5 +1,6 @@ package io.novafoundation.nova.feature_swap_impl.domain.validation +import io.novafoundation.nova.common.utils.Percent import io.novafoundation.nova.feature_account_api.data.model.Fee import io.novafoundation.nova.feature_swap_api.domain.model.SwapFee import io.novafoundation.nova.feature_wallet_api.data.network.blockhain.types.Balance @@ -14,7 +15,7 @@ sealed class SwapValidationFailure { object NonPositiveAmount : SwapValidationFailure() - object InvalidSlippage : SwapValidationFailure() + class InvalidSlippage(val minSlippage: Percent, val maxSlippage: Percent) : SwapValidationFailure() class NewRateExceededSlippage( val assetIn: Chain.Asset, diff --git a/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/domain/validation/validations/SwapSlippageRangeValidation.kt b/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/domain/validation/validations/SwapSlippageRangeValidation.kt index 7c36fc8731..3c803970a1 100644 --- a/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/domain/validation/validations/SwapSlippageRangeValidation.kt +++ b/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/domain/validation/validations/SwapSlippageRangeValidation.kt @@ -17,7 +17,7 @@ class SwapSlippageRangeValidation( val slippageConfig = swapService.slippageConfig(value.detailedAssetIn.chain.id)!! if (value.slippage.value !in slippageConfig.minAvailableSlippage.value..slippageConfig.maxAvailableSlippage.value) { - return InvalidSlippage.validationError() + return InvalidSlippage(slippageConfig.minAvailableSlippage, slippageConfig.maxAvailableSlippage).validationError() } return valid() diff --git a/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/presentation/main/SwapValidationFailureUi.kt b/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/presentation/main/SwapValidationFailureUi.kt index b1f4a076ac..cccd9e8139 100644 --- a/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/presentation/main/SwapValidationFailureUi.kt +++ b/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/presentation/main/SwapValidationFailureUi.kt @@ -3,6 +3,8 @@ package io.novafoundation.nova.feature_swap_impl.presentation.main import io.novafoundation.nova.common.base.TitleAndMessage import io.novafoundation.nova.common.mixin.api.CustomDialogDisplayer import io.novafoundation.nova.common.resources.ResourceManager +import io.novafoundation.nova.common.utils.formatting.format +import io.novafoundation.nova.common.utils.formatting.formatWithoutSymbol import io.novafoundation.nova.common.validation.TransformedFailure import io.novafoundation.nova.common.validation.ValidationFlowActions import io.novafoundation.nova.common.validation.ValidationStatus @@ -48,9 +50,9 @@ fun CoroutineScope.mapSwapValidationFailureToUI( NotEnoughFunds.ToPayFee -> resourceManager.notSufficientBalanceToPayFeeErrorMessage().asDefault() - InvalidSlippage -> TitleAndMessage( + is InvalidSlippage -> TitleAndMessage( resourceManager.getString(R.string.swap_invalid_slippage_failure_title), - resourceManager.getString(R.string.swap_invalid_slippage_failure_message) + resourceManager.getString(R.string.swap_invalid_slippage_failure_message, reason.minSlippage.format(), reason.maxSlippage.format()) ).asDefault() is NewRateExceededSlippage -> TitleAndMessage( From e3532cd0466c0388eaee3b3884d38656d2f2d82a Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Wed, 20 Mar 2024 14:54:52 +0100 Subject: [PATCH 06/17] Added new languages --- .../nova/common/resources/ContextManager.kt | 6 +- .../nova/common/resources/LanguagesHolder.kt | 11 +- .../formatting/TermsAndPrivacyFormatting.kt | 33 + common/src/main/res/values-es/strings.xml | 1399 +++++++++++++++++ common/src/main/res/values-it/strings.xml | 1398 ++++++++++++++++ common/src/main/res/values-pt/strings.xml | 1399 +++++++++++++++++ common/src/main/res/values-ru/strings.xml | 68 +- common/src/main/res/values-zh-rCN/strings.xml | 1388 ++++++++++++++++ common/src/main/res/values/strings.xml | 3 +- .../nova/core/model/Language.kt | 2 +- .../datasource/AccountDataSourceImpl.kt | 2 +- .../language/mapper/LanguageMapper.kt | 5 +- .../custom/referral/ReferralContributeView.kt | 2 +- .../presentation/welcome/WelcomeFragment.kt | 35 +- .../src/main/res/layout/fragment_welcome.xml | 4 +- .../welcome/PushWelcomeFragment.kt | 27 +- 16 files changed, 5661 insertions(+), 121 deletions(-) create mode 100644 common/src/main/java/io/novafoundation/nova/common/utils/formatting/TermsAndPrivacyFormatting.kt create mode 100644 common/src/main/res/values-es/strings.xml create mode 100644 common/src/main/res/values-it/strings.xml create mode 100644 common/src/main/res/values-pt/strings.xml create mode 100644 common/src/main/res/values-zh-rCN/strings.xml diff --git a/common/src/main/java/io/novafoundation/nova/common/resources/ContextManager.kt b/common/src/main/java/io/novafoundation/nova/common/resources/ContextManager.kt index e1d70ab7a3..99a9f542e7 100644 --- a/common/src/main/java/io/novafoundation/nova/common/resources/ContextManager.kt +++ b/common/src/main/java/io/novafoundation/nova/common/resources/ContextManager.kt @@ -50,13 +50,13 @@ class ContextManager private constructor( val currentLanguage = if (prefs.getCurrentLanguage() == null) { val currentLocale = Locale.getDefault() - if (languagesHolder.getLanguages().map { it.iso }.contains(currentLocale.language)) { + if (languagesHolder.getLanguages().map { it.iso639Code }.contains(currentLocale.language)) { currentLocale.language } else { - languagesHolder.getEnglishLang().iso + languagesHolder.getDefaultLanguage().iso639Code } } else { - prefs.getCurrentLanguage()!!.iso + prefs.getCurrentLanguage()!!.iso639Code } prefs.saveCurrentLanguage(currentLanguage) diff --git a/common/src/main/java/io/novafoundation/nova/common/resources/LanguagesHolder.kt b/common/src/main/java/io/novafoundation/nova/common/resources/LanguagesHolder.kt index 984becc86b..9093c21f31 100644 --- a/common/src/main/java/io/novafoundation/nova/common/resources/LanguagesHolder.kt +++ b/common/src/main/java/io/novafoundation/nova/common/resources/LanguagesHolder.kt @@ -7,13 +7,18 @@ import javax.inject.Singleton class LanguagesHolder { companion object { - private val RUSSIAN = Language("ru") + private val ENGLISH = Language("en") + private val CHINESE = Language("zh") + private val ITALIAN = Language("it") + private val PORTUGUESE = Language("pt") + private val RUSSIAN = Language("ru") + private val SPANISH = Language("es") - private val availableLanguages = mutableListOf(RUSSIAN, ENGLISH) + private val availableLanguages = mutableListOf(ENGLISH, CHINESE, ITALIAN, PORTUGUESE, RUSSIAN, SPANISH) } - fun getEnglishLang(): Language { + fun getDefaultLanguage(): Language { return ENGLISH } diff --git a/common/src/main/java/io/novafoundation/nova/common/utils/formatting/TermsAndPrivacyFormatting.kt b/common/src/main/java/io/novafoundation/nova/common/utils/formatting/TermsAndPrivacyFormatting.kt new file mode 100644 index 0000000000..eca3db0cb1 --- /dev/null +++ b/common/src/main/java/io/novafoundation/nova/common/utils/formatting/TermsAndPrivacyFormatting.kt @@ -0,0 +1,33 @@ +package io.novafoundation.nova.common.utils.formatting + +import android.graphics.Color +import android.text.method.LinkMovementMethod +import android.widget.TextView +import io.novafoundation.nova.common.R +import io.novafoundation.nova.common.utils.clickableSpan +import io.novafoundation.nova.common.utils.colorSpan +import io.novafoundation.nova.common.utils.formatting.spannable.SpannableFormatter +import io.novafoundation.nova.common.utils.setFullSpan +import io.novafoundation.nova.common.utils.toSpannable + +fun TextView.applyTermsAndPrivacyPolicy( + containerResId: Int, + termsResId: Int, + privacyResId: Int, + termsClicked: () -> Unit, + privacyClicked: () -> Unit +) { + movementMethod = LinkMovementMethod.getInstance() + highlightColor = Color.TRANSPARENT + val linkColor = context.getColor(R.color.text_primary) + + text = SpannableFormatter.format( + context.getString(containerResId), + context.getString(termsResId) + .toSpannable(clickableSpan(termsClicked)) + .setFullSpan(colorSpan(linkColor)), + context.getString(privacyResId) + .toSpannable(clickableSpan(privacyClicked)) + .setFullSpan(colorSpan(linkColor)) + ) +} diff --git a/common/src/main/res/values-es/strings.xml b/common/src/main/res/values-es/strings.xml new file mode 100644 index 0000000000..9644cdb5b1 --- /dev/null +++ b/common/src/main/res/values-es/strings.xml @@ -0,0 +1,1399 @@ + + + Contáctanos + Github + Política de privacidad + Califícanos + Telegram + Términos y Condiciones + Términos & Condiciones + Acerca de + Versión de la aplicación + Sitio Web + Introduce una dirección %s válida... + La dirección EVM debe ser válida o estar vacía... + Introduce una dirección de sustrato válida... + Agregar cuenta + La cuenta ya existe. Por favor, prueba con otra. + Seguir cualquier cartera por su dirección + Agregar cartera solo-lectura + Frase mnemónica + Apunta la frase y guárdala en un lugar seguro + Por favor, asegúrate de anotar tu frase correctamente y de forma legible. + dirección %s + Confirmar mnemónica + Selecciona las palabras en el orden correcto. + Verifiquemos de nuevo + Elige las palabras en el orden correcto + Crear una cuenta nueva + No uses el portapapeles o capturas de pantalla en tu dispositivo móvil, intenta encontrar métodos seguros para el respaldo (por ejemplo, papel) + El nombre se usará solo localmente en esta aplicación. Puedes editarlo más tarde + Crear nombre de billetera + Respaldar mnemónico + El mnemónico se usa para recuperar acceso a la cuenta. Anótalo, ¡no podremos recuperar tu cuenta sin él! + Cuentas con un secreto cambiado + Olvidar + Asegúrate de haber exportado tu billetera antes de continuar. + ¿Olvidar billetera? + Ruta de derivación Ethereum inválida + Ruta de derivación Substrate inválida + Esta billetera está emparejada con %1$s. Nova te ayudará a formar cualquier operación que desees, y se te solicitará que las firmes usando %1$s + No soportado por %s + Esta es una billetera solo de visualización, Nova puede mostrarte saldos y otra información, pero no puedes realizar ninguna transacción con esta billetera + Ingresa el apodo de la billetera... + Por favor, prueba con otra. + Tipo de cripto par de claves Ethereum + Ruta de derivación secreta de Ethereum + Exportar cuenta + Exportar + Esto es necesario para cifrar los datos y guardar el archivo JSON. + Establecer una nueva contraseña + Guarda tu secreto y almacénalo en un lugar seguro + Cambiar contraseña + Escribe tu secreto y guárdalo en un lugar seguro + JSON de restauración inválido. Por favor, asegúrate de que la entrada contenga un JSON válido. + El seed es inválido. Por favor, asegúrate de que tu entrada contenga 64 símbolos hexadecimales. + El JSON no contiene información de la red. Por favor, especifícalo a continuación. + Proporciona tu JSON de restauración + Típicamente es una frase de 12 palabras (pero puede ser de 15, 18, 21 o 24) + Escribe las palabras separadas por un espacio, sin comas u otros signos + Introduce las palabras en el orden correcto + Contraseña + 0xAB + Introduce tu seed bruto + Nova es compatible con todas las aplicaciones + Importar cartera + Cuenta + Tu ruta de derivación contiene símbolos no compatibles o tiene una estructura incorrecta + Ruta de derivación inválida + Archivo JSON + Asegúrate de que la aplicación de Red está instalada en tu dispositivo Ledger usando la aplicación Ledger Live. Abre la aplicación de red en tu dispositivo Ledger. + Agrega al menos una cuenta + Añade cuentas a tu cartera + Guía Oficial de Conexión Bluetooth de Ledger + Asegúrate de que la aplicación de Red está instalada en tu dispositivo Ledger usando la aplicación Ledger Live + Open the network app on your Ledger device + Permite a Nova Wallet el acceso a Bluetooth y Ubicación + Select account to add to wallet + Conecta Ledger Nano X + Ledger Nano X + Por favor, activa el Bluetooth en la configuración de tu teléfono y en el dispositivo Ledger. Desbloquea tu dispositivo Ledger y abre la aplicación %s. + Selecciona tu dispositivo Ledger + frase de 12, 15, 18, 21 o 24 palabras + No tienes una cuenta para esta red, puedes crear o importar una cuenta. + Se necesita cuenta + No se encontró ninguna cuenta + Parity Signer + %s no soporta %s + Las siguientes cuentas han sido leídas exitosamente de %s + Aquí están tus cuentas + Código QR inválido, por favor asegúrate de que estás escaneando el código QR de %s + Asegúrate de seleccionar el primero de la lista + Open Parity Signer application on your smartphone + Go to “Keys” tab. Select seed, then account you would like to add to Nova Wallet + Parity Signer te proporcionará un código QR para escanear + Agrega una billetera desde %s + %s no soporta la firma de mensajes arbitrarios — solo transacciones + La firma no es compatible + Escanea el código QR desde %s + Escanea el código QR con %s + Tengo un error en %s + El código QR ha expirado + Por razones de seguridad, las operaciones generadas son válidas solo por %s.\nPor favor, genera un nuevo código QR y fírmalo con %s + El código QR es válido por %s + Por favor, asegúrese de estar escaneando el código QR para la operación de firma actual + Firmar con %s + Polkadot Vault + Preste atención, el nombre de la ruta de derivación debe estar vacío + Open Polkadot Vault application on your smartphone + Go to “Key Sets” tab. Select your Key set, Network, and then the account you would like to add to Nova Wallet + Polkadot Vault le proporcionará un código QR para escanear + Clave privada + Delegado a usted (Proxieds) + Cualquier acción + Subasta + Cancelar Proxy + Gobernanza + Juicio de Identidad + Piscinas de Nominación + No Transferible + Staking + Ya tengo una cuenta + 64 símbolos hexadecimales + Seleccionar monedero de hardware + Seleccione su tipo de secreto + Seleccionar monedero + Cuentas con un secreto compartido + Tipo de criptografía de par de claves Substrate + Ruta de derivación del secreto Substrate + Apodo del monedero + Moonbeam, Moonriver y otras redes + Dirección EVM (Opcional) + Monederos preestablecidos + Polkadot, Kusama, Karura, KILT y más de 50 redes + Rastrea la actividad de cualquier monedero sin introducir tu clave privada en Nova Wallet + Tu monedero es solo para ver, lo que significa que no puedes realizar ninguna operación con él + ¡Ups! Falta la clave + solo visualización + Usar Polkadot Vault, Ledger o Parity Signer + Conectar monedero de hardware + Agregar cuenta %s + Agregar monedero + Cambiar cuenta %s + Cambiar cuenta + Necesitas agregar una cuenta %s al monedero para poder delegar + Delegar a + Cuenta de delegación + Monedero de delegación + Tipo de acceso concedido + El depósito permanece reservado en tu cuenta hasta que se remueva el proxy. + Has alcanzado el límite de %s proxies añadidos en %s. Elimina proxies para añadir nuevos. + Se ha alcanzado el número máximo de proxies + La dirección de contrato ingresada ya está presente en Nova como un token %s. + La dirección de contrato ingresada ya está presente en Nova como un token %s. ¿Estás seguro de que quieres modificarlo? + Este token ya existe + Por favor, asegúrate de que la url suministrada tenga la siguiente forma: www.coingecko.com/en/coins/tether. + Enlace de CoinGecko inválido + La dirección de contrato ingresada no es un contrato %s ERC-20. + Dirección de contrato inválida + Los decimales deben ser al menos 0, y no superar 36. + Valor de decimales inválido + Ingrese la dirección del contrato + Ingrese los decimales + Ingrese el símbolo + Agregar token + Dirección del contrato + Decimales + Enlace de Coingecko para información de precio (Opcional) + Símbolo + Ingrese los detalles del token ERC-20 + Seleccione la red para agregar el token ERC-20 + Crowdloans + Governance v1 + OpenGov + Elecciones + Staking + Vesting + Comprar tokens + ¿Recibió su DOT de vuelta de los crowdloans? ¡Comience a hacer staking de su DOT hoy para obtener las máximas recompensas posibles! + Potencie su DOT \", \"🚀 + Filtrar tokens + Todas las redes + Gestionar tokens + No transfiera %s a la cuenta controlada por Ledger ya que Ledger no admite el envío de %s, por lo que los activos quedarán bloqueados en esta cuenta + Ledger no admite este token + Buscar por red o token + No se encontraron redes o tokens con\n el nombre ingresado + Sus carteras + No tiene tokens para enviar.\nCompre o reciba tokens en su\ncuenta. + Token para pagar + Token para recibir + Autenticación biométrica + ¡Compra iniciada! Por favor, espere hasta 60 minutos. Puede seguir el estado en el correo electrónico. + Para continuar la compra será redirigido desde la aplicación Nova Wallet a %s + ¿Continuar en el navegador? + Token + Saldo disponible + Lo siento, la solicitud de verificación del saldo falló. Por favor, intente de nuevo más tarde. + Lo sentimos, no pudimos contactar al proveedor de transferencia. Por favor, intente de nuevo más tarde. + Lo sentimos, no tiene fondos suficientes para gastar la cantidad especificada + Tasa de transferencia + La red no responde + A + Aceptar términos... + Cuenta + Dirección de cuenta + Activo + Agregar + Agregar delegación + Dirección + Avanzado + Todo + Permitir + Monto + El monto es demasiado bajo + El monto es demasiado grande + Aplicado + Aplicar + Preguntar de nuevo + ¡Atención! + Disponible: %s + Promedio + Saldo + Bono + Llamar + Cancelar + ¿Estás seguro de que quieres cancelar esta operación? + Lo siento, no tienes la aplicación correcta para procesar esta solicitud + No se puede abrir este enlace + Puedes usar hasta %s ya que necesitas pagar\n%s por la tarifa de red. + Cadena + Cambiar + Elegir red + Cerrar + ¿Estás seguro de que quieres cerrar esta pantalla?\nTus cambios no se aplicarán. + Completado + Completado (%s) + Confirmar + Confirmación + ¿Estás seguro? + Confirmado + Continuar + Copiado al portapapeles + Copiar dirección + Copiar id + Tipo de cripto de par de llaves + Fecha + %s y %s + Detalles + Deshabilitado + Desconectar + Hecho + No mostrar esto de nuevo + Editar + %s (+%s más) + Selecciona la aplicación de correo + Habilitar + Introducir dirección… + Introducir cantidad... + Error + Tokens insuficientes + Evento + Dirección EVM + Tu cuenta será eliminada de la cadena de bloques después de esta operación ya que hace que el saldo total sea menor que el mínimo + La operación eliminará la cuenta + Expirado + Explorar + La tarifa de red estimada %s es mucho mayor que la tarifa de red predeterminada (%s). Esto podría deberse a la congestión temporal de la red. Puedes actualizar para esperar una tarifa de red más baja. + La tarifa de red es demasiado alta + Ordenar por: + Filtros + Descubrir más + + todos los días + cada %s días + + diariamente + todos los días + Obtener %s + Gobernanza + Cadena hexadecimal + + %d hora + %d horas + + Cómo funciona + Entiendo + Información + Establece una contraseña… + El código QR no es válido + Aprender más + Descubrir más sobre + Ledger + %s restantes + Máximo + %s máximo + + %d minuto + %d minutos + + Falta la cuenta %s + Módulo + Red + %s no es compatible + Redes + + Red + Redes + + Siguiente + No + No se encontró aplicación para importar archivo en el dispositivo. Por favor, instálela y vuelva a intentarlo + No se encontró aplicación adecuada en el dispositivo para procesar esta acción + Sin cambios + Vamos a mostrar su mnemónico. Asegúrese de que nadie pueda ver su pantalla y no tome capturas de pantalla - ellas pueden ser recogidas por malware de terceros + Ninguno + Lo sentimos, no tiene fondos suficientes para pagar la tarifa de red. + Saldo insuficiente + Apagado + Aceptar + De acuerdo, volver + Encendido + En curso + Opcional + Seleccione una opción + Pegar + / año + %s / año + por año + % + Los permisos solicitados son necesarios para usar esta pantalla. Debería habilitarlos en Ajustes. + Permisos denegados + Los permisos solicitados son necesarios para usar esta pantalla. + Permisos necesarios + Precio + Proceder + Depósito de proxy + Revocar acceso + Leer más + Recomendado + Actualizar comisión + Rechazar + Eliminar + Requerido + Restablecer + Reintentar + Revocar + Guardar + Escanear el código QR + Buscar + Los resultados de la búsqueda se mostrarán aquí + Resultados de la búsqueda: %d + Ruta de derivación secreta + Configuraciones + Compartir + Solicitud de Firma + La firma es inválida + Saltar + Saltar proceso + Ocurrió un error al enviar algunas transacciones. ¿Quieres intentar de nuevo? + No se pudo enviar algunas transacciones + Ordenar por + Estado + Dirección Substrate + Tiempo restante + Título + Abrir configuración + Tu saldo es demasiado pequeño + Total + ID de transacción + Transacción enviada + Intentar de nuevo + Tipo + Por favor, intenta de nuevo con otra entrada. Si el error aparece de nuevo, por favor, contacta al soporte. + Desconocido + + %s no soportado + %s no soportados + + Ilimitado + Actualizar + Usar + El destinatario debe ser una dirección %s válida + Destinatario inválido + Esperando + Cartera + Advertencia + + La cantidad debe ser positiva + Referéndum + Votar + Rastrear + El nodo ya ha sido agregado previamente. Por favor, prueba con otro nodo. + No se puede establecer conexión con el nodo. Por favor, intenta con otro. + Desafortunadamente, la red no es compatible. Por favor, intenta con una de las siguientes: %s. + Eliminar + Confirma la eliminación de %s. + ¿Eliminar red? + Por favor, verifica tu conexión o intenta de nuevo más tarde + Personalizado + Predeterminado + Redes + Agregar conexión + Escanear código QR + Los crowdloans privados aún no están soportados. + Crowdloan privado + Acerca de los crowdloans + Directo + Aprende más sobre los diferentes aportes a Acala + Aporte líquido + Activo (%s) + Acepto los Términos y Condiciones + Bono de Nova Wallet (%s) + El código de referido de Astar debe ser una dirección Polkadot válida + No se puede contribuir con la cantidad elegida ya que el monto recaudado resultante superará el límite del crowdloan. La contribución máxima permitida es %s. + No se puede contribuir al crowdloan seleccionado ya que su límite ya ha sido alcanzado. + Límite del crowdloan superado + Contribuir al crowdloan + Contribución + Has contribuido: %s + Líquido + Paralelo + Tus contribuciones\n aparecerán aquí + Se devuelve en %s + Será devuelto por la parachain + %s (vía %s) + Crowdloans + Obtén un bono especial + Los crowdloans se mostrarán aquí + No se puede contribuir al crowdloan seleccionado ya que ya ha finalizado. + El crowdloan ha finalizado + Ingresa tu código de referido + Información del crowdloan + Sobre el crowdloan de %s + Sitio web del crowdloan de %s + Período de arrendamiento + Elige parachains para contribuir con tus %s. Recuperarás tus tokens contribuidos, y si la parachain gana un slot, recibirás recompensas después del final de la subasta. + Necesitas agregar una cuenta %s a la billetera para poder contribuir + Aplicar bono + Si no tienes un código de referido, puedes aplicar el código de referido de Nova para recibir un bono por tu contribución + No has aplicado ningún bono + El crowdloan de Moonbeam solo soporta cuentas de tipo criptográfico SR25519 o ED25519. Por favor, considera usar otra cuenta para contribuir + No se puede contribuir con esta cuenta + Debes agregar una cuenta de Moonbeam a la billetera para participar en el crowdloan de Moonbeam + Falta la cuenta de Moonbeam + Este crowdloan no está disponible en tu ubicación. + Tu región no es compatible + Destino de la recompensa %s + Enviar acuerdo + Debe enviar un acuerdo con los Términos y Condiciones en la blockchain para proceder. Esto se requiere hacer solo una vez para todas las contribuciones a Moonbeam siguientes. + He leído y estoy de acuerdo con los Términos y Condiciones + Recaudado + Código de referido + El código de referido no es válido. Por favor, intente con otro. + Términos y Condiciones de %s + La cantidad mínima permitida para contribuir es %s. + La cantidad de contribución es demasiado pequeña + Sus tokens %s serán devueltos después del periodo de leasing. + Sus contribuciones + Recaudado: %s de %s + DApps a los que permitió acceder para ver su dirección cuando los utiliza + La DApp “%s” será eliminada de Autorizados + ¿Eliminar de Autorizados? + DApps Autorizadas + Catálogo + Apruebe esta solicitud si confía en la aplicación + ¿Permitir a “%s” acceder a las direcciones de su cuenta? + Apruebe esta solicitud si confía en la aplicación.\nVerifique los detalles de la transacción. + DApp + DApps + Favoritos + Agregar a favoritos + La DApp “%s” será eliminada de Favoritos + ¿Eliminar de Favoritos? + La lista de DApps aparecerá aquí + Navegue por la web utilizando sus cuentas de Nova Wallet + Bienvenido a Nova Browser + Agregar a Favoritos + Modo escritorio + Eliminar de Favoritos + Configuraciones de página + Ok, llévame de vuelta + Nova Wallet cree que este sitio web podría comprometer la seguridad de sus cuentas y sus tokens + Phishing detectado + Buscar por nombre o ingresar URL + Cadena no soportada con hash de génesis %s + Asegúrese de que la operación sea correcta + No se pudo firmar la operación solicitada + + Cadena no encontrada + El dominio del enlace %s no está permitido + Tipo de gobernanza no especificado + Tipo de gobernanza no soportado + Tipo de criptografía inválido + Ruta de derivación inválida + Mnemónico no válido + URL inválida + +%d + Buscar por dirección o nombre + Formato de dirección inválido. Asegúrese de que la dirección pertenezca a la red correcta + resultados de búsqueda: %d + Nova Wallet agrega automáticamente autoridades delegadas (Proxy) a una categoría separada para usted. Siempre puede gestionar las billeteras en Configuración. + Actualización de cuentas delegadas + Votado por todo el tiempo + Delegar + Todas las cuentas + Individuos + Organizaciones + El período de anulación de delegación comenzará después de que revoque una delegación + Sus votos votarán automáticamente junto con el voto de sus delegados + Información del delegado + Individuo + Organización + Votos delegados + Delegaciones + Editar delegación + No puede delegar en sí mismo, por favor elija otra dirección + No se puede delegar a sí mismo + Cuéntenos más sobre usted para que los usuarios de Nova lo conozcan mejor + ¿Eres un Delegado? + Describirse + En %s pistas + Votado último %s + Sus votos a través de %s + Sus votos: %s a través de %s + Eliminar votos + Revocar delegación + Después de que expire el período de anulación de delegación, necesitará desbloquear sus tokens. + Votos a los delegados + A las delegaciones + Votos recientes %s + Pistas + Seleccionar todo + Seleccione al menos 1 pista... + No hay pistas disponibles para delegar + Fellowship + Gobierno + Tesorería + Período de anulación de delegación + Su delegación + Sus delegaciones + Mostrar + Ya está delegando a esta cuenta: %s + La delegación ya existe + (Compatible con BTC/ETH) + ECDSA + ed25519 (alternativa) + Edwards + No hay suficientes tokens para pagar la comisión + Contrato + Llamada de contrato + Función + Confirmar contraseña + Las contraseñas no coinciden + Establecer contraseña + Red: %s\nMnemotécnico: %s\nRuta de derivación: %s + Red: %s\nMnemotécnico: %s + Por favor, espere hasta que se calcule la comisión + El cálculo de la comisión está en progreso + Agregar delegación para el staking de %s + Detalles del intercambio + Máx: + Usted paga + Usted recibe + Seleccione un token + Desbloquear + Historia + Correo electrónico + Nombre legal + Nombre en Element + Identidad + Web + El archivo JSON suministrado fue creado para una red diferente. + Por favor, asegúrese de que su entrada contenga un json válido. + El JSON de restauración es inválido + Por favor, verifique la corrección de la contraseña e inténtelo de nuevo. + Fallo en la descifrado del almacén de claves + Pegar json + Tipo de encriptación no soportado + No se puede importar una cuenta con secreto de Substrate en la red con cifrado de Ethereum + No se puede importar una cuenta con secreto de Ethereum en la red con cifrado de Substrate + Su mnemónico es inválido + Por favor, asegúrese de que su entrada contiene 64 símbolos hexadecimales. + Semilla inválida + La dirección proxy debe ser una dirección %s válida + Dirección proxy inválida + No se puede decodificar el QR + Código QR + Subir desde la galería + Idioma + Ledger no soporta %s + La operación fue cancelada por el dispositivo. Asegúrese de haber desbloqueado su Ledger. + Operación cancelada + Abra la aplicación %s en su dispositivo Ledger + Aplicación %s no iniciada + La operación completada con error en el dispositivo. Por favor, intente nuevamente más tarde. + Fallo en la operación de Ledger + Cargar más cuentas + Revisar y Aprobar + Pulse ambos botones en su %s para aprobar la transacción + Por favor, actualice %s usando la aplicación Ledger Live + Metadatos desactualizados + Ledger no soporta la firma de mensajes arbitrarios — solo transacciones + Por favor, asegúrese de que ha seleccionado el dispositivo Ledger correcto para la operación actualmente en aprobación + Por razones de seguridad, las operaciones generadas son válidas solo por %s. Por favor, intente de nuevo y apruébelo con Ledger + La transacción ha expirado + La transacción es válida por %s + Ledger no soporta esta transacción. + Transacción no soportada + Presione ambos botones en su %s para aprobar la dirección + Esta cartera está emparejada con Ledger. Nova te ayudará a formar cualquier operación que desees, y se te solicitará firmarlas usando un dispositivo Ledger + Selecciona una cuenta para agregar a la cartera + Transacción de pago enviada + Agregar token + + Por favor, intenta con otra. + Frase mnemotécnica inválida, por favor verifica una vez más el orden de las palabras + Comisión de red + Dirección del nodo + Información del Nodo + Conectando… + Colección + Creado por + %s por %s + %s unidades de %s + #%s Edición de %s + Serie ilimitada + Propiedad de + Sin precio + Tus NFTs + Reclamar recompensas + Tus tokens se agregarán de nuevo al stake + Directo + Información de staking en el pool + Tus recompensas (%s) también serán reclamadas y añadidas a tu saldo disponible + Pool + No se puede realizar la operación especificada ya que el pool está en estado de destrucción. Se cerrará pronto. + El pool se está cerrando + Actualmente no hay lugares libres en la cola de desvinculación para tu pool. Por favor, intenta de nuevo en %s + Demasiadas personas están desvinculando de tu pool + Tu pool + Tu pool (#%s) + Crear cuenta + Crear una nueva cartera + Política de Privacidad + Importar cuenta + Ya tengo una cartera + Al continuar, aceptas nuestros\n%1$s y %2$s + Términos y Condiciones + Intercambiar + Uno de tus collators no está generando recompensas + Uno de tus collators no ha sido seleccionado en la ronda actual + Tu período de desvinculación para %s ha pasado. No olvides redimir tus tokens + No se puede hacer staking con este collator + Cambiar collator + No se puede añadir stake a este collator + Gestionar collators + El collator seleccionado mostró intención de dejar de participar en el staking + No puedes añadir stake al collator para el cual estás desvinculando todos los tokens. + Tu stake será menor que el stake mínimo (%s) para este collator. + El saldo de staking restante caerá por debajo del valor mínimo de la red (%s) y también se agregará a la cantidad de desvinculación + No estás autorizado. Por favor, intenta de nuevo. + Usar biometría para autorizar + Nova Wallet utiliza autenticación biométrica para restringir el acceso de usuarios no autorizados a la aplicación. + Biometría + El código PIN ha sido cambiado exitosamente + Confirma tu código PIN + Crear código PIN + Introduce el código PIN + Establece tu código PIN + No puedes unirte al pool ya que ha alcanzado el número máximo de miembros + El pool está lleno + No puedes unirte a un pool que no está abierto. Por favor, contacta al propietario del pool. + El pool no está abierto + Cuentas + Carteras + Idioma + Cambiar código PIN + Aprobar con PIN + Modo seguro + Configuración + Esta cuenta otorgó acceso para realizar transacciones a la siguiente cuenta: + Ya no es válido + ¿Qué es un Proxy? + Operaciones de staking + La cuenta delegada %s no tiene suficiente saldo para pagar la tarifa de red de %s. Saldo disponible para pagar la tarifa: %s + Las carteras delegadas no soportan la firma de mensajes arbitrarios, solo transacciones + %1$s no ha delegado %2$s + %1$s ha delegado %2$s solo para %3$s + ¡Ups! No hay suficiente permiso + La transacción será iniciada por %s como una cuenta delegada. La tarifa de red será pagada por la cuenta delegada. + Esta es una cuenta Delegada (Proxied) + %s proxy + Pega el json o sube un archivo… + Subir archivo + Restaurar JSON + Frase de contraseña mnemotécnica + Semilla cruda + Tipo de fuente + Todos los referendos + Mostrar: + Sin votar + Votado + No hay referendos con los filtros aplicados + La información de los referendos aparecerá aquí cuando comiencen + No se encontraron referendos con el título o ID entrado + Buscar por título de referendo o ID + Referendos + Referendo no encontrado + A favor: %s + Usar el navegador Nova DApp + Solo el proponente puede editar esta descripción y el título. Si posees la cuenta del proponente, visita Polkassembly y completa la información sobre tu propuesta + Detalles completos + Cantidad solicitada + Cronología + Tu voto: + Curva de aprobación + Beneficiario + Copiar hash + Depósito + Electorado + Hash de llamada + Demasiado largo para previsualización + Parámetros JSON + Propositor + Curva de soporte + Participación + Umbral de votación + Posición: %s de %s + Necesitas agregar una cuenta de %s a la cartera para poder votar + Referéndum %s + En contra: %s + Votos en contra + %s votos por %s + Votos a favor + Staking + Aprobado + Cancelado + Decidiendo + Decidiendo en %s + Ejecutado + En cola (%s de %s) + Eliminado + No pasa + Pasando + Preparando + Rechazado + Aprobar en %s + Ejecutar en %s + Tiempo agotado en %s + Rechazar en %s + Tiempo agotado + Esperando depósito + Umbral: %s de %s + Votado: Aprobado + Cancelado + Creado + Votando: Decidiendo + Ejecutado + Votando: En cola + Eliminado + Votando: No pasa + Votando: Pasando + Votando: Preparando + Votado: Rechazado + Tiempo agotado + Votando: Esperando depósito + Para pasar: %s + Crowdloans + Tesorería: gran gasto + Tesorería: grandes propinas + Fellowship: administración + Gobernanza: registrador + Gobernanza: arrendamiento + Tesorería: gasto medio + Gobernanza: cancelador + Gobernanza: eliminador + Agenda principal + Tesorería: pequeño gasto + Tesorería: pequeñas propinas + Tesorería: cualquier + permanece bloqueado en %s + Desbloqueable + Abstenerse + A favor + Reutilizar todos los bloqueos: %s + Reutilizar bloqueo de gobernanza: %s + Bloqueo de gobernanza + Período de bloqueo + En contra + Multiplica votos aumentando el periodo de bloqueo + Votar por %s + Después del período de bloqueo no olvides desbloquear tus tokens + Referendos votados + %s votos + %s × %sx + La lista de votantes aparecerá aquí + %s votos + Cofradía: lista blanca + Tu voto: %s votos + El referéndum se ha completado y la votación ha terminado + Referéndum completado + Estás delegando votos para la pista de referéndum seleccionada. Por favor, pide a tu delegado que vote o elimina la delegación para poder votar directamente. + Ya delegando votos + Has alcanzado el máximo de %s votos para la pista + Número máximo de votos alcanzado + No tienes suficientes tokens disponibles para votar. Disponible para votar: %s. + Revocar tipo de acceso + Revocar por + Eliminar votos + + Anteriormente has votado en referendos en la pista %d. Para hacer esta pista disponible para delegación, necesitas eliminar tus votos existentes. + Anteriormente has votado en referendos en las pistas %d. Para hacer estas pistas disponibles para delegación, necesitas eliminar tus votos existentes. + + ¿Eliminar el historial de tus votos? + Error al actualizar la información sobre el tiempo de ejecución del blockchain. Algunas funcionalidades pueden no trabajar. + Fallo en la actualización del tiempo de ejecución + Contactos + mis cuentas + No se encontró ningún pool con el nombre o ID ingresado. Asegúrate de haber ingresado los datos correctos + Dirección de cuenta o nombre de cuenta + Aquí se mostrarán los resultados de la búsqueda + Resultados de la búsqueda + piscinas activas: %d + miembros + Seleccionar pool + Seleccionar pistas para añadir delegación + Pistas disponibles + Por favor, selecciona las pistas en las que te gustaría delegar tu poder de voto. + Seleccionar pistas para editar delegación + Seleccionar pistas para revocar tu delegación + Pistas no disponibles + Nova necesita que la ubicación esté habilitada para poder realizar el escaneo bluetooth y encontrar tu dispositivo Ledger + Por favor, habilita la geolocalización en las configuraciones del dispositivo + Dirección o w3n + El destinatario es una cuenta del sistema. No está controlado por ninguna empresa o individuo.\n¿Estás seguro de que aún quieres realizar esta transferencia? + Los tokens se perderán + Otorgar autoridad a + Por favor, asegúrate de que la biometría está activada en los Ajustes + Biometría desactivada en los Ajustes + Comunidad + Email + General + Cada operación de firma en monederos con par de claves (creados en nova wallet o importados) debería requerir verificación PIN antes de construir la firma + Solicitar autenticación para firmar operaciones + Preferencias + La grabación de pantalla y las capturas de pantalla no estarán disponibles. La aplicación minimizada no mostrará el contenido + Modo seguro + Seguridad + Soporte & Retroalimentación + Twitter + Wiki + Youtube + Gestión avanzada de staking + El tipo de staking no puede ser cambiado + Ya tienes Staking directo + Staking directo + Has especificado menos que el stake mínimo de %s requerido para ganar recompensas con %s. Deberías considerar usar el Staking en pool para ganar recompensas. + Reutilizar tokens en Gobernanza + Stake mínimo: %s + Recompensas: Pagadas automáticamente + Recompensas: Reclamar manualmente + Ya estás haciendo staking en un pool + Staking en pool + Tu stake es menos que el mínimo para ganar recompensas + Tipo de staking no soportado + sr25519 (recomendado) + Schnorrkel + + La cuenta seleccionada ya está siendo utilizada como controladora. + Añadir autoridad delegada (Proxy) + Tus delegaciones + Delegadores activos + Agrega la cuenta del controlador %s a la aplicación para realizar esta acción. + Añadir delegación + Tu stake es menos del mínimo de %s.\nTener un stake menor que el mínimo aumenta las posibilidades de que el staking no genere recompensas + Stake más tokens + Cambie sus validadores. + Todo está bien ahora. Aquí aparecerán alertas. + Tener una posición desactualizada en la cola de asignación de stake a un validador puede suspender tus recompensas + Mejoras de staking + Canjear tokens sin stake. + Por favor, espera a que comience la próxima era. + Alertas + Ya controlador + Ya tienes staking en %s + Balance de staking + Balance + Stake más + No estás nominando ni validando + Cambiar controlador + Cambiar validadores + %s de %s + Validadores seleccionados + Controlador + Cuenta controladora + Descubrimos que esta cuenta no tiene tokens libres, ¿estás seguro de que quieres cambiar el controlador? + El controlador puede deshacer stake, canjear, volver a hacer stake, cambiar el destino de las recompensas y los validadores. + El controlador se utiliza para: deshacer stake, canjear, volver a hacer stake, cambiar validadores y establecer el destino de las recompensas + Controlador cambiado + Este validador está bloqueado y no puede ser seleccionado en este momento. Por favor, inténtalo de nuevo en la próxima era. + Limpiar filtros + Deseleccionar todo + Llenar el resto con recomendados + Validadores: %d de %d + Seleccionar validadores (máx. %d) + Mostrar seleccionados: %d (máx. %d) + Seleccionar validadores + Recompensas estimadas (% APR) + Recompensas estimadas (% APY) + Actualizar tu lista + Staking a través del navegador DApp Nova + Más opciones de staking + Haz staking y obtén recompensas + Recompensas estimadas + era #%s + Ganancias estimadas + Ganancias estimadas %s + Stake propio del validador + Stake propio del validador (%s) + Los tokens en período de deshacer stake no generan recompensas. + Los tokens no generan recompensas durante el período de deshacer stake + Después del período de deshacer stake necesitarás canjear tus tokens. + No olvides canjear tus tokens después del período de deshacer stake + Tus recompensas se incrementarán a partir de la próxima era. + Obtendrás recompensas aumentadas a partir de la próxima era + Los tokens en stake generan recompensas cada era (%s). + Los tokens en stake producen recompensas cada era (%s) + Nova wallet cambiará el destino de las recompensas\na tu cuenta para evitar restos en staking. + Si quieres deshacer el staking de tokens, tendrás que esperar el período de desestaking (%s). + Para deshacer el staking de tokens tendrás que esperar el período de desestaking (%s) + Información de staking + Nominadores activos + + %d día + %d días + + Stake mínimo + Red %s + En staking + Por favor, cambia tu wallet a %s para configurar un proxy + Selecciona una cuenta stash para configurar proxy + Gestionar + %s (máx. %s) + Se ha alcanzado el número máximo de nominadores. Intenta más tarde + No se puede comenzar el staking + Stake mín. + Necesitas agregar una cuenta %s a tu wallet para comenzar el staking + Mensual + Agrega tu cuenta de controlador en el dispositivo. + Sin acceso a la cuenta de controlador + Nominado: + %s recompensados + Uno de tus validadores ha sido elegido por la red. + Estado activo + Estado inactivo + Tu cantidad en staking es menor que el stake mínimo para recibir una recompensa. + Ninguno de tus validadores ha sido elegido por la red. + Tu staking empezará en la próxima era. + Inactivo + Esperando la próxima Era + esperando la próxima era (%s) + No tienes saldo suficiente para el depósito de proxy de %s. Saldo disponible: %s + Colador + El stake mínimo del colador es mayor que tu delegación. No recibirás recompensas de este colador. + Información sobre el colador + Stake propio del colador + Coladores: %s + Uno o más de tus coladores han sido elegidos por la red. + Delegadores + Has alcanzado el número máximo de delegaciones de %d coladores + No puedes seleccionar un nuevo colador + Nuevo colador + esperando el próximo ronda (%s) + Tienes solicitudes de desestaking pendientes para todos tus coladores. + No hay coladores disponibles para desestaking + Los tokens devueltos se contarán a partir de la próxima ronda + Los tokens en staking producen recompensas cada ronda (%s) + Selecciona un colador + Selecciona un colador... + Obtendrás recompensas aumentadas a partir de la próxima ronda + No recibirás recompensas por esta ronda ya que ninguna de tus delegaciones está activa. + Ya estás desvinculando tokens de este collator. Solo puedes tener una desvinculación pendiente por collator + No puedes desvincularte de este collator + Tu participación debe ser mayor que la participación mínima (%s) para este collator. + No recibirás recompensas + Algunos de tus collators o no han sido elegidos o tienen una participación mínima mayor que tu cantidad participada. No recibirás una recompensa en esta ronda al participar con ellos. + Tus collators + Tu participación está asignada a los próximos collators + Collators activos sin producir recompensas + Collators sin suficiente participación para ser elegidos + Collators que se activarán en la próxima ronda + En espera (%s) + Pago + Pago expirado + + %d día restante + %d días restantes + + Puedes pagarlas por ti mismo, cuando estén cerca de expirar, pero pagarás la tarifa + Las recompensas se pagan cada 2–3 días por los validadores + Todos + Todo el tiempo + La fecha de fin siempre es hoy + Periodo personalizado + %dD + Selecciona la fecha de fin + Finaliza + Últimos 6 meses (6M) + 6M + Últimos 30 días (30D) + 30D + Últimos 3 meses (3M) + 3M + Selecciona la fecha + Selecciona la fecha de inicio + Inicia + Mostrar recompensas de participación por + Últimos 7 días (7D) + 7D + Último año (1Y) + 1Y + Tu saldo disponible es %s, necesitas dejar %s como saldo mínimo y pagar la tarifa de la red de %s. Puedes apostar no más de %s. + Autoridades delegadas (proxy) + Ranura actual en cola + Nueva ranura en cola + Regresar al stake + Todo des-stake + Los tokens devueltos se contarán desde la próxima era + Cantidad personalizada + La cantidad que desea regresar al stake es mayor que el saldo des-stake + Último des-staked + Más rentable + No sobresuscrito + Con identidad en cadena + No penalizado + Límite de 2 validadores por identidad + con al menos un contacto de identidad + Validadores recomendados + Validadores + Recompensa estimada (APY) + Canjear + Canjeable: %s + Recompensa + Destino de la recompensa + Recompensas transferibles + Era + Detalles de la recompensa + Validador + Ganancias con reinversión + Ganancias sin reinversión + ¡Perfecto! Todas las recompensas están pagadas. + ¡Asombroso! No tienes recompensas sin pagar + Pagar todo (%s) + Recompensas pendientes + Recompensas sin pagar + Recompensas + Acerca de las recompensas + Recompensas (APY) + Destino de las recompensas + Seleccionar por uno mismo + Seleccionar la cuenta de pago + Seleccionar recomendado + seleccionados %d (máx. %d) + Validadores (%d) + Actualizar Controlador a Stash + Usar Proxies para delegar operaciones de Staking a otra cuenta + Las Cuentas Controladoras Están Siendo Descontinuadas + Seleccionar otra cuenta como controladora para delegarle operaciones de gestión de staking + Mejorar la seguridad del staking + Establecer validadores + Los validadores no están seleccionados + Seleccionar validadores para comenzar el staking + El stake mínimo recomendado para recibir consistentemente recompensas es %s. + No puedes hacer staking con menos del valor mínimo de la red (%s) + La apuesta mínima debe ser mayor que %s + Reinvertir + Reinvertir recompensas + ¿Cómo usar tus recompensas? + Selecciona tu tipo de recompensas + Cuenta de pago + Recorte + Apostar %s + Apostar máximo + Período de apuesta + Tipo de apuesta + Debes confiar en que tus nominaciones actúen de manera competente y honesta, basar tu decisión puramente en su rentabilidad actual podría llevar a ganancias reducidas o incluso pérdida de fondos. + Elige cuidadosamente a tus validadores, ya que deben actuar de forma competente y honesta. Basar tu decisión puramente en la rentabilidad podría llevar a recompensas reducidas o incluso pérdida de la apuesta + Apostar con tus validadores + Nova Wallet seleccionará a los mejores validadores basándose en criterios de seguridad y rentabilidad + Apostar con validadores recomendados + Comenzar a apostar + Reserva + La reserva puede apostar más y establecer el controlador. + Reserva se utiliza para: apostar más y establecer el controlador + La cuenta de reserva %s no está disponible para actualizar la configuración de apuesta + El nominador obtiene ingresos pasivos al bloquear sus tokens para asegurar la red. Para lograrlo, el nominador debe seleccionar varios validadores para apoyar. El nominador debe ser cuidadoso al seleccionar a los validadores. Si el validador seleccionado no se comporta adecuadamente, se aplicarán penalizaciones de recorte a ambos, dependiendo de la gravedad del incidente. + Nova Wallet ayuda a los nominadores seleccionando validadores. La aplicación móvil obtiene datos de la blockchain y compone una lista de validadores, que tienen: mayores ganancias, identidad con información de contacto, no han sido recortados y están disponibles para recibir nominaciones. Nova Wallet también se preocupa por la descentralización, por lo que si una persona o una empresa opera varios nodos validadores, solo se mostrarán hasta 2 nodos de ellos en la lista recomendada. + ¿Quién es un nominador? + Las recompensas por staking están disponibles para ser pagadas al final de cada era (6 horas en Kusama y 24 horas en Polkadot). La red almacena las recompensas pendientes durante 84 eras y, en la mayoría de los casos, los validadores pagan las recompensas para todos. Sin embargo, los validadores podrían olvidar o podría sucederles algo, por lo tanto, los nominadores pueden pagar sus recompensas por sí mismos. + Aunque las recompensas suelen ser distribuidas por los validadores, Nova Wallet ayuda alertando si hay alguna recompensa sin pagar que esté cerca de expirar. Recibirás alertas sobre esto y otras actividades en la pantalla de staking. + Recibiendo recompensas + El staking es una opción para obtener ingresos pasivos al bloquear tus tokens en la red. Las recompensas de staking se asignan cada era (6 horas en Kusama y 24 horas en Polkadot). Puedes hacer staking tanto tiempo como desees, y para deshacer el staking de tus tokens necesitas esperar a que termine el periodo de desbloqueo, haciendo tus tokens disponibles para ser redimidos. + El staking es una parte importante de la seguridad y fiabilidad de la red. Cualquier persona puede ejecutar nodos validadores, pero solo aquellos que tengan suficientes tokens apostados serán elegidos por la red para participar en la composición de nuevos bloques y recibir las recompensas. Los validadores a menudo no tienen suficientes tokens por sí mismos, por lo que los nominadores los ayudan bloqueando sus tokens para ellos para alcanzar la cantidad de apuesta requerida. + ¿Qué es el staking? + El validador ejecuta un nodo de blockchain 24/7 y se requiere que tenga suficiente stake bloqueado (tanto propio como proporcionado por los nominadores) para ser elegido por la red. Los validadores deben mantener el rendimiento y la fiabilidad de sus nodos para ser recompensados. Ser un validador es casi un trabajo de tiempo completo, hay empresas que se centran en ser validadores en las redes blockchain. + Cualquiera puede ser un validador y ejecutar un nodo de blockchain, pero eso requiere un cierto nivel de habilidades técnicas y responsabilidad. Las redes de Polkadot y Kusama tienen un programa llamado Programa de Mil Validadores para proporcionar apoyo a los principiantes. Además, la red misma siempre recompensará más a los validadores que tienen menos participación (pero suficiente para ser elegidos) para mejorar la descentralización. + ¿Quién es un validador? + Cambia tu cuenta a stash para configurar el controlador. + Staking + %s staking + Recompensado + Total apostado + Límite de impulso + Para mi collator + sin Yield Boost + con Yield Boost + para apostar automáticamente %s todos mis tokens transferibles por encima de + para apostar automáticamente %s (antes: %s) todos mis tokens transferibles por encima de + Quiero apostar + Yield Boost + Tipo de Staking + Estás desapostando todos tus tokens y no puedes apostar más. + Incapaz de apostar más + Al desvincular parcialmente, deberías dejar al menos %s en la apuesta. ¿Quieres realizar la desvinculación completa desapostando el %s restante también? + Cantidad demasiado pequeña permanece en la apuesta + La cantidad que deseas desapostar es mayor que el saldo apostado. + Desvincular + Las transacciones de desvinculación aparecerán aquí + Las transacciones de desvinculación se mostrarán aquí + Desvinculando: %s + Tus tokens estarán disponibles para canjear después del período de desvinculación. + Has alcanzado el límite de solicitudes de desvinculación (%d solicitudes activas). + Límite de solicitudes de desvinculación alcanzado + Período de desvinculación + Desapostar todo + ¿Desapostar todo? + Recompensa estimada (% APY) + Recompensa estimada + Información del validador + Sobre suscrito. No recibirás recompensas del validador en esta era. + Nominadores + Sobre suscrito. Solo los nominadores con mayor apuesta son recompensados. + Propio + No hay resultados de búsqueda.\nAsegúrate de haber escrito la dirección completa de la cuenta + El validador es sancionado por comportamientos indebidos (por ejemplo, estar desconectado, atacar la red o usar software modificado) en la red. + Apuesta total + Apuesta total (%s) + La recompensa es menor que la comisión de la red. + Anual + Tu apuesta está asignada a los siguientes validadores. + Tu apuesta está asignada a los próximos validadores + Elegidos (%s) + Validadores que no fueron elegidos en esta era. + Validadores sin suficiente apuesta para ser elegidos + Otros, que están activos sin tu asignación de apuesta. + Validadores activos sin tu asignación de apuesta + No elegidos (%s) + Tus tokens están asignados a los validadores sobresuscritos. No recibirás recompensas en esta era. + Recompensas + Tu apuesta + Tus validadores + Tus validadores cambiarán en la próxima era. + Has bloqueado tokens en tu saldo debido a %s. Para continuar debes ingresar menos de %s o más de %s. Para apostar otra cantidad debes quitar tus bloqueos de %s. + No puedes apostar la cantidad especificada + Seleccionados: %d (máx %d) + Saldo disponible: %1$s (%2$s) + %s con tus tokens en apuesta + Participa en la gobernanza + Apuesta más de %1$s y %2$s con tus tokens en apuesta + participa en la gobernanza + Apuesta en cualquier momento con tan solo %1$s. Tu apuesta generará activamente recompensas %2$s + en %s + Apuesta en cualquier momento. Tu apuesta generará activamente recompensas %s + Encuentra más información sobre\n%1$s staking en %2$s + Nova Wiki + Las recompensas se acumulan %1$s. Apuesta más de %2$s para una distribución automática de recompensas, de lo contrario necesitas reclamar recompensas manualmente + cada %s + Las recompensas se acumulan %s + Las recompensas se acumulan %s. Necesitas reclamar recompensas manualmente + Las recompensas se acumulan %s y se añaden al saldo transferible + Las recompensas se acumulan %s y se añaden de nuevo a la apuesta + Las recompensas y el estado de la apuesta varían con el tiempo. %s de vez en cuando + Supervisa tu apuesta + Comenzar Apuesta + Ver %s + Términos de Uso + %1$s es una %2$s con %3$s + sin valor de token + red de prueba + %1$s\nen tus tokens %2$s\npor año + Gana hasta %s + Desanclar en cualquier momento y canjear tus fondos %s. No se ganan recompensas mientras se está desancando + después de %s + El pool que has seleccionado está inactivo debido a que no se han seleccionado validadores o su participación es inferior al mínimo.\n¿Estás seguro de que deseas continuar con el Pool seleccionado? + Se ha alcanzado el número máximo de nominadores. Intente de nuevo más tarde + %s actualmente no está disponible + Validadores: %d (máx %d) + Token para pagar la tasa de red + La tasa de red se agrega al monto ingresado + Este par no es compatible + Deberías mantener al menos %s después de pagar %s de tasa de red ya que estás sosteniendo tokens insuficientes + Debes mantener al menos %s para recibir el token %s + Puedes intercambiar hasta %1$s ya que necesitas pagar %2$s por la tasa de red. + Puedes intercambiar hasta %1$s ya que necesitas pagar %2$s de tasa de red y también convertir %3$s a %4$s para cumplir con el saldo mínimo de %5$s. + Intercambiar máximo + Intercambiar mínimo + Deberías dejar al menos %1$s en tu saldo. ¿Quieres realizar el intercambio completo agregando también el %2$s restante? + El monto restante en tu balance es demasiado pequeño + Deberías mantener al menos %1$s después de pagar %2$s de tasa de red y convertir %3$s a %4$s para cumplir con el saldo mínimo de %5$s.\n\n¿Quieres realizar el intercambio completo agregando también el %6$s restante? + Pagar + Recibir + Selecciona un token + No hay suficientes tokens para intercambiar + No hay suficiente liquidez + No puedes recibir menos de %s + Compra instantánea de %s con tarjeta de crédito + Transferir %s desde otra red + Recibir %s con QR o tu dirección + Obtener %s usando + El deslizamiento debe estar especificado entre %s y %s + Deslizamiento inválido + Selecciona un token para pagar + Selecciona un token para recibir + Ingresar monto + Ingresa otro monto + Para pagar la comisión de red con %s, Nova intercambiará automáticamente %s por %s para mantener el balance mínimo de %s en tu cuenta. + Una comisión de red cobrada por la cadena de bloques para procesar y validar cualquier transacción. Puede variar dependiendo de las condiciones de la red o la velocidad de la transacción. + El fondo no tiene suficiente liquidez para intercambiar + La diferencia de precio se refiere a la diferencia en el precio entre dos activos diferentes. Al realizar un intercambio en cripto, la diferencia de precio es generalmente la diferencia entre el precio del activo por el que estás intercambiando y el precio del activo con el que estás intercambiando. + Diferencia de precio + %s ≈ %s + Tasa de cambio entre dos criptomonedas diferentes. Representa cuánto de una criptomoneda puedes obtener a cambio de una cierta cantidad de otra criptomoneda. + Tasa + Tasa antigua: %1$s ≈ %2$s.\nNueva tasa: %1$s ≈ %3$s + La tasa de intercambio fue actualizada + Repetir la operación + Configuraciones de intercambio + Deslizamiento + El deslizamiento de intercambio es una ocurrencia común en el comercio descentralizado donde el precio final de una transacción de intercambio podría diferir ligeramente del precio esperado, debido a las cambiantes condiciones del mercado. + Ingrese otro valor + Ingrese un valor entre %s y %s + Deslizamiento + La transacción podría ser adelantada debido al alto deslizamiento. + La transacción podría ser revertida debido a la baja tolerancia al deslizamiento. + La cantidad de %s es menor que el balance mínimo de %s + Estás intentando intercambiar una cantidad demasiado pequeña + Staking + Cartera + Hoy + Copiar hash + Comisión + Desde + Hash Extrinsic + Detalles de la transacción + Ver en %s + Ver en Polkascan + Ver en Subscan + %s a las %s + Completado + Fallido + Pendiente + De: %s + Para: %s + Transferencia + Las transferencias entrantes y salientes aparecerán aquí + Tus operaciones se mostrarán aquí + Eliminar votos para delegar en estas pistas + Pistas a las que ya has delegado votos + Pistas no disponibles + Pistas en las que tienes votos existentes + Instalar + Versión %s + Actualización disponible + Para evitar problemas y mejorar tu experiencia de usuario, te recomendamos encarecidamente que instales las actualizaciones recientes lo antes posible + Actualización crítica + Último + ¡Muchas nuevas características increíbles están disponibles para Nova Wallet! Asegúrate de actualizar tu aplicación para acceder a ellas + Actualización importante + Crítica + Importante + Ver todas las actualizaciones disponibles + Nombre + Nombre de la cartera + Este nombre se mostrará solo para ti y se almacenará localmente en tu dispositivo móvil. + Esta cuenta no ha sido elegida por la red para participar en la era actual + Volver a votar + Votar + Estado de la votación + Comprar + Comprar con + Recibir + Recibir %s + Enviar + Intercambiar + Activos + Tus activos aparecerán aquí.\nAsegúrate de que el filtro \"Ocultar saldos en cero\"\nesté desactivado + Valor de los activos + Disponible + Delegado + Detalles del saldo + Saldo total + Total después de la transferencia + Congelado + Bloqueado + Redimible + Reservado + Transferible + Desvinculando + Cartera + Nueva conexión + + %s cuenta no encontrada. Agrega la cuenta a la cartera en Configuraciones + %s cuentas no encontradas. Agrega las cuentas a la cartera en Configuraciones + + Algunas de las redes requeridas solicitadas por \"%s\" no son compatibles en Nova Wallet + Las sesiones de Wallet Connect aparecerán aquí + WalletConnect + dApp desconocida + + %s red no soportada está oculta + %s redes no soportadas están ocultas + + WalletConnect v2 + Transferencia entre cadenas + Criptomonedas + Monedas fiduciarias + Monedas fiduciarias populares + Moneda + Detalles de la extrínseca + Ocultar activos con saldos en cero + Otras transacciones + Mostrar + Recompensas y Penalizaciones + Intercambios + Filtros + Transferencias + Gestionar activos + Ejemplos de nombre: Cuenta principal, Mi validador, Crowdloans de Dotsama, etc. + Comparte este QR con el emisor + Permite que el emisor escanee este código QR + Mi dirección %s para recibir %s: + Compartir código QR + Destinatario + Asegúrate de que la dirección sea\nde la red correcta + El formato de la dirección es inválido.\nAsegúrate de que la dirección\npertenezca a la red correcta + Saldo mínimo + Debido a las restricciones entre cadenas, puedes transferir no más de %s + No tienes suficiente saldo para pagar la tarifa de cadena cruzada de %s.\nSaldo restante tras la transferencia: %s + La tarifa de cadena cruzada se agrega al monto ingresado. El destinatario puede recibir parte de la tarifa de cadena cruzada + Confirmar transferencia + Cadena cruzada + Tarifa de cadena cruzada + Tu transferencia fallará ya que la cuenta de destino no tiene suficiente %s para aceptar transferencias de otros tokens + El destinatario no puede aceptar la transferencia + Tu transferencia fallará ya que el monto final en la cuenta de destino será menor que el saldo mínimo. Por favor, intenta aumentar el monto. + Tu transferencia eliminará la cuenta del almacenamiento de bloques ya que hará que el saldo total sea menor que el saldo mínimo. + Tu cuenta será eliminada de la blockchain después de la transferencia ya que hace que el saldo total sea menor que el mínimo + La transferencia eliminará la cuenta + Tu cuenta será eliminada de la blockchain después de la transferencia ya que hace que el saldo total sea menor que el mínimo. El saldo restante también será transferido al destinatario. + Desde la red + Necesitas tener al menos %s para pagar esta tarifa de transacción y mantener el saldo por encima del mínimo de la red. Tu saldo actual es: %s. Necesitas añadir %s a tu saldo para realizar esta operación. + A mí mismo + En cadena + La siguiente dirección: %s es conocida por ser utilizada en actividades de phishing, por lo tanto, no recomendamos enviar tokens a esa dirección. ¿Te gustaría proceder de todos modos? + Alerta de estafa + El destinatario ha sido bloqueado por el propietario del token y actualmente no puede aceptar transferencias entrantes + El destinatario no puede aceptar la transferencia + Red del destinatario + A la red + Enviar %s desde + Enviar %s en + a + Remitente + Tokens + Enviar a este contacto + Detalles de la transferencia + Tu saldo + %s (%s) + Direcciones %s para %s + Nova detectó problemas con la integridad de la información sobre direcciones %1$s. Por favor, contacta al propietario de %1$s para resolver los problemas de integridad. + La verificación de integridad falló + Destinatario inválido + No se encontró una dirección válida para %s en la red %s + %s no encontrado + Los servicios w3n %1$s no están disponibles. Inténtalo de nuevo más tarde o introduce la dirección %1$s manualmente + Error al resolver w3n + Nova no puede resolver el código para el token %s + El token %s aún no es compatible + Ayer + Yield Boost se desactivará para los collators actuales. Nuevo collator: %s + ¿Cambiar el Collator con Yield Boost? + No tienes saldo suficiente para pagar la comisión de red de %s y la comisión de ejecución de Yield Boost de %s.\nSaldo disponible para pagar la comisión: %s + No hay suficientes tokens para pagar la primera comisión de ejecución + No tienes suficiente saldo para pagar la comisión de red de %s y no caer por debajo del umbral %s.\nSaldo disponible para pagar la comisión: %s + No hay suficientes tokens para permanecer por encima del umbral + Tiempo de aumento de stake + Yield Boost apostará automáticamente %s todos mis tokens transferibles por encima de %s + Con Yield Boost + diff --git a/common/src/main/res/values-it/strings.xml b/common/src/main/res/values-it/strings.xml new file mode 100644 index 0000000000..14212e5f09 --- /dev/null +++ b/common/src/main/res/values-it/strings.xml @@ -0,0 +1,1398 @@ + + + Contattaci + Github + Informativa sulla privacy + Valutaci + Telegram + Termini e condizioni + Termini e condizioni + Informazioni sull\'applicazione + Versione dell\'applicazione + Sito Web + Inserisci un indirizzo %s valido... + L\'indirizzo Evm deve essere valido o vuoto... + Inserisci un indirizzo substrate valido... + Aggiungi account + Account già esistente. Si prega di provare un altro. + Traccia qualsiasi portafoglio tramite il suo indirizzo + Aggiungi un portafoglio solo visione + Frase mnemonica + Scrivi la frase e conservala in un posto sicuro + Assicurati di scrivere correttamente e in modo leggibile la tua frase. + %s indirizzo + Conferma mnemonica + Seleziona le parole nell\'ordine corretto. + Controlliamolo ancora una volta + Scegli le parole nell\'ordine corretto + Crea un nuovo account + Non utilizzare il clipboard o gli screenshot sul tuo dispositivo mobile, cerca metodi sicuri per il backup (ad esempio, carta) + Il nome verrà utilizzato solo in questa applicazione. Puoi modificarlo in seguito. + Crea nome portafoglio + Backup mnemonico + Il mnemonico è utilizzato per recuperare l\'accesso all\'account. Scrivilo, non saremo in grado di recuperare il tuo account senza di esso! + Account con un segreto modificato + Dimenticare + Assicurati di aver esportato il tuo portafoglio prima di procedere. + Dimenticare il portafoglio? + Percorso di derivazione Ethereum non valido + Percorso di derivazione Substrate non valido + Questo portafoglio è accoppiato con %1$s. Nova ti aiuterà a eseguire qualsiasi operazione che desideri, e ti verrà richiesto di firmarle utilizzando %1$s + Non supportato da %s + Questo è un portafoglio di sola osservazione, Nova può mostrarti i saldi e altre informazioni, ma non puoi effettuare transazioni con questo portafoglio + Inserisci soprannome del portafoglio... + Per favore, prova un altro. + Tipo di crittografia per coppia chiave Ethereum + Percorso di derivazione segreto Ethereum + Esporta account + Esporta + Questo è necessario per crittografare i dati e salvare il file JSON. + Imposta una nuova password + Salva il tuo segreto e conservalo in un posto sicuro + Cambia password + Scrivi il tuo segreto e conservalo in un posto sicuro + Json di ripristino non valido. Assicurati che l\'input contenga un json valido. + Il seed non è valido. Assicurati che l\'input contenga 64 simboli esadecimali. + Il JSON non contiene informazioni sulla rete. Si prega di specificarle di seguito. + Fornisci il tuo JSON di ripristino + Tipicamente una frase di 12 parole (ma potrebbe essere 15, 18, 21 o 24) + Scrivi le parole separatamente con uno spazio, senza virgole o altri segni + Inserisci le parole nell\'ordine corretto + Password + 0xAB + Inserisci il tuo seed grezzo + Nova è compatibile con tutte le app + Importa portafoglio + Account + Il tuo percorso di derivazione contiene simboli non supportati o ha una struttura non corretta + Percorso di derivazione non valido + File JSON + Assicurati che l\'app di rete sia installata sul tuo dispositivo Ledger utilizzando l\'app Ledger Live. Apri l\'app di rete sul tuo dispositivo Ledger. + Aggiungi almeno un account + Aggiungi account al tuo portafoglio + Guida ufficiale alla connessione Bluetooth di Ledger + Assicurati che l\'app di Rete sia installata sul tuo dispositivo Ledger utilizzando l\'app Ledger Live + Open the network app on your Ledger device + Consenti a Nova Wallet di accedere a Bluetooth e Posizione + Select account to add to wallet + Collega Ledger Nano X + Ledger Nano X + Si prega di abilitare Bluetooth nelle impostazioni del telefono e sul dispositivo Ledger. Sblocca il tuo dispositivo Ledger e apri l\'app %s. + Seleziona il tuo dispositivo Ledger + Frase di 12, 15, 18, 21 o 24 parole + Non hai un account per questa rete, puoi creare o importare un account. + Account necessario + Nessun account trovato + Parity Signer + %s non supporta %s + Gli account seguenti sono stati letti con successo da %s + Ecco i tuoi account + Codice QR non valido, assicurati di stare scansionando il codice QR da %s + Assicurati di selezionare il primo in alto + Open Parity Signer application on your smartphone + Go to “Keys” tab. Select seed, then account you would like to add to Nova Wallet + Parity Signer ti fornirà un codice QR da scansionare + Aggiungi portafoglio da %s + %s non supporta la firma di messaggi arbitrari — solo transazioni + La firma non è supportata + Scansiona il codice QR da %s + Scansiona il codice QR con il %s + Ho un errore in %s + Il codice QR è scaduto + Per motivi di sicurezza le operazioni generate sono valide solo per %s.\nGenera un nuovo codice QR e firmalo con %s + Il codice QR è valido per %s + Assicurati di scansionare il codice QR per l\'operazione di firma attuale + Firma con %s + Cofre di Polkadot + Fai attenzione, il nome del percorso di derivazione dovrebbe essere vuoto + Open Polkadot Vault application on your smartphone + Go to “Key Sets” tab. Select your Key set, Network, and then the account you would like to add to Nova Wallet + Il Cofre di Polkadot ti fornirà il codice QR da scannerizzare + Chiave privata + Delegato a te (Procurations) + Qualsiasi + Asta + Annulla Procura + Governance + Giudizio di identità + Pool di nomina + Non Trasferire + Staking + Ho già un account + 64 simboli esadecimali + Seleziona il portafoglio hardware + Seleziona il tipo di segreto + Seleziona il portafoglio + Account con un segreto condiviso + Tipo di crittografia della coppia di chiavi Substrate + Percorso di derivazione segreto Substrate + Soprannome del portafoglio + Moonbeam, Moonriver e altre reti + Indirizzo EVM (Opzionale) + Portafogli predefiniti + Polkadot, Kusama, Karura, KILT e altre 50 reti + Traccia l\'attività di qualsiasi portafoglio senza inserire la tua chiave privata in Nova Wallet + Il tuo portafoglio è solo per la visualizzazione, il che significa che non puoi eseguire alcuna operazione con esso + Ops! La chiave manca + solo per la visualizzazione + Usa Polkadot Vault, Ledger o Parity Signer + Collega un portafoglio hardware + Aggiungi un account %s + Aggiungi portafoglio + Cambia l\'account %s + Cambia account + Devi aggiungere un account %s al portafoglio per delegare + Delega a + Account che delega + Portafoglio che delega + Conferisce tipo di accesso + Il deposito rimane riservato sul tuo account finché il proxy non viene rimosso + Hai raggiunto il limite di %s proxy aggiunti in %s. Rimuovi i proxy per aggiungerne di nuovi + Limite massimo di proxy raggiunto + L\'indirizzo del contratto inserito è presente in Nova come token %s. + L\'indirizzo del contratto inserito è presente in Nova come token %s. Sei sicuro di volerlo modificare? + Questo token esiste già + Assicurati che l\'URL fornito abbia la seguente forma: www.coingecko.com/en/coins/tether. + Link CoinGecko non valido + L\'indirizzo del contratto inserito non è un contratto ERC-20 %s. + Indirizzo del contratto non valido + I decimali devono essere almeno 0 e non superiori a 36. + Valore dei decimali non valido + Inserisci l\'indirizzo del contratto + Inserisci i decimali + Inserisci il simbolo + Aggiungi token + Indirizzo del contratto + Decimali + Collegamento Coingecko per informazioni sul prezzo (opzionale) + Simbolo + Inserisci i dettagli del token ERC-20 + Seleziona la rete per aggiungere il token ERC-20 + Crowdloans + Governance v1 + OpenGov + Elezioni + Staking + Vesting + Compra token + Hai ricevuto i tuoi DOT dai crowdloan? Inizia a fare staking dei tuoi DOT oggi per ottenere il massimo delle ricompense possibili! + Potenzia i tuoi DOT \ndei DOT \", + Filtra i token + Tutte le reti + Gestisci i token + Non trasferire %s sul conto controllato da Ledger poiché Ledger non supporta l\'invio di %s, quindi gli asset rimarranno bloccati su questo conto + Ledger non supporta questo token + Cerca per rete o token + Nessuna rete o token con il nome inserito è stata trovata + I tuoi portafogli + Non hai token da inviare. \nCompra o ricevi token sul tuo \nconto. + Token da pagare + Token da ricevere + Autenticazione biometrica + Acquisto iniziato! Attendi fino a 60 minuti. Puoi controllare lo stato sulla email. + Per continuare l\'acquisto sarai reindirizzato dall\'app Nova Wallet a %s + Continuare nel browser? + Asset + Bilancio disponibile + Spiacente, la richiesta di controllo del bilancio non è riuscita. Si prega di riprovare più tardi. + Spiacente, non siamo riusciti a contattare il fornitore di trasferimento. Si prega di riprovare più tardi. + Spiacente, non hai abbastanza fondi per spendere l\'importo specificato + Commissione di trasferimento + Rete non risponde + A + Accetta i termini... + Account + Indirizzo dell\'account + Attivo + Aggiungi + Aggiungi delegazione + Indirizzo + Avanzato + Tutti + Consenti + Importo + La somma è troppo bassa + La somma è troppo grande + Applicato + Applica + Richiedi di nuovo + Attenzione! + Disponibile: %s + Media + Saldo + Bonus + Chiama + Annulla + Sei sicuro di voler annullare questa operazione? + Spiacenti, non hai l\'appropriata app per elaborare questa richiesta + Impossibile aprire questo link + Puoi utilizzare fino a %s poiché è necessario pagare %s per la commissione di rete. + Catena + Modifica + Scegli la rete + Chiudi + Sei sicuro di voler chiudere questa schermata?\nLe tue modifiche non verranno applicate. + Completato + Completato (%s) + Conferma + Conferma + Sei sicuro? + Confermato + Continua + Copiato negli appunti + Copia indirizzo + Copia ID + Tipo di crittografia della coppia di chiavi + Data + %s e %s + Dettagli + Disabilitato + Disconnetti + Fatto + Non mostrare più + Modifica + %s (+%s altro) + Seleziona app email + Abilita + Inserisci l\'indirizzo... + Inserisci l\'importo... + Errore + Token insufficienti + Evento + Indirizzo EVM + Il tuo account verrà rimosso dalla blockchain dopo questa operazione perché renderà il saldo totale inferiore al minimo. + L\'operazione rimuoverà l\'account + Scaduto + Esplora + La commissione di rete stimata %s è molto più alta rispetto alla commissione predefinita (%s). Ciò potrebbe essere dovuto a congestione temporanea della rete. Puoi aggiornare per attendere una commissione di rete più bassa. + Commissione di rete troppo alta + Ordina per: + Filtri + Scopri di più + + ogni giorno + ogni %s giorni + + quotidiano + quotidiano + Ottieni %s + Governance + Stringa esadecimale + + %d ora + %d ore + + Come funziona + Ho capito + Informazioni + Imposta una password... + Il codice QR non è valido + Per saperne di più + Scopri di più su + Ledger + %s rimasti + Massimo + %s massimo + + %d minuto + %d minuti + + L\'account %s manca + Modulo + Rete + %s non è supportato + Reti + + Rete + Reti + + Avanti + No + Applicazione di importazione file non trovata sul dispositivo. Si prega di installarla e riprovare. + Nessuna app adatta trovata sul dispositivo per gestire questo intento + Nessuna modifica + Stiamo per mostrare il tuo mnemonico. Assicurati che nessuno possa vedere il tuo schermo e non fare screenshot; potrebbero essere raccolti da malware di terze parti + Nessuno + Spiacenti, non hai abbastanza fondi per pagare la tassa di rete. + Saldo insufficiente + Spento + OK + Va bene, indietro + Acceso + In corso + Facoltativo + Seleziona un\'opzione + Incolla + / anno + %s / anno + all\'anno + % + Le autorizzazioni richieste sono necessarie per utilizzare questa schermata. Dovresti abilitarle nelle Impostazioni. + Autorizzazioni negate + Le autorizzazioni richieste sono necessarie per utilizzare questa schermata. + Autorizzazioni necessarie + Prezzo + Procedi + Deposito proxy + Revoca accesso + Leggi di più + Consigliato + Aggiorna commissioni + Rifiuta + Rimuovi + Obbligatorio + Ripristina + Riprova + Revoca + Salva + Scansiona il codice QR + Cerca + Qui verranno visualizzati i risultati della ricerca + Risultati della ricerca: %d + Percorso di derivazione segreto + Impostazioni + Condividi + Firma la richiesta + Firma non valida + Salta + Salta il processo + Si è verificato un errore durante l\'invio di alcune transazioni. Vuoi riprovare? + Impossibile inviare alcune transazioni + Ordina per + Stato + Indirizzo Substrate + Tempo rimasto + Titolo + Apri Impostazioni + Il tuo saldo è troppo piccolo + Totale + ID della transazione + Transazione inviata + Prova di nuovo + Tipo + Per favore, riprova con un altro input. Se l\'errore persiste, contatta il supporto. + Sconosciuto + + %s non supportata + %s non supportate + + Illimitato + Aggiorna + Usa + Il destinatario dovrebbe essere un indirizzo %s valido + Destinatario non valido + In attesa + Portafoglio + Avvertimento + + L\'importo deve essere positivo + Referendum + Vota + Traccia + Il nodo è già stato aggiunto in precedenza. Per favore, prova un altro nodo. + Impossibile stabilire una connessione con il nodo. Per favore, prova un altro. + Purtroppo, la rete non è supportata. Per favore, prova una delle seguenti: %s. + Elimina + Conferma eliminazione di %s. + Eliminare la rete? + Si prega di controllare la connessione o riprovare più tardi + Personalizzato + Predefinito + Reti + Aggiungi connessione + Scansione codice QR + Le crowdloan private non sono ancora supportate + Crowdloan privata + Informazioni sulle crowdloan + Diretto + Ulteriori informazioni sui diversi contributi ad Acala + Liquid + Attive (%s) + Accetta i Termini e le Condizioni + Bonus del portafoglio Nova (%s) + Il codice di riferimento Astar dovrebbe essere un indirizzo Polkadot valido + Impossibile contribuire all\'importo scelto poiché l\'importo raccolto risultante supererà il limite del crowdloan. Il contributo massimo consentito è %s. + Impossibile contribuire al crowdloan selezionato poiché il suo limite è già stato raggiunto. + Superato limite crowdloan + Contribuisci al crowdloan + Contributo + Hai contribuito: %s + Liquid + Parallelo + I tuoi contributi\n appariranno qui + Ritorna in %s + Da restituire dal parachain + %s (tramite %s) + Crowdloans + Ottieni un bonus speciale + I crowdloan verranno visualizzati qui + Impossibile contribuire al crowdloan selezionato poiché è già terminato. + Il crowdloan è concluso + Inserisci il tuo codice di riferimento + Informazioni sui crowdloan + Scopri il crowdloan di %s + Sito web del crowdloan di %s + Periodo di leasing + Scegli le parachain a cui contribuire con il tuo %s. Riceverai indietro i token che hai contribuito e, se la parachain vince uno slot, riceverai le ricompense alla fine dell\'asta + Devi aggiungere un account %s al portafoglio per poter contribuire + Applica bonus + Se non hai un codice di riferimento, puoi applicare il codice di riferimento Nova per ricevere un bonus per il tuo contributo + Non hai applicato il bonus + Il crowdloan di Moonbeam supporta solo account di tipo crittografico SR25519 o ED25519. Si prega di considerare l\'uso di un altro account per contribuire + Impossibile contribuire con questo account + Dovresti aggiungere un account Moonbeam al portafoglio per partecipare al crowdloan di Moonbeam + Manca l\'account di Moonbeam + Questo crowdloan non è disponibile nella tua località + Il tuo paese non è supportato + %s destinazione ricompensa + Invia l\'accordo + Devi inviare l\'accordo con i Termini e le Condizioni sulla blockchain per procedere. Questo deve essere fatto solo una volta per tutti i contributi successivi a Moonbeam + Ho letto e accetto i Termini e Condizioni + Raccolto + Codice di riferimento + Il codice di riferimento non è valido. Si prega di provare un altro + %s Termini e condizioni + L\'importo minimo consentito per contribuire è %s. + L\'importo del contributo è troppo piccolo + I tuoi token %s saranno restituiti dopo il periodo di leasing. + I tuoi contributi + Raccolto: %s di %s + Le DApp alle quali hai permesso l\'accesso per vedere il tuo indirizzo quando le utilizzi + L\'applicazione \ + Rimuovi da Autorizzati? + DApp Autorizzate + Catalogo + Approva questa richiesta se ti fidi dell\'applicazione + Consenti a \"%s\" di accedere agli indirizzi del tuo account? + Approva questa richiesta se ti fidi dell\'applicazione.\nControlla i dettagli della transazione. + DApp + DApp + Preferiti + Aggiungi ai preferiti + \"%s\" DApp verrà rimosso dai Preferiti + Rimuovi dai Preferiti? + L\'elenco delle DApp apparirà qui + Esplora il web usando i tuoi account da Nova Wallet + Benvenuto in Nova Browser + Aggiungi ai Preferiti + Modalità Desktop + Rimuovi dai Preferiti + Impostazioni Pagina + Ok, riportami indietro + Nova Wallet ritiene che questo sito web possa compromettere la sicurezza dei tuoi account e dei tuoi token + Rilevato Phishing + Cerca per nome o inserisci l\'URL + Catena non supportata con hash di genesi %s + Assicurati che l\'operazione sia corretta + Impossibile firmare l\'operazione richiesta + + Identificativo della rete non trovato + Il dominio dal link %s non è permesso + Il tipo di governance non è specificato + Il tipo di governance non è supportato + Tipo di crittografia non valido + Percorso di derivazione non valido + La mnemonica non è valida + URL non valido + +%d + Cerca per indirizzo o nome + Formato dell\'indirizzo non valido. Assicurati che l\'indirizzo appartenga alla rete corretta + risultati della ricerca: %d + Nova Wallet aggiunge automaticamente le autorità delegate (Proxy) a una categoria separata per te. Puoi sempre gestire i portafogli nelle Impostazioni. + Aggiornamento dei conti delegati + Votato per sempre + Delega + Tutti gli account + Individui + Organizzazioni + Il periodo di sblocco inizierà dopo la revoca di una delega + I tuoi voti voteranno automaticamente insieme al voto dei tuoi delegati + Informazioni sulla delega + Individuo + Organizzazione + Voti delegati + Deleghe + Modifica delega + Non puoi delegare a te stesso, per favore scegli un altro indirizzo + Non puoi delegare a te stesso + Raccontaci di più su di te in modo che gli utenti di Nova possano conoscerti meglio + Sei un delegato? + Descriviti + Attraverso %s percorsi + Ultimo voto %s + I tuoi voti tramite %s + I tuoi voti: %s tramite %s + Rimuovi voti + Revoca delega + Dopo che il periodo di undelegating è scaduto, dovrai sbloccare i tuoi token. + Voti delegati + Deleghe + Ultimo voto %s + Percorsi + Seleziona tutto + Seleziona almeno 1 percorso... + Nessun percorso disponibile per delegare + Fellowship + Governance + Tesoreria + Periodo di undelegating + La tua delega + Le tue deleghe + Mostra + Stai già delegando a questo account: %s + La delega esiste già + (compatibile BTC/ETH) + ECDSA + ed25519 (alternativa) + Edwards + Non hai abbastanza token per pagare la tariffa + Contratto + Chiamata contratto + Funzione + Conferma password + Le password non corrispondono + Imposta password + Rete: %s\nMnemonica: %s\nPercorso di derivazione: %s + Rete: %s\nMnemonica: %s + Attendere fino al calcolo della commissione + Il calcolo della commissione è in corso + Aggiungi delega per lo staking di %s + Dettagli dello swap + Massimo: + Tu paghi + Tu ricevi + Seleziona un token + Sblocca + Cronologia + Email + Nome legale + Nome Element + Identità + Web + Il file JSON fornito è stato creato per una rete diversa. + Assicurati che il tuo input contenga un JSON valido. + Il ripristino JSON non è valido + Controlla la correttezza della password e riprova. + Decifratura del keystore fallita + Incolla json + Tipo di crittografia non supportato + Impossibile importare l\'account con segreto Substrate nella rete con crittografia Ethereum + Impossibile importare l\'account con segreto Ethereum nella rete con crittografia Substrate + La tua mnemonica non è valida + Assicurati che il tuo input contenga 64 simboli esadecimali. + Seed non valido + L\'indirizzo del proxy dovrebbe essere un indirizzo valido %s + Indirizzo proxy non valido + Impossibile decodificare il QR + Codice QR + Carica dalla galleria + Lingua + Ledger non supporta %s + L\'operazione è stata annullata dal dispositivo. Assicurati di aver sbloccato il tuo Ledger. + Operazione annullata + Apri l\'applicazione %s sul tuo dispositivo Ledger + Applicazione %s non avviata + Operazione completata con errore sul dispositivo. Per favore, riprova più tardi. + Operazione Ledger fallita + Carica più account + Revisione e Approvazione + Premi entrambi i pulsanti sul tuo %s per approvare la transazione + Per favore, aggiorna %s usando l\'applicazione Ledger Live + Metadati obsoleti + Ledger non supporta la firma di messaggi arbitrari - solo transazioni + Assicurati di aver selezionato il dispositivo Ledger corretto per l\'operazione attualmente in fase di approvazione + Per motivi di sicurezza, le operazioni generate sono valide solo per %s. Per favore, riprova e approvata con Ledger + Transazione scaduta + La transazione è valida per %s + Ledger non supporta questa transazione. + La transazione non è supportata + Premi entrambi i pulsanti sul tuo %s per approvare l\'indirizzo + Questo portafoglio è abbinato a Ledger. Nova ti aiuterà a effettuare qualsiasi operazione desideri e ti verrà richiesto di firmarle usando Ledger + Seleziona l\'account da aggiungere al portafoglio + Transazione di pagamento inviata + Aggiungi token + + Per favore, prova un\'altra + Frase mnemonica non valida, controlla ancora una volta l\'ordine delle parole + Commissione di rete + Indirizzo del nodo + Informazioni sul nodo + Connessione in corso... + Collezione + Creato da + %s per %s + %s unità di %s + #%s Edizione di %s + Serie illimitata + Di proprietà di + Non quotato + I tuoi NFT + Richiedi ricompense + I tuoi token saranno aggiunti di nuovo allo stake + Diretto + Informazioni sullo staking nel pool + Le tue ricompense (%s) saranno anche richieste e aggiunte al tuo saldo libero + Pool + Impossibile eseguire l\'operazione specificata poiché il pool è nello stato di chiusura. Verrà chiuso presto. + Il pool sta chiudendo + Attualmente non ci sono posti liberi nella coda di uscita per il tuo pool. Riprova tra %s + Troppe persone stanno cancellando dal tuo pool + Il tuo pool + Il tuo pool (#%s) + Crea account + Crea un nuovo portafoglio + Informativa sulla privacy + Importa account + Ho già un portafoglio + Continuando, accetti i nostri\n%1$s e %2$s + Termini e Condizioni + Scambia + Uno dei tuoi collatori non sta generando ricompense + Uno dei tuoi collatori non è stato selezionato nel round attuale + È passato il tuo periodo di unstake per %s. Non dimenticare di riscattare i tuoi token + Impossibile fare stake con questo collatore + Cambia collatore + Impossibile aggiungere stake a questo collatore + Gestisci collatori + Il collatore selezionato ha mostrato l\'intenzione di smettere di partecipare allo staking. + Non puoi aggiungere stake al collatore per il quale stai rimuovendo tutti i token. + Il tuo stake sarà inferiore al minimo necessario (%s) per questo collatore. + Il saldo rimanente dello staking scenderà sotto il valore minimo di rete (%s) e sarà aggiunto all\'importo di unstake + Non sei autorizzato. Riprova, per favore. + Utilizza il riconoscimento biometrico per autorizzare + Nova Wallet utilizza l\'autenticazione biometrica per limitare l\'accesso non autorizzato all\'app. + Biometria + Il PIN è stato cambiato con successo + Conferma il tuo PIN + Crea un codice PIN + Inserisci il codice PIN + Imposta il tuo codice PIN + Non puoi unirti al pool poiché ha raggiunto il numero massimo di membri + Il pool è pieno + Non puoi unirti a un pool che non è aperto. Per favore, contatta il proprietario del pool. + Il pool non è aperto + Account + Portafogli + Lingua + Cambia il codice PIN + Approvazione con PIN + Modalità sicura + Impostazioni + Questo account ha concesso l\'accesso per eseguire transazioni al seguente account: + Non più valido + Cos\'è un Proxy? + Operazioni di staking + L\'account delegato %s non ha abbastanza saldo per pagare la commissione di rete di %s. Saldo disponibile per pagare la commissione: %s + I portafogli proxy non supportano la firma di messaggi arbitrari, solo transazioni + %1$s non ha delegato %2$s + %1$s ha delegato %2$s solo per %3$s + Ops! Permesso insufficiente + La transazione sarà avviata da %s come account delegato. La commissione di rete sarà pagata dall\'account delegato. + Questo è un account Delegante (Proxy) + %s proxy + Incolla json o carica il file... + Carica file + Ripristina JSON per il recupero + Frase mnemonica + Seed grezzo + Tipo di origine + Tutti i referendum + Mostra: + Non votati + Votati + Non ci sono referendum con filtri applicati + Le informazioni sui referendum appariranno qui quando inizieranno + Nessun referendum con titolo o ID inserito è stato trovato + Cerca per titolo o ID del referendum + Referendum + Referendum non trovato + Affermativo: %s + Usa il browser Nova DApp + Solo il proponente può modificare questa descrizione e il titolo. Se possiedi l\'account del proponente, visita Polkassembly e inserisci informazioni sulla tua proposta + Dettagli completi + Importo richiesto + Cronologia + Il tuo voto: + Curva di approvazione + Beneficiario + Copia hash + Deposito + Elettorato + Chiamata hash + Troppo lungo per l\'anteprima + Parametri JSON + Proponente + Curva di supporto + Partecipazione + Soglia di voto + Posizione: %s di %s + È necessario aggiungere un account %s al portafoglio per poter votare + Referendum %s + Contro: %s + Voti contrari + %s voti da %s + Voti favorevoli + Staking + Approvato + Annullato + In decisione + Decisione in %s + Eseguito + In coda (%s di %s) + Annullato + Non superato + Superato + In preparazione + Respinto + Approvazione in %s + Esecuzione in %s + Scadenza in %s + Rifiuto in %s + Scaduto + In attesa del deposito + Soglia: %s di %s + Votato: Approvato + Annullato + Creato + Votazione: Decisione + Eseguito + Votazione: In coda + Annullato + Votazione: Non superato + Votazione: Superato + Votazione: In preparazione + Votato: Respinto + Scaduto + Votazione: In attesa del deposito + Per superare: %s + Crowdloans + Cassa: grandi spese + Cassa: grandi mance + Fellowship: amministrazione + Governance: registratore + Governance: affitto + Cassa: spese medie + Governance: annullatore + Governance: killer + Main agenda + Treasury: small spend + Treasury: small tips + Treasury: any + rimane bloccato in %s + Sbloccabile + Astenersi + + Riutilizzare tutti i blocchi: %s + Riutilizzo del blocco di governance: %s + Blocco di governance + Periodo di blocco + No + Moltiplica i voti aumentando il periodo di blocco + Vota per %s + Dopo il periodo di blocco non dimenticare di sbloccare i tuoi token + Referendum votati + %s voti + %s imes %sx + L\'elenco degli elettori apparirà qui + %s voti + Fellowship: whitelist + Il tuo voto: %s voti + Il referendum è completato e la votazione è terminata + Il referendum è completato + Stai delegando i voti per il track del referendum selezionato. Per favore chiedi al tuo delegato di votare o rimuovi la delega per poter votare direttamente. + Delega già attiva + Hai raggiunto il massimo di %s voti per il track + Raggiunto il numero massimo di voti + Non hai abbastanza token disponibili per votare. Disponibili per il voto: %s. + Revoca tipo di accesso + Revoca per + Rimuovi voti + + Hai votato precedentemente nei referendum nel %d percorso. Per rendere questo percorso disponibile per la delega, è necessario rimuovere i tuoi voti esistenti. + Hai votato precedentemente nei referendum in %d percorsi. Per rendere questi percorsi disponibili per la delega, è necessario rimuovere i tuoi voti esistenti. + + Rimuovere la cronologia dei tuoi voti? + Impossibile aggiornare le informazioni sul runtime della blockchain. Alcune funzionalità potrebbero non funzionare. + Aggiornamento del runtime fallito + Contatti + i miei account + Nessun pool con nome inserito o ID pool è stato trovato. Assicurati di avere inserito i dati corretti + Indirizzo dell\'account o nome dell\'account + I risultati della ricerca verranno visualizzati qui + Risultati della ricerca + pul piscine attive: %d + membri + Seleziona pool + Seleziona percorsi per aggiungere la delega + Percorsi disponibili + Seleziona le tracce in cui desideri delegare il tuo potere di voto. + Seleziona le tracce da modificare per la delega + Seleziona le tracce per revocare la tua delega + Tracce non disponibili + Nova ha bisogno che la posizione sia attivata per poter effettuare la scansione Bluetooth per trovare il tuo dispositivo Ledger + Si prega di abilitare la geolocalizzazione nelle impostazioni del dispositivo + Indirizzo o w3n + Il destinatario è un conto di sistema. Non è controllato da alcuna azienda o individuo.\nSei sicuro di voler comunque effettuare questo trasferimento? + I token verranno persi + Conferire autorità a + Si prega, assicurarsi che la biometria sia abilitata nelle impostazioni + Biometria disabilitata nelle impostazioni + Comunità + Email + Generale + Ogni operazione di firma sui portafogli con coppia di chiavi (creata in un portafoglio di nova o importata) dovrebbe richiedere la verifica del PIN prima di costruire la firma + Richiedi autenticazione per la firma operazioni + Preferenze + La registrazione dello schermo e gli screenshot non saranno disponibili. L\'app minimizzata non visualizzerà il contenuto + Modalità sicura + Sicurezza + Supporto e Feedback + Twitter + Wiki + Youtube + Gestione avanzata dello staking + Il tipo di staking non può essere modificato + Hai già lo staking diretto + Staking diretto + Hai specificato meno della puntata minima del %s richiesta per guadagnare premi con %s. Dovresti considerare l\'uso dello staking in pool per guadagnare premi. + Riutilizza i token nella Governance + Puntata minima: %s + Ricompense: Pagate automaticamente + Ricompense: Richiesta manuale + Sei già staking in un pool + Staking del pool + Il tuo staking è inferiore al minimo per guadagnare ricompense + Tipo di staking non supportato + sr25519 (raccomandato) + Schnorrkel + L\'account selezionato è già in uso come controller + Aggiungi autorità delegata (Proxy) + Le tue deleghe + Deleganti attivi + Aggiungi l\'account del controller %s all\'applicazione per eseguire questa azione. + Aggiungi delega + Il tuo staking è inferiore al minimo di %s. Avere uno staking inferiore al minimo aumenta le possibilità che lo staking non generi premi + Stake più token + Cambia i tuoi validatori. + Tutto è a posto ora. Gli avvisi compariranno qui. + Avere una posizione superata nella coda dell\'assegnazione dello staking a un validatore può sospendere i tuoi premi + Miglioramenti dello staking + Riscatta i token non staked. + Attendere l\'inizio della prossima era. + Avvisi + Già controller + Hai già staking in %s + Saldo staking + Saldo + Punta di più + Né nominante né validante + Cambia controller + Cambia validatori + %s di %s + Validatori selezionati + Controller + Account controller + Abbiamo riscontrato che questo account non ha token liberi, sei sicuro di voler cambiare il controller? + Il controller può fare unstake, riscattare, ritornare a stake, cambiare destinazione ricompense e validatori. + Il controller viene utilizzato per: unstake, riscattare, ritornare a stake, cambiare validatori e impostare destinazione ricompense + Il controller è stato cambiato + Questo validatore è bloccato e al momento non può essere selezionato. Per favore, riprova nella prossima era. + Cancella filtri + Deseleziona tutto + Riempi il resto con consigliati + Validatori: %d di %d + Seleziona validatori (max %d) + Mostra selezionati: %d (max %d) + Seleziona validatori + Ricompense stimate (% APR) + Ricompense stimate (% APY) + Aggiorna la tua lista + Staking tramite browser DApp Nova + Più opzioni di staking + Staka e guadagna ricompense + Ricompense stimate + era #%s + Guadagni stimati + Ricompense %s stimate + Stake del validatore + Stake del validatore (%s) + I token in periodo di unstaking non generano ricompense. + Durante il periodo di unstaking i token non producono ricompense + Dopo il periodo di unstaking dovrai riscattare i tuoi token. + Dopo il periodo di unstaking non dimenticare di riscattare i tuoi token + Le tue ricompense aumenteranno a partire dalla prossima era. + Le tue ricompense aumenteranno a partire dalla prossima era + I token staked generano ricompense ad ogni era (%s). + I token in stake producono ricompense ad ogni era (%s) + Il portafoglio Nova cambierà la destinazione delle ricompense al tuo account per evitare il rimanente stake. + Se vuoi unstake dei token, dovrai attendere il periodo di unstaking (%s). + Per unstake dei token dovrai attendere il periodo di unstaking (%s) + Informazioni sullo staking + Nominatori attivi + + %d giorno + %d giorni + + Importo minimo + %s rete + Staked + Si prega di passare il portafoglio a %s per configurare un proxy + Seleziona l\'account stash per configurare il proxy + Gestisci + %s (max %s) + Il numero massimo di nominati è stato raggiunto. Riprova più tardi + Impossibile iniziare lo staking + Stake minimo + È necessario aggiungere un account %s al tuo portafoglio per iniziare lo staking + Mensile + Aggiungi il tuo account controller nel dispositivo. + Nessun accesso all\'account controller + Nominato: + %s premiato + Uno dei tuoi validatori è stato eletto dalla rete. + Stato attivo + Stato inattivo + La tua quantità staccata è inferiore allo stake minimo per ottenere un premio. + Nessuno dei tuoi validatori è stato eletto dalla rete. + Il tuo stake inizierà nella prossima era. + Inattivo + In attesa della prossima era + in attesa della prossima era (%s) + Non hai abbastanza saldo per il deposito del proxy di %s. Saldo disponibile: %s + Collatore + Il deposito minimo del collator è superiore alla tua delega. Non riceverai ricompense dal collator. + Informazioni sul collator + Deposito proprio del collator + Collator: %s + Uno o più dei tuoi collatori sono stati eletti dalla rete. + Delegatori + Hai raggiunto il numero massimo di deleghe di %d collatori + Non puoi selezionare un nuovo collator + Nuovo collator + in attesa del prossimo round (%s) + Hai richieste di rimozione pendenti per tutti i tuoi collatori. + Nessun collator disponibile per la rimozione + I token restituiti saranno conteggiati dal prossimo round + I token in stake producono ricompense ad ogni round (%s) + Seleziona collator + Seleziona collator... + Otterrai ricompense maggiori a partire dal prossimo round + Non riceverai ricompense per questo round poiché nessuna delle tue deleghe è attiva. + Stai già rimuovendo i token da questo collator. Puoi avere solo una rimozione pendente per collator + Non puoi staccarti da questo collatore + Il tuo stacco deve essere maggiore del minimo stacco (%s) per questo collatore. + Non riceverai ricompense + Alcuni dei tuoi collatori non sono stati eletti o hanno uno stacco minimo maggiore rispetto all\'importo staccato da te. Non riceverai ricompensa in questo round staccando con loro. + I tuoi collatori + Il tuo stacco è assegnato ai prossimi collatori + Collatori attivi senza produrre ricompense + Collatori senza abbastanza stacco per essere eletti + Collatori che entreranno in azione nel prossimo round + In sospeso (%s) + Pagamento + Pagamento scaduto + + %d giorno rimasto + %d giorni rimasti + + Puoi pagare da solo, quando sono vicini alla scadenza, ma pagherai la commissione + Le ricompense vengono pagate ogni 2-3 giorni dai validatori + Tutto + Sempre + La data di fine è sempre oggi + Periodo personalizzato + %dD + Seleziona la data di fine + Finisce + Ultimi 6 mesi (6M) + 6M + Ultimi 30 giorni (30D) + 30D + Ultimi 3 mesi (3M) + 3M + Seleziona la data + Seleziona la data di inizio + Inizia + Mostra ricompense di staking per + Ultimi 7 giorni (7D) + 7D + Ultimo anno (1Y) + 1Y + Il tuo saldo disponibile è %s, devi lasciare %s come saldo minimo e pagare una commissione di rete di %s. Puoi fare staking non più di %s. + Autorità delegate (proxy) + Slot attuale nella coda + Nuovo slot nella coda + Ritorna a stake + Tutto il ritiro + I token restituiti saranno conteggiati dalla prossima era + Importo personalizzato + L\'importo che vuoi ritornare allo staking è maggiore del saldo di staking + Ultimo staking ritirato + Più redditizio + Non sovrasottoscritto + Con identità onchain + Non penalizzato + Limite di 2 validatori per identità + con almeno un contatto di identità + Validatori consigliati + Validatori + Rendimento stimato (APY) + Riscatta + Riscattabile: %s + Ricompensa + Destinazione delle ricompense + Ricompense trasferibili + Era + Dettagli della ricompensa + Validatore + Guadagni con reinvestimento + Guadagni senza reinvestimento + Perfetto! Tutte le ricompense sono state pagate. + Fantastico! Non hai ricompense non pagate + Paga tutto (%s) + Ricompense in sospeso + Ricompense non pagate + Ricompense + Informazioni sulle ricompense + Ricompense (APY) + Destinazione ricompense + Seleziona da solo + Seleziona l\'account di pagamento + Seleziona consigliato + selezionati %d (max %d) + Validatori (%d) + Aggiorna Controller a Stash + Utilizzare i Proxies per delegare le operazioni di Staking a un altro account + I Controller degli Account stanno diventando obsoleti + Seleziona un altro account come controller per delegare le operazioni di gestione dello staking ad esso + Migliorare la sicurezza dello staking + Imposta i validatori + I validatori non sono selezionati + Seleziona i validatori per iniziare lo staking + Il numero minimo consigliato per ricevere costantemente ricompense è %s. + Non puoi fare staking con un importo inferiore al valore minimo di rete (%s) + Il deposito minimo deve essere maggiore di %s + Ri-staking + Ri-staking ricompense + Come utilizzare le tue ricompense? + Seleziona il tipo di ricompensa + Account di pagamento delle ricompense + Taglio + Stake %s + Stake massimo + Periodo di staking + Tipo di staking + Dovresti affidarti ai tuoi nominati per agire con competenza e onestà, basando la tua decisione esclusivamente sulla loro attuale redditività potrebbe portare a una riduzione dei profitti o addirittura alla perdita di fondi. + Scegli attentamente i tuoi validatori, in quanto dovrebbero agire in modo competente e onesto. Basare la tua decisione esclusivamente sulla redditività potrebbe portare a ricompense ridotte o addirittura alla perdita dello staking + Stake con i tuoi validatori + Nova Wallet selezionerà i top validatori in base ai criteri di sicurezza e redditività + Stake con validatori raccomandati + Inizia lo staking + Stash + Lo stash può collegare di più e impostare il controller. + Stash viene utilizzato per: fare staking in modo più ampio e impostare il controller + L\'account stash %s non è disponibile per aggiornare l\'impostazione dello staking. + Il nominatore guadagna reddito passivo bloccando i suoi token per garantire la sicurezza della rete. Per fare ciò, il nominatore deve selezionare un numero di validatori da supportare. Il nominatore deve fare attenzione nella selezione dei validatori. Se il validatore selezionato non si comporterà correttamente, verranno applicate penalità di taglio ad entrambi, in base alla gravità dell\'incidente. + Nova Wallet fornisce supporto ai nominatori aiutandoli a selezionare i validatori. L\'applicazione mobile recupera i dati dalla blockchain e compone una lista di validatori che hanno: maggiori profitti, identità con informazioni di contatto, non tagliati e disponibili a ricevere nomination. Nova Wallet si preoccupa anche della decentralizzazione, quindi se una persona o un\'azienda gestisce diversi nodi validatori, solo fino a 2 nodi verranno mostrati nella lista consigliata. + Chi è un nominatore? + Le ricompense per lo staking sono disponibili per il pagamento alla fine di ogni era (6 ore in Kusama e 24 ore in Polkadot). La rete conserva le ricompense in sospeso durante 84 ere e nella maggior parte dei casi i validatori pagano le ricompense per tutti. Tuttavia, i validatori potrebbero dimenticarsi o potrebbe accadergli qualcosa, quindi i nominati possono incassare le loro ricompense da soli. + Anche se le ricompense sono di solito distribuite dai validatori, Nova Wallet aiuta avvertendo se ci sono ricompense non pagate che stanno per scadere. Riceverai avvisi su questo e su altre attività nella schermata dello staking. + Ricezione delle ricompense + Lo staking è un\'opzione per guadagnare reddito passivo bloccando i tuoi token nella rete. Le ricompense per lo staking vengono allocate ad ogni era (6 ore su Kusama e 24 ore su Polkadot). Puoi fare staking per tutto il tempo che desideri e per fare il unstaking dei tuoi token devi aspettare che il periodo di unstaking finisca, rendendo i tuoi token disponibili per il riscatto. + Lo staking è una parte importante della sicurezza e della affidabilità della rete. Chiunque può eseguire dei nodi validatori, ma solo coloro che hanno abbastanza token bloccati saranno eletti dalla rete per partecipare alla composizione di nuovi blocchi e ricevere le ricompense. I validatori spesso non possiedono abbastanza token da soli, perciò i nominatori li aiutano bloccando i loro token per consentire loro di raggiungere la quantità di staked richiesta. + Che cos\'è lo staking? + Il validatore gestisce un nodo blockchain 24/7 ed è tenuto a bloccare abbastanza stake (posseduto sia da lui che fornito dai nominatori) per essere eletto dalla rete. I validatori dovrebbero mantenere le prestazioni e l\'affidabilità dei loro nodi per essere ricompensati. Essere un validatore è quasi un lavoro a tempo pieno, ci sono aziende specializzate nel essere validatori nelle reti blockchain. + Tutti possono essere validatori e gestire un nodo blockchain, ma ciò richiede un certo livello di competenze tecniche e responsabilità. Le reti Polkadot e Kusama dispongono di un programma, chiamato Thousand Validators Programme, per fornire supporto ai principianti. Inoltre, la stessa rete premierà sempre più validatori con meno giacenza (ma sufficiente per essere eletti) per migliorare la decentralizzazione. + Chi è un validatore? + Passa il tuo account a stash per impostare il controller. + Staking + %s staking + Ricompensato + Totale staked + Soglia Boost + Per il mio collator + senza Yield Boost + con Yield Boost + per scommettere automaticamente %s tutti i miei token trasferibili sopra + per scommettere automaticamente %s (prima: %s) tutti i miei token trasferibili sopra + Voglio scommettere + Yield Boost + Tipo di staking + Stai ritirando tutti i tuoi token e non puoi scommetterne di più. + Impossibile scommettere di più + Quando esegui il disimpegno parziale, dovresti lasciare almeno %s in gioco. Vuoi eseguire il disimpegno completo disimpegnando anche i restanti %s? + Resta una quantità troppo piccola in gioco + L\'importo che vuoi disimpegnare è maggiore del saldo staked + Disimpegnare + Le transazioni di disimpegno appariranno qui + Le transazioni di disimpegno verranno visualizzate qui + Disimpegno: %s + I tuoi token saranno disponibili per il riscatto dopo il periodo di disimpegno + Hai raggiunto il limite delle richieste di disimpegno (%d richieste attive) + Limite delle richieste di disimpegno raggiunto + Periodo di disimpegno + Disimpegnare tutto + Disimpegnare tutto? + Rendimento stimato (% APY) + Rendimento stimato + Informazioni sul validatore + Sovrabbondato. Non riceverai premi dal validatore in questa era + Nominatori + Sovrabbondato. Solo i nominatori con il massimo staked ricevono i premi + Proprio + Nessun risultato di ricerca.\nAssicurati di aver digitato l\'indirizzo completo dell\'account + Il validatore è stato punito per comportamenti scorretti (ad ecempio, va offline, attacca la rete, o esegue software modificati) nella rete. + Stake totale + Stake totale (%s) + La ricompensa è inferiore alla tassa di rete. + Annuale + Il tuo stake è assegnato ai seguenti validatori. + Il tuo stake è assegnato ai successivi validatori + Eletto (%s) + I validatori che non sono stati eletti in questa era. + Validatori senza abbastanza stake per essere eletti + Altri, che sono attivi senza la tua assegnazione di stake. + Validatori attivi senza la tua assegnazione di stake + Non eletti (%s) + I tuoi token sono assegnati ai validatori sovrasottoscritti. Non riceverai ricompense in questa era. + Ricompense + Il tuo stake + I tuoi validatori + I tuoi validatori cambieranno nella prossima era. + Hai bloccato token sul tuo saldo a causa di %s. Per continuare, dovresti inserire meno di %s o più di %s. Per bloccare un\'altra quantità, dovresti rimuovere i tuoi blocchi %s. + Non puoi bloccare l\'importo specificato + Selezionato: %d (massimo %d) + Saldo disponibile: %1$s (%2$s) + %s con i tuoi token bloccati in staking + Partecipa alla governance + Blocca oltre %1$s e %2$s con i tuoi token bloccati in staking + partecipa alla governance + Blocca in qualsiasi momento con almeno %1$s. Il tuo blocco guadagnerà attivamente ricompense %2$s + in %s + Blocca in qualsiasi momento. Il tuo blocco guadagnerà attivamente ricompense %s + Scopri maggiori informazioni su\n%1$s bloccando su %2$s + Nova Wiki + Le ricompense si accumulano %1$s. Blocca oltre %2$s per il pagamento automatico delle ricompense, altrimenti devi richiedere manualmente le ricompense + ogni %s + Le ricompense si accumulano %s + Le ricompense si accumulano %s. Devi richiedere manualmente le ricompense + Le ricompense si accumulano %s e vengono aggiunte al saldo trasferibile + Le ricompense si accumulano %s e vengono reinvestite nello stake + I premi e lo stato dello staking variano nel tempo. %s di tanto in tanto + Monitora il tuo stake + Inizia lo staking + Vedi %s + Termini di Utilizzo + %1$s è una %2$s con %3$s + nessun valore di token + rete di test + %1$s\nai tuoi token %2$s\nall\'anno + Guadagna fino a %s + Ritira in qualsiasi momento e riscatta i tuoi fondi %s. Nessuna ricompensa viene guadagnata durante il ritiro + dopo %s + Il pool che hai selezionato è inattivo a causa della mancata selezione dei validatori o del suo stake inferiore al minimo.\nSei sicuro di voler procedere con il Pool selezionato? + Il numero massimo di nominatori è stato raggiunto. Riprova più tardi + %s non è attualmente disponibile + Validatori: %d (massimo %d) + Token per pagare la commissione di rete + La commissione di rete viene aggiunta alla somma inserita + Questa coppia non è supportata + Dovresti mantenere almeno %s dopo aver pagato una commissione di rete di %s, in quanto detieni token non sufficienti + Devi mantenere almeno %s per ricevere il token %s + Puoi scambiare fino a %1$s poiché devi pagare %2$s per la commissione di rete. + È possibile scambiare fino a %1$s poiché è necessario pagare %2$s per la commissione di rete e convertire anche %3$s in %4$s per soddisfare il saldo minimo di %5$s. + Scambia massimo + Scambia minimo + Dovresti lasciare almeno %1$s sul tuo saldo. Vuoi eseguire lo scambio completo aggiungendo anche i restanti %2$s? + Sul tuo saldo rimane una somma troppo piccola + Dovresti mantenere almeno %1$s dopo aver pagato %2$s per la commissione di rete e convertire %3$s in %4$s per soddisfare il saldo minimo di %5$s.\n\nVuoi effettuare lo scambio completo aggiungendo anche i restanti %6$s? + Paga + Ricevi + Seleziona un token + Non ci sono abbastanza token da scambiare + Liquidità non sufficiente + Non puoi ricevere meno di %s + Acquista immediatamente %s con carta di credito + Trasferisci %s da un\'altra rete + Ricevi %s con QR o il tuo indirizzo + Ottieni %s usando + Lo slippage deve essere specificato tra %s e %s + Slippage non valido + Seleziona un token per pagare + Seleziona un token da ricevere + Inserisci l\'importo + Inserisci un altro importo + Per pagare la tariffa di rete con %s, Nova effettuerà automaticamente lo scambio di %s per %s per mantenere il saldo minimo del tuo account di %s. + Una tariffa di rete addebitata dal blockchain per elaborare e convalidare qualsiasi transazione. Può variare a seconda delle condizioni di rete o della velocità delle transazioni. + Il pool non ha abbastanza liquidità per lo scambio + La differenza di prezzo si riferisce alla differenza di prezzo tra due diversi asset. Quando si effettua uno scambio in criptovaluta, la differenza di prezzo è di solito la differenza tra il prezzo dell\'asset che stai scambiando e il prezzo dell\'asset con cui stai scambiando. + Differenza di prezzo + %s \u2248 %s + Tasso di cambio tra due diverse criptovalute. Rappresenta quanto di una criptovaluta puoi ottenere in cambio di una certa quantità di un\'altra criptovaluta. + Tasso di cambio + Il vecchio tasso: %1$s ≈ %2$s.\nNuovo tasso: %1$s ≈ %3$s + Il tasso di cambio è stato aggiornato + Ripeti l\'operazione + Impostazioni di scambio + Scivolamento + Il cambio di scivolamento è un evento comune nel trading decentralizzato in cui il prezzo finale di una transazione di scambio potrebbe differire leggermente dal prezzo atteso, a causa delle mutevoli condizioni di mercato. + Inserisci un altro valore + Inserisci un valore compreso tra %s e %s + Scivolamento + La transazione potrebbe essere front-runner a causa di un elevato scivolamento. + La transazione potrebbe essere annullata a causa di una bassa tolleranza per lo scivolamento. + La quantità di %s è inferiore al saldo minimo di %s + Stai cercando di scambiare una quantità troppo piccola + Staking + Portafoglio + Oggi + Copia hash + Commissione + Da + Hash estrinseco + Dettagli transazione + Visualizza in %s + Visualizza in Polkascan + Visualizza in Subscan + %s alle %s + Completato + Fallito + In sospeso + Da: %s + A: %s + Trasferimento + Le operazioni in entrata e in uscita\nappariranno qui + Le tue operazioni verranno visualizzate qui + Rimuovi i voti per delegare in queste tracce + Tracce a cui hai già delegato i voti + Tracce non disponibili + Tracce in cui hai già dei voti + Installa + Versione %s + Aggiornamento disponibile + Per evitare eventuali problemi e migliorare la tua esperienza utente, ti consigliamo vivamente di installare gli aggiornamenti più recenti il prima possibile + Aggiornamento critico + Più recente + Molte nuove incredibili funzionalità sono disponibili per Nova Wallet! Assicurati di aggiornare l\'applicazione per accedervi + Aggiornamento importante + Critica + Importante + Visualizza tutti gli aggiornamenti disponibili + Nome + Nome del portafoglio + Questo nome sarà visualizzato solo per te e memorizzato localmente sul tuo dispositivo mobile. + Questo account non è stato eletto dalla rete per partecipare all\'era attuale + Rivotare + Votare + Stato del voto + Acquista + Acquista con + Ricevi + Ricevi %s + Invia + Scambia + Asset + I tuoi asset appariranno qui.\nAssicurati che il filtro \"Nascondi saldi a zero\"\nsia disattivato + Valore degli asset + Disponibile + Staked + Dettagli del saldo + Saldo totale + Totale dopo il trasferimento + Congelato + Bloccato + Riscattabile + Prenotato + Trasferibile + Sblocco in corso + Portafoglio + Nuova connessione + + %s account mancante. Aggiungi l\'account al portafoglio nelle impostazioni + %s account mancanti. Aggiungi gli account al portafoglio nelle impostazioni + + Alcune reti richieste da \"%s\" non sono supportate in Nova Wallet + Le sessioni Wallet Connect appariranno qui + WalletConnect + dApp sconosciuta + + %s rete non supportata è nascosta + %s reti non supportate sono nascoste + + WalletConnect v2 + Trasferimento tra catene + Criptovalute + Valute fiat + Valute fiat popolari + Valuta + Dettagli transazione + Nascondi asset con saldo zero + Altre transazioni + Mostra + Ricompense e penalità + Scambi + Filtri + Trasferimenti + Gestione asset + Esempi di nomi: Account principale, Il mio convalidatore, Crowdloan di Dotsama, ecc. + Condividi questo QR con il mittente + Fai scansionare questo QR code al mittente + Il mio indirizzo %s per ricevere %s: + Condividi codice QR + Destinatario + Assicurati che l\'indirizzo sia della rete giusta + Il formato dell\'indirizzo non è valido. Assicurati che l\'indirizzo corrisponda alla rete giusta + Saldo minimo + A causa delle restrizioni cross-chain, puoi trasferire non più di %s + Non hai abbastanza saldo per pagare la commissione cross-chain di %s. Saldo rimanente dopo il trasferimento: %s + La commissione cross-chain è aggiunta all\'importo inserito. Il destinatario potrebbe ricevere una parte della commissione cross-chain + Conferma trasferimento + Cross-chain + Commissione cross-chain + Il tuo trasferimento fallirà in quanto il conto di destinazione non ha abbastanza %s per accettare altri trasferimenti di token + Il destinatario non è in grado di accettare il trasferimento + Il tuo trasferimento fallirà in quanto l\'importo finale sul conto di destinazione sarà inferiore al saldo minimo. Per favore, cerca di aumentare l\'importo. + Il tuo trasferimento rimuoverà l\'account dal blockstore poiché renderà il saldo complessivo inferiore al saldo minimo. + Il tuo account verrà rimosso dalla blockchain dopo il trasferimento perché il saldo totale diventa inferiore al minimo + Il trasferimento rimuoverà l\'account + Il tuo account verrà rimosso dalla blockchain dopo il trasferimento perché il saldo totale diventa inferiore al minimo. Il saldo rimanente verrà trasferito anche al destinatario. + Dalla rete + Devi avere almeno %s per pagare questa tassa di transazione e rimanere al di sopra del saldo minimo di rete. Il tuo saldo attuale è: %s. Devi aggiungere %s al tuo saldo per effettuare questa operazione. + Me stesso + In catena + L\'indirizzo seguente: %s è noto per essere utilizzato in attività di phishing, pertanto non raccomandiamo di inviare token a quell\'indirizzo. Desideri procedere comunque? + Avviso frode + Il destinatario è stato bloccato dal proprietario del token e al momento non può accettare trasferimenti in entrata + Il destinatario non può accettare il trasferimento + Rete del destinatario + Alla rete + Invia %s da + Invia %s su + a + Mittente + Token + Invia a questo contatto + Dettagli del trasferimento + Il tuo saldo + %s (%s) + %s indirizzi per %s + Nova ha rilevato problemi con l\'integrità delle informazioni sugli indirizzi %1$s. Si prega di contattare il proprietario di %1$s per risolvere i problemi di integrità. + Controllo dell\'integrità non riuscito + Destinatario non valido + Nessun indirizzo valido è stato trovato per %s sulla rete %s + %s non trovato + I servizi w3n di %1$s non sono disponibili. Riprova più tardi o inserisci manualmente l\'indirizzo %1$s + Errore nella risoluzione di w3n + Nova non può risolvere il codice per il token %s + Il token %s non è ancora supportato + Ieri + Yield Boost verrà disattivato per i collatori attuali. Nuovo collatore: %s + Cambiare il collatore con Yield Boost? + Non hai abbastanza saldo per pagare la commissione di rete di %s e la commissione di esecuzione di Yield boost di %s.\nSaldo disponibile per pagare la commissione: %s + Non abbastanza token per pagare la prima commissione di esecuzione + Non hai abbastanza saldo per pagare la commissione di rete di %s e non scendere al di sotto della soglia %s.\nSaldo disponibile per pagare la commissione: %s + Non abbastanza token per rimanere al di sopra della soglia + Tempo di aumento dello stake + Yield Boost stakerà automaticamente %s tutti i miei token trasferibili oltre %s + Yield Boosted + diff --git a/common/src/main/res/values-pt/strings.xml b/common/src/main/res/values-pt/strings.xml new file mode 100644 index 0000000000..0c0d1869d0 --- /dev/null +++ b/common/src/main/res/values-pt/strings.xml @@ -0,0 +1,1399 @@ + + + Contate-nos + Github + Política de privacidade + Avalie-nos + Telegram + Termos e Condições + Termos & Condições + Sobre + Versão do aplicativo + Site + Digite um endereço %s válido... + O endereço EVM deve ser válido ou vazio... + Digite um endereço de substrato válido... + Adicionar conta + A conta já existe. Por favor, tente outra. + Rastreie qualquer carteira pelo seu endereço + Adicionar carteira apenas para visualização + Frase Mnemônica + Anote a frase e guarde-a em um lugar seguro + Por favor, certifique-se de que sua frase está escrita de forma correta e legível. + Endereço %s + Confirmar mnemônica + Selecione as palavras na ordem correta. + Vamos verificar novamente + Escolha as palavras na ordem correta + Criar uma nova conta + Não use a área de transferência ou capturas de tela em seu dispositivo móvel, tente encontrar métodos seguros para backup (por exemplo, papel) + O nome será usado apenas localmente nesta aplicação. Você pode editá-lo mais tarde + Criar nome da carteira + Backup da mnemônica + A mnemônica é usada para recuperar o acesso à conta. Anote-a, não seremos capazes de recuperar sua conta sem ela! + Contas com um segredo alterado + Esquecer + Certifique-se de ter exportado sua carteira antes de prosseguir. + Esquecer carteira? + Caminho de derivação Ethereum inválido + Caminho de derivação Substrate inválido + Esta carteira está emparelhada com %1$s. A Nova ajudará você a formar quaisquer operações que desejar, e você será solicitado a assiná-las usando %1$s + Não suportado por %s + Esta é uma carteira somente de visualização, a Nova pode mostrar seus saldos e outras informações, mas você não pode realizar nenhuma transação com esta carteira + Insira o apelido da carteira... + Por favor, tente outro. + Tipo de criptografia de par de chaves Ethereum + Caminho de derivação do segredo Ethereum + Exportar conta + Exportar + Isso é necessário para criptografar os dados e salvar o arquivo JSON. + Defina uma nova senha + Salve seu segredo e armazene-o em um local seguro + Alterar senha + Anote seu segredo e guarde-o em um local seguro + JSON de restauração inválido. Por favor, certifique-se de que a entrada contém um JSON válido. + Seed inválido. Por favor, certifique-se de que sua entrada contém 64 símbolos hexadecimais. + O JSON não contém informações de rede. Por favor, especifique abaixo. + Forneça seu JSON de Restauração + Tipicamente frase de 12 palavras (mas pode ser 15, 18, 21 ou 24) + Escreva as palavras separadas por um espaço, sem vírgulas ou outros sinais + Insira as palavras na ordem correta + Senha + 0xAB + Insira seu seed bruto + A Nova é compatível com todos os aplicativos + Importar carteira + Conta + O seu caminho de derivação contém símbolos não suportados ou tem uma estrutura incorreta + Caminho de derivação inválido + Arquivo JSON + Certifique-se de que o aplicativo da Rede está instalado no seu dispositivo Ledger usando o aplicativo Ledger Live. Abra o aplicativo da rede no seu dispositivo Ledger. + Adicione pelo menos uma conta + Adicionar contas à sua carteira + Guia Oficial de Conexão Bluetooth da Ledger + Certifique-se de que o aplicativo da Rede está instalado no seu dispositivo Ledger usando o aplicativo Ledger Live + Open the network app on your Ledger device + Permitir que a Nova Wallet acesse Bluetooth e Localização + Select account to add to wallet + Conecte o Ledger Nano X + Ledger Nano X + Por favor, ative o Bluetooth nas configurações do seu telefone e no dispositivo Ledger. Desbloqueie seu dispositivo Ledger e abra o aplicativo %s. + Selecione seu dispositivo Ledger + frase de 12, 15, 18, 21 ou 24 palavras + Você não tem uma conta para esta rede, você pode criar ou importar uma conta. + Conta necessária + Nenhuma conta encontrada + Parity Signer + %s não suporta %s + As seguintes contas foram lidas com sucesso de %s + Aqui estão suas contas + Código QR inválido, por favor certifique-se de que você está escaneando o código QR de %s + Certifique-se de selecionar o primeiro + Open Parity Signer application on your smartphone + Go to “Keys” tab. Select seed, then account you would like to add to Nova Wallet + O Parity Signer fornecerá um código QR para escanear + Adicionar carteira de %s + %s não suporta a assinatura de mensagens arbitrárias — apenas transações + Assinatura não é suportada + Digitalize o código QR do %s + Digitalize o código QR com o %s + Eu tenho um erro em %s + O QR code expirou + Por razões de segurança, operações geradas são válidas apenas por %s.\nPor favor, gere um novo código QR e assine-o com %s + QR code é válido para %s + Por favor, certifique-se de que está a escanear o código QR para a operação de assinatura atual + Assinar com %s + Cofre Polkadot + Atenção, o nome do caminho de derivação deve estar vazio + Open Polkadot Vault application on your smartphone + Go to “Key Sets” tab. Select your Key set, Network, and then the account you would like to add to Nova Wallet + Polkadot Vault fornecerá a você QR code para escanear + Chave privada + Delegado para você (Proxieds) + Qualquer + Leilão + Cancelar Proxy + Governança + Julgamento de Identidade + Piscinas de Nomeação + Não Transferência + Staking + Já tenho uma conta + 64 símbolos hex + Selecione a carteira de hardware + Selecione o tipo do seu segredo + Selecione a carteira + Contas com um segredo compartilhado + Tipo de criptografia de par de chaves Substrate + Caminho de derivação secreta Substrate + Apelido da carteira + Moonbeam, Moonriver e outras redes + Endereço EVM (Opcional) + Carteiras predefinidas + Polkadot, Kusama, Karura, KILT e mais de 50 redes + Acompanhe a atividade de qualquer carteira sem injetar sua chave privada na Nova Wallet + Sua carteira é apenas para visualização, o que significa que você não pode realizar nenhuma operação com ela + Ops! A chave está faltando + somente visualização + Use Polkadot Vault, Ledger ou Parity Signer + Conectar carteira de hardware + Adicionar conta %s + Adicionar carteira + Alterar conta %s + Alterar conta + Você precisa adicionar uma conta %s à carteira para delegar + Delegar para + Conta de delegação + Carteira de delegação + Conceder tipo de acesso + O depósito permanece reservado em sua conta até que o proxy seja removido. + Você alcançou o limite de %s proxies adicionados em %s. Remova proxies para adicionar novos. + Número máximo de proxies foi alcançado + O endereço do contrato inserido já está presente na Nova como um token %s. + O endereço do contrato inserido já está presente na Nova como um token %s. Tem certeza de que deseja modificá-lo? + Este token já existe + Por favor, certifique-se de que o url fornecido tem a seguinte forma: www.coingecko.com/en/coins/tether. + Link CoinGecko inválido + O endereço do contrato inserido não é um contrato ERC-20 %s. + Endereço de contrato inválido + Os decimais devem ser pelo menos 0, e não mais de 36. + Valor de decimais inválido + Insira o endereço do contrato + Insira os decimais + Insira o símbolo + Adicionar token + Endereço do contrato + Decimais + Link Coingecko para informações de preço (Opcional) + Símbolo + Insira os detalhes do token ERC-20 + Selecione a rede para adicionar o token ERC-20 + Crowdloans + Governança v1 + OpenGov + Eleições + Staking + Vesting + Comprar tokens + Recebeu de volta seus DOTs dos crowdloans? Comece a fazer staking dos seus DOTs hoje mesmo para obter as recompensas máximas possíveis! + Impulsione seus DOTs 🚀 + Filtrar tokens + Todas as redes + Gerenciar tokens + Não transfira %s para a conta controlada por Ledger já que Ledger não suporta o envio de %s, assim os ativos ficarão presos nesta conta + Ledger não suporta este token + Buscar por rede ou token + Nenhuma rede ou token com o nome inserido foi encontrado + Suas carteiras + Você não tem tokens para enviar. Compre ou Receba tokens na sua conta. + Token para pagamento + Token para receber + Autenticação biométrica + Compra iniciada! Por favor, aguarde até 60 minutos. Você pode rastrear o status pelo email. + Para continuar a compra você será redirecionado do aplicativo Nova Wallet para %s + Continuar no navegador? + Ativo + Saldo disponível + Desculpe, a solicitação de verificação de saldo falhou. Por favor, tente novamente mais tarde. + Desculpe, não conseguimos contatar o provedor de transferências. Por favor, tente novamente mais tarde. + Desculpe, você não tem fundos suficientes para gastar o valor especificado + Taxa de transferência + Rede não está respondendo + Para + Aceitar os termos... + Conta + Endereço da conta + Ativo + Adicionar + Adicionar delegação + Endereço + Avançado + Todos + Permitir + Quantidade + Quantidade muito baixa + Quantidade muito grande + Aplicado + Aplicar + Perguntar novamente + Atenção! + Disponível: %s + Média + Saldo + Bônus + Ligar + Cancelar + Tem certeza de que deseja cancelar esta operação? + Desculpe, você não tem o aplicativo certo para processar este pedido + Não é possível abrir este link + Você pode usar até %s, uma vez que precisa pagar\n%s pela taxa de rede. + Cadeia + Alterar + Escolher rede + Fechar + Tem certeza de que deseja fechar esta tela?\nSuas alterações não serão aplicadas. + Concluído + Concluído (%s) + Confirmar + Confirmação + Tem certeza? + Confirmado + Continuar + Copiado para a área de transferência + Copiar endereço + Copiar id + Tipo de criptografia da chave + Data + %s e %s + Detalhes + Desativado + Desconectar + Feito + Não mostrar isso novamente + Editar + %s (+%s mais) + Selecionar aplicativo de email + Ativar + Digite o endereço… + Digite o valor... + Erro + Tokens insuficientes + Evento + Endereço EVM + Sua conta será removida da blockchain após esta operação, pois faz com que o saldo total seja menor que o mínimo + A operação removerá a conta + Expirado + Explorar + A taxa de rede estimada %s é muito maior que a taxa de rede padrão (%s). Isso pode ser devido à congestão temporária da rede. Você pode atualizar para esperar por uma taxa de rede menor. + Taxa de rede está muito alta + Ordenar por: + Filtros + Descubra mais + + todos os dias + a cada %s dias + + diariamente + todos os dias + Obter %s + Governança + String hexadecimal + + %d hora + %d horas + + Como funciona + Entendi + Informação + Defina uma senha... + Código QR é inválido + Saiba mais + Descubra mais sobre + Ledger + %s restantes + Máximo + %s máximo + + %d minuto + %d minutos + + Conta %s está faltando + Módulo + Rede + %s não é suportado + Redes + + Rede + Redes + + Próximo + Não + Aplicativo para importação de arquivo não encontrado no dispositivo. Por favor, instale-o e tente novamente + Nenhum aplicativo adequado encontrado no dispositivo para lidar com esta ação + Sem alterações + Vamos mostrar sua mnemônica. Certifique-se de que ninguém pode ver sua tela e não tire capturas de tela — elas podem ser coletadas por malwares de terceiros + Nenhum + Desculpe, você não tem fundos suficientes para pagar a taxa de rede. + Saldo insuficiente + Desligado + OK + Ok, voltar + Ligado + Em andamento + Opcional + Selecione uma opção + Colar + / ano + %s / ano + por ano + % + As permissões solicitadas são necessárias para usar esta tela. Você deve ativá-las nas Configurações. + Permissões negadas + As permissões solicitadas são necessárias para usar esta tela. + Permissões necessárias + Preço + Prosseguir + Depósito de proxy + Revogar acesso + Ler mais + Recomendado + Atualizar taxa + Rejeitar + Remover + Obrigatório + Redefinir + Tentar novamente + Revogar + Salvar + Escaneie o código QR + Pesquisar + Os resultados da pesquisa serão exibidos aqui + Resultados da pesquisa: %d + Sequência de derivação secreta + Configurações + Compartilhar + Solicitação de assinatura + Assinatura inválida + Pular + Pular processo + Ocorreu um erro ao enviar algumas transações. Deseja tentar novamente? + Falha ao enviar algumas transações + Ordenar por + Status + Endereço Substrate + Tempo restante + Título + Abrir Configurações + Seu saldo é muito pequeno + Total + ID da transação + Transação enviada + Tente novamente + Tipo + Por favor, tente novamente com outra entrada. Se o erro persistir, entre em contato com o suporte. + Desconhecido + + %s não suportado + %s não suportado + + Ilimitado + Atualizar + Usar + O destinatário deve ser um endereço %s válido + Destinatário inválido + Aguardando + Carteira + Aviso + Sim + O valor deve ser positivo + Referendo + Votar + Rastrear + O nó já foi adicionado anteriormente. Por favor, tente outro nó. + Não é possível estabelecer conexão com o nó. Por favor, tente outro. + Infelizmente, a rede não é suportada. Por favor, tente uma das seguintes: %s. + Deletar + Confirme a deleção de %s. + Deletar rede? + Por favor, verifique sua conexão ou tente novamente mais tarde + Personalizado + Padrão + Redes + Adicionar conexão + Escanear código QR + Crowdloans privados ainda não são suportados. + Crowdloan privado + Sobre crowdloans + Direto + Saiba mais sobre os diferentes contributos para a Acala + Líquido + Ativo (%s) + Concorde com os Termos e Condições + Bônus da Nova Wallet (%s) + O código de referência do Astar deve ser um endereço Polkadot válido + Não é possível contribuir com o valor escolhido uma vez que o montante arrecadado resultante excederá o limite do crowdloan. A contribuição máxima permitida é %s. + Não é possível contribuir para o crowdloan selecionado, uma vez que seu limite já foi atingido. + Limite do crowdloan excedido + Contribua para o crowdloan + Contribuição + Você contribuiu: %s + Liquid + Parallel + Suas contribuições\n aparecerão aqui + Retornos em %s + A ser devolvido pela parachain + %s (via %s) + Crowdloans + Obtenha um bônus especial + Crowdloans serão exibidos aqui + Não é possível contribuir para o crowdloan selecionado, pois já terminou. + Crowdloan terminou + Insira seu código de referência + Informações sobre o crowdloan + Saiba mais sobre o crowdloan de %s + Site do crowdloan de %s + Período de leasing + Escolha parachains para contribuir com seu %s. Você receberá de volta seus tokens contribuídos, e se a parachain ganhar um slot, você receberá recompensas após o final do leilão + Você precisa adicionar uma conta %s à carteira para poder contribuir + Aplicar bônus + Se você não tem um código de referência, você pode aplicar o código de referência da Nova para receber um bônus pela sua contribuição + Você não aplicou o bônus + O crowdloan Moonbeam suporta somente contas do tipo criptográfico SR25519 ou ED25519. Por favor, considere usar outra conta para contribuição + Não é possível contribuir com esta conta + Você deve adicionar uma conta Moonbeam à carteira para participar do crowdloan Moonbeam + Conta Moonbeam está faltando + Este crowdloan não está disponível na sua localização. + Sua região não é suportada + Destino da recompensa %s + Submeter acordo + Você precisa submeter o acordo com os Termos & Condições na blockchain para prosseguir. Isso é necessário ser feito apenas uma vez para todas as contribuições subsequentes no Moonbeam + Eu li e concordo com os Termos e Condições + Arrecadado + Código de referência + Código de referência é inválido. Por favor, tente outro + Termos e Condições de %s + A quantidade mínima permitida para contribuição é %s. + Quantia da contribuição é muito pequena + Seus tokens %s serão devolvidos após o período de locação. + Suas contribuições + Arrecadado: %s de %s + DApps para os quais você permitiu acesso para ver seu endereço quando os usa + O DApp “%s” será removido dos Autorizados + Remover dos Autorizados? + DApps Autorizados + Catálogo + Aprove esta solicitação se você confia no aplicativo + Permitir que “%s” acesse os endereços de sua conta? + Aprove esta solicitação se você confia no aplicativo.\nVerifique os detalhes da transação. + DApp + DApps + Favoritos + Adicionar aos favoritos + O DApp “%s” será removido dos Favoritos + Remover dos Favoritos? + A lista de DApps aparecerá aqui + Navegue na web usando suas contas do Nova Wallet + Bem-vindo ao Nova Browser + Adicionar aos Favoritos + Modo Desktop + Remover dos Favoritos + Configurações da página + Ok, leve-me de volta + O Nova Wallet acredita que este site pode comprometer a segurança de suas contas e seus tokens + Phishing detectado + Busque por nome ou insira URL + Cadeia não suportada com hash de gênese %s + Certifique-se de que a operação está correta + Falha ao assinar a operação solicitada + + Cadeia não encontrada + Domínio do link %s não é permitido + Tipo de governança não especificado + Tipo de governança não suportado + Tipo de criptografia inválido + Caminho de derivação inválido + Mnemônico não é válido + URL inválido + +%d + Pesquisar por endereço ou nome + O formato do endereço é inválido. Certifique-se de que o endereço pertence à rede correta + resultados da pesquisa: %d + A Nova Wallet adiciona automaticamente autoridades delegadas (Proxy) a uma categoria separada para você. Você sempre pode gerenciar carteiras nas Configurações. + Atualização de contas delegadas + Votado por todo o tempo + Delegar + Todas as contas + Indivíduos + Organizações + O período de remoção da delegação começará depois que você revogar uma delegação + Seus votos votarão automaticamente junto com o voto de seus delegados + Informação do delegado + Indivíduo + Organização + Votos delegados + Delegações + Editar delegação + Você não pode delegar para si mesmo, por favor escolha um endereço diferente + Não pode delegar para si mesmo + Conte-nos mais sobre você para que os usuários da Nova conheçam você melhor + Você é um Delegado? + Descreva-se + Através de %s trilhas + Votado nos últimos %s + Seus votos via %s + Seus votos: %s via %s + Remover votos + Revogar delegação + Após o período de desdelegação ter expirado, você precisará desbloquear seus tokens. + Votos delegados + Delegações + Votou pela última vez %s + Faixas + Selecionar tudo + Selecione ao menos 1 faixa... + Não há faixas disponíveis para delegação + Comunhão + Governança + Tesouraria + Período de desdelegação + Sua delegação + Suas delegações + Mostrar + Você já está delegando a esta conta: %s + Delegação já existe + (Compatível com BTC/ETH) + ECDSA + ed25519 (alternativo) + Edwards + Tokens insuficientes para pagar a taxa + Contrato + Chamada de contrato + Função + Confirme a senha + As senhas não correspondem + Definir senha + Rede: %s\nMnemônico: %s\nCaminho de derivação: %s + Rede: %s\nMnemônico: %s + Por favor, aguarde até que a taxa seja calculada + Cálculo da taxa em andamento + Adicionar delegação para staking em %s + Detalhes da troca + Máx: + Você paga + Você recebe + Selecione um token + Desbloquear + Histórico + Email + Nome Legal + Nome no Element + Identidade + Web + O arquivo JSON fornecido foi criado para uma rede diferente. + Por favor, certifique-se de que sua entrada contém um json válido. + O JSON para restauração é inválido + Por favor, verifique a correção da senha e tente novamente. + Falha na descriptografia do armazenamento de chaves + Colar json + Tipo de criptografia não suportado + Não é possível importar conta com segredo Substrate para a rede com criptografia Ethereum + Não é possível importar conta com segredo Ethereum para a rede com criptografia Substrate + Sua mnemônica é inválida + Por favor, certifique-se de que sua entrada contém 64 símbolos hex. + Seed é inválido + O endereço proxy deve ser um endereço %s válido + Endereço proxy inválido + Não foi possível decodificar o QR + Código QR + Carregar da galeria + Idioma + Ledger não suporta %s + A operação foi cancelada pelo dispositivo. Certifique-se de que seu Ledger está desbloqueado. + Operação cancelada + Abra o aplicativo %s no seu dispositivo Ledger + Aplicativo %s não iniciado + Operação concluída com erro no dispositivo. Por favor, tente novamente mais tarde. + Falha na operação do Ledger + Carregar mais contas + Revise e Aprove + Pressione ambos os botões no seu %s para aprovar a transação + Por favor, atualize %s usando o aplicativo Ledger Live + Os metadados estão desatualizados + Ledger não suporta a assinatura de mensagens arbitrarias — apenas transações + Por favor, certifique-se de ter selecionado o dispositivo Ledger correto para a operação atualmente em aprovação + Por motivos de segurança, as operações geradas são válidas apenas por %s. Por favor, tente novamente e aprove com o Ledger + A transação expirou + A transação é válida por %s + Ledger não suporta esta transação. + Transação não suportada + Pressione ambos os botões no seu %s para aprovar o endereço + Esta carteira está pareada com o Ledger. Nova ajudará você a formar quaisquer operações que desejar, e você será solicitado a assiná-las usando o Ledger + Selecione a conta para adicionar à carteira + Transação de pagamento enviada + Adicionar token + + Por favor, tente outra. + Frase secreta mnemônica inválida, por favor verifique mais uma vez a ordem das palavras + Taxa da rede + Endereço do nó + Informação do Nó + Conectando… + Coleção + Criado por + %s por %s + %s unidades de %s + Edição #%s de %s + Série ilimitada + Propriedade de + Não listado + Seus NFTs + Reivindicar recompensas + Seus tokens serão adicionados de volta ao stake + Direto + Informação de staking no pool + Suas recompensas (%s) também serão reivindicadas e adicionadas ao seu saldo livre + Pool + Não é possível realizar a operação especificada pois o pool está em estado de destruição. Será fechado em breve. + Pool está sendo destruído + Atualmente não há vagas disponíveis na fila de desvinculação para o seu pool. Por favor, tente novamente em %s + Muitas pessoas estão desvinculando do seu pool + Seu pool + Seu pool (#%s) + Criar conta + Criar uma nova carteira + Política de Privacidade + Importar conta + Já possui uma carteira + Ao continuar, você concorda com nossos\n%1$s e %2$s + Termos e Condições + Trocar + Um de seus collators não está gerando recompensas + Um de seus collators não foi selecionado na rodada atual + Seu período de desbloqueio para %s passou. Não esqueça de resgatar seus tokens + Não é possível apostar com este collator + Mudar collator + Não é possível adicionar aposta neste collator + Gerenciar collators + O collator selecionado indicou intenção de parar de participar do staking. + Não é possível adicionar stake para o collator pelo qual você está desvinculando todos os tokens. + Sua stake será menor que a stake mínima (%s) para este collator. + O saldo da stake restante cairá abaixo do valor mínimo da rede (%s) e também será adicionado ao valor de desvinculação + Você não está autorizado. Tente novamente, por favor. + Use biometria para autorizar + A Nova Wallet usa autenticação biométrica para restringir usuários não autorizados de acessar o aplicativo. + Biometria + Código PIN alterado com sucesso + Confirme seu código PIN + Crie o código PIN + Digite o código PIN + Defina o seu código PIN + Você não pode entrar no pool, pois ele alcançou o número máximo de membros + Pool está cheio + Você não pode entrar em um pool que não está aberto. Por favor, entre em contato com o proprietário do pool. + Pool não está aberto + Contas + Carteiras + Idioma + Alterar código PIN + Aprovar com PIN + Modo seguro + Configurações + Esta conta concedeu acesso para realizar transações para a seguinte conta: + Não é mais válido + O que é um Proxy? + Operações de Staking + A conta delegada %s não possui saldo suficiente para pagar a taxa da rede de %s. Saldo disponível para pagar a taxa: %s + Carteiras proxy não suportam a assinatura de mensagens arbitrárias — apenas transações + %1$s não delegou %2$s + %1$s delegou %2$s apenas para %3$s + Ops! Permissão insuficiente + A transação será iniciada por %s como uma conta delegada. A taxa de rede será paga pela conta delegada. + Esta é uma conta delegada (Proxied) + %s proxy + Cole o json ou faça upload do arquivo… + Fazer upload de arquivo + Restaurar JSON + Frase-senha mnemônica + Semente bruta + Tipo de fonte + Todos os referendos + Mostrar: + Não votados + Votados + Não foram encontrados referendos com os filtros aplicados + As informações dos referendos aparecerão aqui quando começarem + Nenhum referendo com o título ou ID inserido foi encontrado + Buscar por título de referendo ou ID + Referendos + Referendo não encontrado + A favor: %s + Use o navegador Nova DApp + Somente o proponente pode editar esta descrição e o título. Se você possui a conta do proponente, visite o Polkassembly e preencha informações sobre sua proposta + Detalhes completos + Quantia solicitada + Linha do tempo + Seu voto: + Curva de aprovação + Beneficiário + Copiar hash + Depósito + Eleitorado + Hash da chamada + Muito longo para visualização + Parâmetros JSON + Proponente + Curva de suporte + Participação + Limiar de voto + Posição: %s de %s + Você precisa adicionar uma conta %s à carteira para poder votar + Referendo %s + Contra: %s + Votos \'contra\' + %s votos por %s + Votos \'a favor\' + Staking + Aprovado + Cancelado + Decidindo + Decidirá em %s + Executado + Na fila (%s de %s) + Cancelado + Não aprovado + Aprovado + Preparando + Rejeitado + Aprovação em %s + Execução em %s + Tempo esgotado em %s + Rejeição em %s + Tempo esgotado + Aguardando depósito + Limiar: %s de %s + Votado: Aprovado + Cancelado + Criado + Votando: Decidindo + Executado + Votando: Na fila + Removido + Votando: Não passando + Votando: Passando + Votando: Preparando + Votado: Rejeitado + Tempo esgotado + Votando: Aguardando depósito + Para passar: %s + Crowdloans + Tesouro: grande despesa + Tesouro: grandes gorjetas + Fellowship: administração + Governo: registrador + Governo: aluguel + Tesouro: despesa média + Governo: cancelador + Governo: removedor + Agenda principal + Tesouro: pequena despesa + Tesouro: pequenas gorjetas + Tesouro: qualquer + permanece bloqueado em %s + Pode ser desbloqueado + Abster-se + Sim + Reutilizar todos os bloqueios: %s + Reutilizar bloqueio de governança: %s + Bloqueado em governança + Período de bloqueio + Não + Multiplique votos aumentando o período de bloqueio + Vote por %s + Após o período de bloqueio, não esqueça de desbloquear seus tokens + Referendos votados + %s votos + %s × %sx + A lista de eleitores aparecerá aqui + %s votos + Comunidade: lista branca + Seu voto: %s votos + Referendo concluído e a votação finalizada + Referendo concluído + Você está delegando votos para o trilho de referendo selecionado. Por favor, peça ao seu delegado para votar ou remova a delegação para poder votar diretamente. + Já delegando votos + Você alcançou o máximo de %s votos para o trilho + Número máximo de votos alcançado + Você não tem tokens suficientes disponíveis para votar. Disponíveis para votar: %s. + Revogar tipo de acesso + Revogar para + Remover votos + + Você votou anteriormente em referendos em %d trilho. Para tornar este trilho disponível para delegação, você precisa remover seus votos existentes. + Você votou anteriormente em referendos em %d trilhos. Para tornar estes trilhos disponíveis para delegação, você precisa remover seus votos existentes. + + Remover o histórico dos seus votos? + Falha ao atualizar informações sobre o runtime do blockchain. Algumas funcionalidades podem não funcionar. + Falha na atualização do runtime + Contatos + minhas contas + Nenhum pool com o nome ou ID fornecido foi encontrado. Certifique-se de que inseriu os dados corretos + Endereço da conta ou nome da conta + Os resultados da pesquisa serão exibidos aqui + Resultados da pesquisa + pools ativos: %d + membros + Selecionar pool + Selecionar faixas para adicionar delegação + Faixas disponíveis + Por favor, selecione as faixas nas quais você gostaria de delegar seu poder de voto. + Selecionar faixas para editar delegação + Selecionar faixas para revogar sua delegação + Faixas indisponíveis + Nova precisa que a localização seja ativada para poder realizar a varredura Bluetooth para encontrar seu dispositivo Ledger + Por favor, ative a localização geográfica nas configurações do dispositivo + Endereço ou w3n + O destinatário é uma conta do sistema. Não é controlado por nenhuma empresa ou indivíduo.\nVocê ainda deseja realizar esta transferência? + Os tokens serão perdidos + Dar autoridade para + Por favor, certifique-se de que a biometria está ativada nas Configurações + Biometria desativada nas Configurações + Comunidade + Escrever para os desenvolvedores + Geral + Cada operação de assinatura em carteiras com par de chaves (criada na nova wallet ou importada) deve exigir a verificação do PIN antes da construção da assinatura + Solicitar autenticação para assinatura de operações + Preferências + A gravação de tela e capturas de tela não estarão disponíveis. O aplicativo minimizado não exibirá o conteúdo + Modo seguro + Segurança + Suporte & Feedback + Twitter + Wiki + Youtube + Gerenciamento avançado de staking + O tipo de staking não pode ser alterado + Você já tem Staking Direto + Staking Direto + Você especificou menos do que a aposta mínima de %s necessária para ganhar recompensas com %s. Você deve considerar usar Staking em Pool para ganhar recompensas. + Reutilize tokens na Governança + Aposta mínima: %s + Recompensas: Pagas automaticamente + Recompensas: Reivindicar manualmente + Você já está fazendo staking em um pool + Staking em Pool + Sua aposta é menor que o mínimo para ganhar recompensas + Tipo de staking não suportado + sr25519 (recomendado) + Schnorrkel + + A conta selecionada já está em uso como controladora + Adicionar autoridade delegada (Proxy) + Suas delegações + Delegadores ativos + Adicione a conta controladora %s ao aplicativo para realizar esta ação. + Adicionar delegação + Seu stake é menor que o mínimo de %s. Ter um stake abaixo do mínimo aumenta as chances de não gerar recompensas + Stake mais tokens + Altere seus validadores. + Tudo está bem agora. Alertas aparecerão aqui. + Ter uma posição desatualizada na fila de atribuição de stake a um validador pode suspender suas recompensas + Melhorias no staking + Resgate tokens unstaked. + Por favor, aguarde o início da próxima era. + Alertas + Já é controlador + Você já possui staking em %s + Saldo de staking + Saldo + Stake mais + Você não está nomeando nem validando + Alterar controlador + Alterar validadores + %s de %s + Validadores selecionados + Controlador + Conta controladora + Descobrimos que esta conta não possui tokens livres, tem certeza de que deseja alterar o controlador? + O controlador pode desfazer o stake, resgatar, retornar ao stake, alterar o destino das recompensas e os validadores. + O controlador é usado para: desfazer o stake, resgatar, retornar ao stake, alterar validadores e definir o destino das recompensas + Controlador alterado + Este validador está bloqueado e não pode ser selecionado no momento. Por favor, tente novamente na próxima era. + Limpar filtros + Desmarcar todos + Preencher o restante com recomendados + Validadores: %d de %d + Selecionar validadores (máx %d) + Mostrar selecionados: %d (máx %d) + Selecionar validadores + Recompensas estimadas (% APR) + Recompensas estimadas (% APY) + Atualizar sua lista + Staking via navegador DApp Nova + Mais opções de staking + Faça stake e ganhe recompensas + Recompensas estimadas + era #%s + Ganhos estimados + Ganhos estimados %s + Stake próprio do validador + Stake próprio do validador (%s) + Tokens no período de desbloqueio não geram recompensas. + Durante o período de desbloqueio, tokens não produzem recompensas + Após o período de desbloqueio, você precisará resgatar seus tokens. + Após o período de desbloqueio, não esqueça de resgatar seus tokens + Suas recompensas serão aumentadas a partir da próxima era. + Você receberá recompensas aumentadas a partir da próxima era + Tokens apostados geram recompensas a cada era (%s). + Tokens em stake produzem recompensas a cada era (%s) + A carteira Nova alterará o destino das recompensas para a sua conta para evitar a permanência em stake. + Se você deseja desbloquear tokens, terá que esperar pelo período de desbloqueio (%s). + Para desbloquear tokens, você terá que esperar pelo período de desbloqueio (%s) + Informações sobre Staking + Nominadores ativos + + %d dia + %d dias + + Stake mínimo + Rede %s + Apostado + Por favor, troque sua carteira para %s para configurar um proxy + Selecione a conta stash para configurar o proxy + Gerenciar + %s (máx. %s) + O número máximo de nominadores foi alcançado. Tente novamente mais tarde + Não é possível iniciar o staking + Stake mín. + Você precisa adicionar uma conta %s à sua carteira para começar o staking + Mensal + Adicione sua conta controladora no dispositivo. + Sem acesso à conta controladora + Nomeado: + %s recompensado + Um dos seus validadores foi eleito pela rede. + Status ativo + Status inativo + Sua quantia staked é menor que o stake mínimo para receber uma recompensa. + Nenhum dos seus validadores foi eleito pela rede. + Seu staking começará na próxima era. + Inativo + Aguardando a próxima Era + aguardando a próxima era (%s) + Você não tem saldo suficiente para o depósito proxy de %s. Saldo disponível: %s + Colator + O stake mínimo do colator é maior que a sua delegação. Você não receberá recompensas deste colator. + Informação do colator + Stake próprio do colator + Colatores: %s + Um ou mais dos seus colatores foram eleitos pela rede. + Delegadores + Você atingiu o número máximo de delegações de %d colatores + Você não pode selecionar um novo collator + Novo collator + esperando pela próxima rodada (%s) + Você tem solicitações de desvinculação pendentes para todos os seus collators. + Nenhum collator disponível para desvinculação + Os tokens retornados serão contabilizados a partir da próxima rodada + Tokens em stake produzem recompensas a cada rodada (%s) + Selecionar collator + Selecionar collator... + Você receberá recompensas aumentadas a partir da próxima rodada + Você não receberá recompensas para esta rodada, pois nenhuma das suas delegações está ativa. + Você já está desvinculando tokens deste collator. Você só pode ter uma desvinculação pendente por collator + Você não pode desvincular deste collator + Seu stake deve ser maior que o stake mínimo (%s) para este collator. + Você não receberá recompensas + Alguns dos seus collators ou não foram eleitos ou têm um stake mínimo maior do que o valor que você apostou. Você não receberá uma recompensa nesta rodada ao apostar com eles. + Seus collators + Sua participação está atribuída aos próximos coletores + Coletores ativos sem produzir recompensas + Coletores sem participação suficiente para serem eleitos + Coletores que entrarão em ação na próxima rodada + Pendente (%s) + Pagamento + Pagamento expirado + + %d dia restante + %d dias restantes + + Você pode pagá-las por si mesmo, quando estiverem perto de expirar, mas você pagará a taxa + As recompensas são pagas a cada 2–3 dias pelos validadores + Todos + Todo o tempo + A data final é sempre hoje + Período personalizado + %dD + Selecione a data final + Termina + Últimos 6 meses (6M) + 6M + Últimos 30 dias (30D) + 30D + Últimos 3 meses (3M) + 3M + Selecionar data + Selecionar data de início + Inicia + Mostrar recompensas de staking para + Últimos 7 dias (7D) + 7D + Último ano (1Y) + 1Y + Seu saldo disponível é %s, você precisa deixar %s como saldo mínimo e pagar a taxa de rede de %s. Você pode fazer staking de no máximo %s. + Autoridades delegadas (proxy) + Slot atual da fila + Novo slot da fila + Retornar ao staking + Todo o unstaking + Os tokens retornados serão contados a partir da próxima era + Quantia customizada + A quantia que você deseja retornar ao staking é maior que o saldo de unstaking + Último unstaked + Mais rentável + Não sobrescrito + Com identidade onchain + Não penalizado + Limite de 2 validadores por identidade + com pelo menos um contato de identidade + Validadores recomendados + Validadores + Recompensa estimada (APY) + Resgatar + Resgatável: %s + Recompensa + Destino da recompensa + Recompensas transferíveis + Era + Detalhes da recompensa + Validador + Ganhos com reinvestimento + Ganhos sem reinvestimento + Perfeito! Todas as recompensas estão pagas. + Incrível! Você não tem recompensas não pagas + Pagar tudo (%s) + Recompensas pendentes + Recompensas não pagas + Recompensas + Sobre recompensas + Recompensas (APY) + Destino das recompensas + Selecionar por conta própria + Selecionar conta para pagamento + Selecionar recomendação + selecionado %d (máx. %d) + Validadores (%d) + Atualizar Controlador para Stash + Use Proxies para delegar operações de Staking a outra conta + Contas de Controlador Estão Sendo Descontinuadas + Selecione outra conta como controladora para delegar a ela operações de gerenciamento de staking + Melhore a segurança do staking + Definir validadores + Validadores não foram selecionados + Selecione validadores para iniciar o staking + A aposta mínima recomendada para receber recompensas consistentemente é %s. + Você não pode apostar menos do que o valor mínimo da rede (%s) + A aposta mínima deve ser maior que %s + Reapostar + Reapostar recompensas + Como usar suas recompensas? + Selecione o tipo de suas recompensas + Conta para pagamento + Corte + Apostar %s + Apostar o máximo + Período de staking + Tipo de staking + Você deve confiar nas suas nomeações para agir de forma competente e honesta, baseando sua decisão puramente em sua lucratividade atual pode levar a lucros reduzidos ou até mesmo perda de fundos. + Escolha seus validadores com cuidado, uma vez que eles devem agir com proficiência e honestidade. Basear sua decisão puramente na lucratividade pode levar a recompensas reduzidas ou até mesmo perda de participação + Participe com seus validadores + A Nova Wallet selecionará os principais validadores com base em critérios de segurança e lucratividade + Participe com validadores recomendados + Comece a participar + Reserva + A Reserva pode vincular mais e definir o controlador. + A Reserva é usada para: participar mais e definir o controlador + Conta de Reserva %s não está disponível para atualizar a configuração de participação. + O Nominador ganha renda passiva ao bloquear seus tokens para a segurança da rede. Para isso, o Nominador deve selecionar um número de validadores para apoiar. O Nominador deve ser cuidadoso ao selecionar validadores. Se o validador selecionado não se comportar adequadamente, penalidades de corte serão aplicadas a ambos, baseadas na gravidade do incidente. + A Nova Wallet oferece suporte para nominadores ajudando-os a selecionar validadores. O aplicativo móvel obtém dados da blockchain e compõe uma lista de validadores, que têm: mais lucros, identidade com informações de contato, não foram penalizados com corte e estão disponíveis para receber nomeações. A Nova Wallet também se preocupa com a descentralização, então se uma pessoa ou uma empresa operar vários nós de validador, apenas até 2 nós deles serão mostrados na lista recomendada. + Quem é um Nominador? + As recompensas por staking estão disponíveis para pagamento no final de cada era (6 horas em Kusama e 24 horas em Polkadot). A rede armazena recompensas pendentes durante 84 eras e, na maioria dos casos, os validadores estão pagando as recompensas para todos. No entanto, os validadores podem esquecer ou algo pode acontecer com eles, então os nomeadores podem pagar suas próprias recompensas. + Embora as recompensas sejam geralmente distribuídas pelos validadores, a Nova Wallet ajuda alertando se houver quaisquer recompensas não pagas que estão próximas de expirar. Você receberá alertas sobre isso e outras atividades na tela de staking. + Recebimento de recompensas + Staking é uma opção para ganhar renda passiva ao bloquear seus tokens na rede. As recompensas de staking são alocadas a cada era (6 horas em Kusama e 24 horas em Polkadot). Você pode fazer staking pelo tempo que desejar, e para desfazer o staking de seus tokens você precisa esperar pelo período de unstaking terminar, tornando seus tokens disponíveis para serem resgatados. + O staking é uma parte importante da segurança e confiabilidade da rede. Qualquer um pode executar nós validadores, mas apenas aqueles que têm tokens suficientes apostados serão eleitos pela rede para participar da composição de novos blocos e receber as recompensas. Os validadores muitas vezes não têm tokens suficientes por si mesmos, então os nomeadores os ajudam bloqueando seus tokens para eles atingirem a quantidade necessária de stake. + O que é staking? + O validador executa um nó de blockchain 24/7 e precisa ter stake suficiente bloqueada (tanto própria quanto fornecida por nomeadores) para ser eleito pela rede. Os validadores devem manter o desempenho e a confiabilidade de seus nós para serem recompensados. Ser um validador é quase um trabalho em tempo integral, existem empresas que se concentram em ser validadores nas redes blockchain. + Qualquer um pode ser um validador e executar um nó de blockchain, mas isso exige um certo nível de habilidades técnicas e responsabilidade. As redes Polkadot e Kusama têm um programa, chamado Thousand Validators Programme, para fornecer suporte aos iniciantes. Além disso, a própria rede sempre recompensará mais os validadores, que têm menos participação (mas o suficiente para ser eleito) para melhorar a descentralização. + Quem é um validador? + Troque sua conta para stash para definir o controlador. + Staking + %s staking + Recompensado + Total apostado + Limite de impulso + Para meu coletor + sem Aumento de Rendimento + com Aumento de Rendimento + para apostar automaticamente %s todos os meus tokens transferíveis acima + para apostar automaticamente %s (antes: %s) todos os meus tokens transferíveis acima + Eu quero apostar + Aumento de Rendimento + Tipo de Staking + Você está retirando todos os seus tokens e não pode apostar mais. + Incapaz de apostar mais + Ao desvincular parcialmente, você deve deixar pelo menos %s em stake. Deseja realizar o desvinculamento total desvinculando os %s restantes também? + Quantia muito pequena restante em stake + A quantia que você quer desvincular é maior que o saldo em stake + Desvincular + Transações de desvinculação aparecerão aqui + Transações de desvinculação serão exibidas aqui + Desvinculando: %s + Seus tokens estarão disponíveis para resgate após o período de desvinculação. + Você atingiu o limite de pedidos de desvinculação (%d pedidos ativos). + Limite de pedidos de desvinculação atingido + Período de desvinculação + Desvincular tudo + Desvincular tudo? + Recompensa estimada (% APY) + Recompensa estimada + Informações do validador + Sobrescrito. Você não receberá recompensas do validador nesta era. + Nomeadores + Sobrescrito. Apenas os nomeadores com maior stake são recompensados. + Próprio + Nenhum resultado de busca.\nCertifique-se de que digitou o endereço completo da conta + Validador é punido por mau comportamento (por exemplo, fica offline, ataca a rede ou executa software modificado) na rede. + Aposta total + Aposta total (%s) + A recompensa é menor que a taxa de rede. + Anual + Sua aposta é alocada aos seguintes validadores. + Sua aposta é destinada aos próximos validadores + Eleitos (%s) + Validadores que não foram eleitos nesta era. + Validadores sem aposta suficiente para serem eleitos + Outros, que estão ativos sem a sua alocação de aposta. + Validadores ativos sem a sua alocação de aposta + Não eleitos (%s) + Seus tokens são alocados aos validadores com excesso de subscrição. Você não receberá recompensas nesta era. + Recompensas + Sua aposta + Seus validadores + Seus validadores mudarão na próxima era. + Você bloqueou tokens em seu saldo devido a %s. Para continuar, você deve inserir menos que %s ou mais que %s. Para apostar outro valor, você deve remover seus bloqueios %s. + Você não pode apostar o valor especificado + Selecionado: %d (máx %d) + Saldo disponível: %1$s (%2$s) + %s com seus tokens em stake + Participe da governança + Aposte mais de %1$s e %2$s com seus tokens em stake + participe da governança + Aposte a qualquer momento com tão pouco quanto %1$s. Seu stake ganhará recompensas ativamente %2$s + em %s + Aposte a qualquer momento. Seu stake ganhará recompensas ativamente %s + Descubra mais informações sobre\n%1$s apostando na %2$s + Nova Wiki + Recompensas acumulam %1$s. Aposte mais de %2$s para o pagamento automático de recompensas, caso contrário, você precisa reivindicar as recompensas manualmente + a cada %s + Recompensas acumulam %s + Recompensas acumulam %s. Você precisa reivindicar as recompensas manualmente + As recompensas são acumuladas %s e adicionadas ao saldo transferível + As recompensas são acumuladas %s e adicionadas de volta à stake + O status das recompensas e da stake varia ao longo do tempo. %s de tempos em tempos + Monitore sua stake + Começar a Stake + Veja %s + Termos de Uso + %1$s é uma %2$s com %3$s + sem valor de token + rede de teste + %1$s\nem seus tokens %2$s\npor ano + Ganhe até %s + Desfaça a stake a qualquer momento e resgate seus fundos %s. Nenhuma recompensa é ganha enquanto desfaz a stake + após %s + O pool selecionado está inativo devido à não seleção de validadores ou sua stake é menor que o mínimo.\nTem certeza de que deseja continuar com o Pool selecionado? + O número máximo de nomeadores foi alcançado. Tente novamente mais tarde + %s está atualmente indisponível + Validadores: %d (máx %d) + Token para pagar a taxa de rede + A taxa de rede é adicionada em cima do valor inserido + Este par não é suportado + Você deve manter pelo menos %s após pagar a taxa de rede %s, pois você está com tokens insuficientes + Você deve manter pelo menos %s para receber o token %s + Você pode trocar até %1$s, pois você precisa pagar %2$s de taxa de rede. + Você pode trocar até %1$s, pois você precisa pagar %2$s de taxa de rede e também converter %3$s em %4$s para atender ao saldo mínimo de %5$s. + Trocar máximo + Trocar mínimo + Você deve deixar pelo menos %1$s no seu saldo. Deseja realizar a troca total adicionando os %2$s restantes também? + Quantia muito pequena restante no seu saldo + Você deve manter pelo menos %1$s após pagar a taxa de rede %2$s e converter %3$s em %4$s para atender ao saldo mínimo de %5$s.\n\nDeseja realizar a troca total adicionando os %6$s restantes também? + Pagar + Receber + Selecione um token + Tokens insuficientes para a troca + Liquidez insuficiente + Você não pode receber menos de %s + Compra instantânea de %s com cartão de crédito + Transfira %s de outra rede + Receba %s com QR ou seu endereço + Obtenha %s usando + O deslizamento deve ser especificado entre %s e %s + Deslizamento inválido + Selecione um token para pagar + Selecione um token para receber + Digite a quantidade + Digite outra quantidade + Para pagar a taxa de rede com %s, a Nova fará automaticamente a troca de %s por %s para manter o saldo mínimo de %s na sua conta. + Uma taxa de rede cobrada pela blockchain para processar e validar quaisquer transações. Pode variar dependendo das condições da rede ou velocidade da transação. + O pool não tem liquidez suficiente para a troca + Diferença de preço refere-se à diferença de preço entre dois ativos diferentes. Ao fazer uma troca em cripto, a diferença de preço geralmente é entre o preço do ativo que você está trocando e o preço do ativo com o qual você está trocando. + Diferença de preço + %s ≈ %s + Taxa de câmbio entre duas criptomoedas diferentes. Representa quanto de uma criptomoeda você pode obter em troca por uma certa quantidade de outra criptomoeda. + Taxa + Taxa antiga: %1$s ≈ %2$s.\nNova taxa: %1$s ≈ %3$s + A taxa de troca foi atualizada + Repetir a operação + Configurações de Troca + Deslizamento + Deslizamento em trocas é um acontecimento comum em negociações descentralizadas onde o preço final de uma transação de troca pode diferir ligeiramente do preço esperado, devido às condições de mercado em mudança. + Insira outro valor + Insira um valor entre %s e %s + Deslizamento + A transação pode ser antecipada por causa do alto deslizamento. + A transação pode ser revertida por causa da baixa tolerância ao deslizamento. + A quantia de %s é menor que o saldo mínimo de %s + Você está tentando trocar uma quantia muito pequena + Staking + Carteira + Hoje + Copiar hash + Taxa + De + Hash da Transação + Detalhes da Transação + Ver em %s + Ver no Polkascan + Ver no Subscan + %s em %s + Concluído + Falhou + Pendente + De: %s + Para: %s + Transferência + Transferências de entrada e saída serão exibidas aqui + Suas operações serão exibidas aqui + Remova votos para delegar nestas faixas + Faixas que você já delegou votos + Faixas indisponíveis + Faixas em que você tem votos existentes + Instalar + Versão %s + Atualização disponível + Para evitar quaisquer problemas e melhorar sua experiência de usuário, recomendamos fortemente que instale as atualizações recentes o mais rápido possível + Atualização crítica + Mais recente + Muitas novas funcionalidades incríveis estão disponíveis para a Nova Wallet! Certifique-se de atualizar sua aplicação para acessá-las + Atualização importante + Crítica + Importante + Ver todas as atualizações disponíveis + Nome + Nome da carteira + Este nome será exibido apenas para você e armazenado localmente em seu dispositivo móvel. + Esta conta não foi eleita pela rede para participar da era atual + Re-votar + Votar + Status da votação + Comprar + Comprar com + Receber + Receber %s + Enviar + Trocar + Ativos + Seus ativos aparecerão aqui.\nCertifique-se de que o filtro\n\"Ocultar saldos zero\"\nestá desativado + Valor dos ativos + Disponível + Delegado + Detalhes do saldo + Saldo total + Total após a transferência + Congelado + Bloqueado + Resgatável + Reservado + Transferível + Desvinculando + Carteira + Nova conexão + + %s conta está faltando. Adicione a conta na carteira em Configurações + %s contas estão faltando. Adicione as contas na carteira em Configurações + + Algumas das redes necessárias solicitadas por \"%s\" não são suportadas na Nova Carteira + As sessões do Wallet Connect aparecerão aqui + WalletConnect + dApp desconhecido + + %s rede não suportada é oculta + %s redes não suportadas são ocultas + + WalletConnect v2 + Transferência entre cadeias + Criptomoedas + Moedas fiduciárias + Moedas fiduciárias populares + Moeda + Detalhes extrínsecos + Ocultar ativos com saldo zero + Outras transações + Exibir + Recompensas e Penalidades + Trocas + Filtros + Transferências + Gerenciar ativos + Exemplos de nomes: Conta principal, Meu validador, Empréstimos coletivos Dotsama, etc. + Compartilhe este QR com o remetente + Permita que o remetente escaneie este código QR + Meu endereço %s para receber %s: + Compartilhar código QR + Destinatário + Certifique-se de que o endereço é\nda rede correta + Formato de endereço inválido.\nCertifique-se de que o endereço\npertence à rede correta + Saldo mínimo + Devido às restrições entre cadeias, você pode transferir no máximo %s + Você não tem saldo suficiente para pagar a taxa de Cross-chain de %s.\nSaldo restante após a transferência: %s + A taxa Cross-chain é adicionada ao valor inserido. O destinatário pode receber parte da taxa Cross-chain + Confirmar transferência + Entre cadeias + Taxa Cross-chain + Sua transferência falhará, pois a conta de destino não tem %s suficiente para aceitar outras transferências de token + O destinatário não pode aceitar a transferência + Sua transferência falhará, pois o valor final na conta de destino será menor que o saldo mínimo. Por favor, tente aumentar o valor. + Sua transferência removerá a conta do bloco de armazenamento, pois fará com que o saldo total seja menor que o saldo mínimo. + Sua conta será removida da blockchain após a transferência pois reduzirá o saldo total abaixo do mínimo + Transferência removerá conta + Sua conta será removida da blockchain após a transferência pois isso fará com que o saldo total fique abaixo do mínimo. O saldo restante também será transferido ao destinatário. + Da rede + Você precisa ter pelo menos %s para pagar esta taxa de transação e permanecer acima do saldo mínimo da rede. Seu saldo atual é: %s. Você precisa adicionar %s ao seu saldo para realizar esta operação. + Para mim + Na cadeia + O seguinte endereço: %s é conhecido por ser utilizado em atividades de phishing, portanto não recomendamos enviar tokens para esse endereço. Deseja prosseguir mesmo assim? + Alerta de golpe + O destinatário foi bloqueado pelo proprietário do token e atualmente não pode aceitar transferências recebidas + O destinatário não pode aceitar transferência + Rede do destinatário + Para a rede + Enviar %s de + Enviar %s em + para + Remetente + Tokens + Enviar para este contato + Detalhes da transferência + Seu saldo + %s (%s) + Endereços %s para %s + Nova detectou problemas com a integridade das informações sobre os endereços %1$s. Entre em contato com o proprietário de %1$s para resolver os problemas de integridade. + Falha na verificação de integridade + Destinatário inválido + Nenhum endereço válido foi encontrado para %s na rede %s + %s não encontrado + Os serviços w3n %1$s estão indisponíveis. Tente novamente mais tarde ou insira o endereço %1$s manualmente + Erro ao resolver w3n + Nova não pode resolver o código do token %s + Token %s ainda não é suportado + Ontem + O impulso de rendimento será desligado para os colatores atuais. Novo colator: %s + Alterar o Colator com Impulso de Rendimento? + Você não tem saldo suficiente para pagar a taxa de rede de %s e a taxa de execução do impulso de rendimento de %s.\nSaldo disponível para pagar a taxa: %s + Não há tokens suficientes para pagar a primeira taxa de execução + Você não tem saldo suficiente para pagar a taxa de rede de %s e não cair abaixo do limiar de %s.\nSaldo disponível para pagar a taxa: %s + Não há tokens suficientes para permanecer acima do limiar + Tempo de aumento de stake + O Impulso de Rendimento irá automaticamente fazer o stake de %s de todos os meus tokens transferíveis acima de %s + Com Impulso de Rendimento + diff --git a/common/src/main/res/values-ru/strings.xml b/common/src/main/res/values-ru/strings.xml index 821de4470e..9d69887507 100644 --- a/common/src/main/res/values-ru/strings.xml +++ b/common/src/main/res/values-ru/strings.xml @@ -230,7 +230,6 @@ Сеть Изменить Выберите сеть - Очистить Закрыть Вы уверены, что хотите закрыть этот экран?\nИзменения не будут применены. Завершённые @@ -341,11 +340,9 @@ Для использования этого экрана требуются запрашиваемые разрешения. Необходимы разрешения Цена - Политикой конфиденциальности Продолжить Прокси депозит Отозвать доступ - Push-уведомления Подробнее Рекомендовано Обновить @@ -354,7 +351,6 @@ Обязательные Сброс Повторить - Что-то пошло не так. Пожалуйста, попробуйте еще раз Отменить Сохранить Отсканируйте QR-код @@ -370,11 +366,9 @@ Пропустить Произошла ошибка при отправке некоторых транзакций. Вы хотите повторить попытку? Не удалось отправить некоторые транзакции - Что-то пошло не так Сортировка по Статус Substrate адрес - Условиями использования Оставшееся время Заголовок Открыть Настройки @@ -577,13 +571,6 @@ Вы платите Вы получаете Выберите токен - Канал уведомлений демократии - - Необходимо выбрать хотя бы %d трек - Необходимо выбрать хотя бы %d трека - Необходимо выбрать хотя бы %d треков - - Разблокировать История Почта @@ -635,13 +622,6 @@ Добавить Пожалуйста, попробуйте другую. Ваша мнемоника недействительна, пожалуйста, проверьте еще раз порядок слов - Вы не можете выбрать более %d кошельков. - - Выберите хотя бы %d кошелек - Выберите хотя бы %d кошелька - Выберите хотя бы %d кошельков - Выберите хотя бы %d кошельков - Комиссия сети Адрес ноды Информация ноды @@ -672,7 +652,7 @@ Политикой конфиденциальности Импортировать аккаунт У меня уже есть кошелёк - Продолжая вы соглашаетесь с нашими\nУсловиями использования и Политикой конфиденциальности + Продолжая, вы соглашаетесь с нашими\n%1$s и %2$s Условиями использования Обмен Один из ваших коллаторов не генерирует награды @@ -718,47 +698,6 @@ Транзакция будет инициирована %s как делегированным аккаунтом. Сетевая комиссия будет оплачена делегированным аккаунтом. Это делегирующий (проксированный) аккаунт %s - Голоса делегата - Новые референдумы - Обновление референдума - %s Референдум #%s уже доступен! - 🗳️ Новый референдум - Загрузите Nova Wallet v%s, чтобы получить новые функции! - Доступно новое обновление Nova Wallet! - %1$s Референдум #%2$s завершился и был одобрен 🎉 - ✅ Референдум одобрен! - %1$s Референдум #%2$s изменил статус с %3$s на %4$s - %1$s Референдум #%2$s завершился и был отклонен! - ❌ Референдум отклонен! - 🗳️ Статус референдума изменен - %1$s Референдум #%2$s изменил статус на %3$s - Объявления Nova - Балансы - Включить уведомления - Вы не будете получать уведомления о деятельности кошелька (балансы, стейкинг), поскольку вы не выбрали ни один кошелек. - Прочее - Полученные токены - Отправленные токены - Награды стейкинга - Кошельки - ⭐️ Новая награда %s - Получено %s от %s стейкинга - ⭐️ Новая награда - Nova Wallet • сейчас - Получено +0.6068 KSM ($20.35) от Kusama стейкинга - Получено %s в сети %s - ⬇️ Получено - ⬇️ Получено %s - Отправлено %1$s на %2$s в сети %3$s - 💸 Отправлено - 💸 Отправлено %s - Выберите до 3 кошельков для которых вы будете получать уведомления о событиях кошелька - Не сейчас - Включить push-уведомления - Получайте уведомления об операциях кошелька, обновлениях демократии, наград стейкинга и безопасности, чтобы вы всегда быть в куре событий - Включая push-уведомления, вы соглашаетесь с нашими %s и %s - Повторите попытку позже, открыв настройки уведомлений на вкладке «Настройки» - Не пропустите ничего! Вставьте json строку или загрузите файл… Загрузите файл JSON для восстановления @@ -807,7 +746,6 @@ Решение Начнёт решаться через %s Выполнен - В очереди В очереди (%s из %s) Удалён Не проходит @@ -903,8 +841,6 @@ Недоступные треки Nova нуждается в включении местоположения, чтобы иметь возможность выполнять сканирование Bluetooth для поиска вашего устройства Ledger Пожалуйста, включите геолокацию в настройках устройства - Выберите треки для - %d из %d Адрес или w3n Получатель является системным аккаунтом. Этот аккаунт не контролируется какой-либо компанией или частным лицом. \nВы уверены, что все еще хотите выполнить данный перевод? Токены будут потеряны @@ -1035,7 +971,6 @@ Ожидание следующей Эры ожидание следующей эры (%s) У вас недостаточный баланс для прокси-депозита %s. Доступный баланс: %s - Канал уведомлений стейкинга Коллатор Минимальный стейк коллатора выше, чем ваша делегация. Вы не будете получать вознаграждения от этого коллатора. Информация о коллаторе @@ -1337,7 +1272,6 @@ Успешно Ошибка В ожидании - Канал уведомлений о транзакциях От: %s Кому: %s Перевод diff --git a/common/src/main/res/values-zh-rCN/strings.xml b/common/src/main/res/values-zh-rCN/strings.xml new file mode 100644 index 0000000000..c9b7a868a8 --- /dev/null +++ b/common/src/main/res/values-zh-rCN/strings.xml @@ -0,0 +1,1388 @@ + + + 联系我们 + Github + 隐私政策 + 给我们评分 + Telegram + 条款和条件 + 条款与条件 + 关于 + 应用版本 + 网站 + 输入有效的%s地址… + EVM地址必须有效或为空… + 输入有效的substrate地址… + 添加账户 + 账户已存在。请尝试另一个。 + 通过其地址跟踪任何钱包 + 添加仅观察钱包 + 助记词密语 + 记录该短语并将其存放在安全的地方 + 请确保您的短语正确且清晰地写下。 + %s地址 + 确认助记词 + 按正确的顺序选择单词。 + 让我们再次检查一下 + 按正确的顺序选择单词 + 创建一个新账户 + 不要在您的移动设备上使用剪贴板或截图,请尝试寻找备份的安全方法(例如纸张) + 名称将仅在此应用中本地使用。您可以稍后编辑它 + 创建钱包名称 + 备份助记词 + 助记词用于恢复对账户的访问。请将其写下来,没有它我们将无法恢复您的账户! + 带有更改密钥的账户 + 忘记 + 继续之前,请确保您已导出您的钱包。 + 忘记钱包? + 以太坊派生路径无效 + Substrate派生路径无效 + 此钱包与%1$s配对。Nova将帮助您形成任何您想要的操作,并且您将被请求使用%1$s签名它们 + 不支持%s + 这是仅查看钱包,Nova可以显示您的余额和其他信息,但您不能使用此钱包进行任何交易 + 输入钱包昵称... + 请尝试另一个。 + Ethereum密钥对加密类型 + Ethereum密钥派生路径 + 导出账户 + 导出 + 这是加密数据并保存JSON文件所必需的。 + 设置一个新密码 + 保存您的密钥并将其存放在安全的地方 + 更改密码 + 记录您的密钥并将其存放在安全的地方 + 恢复json无效。请确保输入包含有效的json。 + Seed无效。请确保您的输入包含64个十六进制符号。 + JSON不包含网络信息。请在下面指定。 + 提供您的恢复JSON + 通常是12个单词短语(但可能是15、18、21或24) + 单词之间用一个空格分开,没有逗号或其他符号 + 按正确顺序输入单词 + 密码 + 0xAB + 输入您的原始seed + Nova与所有应用程序兼容 + 导入钱包 + 账户 + 您的派生路径包含不支持的符号或结构不正确 + 无效的派生路径 + JSON文件 + 确保通过Ledger Live应用把网络应用安装到您的Ledger设备上。在您的Ledger设备上打开网络应用。 + 至少添加一个账户 + 将账户添加到您的钱包 + Ledger官方蓝牙连接指南 + 确保网络应用已安装到您的Ledger设备中,使用Ledger Live应用 + Open the network app on your Ledger device + 允许Nova Wallet访问蓝牙和位置 + Select account to add to wallet + 连接Ledger Nano X + Ledger Nano X + 请在手机设置和Ledger设备中启用蓝牙。解锁您的Ledger设备并打开%s应用。 + 选择您的Ledger设备 + 12、15、18、21或24个单词的短语 + 您在这个网络上没有账户,您可以创建或导入账户。 + 需要账户 + 没有找到账户 + Parity 签名器 + %s不支持%s + 以下账户已经成功从%s读取 + 这里是您的账户 + 无效的QR码,请确保您正在扫描来自%s的QR码 + 请确保选择最上面的一个 + Open Parity Signer application on your smartphone + Go to “Keys” tab. Select seed, then account you would like to add to Nova Wallet + Parity签名器将为您提供扫描的QR码 + 从%s添加钱包 + %s不支持签名任意消息 — 只有交易 + 不支持签名 + 从%s扫描QR码 + 用%s扫描QR码 + 我在%s中有一个错误 + QR码已过期 + 出于安全原因,生成的操作仅在%s内有效。\n请生成新的QR码并用%s签名 + QR码有效期为%s + 请确保您正在扫描当前签名操作的二维码 + 使用 %s 签名 + Polkadot Vault + 注意,衍生路径名称应为空 + Open Polkadot Vault application on your smartphone + Go to “Key Sets” tab. Select your Key set, Network, and then the account you would like to add to Nova Wallet + Polkadot Vault 将提供给您要扫描的二维码 + 私钥 + 委托给您的(代理) + 任何 + 拍卖 + 取消代理 + 治理 + 身份判断 + 提名池 + 非转移 + 质押 + 已有账户 + 64 个十六进制符号 + 选择硬件钱包 + 选择您的秘密类型 + 选择钱包 + 具有共享秘密的账户 + Substrate 密钥对加密类型 + Substrate 秘密衍生路径 + 钱包昵称 + Moonbeam、Moonriver 以及其他网络 + EVM 地址(可选) + 预设钱包 + Polkadot、Kusama、Karura、KILT 以及 50+ 网络 + 跟踪任何钱包的活动,无需将您的私钥输入到Nova Wallet + 您的钱包是仅查看的,这意味着您不能对其进行任何操作 + 哎呀!缺少密钥 + 仅查看 + 使用Polkadot Vault、Ledger或Parity Signer + 连接硬件钱包 + 添加%s帐户 + 添加钱包 + 更改%s帐户 + 更改帐户 + 您需要添加一个%s帐户到钱包才能委托 + 委托给 + 委托帐户 + 委托钱包 + 授予访问类型 + 存款在您的帐户上保留,直到代理被删除。 + 您已达到在%s中添加的代理的上限%s。移除代理以添加新代理。 + 已达到代理最大数量 + 输入的合约地址已作为%s代币存在于Nova中。 + 输入的合约地址已作为%s代币存在于Nova中。您确定要修改它吗? + 该代币已存在 + 请确保提供的网址格式为:www.coingecko.com/en/coins/tether。 + CoinGecko链接无效 + 输入的合约地址不是%s ERC-20合约。 + 合约地址无效 + 小数点后数字必须至少为0,且不超过36。 + 小数值无效 + 输入合约地址 + 输入小数 + 输入符号 + 添加代币 + 合约地址 + 小数点 + Coingecko链接用于价格信息(可选) + 符号 + 输入 ERC-20 代币详情 + 选择网络以添加 ERC-20 代币 + 众贷 + 治理 v1 + 开放治理 + 选举 + 质押 + 归属 + 购买代币 + 从众贷中收回你的 DOT 了吗?今天开始质押你的 DOT,以获得最大可能的奖励! + 提升你的 DOT 🚀 + 筛选代币 + 所有网络 + 代币管理 + 不要将 %s 转账至 Ledger 控制的账户,因为 Ledger 不支持 %s 的发送,所以资产将被卡在这个账户上 + Ledger 不支持此代币 + 按网络或代币搜索 + 没有找到输入名称的网络或代币 + 你的钱包 + 你没有要发送的代币。购买或接收代币到你的账户。 + 要支付的代币 + 要接收的代币 + 生物认证 + 购买已启动!请等待最多 60 分钟。你可以在电子邮件上追踪状态。 + 为了继续购买,你将从 Nova Wallet 应用被重定向到 %s + 在浏览器中继续? + 资产 + 可用余额 + 抱歉,余额检查请求失败。请稍后再试。 + 很抱歉,我们无法联系转账提供者。请稍后再试。 + 抱歉,您没有足够的资金支付指定金额 + 转账费 + 网络无响应 + + 接受条款... + 账户 + 账户地址 + 活跃 + 添加 + 添加委托 + 地址 + 高级 + 全部 + 允许 + 金额 + 金额太低 + 金额太大 + 已应用 + 应用 + 再次询问 + 注意! + 可用:%s + 平均 + 余额 + 奖金 + 呼叫 + 取消 + 您确定要取消这项操作吗? + 抱歉,您没有适当的应用程序来处理这个请求 + 无法打开此链接 + 您最多可以使用%s,因为您需要支付\n%s的网络费用。 + + 更改 + 选择网络 + 关闭 + 您确定要关闭此屏幕吗?\n您的更改将不会被应用。 + 已完成 + 已完成(%s) + 确认 + 确认 + 你确定吗? + 已确认 + 继续 + 已复制到剪贴板 + 复制地址 + 复制ID + 密钥对加密类型 + 日期 + %s和%s + 详细信息 + 已禁用 + 断开 + 完成 + 不再显示 + 编辑 + %s(+%s更多) + 选择电子邮件应用程序 + 启用 + 输入地址… + 输入金额… + 错误 + 代币不足 + 事件 + EVM 地址 + 此操作后,如果您的总余额低于最低余额,您的账户将从区块链中移除 + 操作将移除账户 + 已过期 + 探索 + 预估的网络费用%s远高于默认的网络费用(%s)。这可能是由于临时网络拥堵。您可以刷新以等待更低的网络费用。 + 网络费用过高 + 排序依据: + 过滤器 + 了解更多 + + 每%s天 + + 每天 + 每天 + 获取%s + 治理 + 十六进制字符串 + + %d小时 + + 它是如何工作的 + 我明白了 + 信息 + 设置密码… + 二维码无效 + 了解更多 + 了解更多关于 + 账本 + %s 剩余 + 最大 + %s 最大值 + + %d 分钟 + + %s 账户缺失 + 模块 + 网络 + %s 不支持 + 网络 + + 网络 + + 下一步 + + 设备上未发现文件导入应用。请安装后重试 + 设备上未发现适合处理此意图的应用 + 无变化 + 我们即将显示您的助记词。确保没有人能看到您的屏幕并且不要截屏 —— 它们可能被第三方恶意软件收集 + + 抱歉,您没有足够的资金支付网络费用。 + 余额不足 + 关闭 + 确定 + 好的,返回 + 开启 + 进行中 + 可选的 + 选择一个选项 + 粘贴 + / 年 + %s / 年 + 每年 + % + 请求的权限是使用此屏幕所必需的。您应该在设置中启用它们。 + 权限被拒绝 + 请求的权限是使用此屏幕所必需的。 + 需要权限 + 价格 + 继续 + 代理存款 + 撤销访问 + 阅读更多 + 推荐 + 刷新费用 + 拒绝 + 移除 + 必需的 + 重置 + 重试 + 撤销 + 保存 + 扫描二维码 + 搜索 + 搜索结果将在这里显示 + 搜索结果:%d + 密钥派生路径 + 设置 + 分享 + 签名请求 + 签名无效 + 跳过 + 跳过过程 + 提交某些交易时出错。您想要重试吗? + 提交某些交易失败 + 排序方式 + 状态 + Substrate 地址 + 剩余时间 + 标题 + 打开设置 + 您的余额太小 + 总计 + 交易ID + 交易已提交 + 再试一次 + 类型 + 请用其他的输入再试一次。如果错误再次出现,请联系客服。 + 未知 + + %s 未支持 + + 无限 + 更新 + 使用 + 接收者应该是一个有效的%s地址 + 无效的接收者 + 等待中 + 钱包 + 警告 + + 金额必须为正 + 公投 + 投票 + 追踪 + 节点已经之前被添加。请试用另一个节点。 + 无法与节点建立连接。请尝试另一个。 + 不幸的是,网络不支持。请尝试以下之一:%s。 + 删除 + 确认删除%s。 + 删除网络? + 请检查您的连接或稍后再试 + 自定义 + 默认 + 网络 + 添加连接 + 扫描二维码 + 私有众贷暂不支持。 + 私有众筹 + 关于众贷 + 直接 + 了解Acala不同贡献类型的更多信息 + 流动性贡献 + 活跃 (%s) + 同意条款和条件 + Nova Wallet 奖金 (%s) + Astar 推荐码应为有效的Polkadot地址 + 由于结果增加的金额将超过众贷上限,无法贡献选定金额。允许的最大贡献为 %s。 + 由于已达到上限,无法对选定的众贷进行贡献。 + 众贷上限超出 + 对众贷进行贡献 + 贡献 + 你已贡献:%s + 流动性 + 并行 + 你的贡献\n将显示在这里 + 将在 %s 内返回 + 将由平行链返回 + %s (通过 %s) + 众贷 + 获得特别奖励 + 众贷将显示在这里 + 由于已经结束,无法对选定的众贷进行贡献。 + 众贷已结束 + 输入你的推荐码 + 众贷信息 + 了解 %s 的众贷 + %s 的众贷网站 + 租赁期 + 选择要贡献您的%s的平行链。您将收回您贡献的代币,如果平行链赢得了一个插槽,您将在拍卖结束后收到奖励 + 您需要在钱包中添加一个%s账户以便贡献 + 应用奖金 + 如果您没有推荐码,您可以应用Nova推荐码以接收您贡献的奖金 + 您未应用奖金 + Moonbeam众筹仅支持SR25519或ED25519加密类型账户。请考虑使用另一个账户进行贡献 + 无法使用此账户贡献 + 您应该添加Moonbeam账户到钱包,以参与Moonbeam众筹 + 缺少Moonbeam账户 + 此众筹在您的位置不可用。 + 您的地区不受支持 + %s奖金去向 + 提交同意 + 为了继续参与,您需要在区块链上提交同意《条款与条件》的协议。这只需要为所有后续的Moonbeam贡献做一次。 + 我已阅读并同意条款和条件 + 已筹集 + 推荐代码 + 推荐码无效,请尝试另一个 + %s的条款和条件 + 允许贡献的最低金额是%s。 + 贡献金额太小 + 租赁期结束后,您的%s代币将被退还。 + 您的贡献 + 已筹集:%s / %s + DApps,当您使用它们时,允许访问看到您的地址 + “%s”DApp将从授权中移除 + 从授权中删除? + 授权的DApps + 目录 + 如果您信任该应用,请批准此请求 + 允许“%s”访问您的账户地址? + 如果您信任此应用,请批准此请求。\n检查交易详情。 + DApp + DApps + 收藏夹 + 添加到收藏夹 + “%s”DApp将从收藏夹中移除 + 从收藏夹中移除? + DApps列表将出现在这里 + 使用您从Nova钱包的账户浏览网页 + 欢迎来到Nova浏览器 + 添加到收藏夹 + 桌面模式 + 从收藏夹中移除 + 页面设置 + 好的,带我回去 + Nova钱包认为这个网站可能会危害您账户和代币的安全 + 检测到钓鱼 + 按名称搜索或输入URL + 不支持的链,创世哈希%s + 确保操作是正确的 + 未能签署所请求的操作 + + 未找到链 + 链接%s中的域名不被允许 + 未指定治理类型 + 不支持的治理类型 + 无效的加密类型 + 无效的派生路径 + 无效的助记词 + 无效的URL + +%d + 通过地址或名称搜索 + 地址格式无效。请确保地址属于正确的网络 + 搜索结果:%d + Nova钱包自动为您将代理权限(Proxy)添加到单独的类别中。您可以在设置中随时管理钱包。 + 代理账户更新 + 所有时间的投票 + 代理 + 所有账户 + 个人 + 组织 + 撤销委托后将开始撤销期 + 您的投票将自动与您的代表的投票一起投票 + 代表信息 + 个人 + 组织 + 代理投票 + 委托 + 编辑委派 + 您不能委托给自己,请选择另一个地址 + 不能自我委托 + 告诉我们更多关于您自己的信息,以便Nova用户更好地了解您 + 您是代表吗? + 描述自己 + 跨越 %s 轨道 + 最后投票 %s + 通过 %s 的您的投票 + 您的投票:%s 通过 %s + 移除投票 + 撤销委托 + 取消委托期结束后,您将需要解锁您的代币。 + 委托投票 + 委托 + 最后投票 %s + 轨道 + 选择全部 + 至少选择 1 个轨道... + 没有可供委托的轨道 + Fellowship + 管理 + 财政 + 取消委托期 + 您的委托 + 您的委托 + 显示 + 您已经向此账户委托了:%s + 委托已存在 + (BTC/ETH 兼容) + ECDSA + ed25519(替代方案) + Edwards + 代币不足以支付费用 + 合约 + 合约调用 + 功能 + 确认密码 + 密码不匹配 + 设置密码 + 网络:%s\n助记词:%s\n推导路径:%s + 网络:%s\n助记词:%s + 请等待费用计算 + 费用计算正在进行中 + 为%s质押添加委托 + 兑换详情 + 最大: + 您支付 + 您收到 + 选择一个代币 + 解锁 + 历史 + 电子邮件 + 法定名字 + Element 名称 + 身份 + 网站 + 所提供的 JSON 文件是为不同网络创建的。 + 请确保您的输入包含有效的 json。 + 恢复 JSON 无效 + 请检查密码正确性并重试。 + 密钥库解密失败 + 粘贴json + 不支持的加密类型 + 不能将含有Substrate秘密的账户导入到以太坊加密网络 + 不能将含有以太坊秘密的账户导入到Substrate加密网络 + 您的助记词无效 + 请确保您的输入包含64个十六进制符号。 + 种子无效 + 代理地址应该是一个有效的%s地址 + 代理地址无效 + 无法解码QR + QR码 + 从相册上传 + 语言 + Ledger不支持%s + 操作已被设备取消。请确保您已解锁您的Ledger。 + 操作已取消 + 请在您的Ledger设备上打开%s应用 + %s应用未启动 + 设备上的操作出错已完成。请稍后再试。 + Ledger操作失败 + 加载更多账户 + 审核并批准 + 按下您%s上的两个按钮以批准交易 + 请使用Ledger Live应用更新%s + 元数据已过时 + Ledger不支持签名任意消息 — 只支持交易 + 请确保您为当前批准操作选择了正确的Ledger设备 + 出于安全原因,生成的操作仅在%s内有效。请再试一次,并使用Ledger批准 + 交易已过期 + 交易有效期为%s + Ledger不支持此交易。 + 交易不受支持 + 按下您%s上的两个按钮以批准地址 + 这个钱包与Ledger配对。Nova将帮助您形成任何您想要的操作,并且您将被要求使用Ledger签名 + 选择要添加到钱包的账户 + 支付交易已发送 + 添加代币 + + 请尝试另一个。 + 助记词短语无效,请再次检查单词顺序 + 网络费用 + 节点地址 + 节点信息 + 正在连接… + 收藏 + 创建者 + %s为%s + %s单位的%s + #%s版次的%s + 无限系列 + 拥有者 + 未上市 + 您的NFT + 领取奖励 + 您的代币将被重新加入到质押中 + 直接 + 质押池信息 + 您的奖励(%s)也将被领取并添加到您的可用余额中 + + 由于池处于销毁状态,无法执行指定操作。它将很快被关闭。 + 池正在销毁 + 您的池目前在解绑队列中没有空闲位置。请在 %s 后再试。 + 太多人正在从您的池中解绑 + 您的池 + 您的池(#%s) + 创建账户 + 创建一个新钱包 + 隐私政策 + 导入账户 + 已有钱包 + 继续访问即表示您同意我们的\n%1$s和%2$s + 使用条款 + 交换 + 您的某个受托人未产生奖励 + 您的某个受托人在当前轮次中未被选中 + 您的 %s 解绑期已过,请不要忘记赎回您的代币 + 无法与此受托人质押 + 更换受托人 + 无法向此受托人增加质押 + 管理受托人 + 所选受托人表示有意停止参与质押 + 您不能为您正在解绑所有代币的受托人增加质押 + 您的质押将低于此受托人的最低质押额(%s) + 剩余质押余额将降低至网络最低值(%s)以下,也将加入到解绑金额中 + 您未被授权。请再试一次。 + 使用生物识别授权 + Nova Wallet使用生物认证来阻止未经授权的用户访问应用程序。 + 生物测量学 + 密码已成功更改 + 确认您的密码 + 创建密码 + 输入密码 + 设置您的密码 + 由于成员人数已达上限,您无法加入池 + 池已满 + 您无法加入未开放的池。请联系池主。 + 池未开放 + 账户 + 钱包 + 语言 + 更改密码 + 通过PIN码确认 + 安全模式 + 设置 + 该账户已授权以下账户执行交易: + 不再有效 + 什么是代理? + 赌注操作 + 委托账户%s的余额不足以支付%s的网络费用。可用余额支付费用:%s + 代理钱包不支持签署任意消息 - 仅支持交易 + %1$s未委托%2$s的权限 + %1$s仅为%3$s委托了%2$s + 哎呀!权限不足 + 交易将由被委托账户%s发起。网络费用将由被委托账户支付。 + 这是委托(代理)账户 + %s代理 + 粘贴 json 字符串或上传文件… + 上传文件 + 恢复 JSON + 助记词短语 + 原始种子 + 源类型 + 所有公投 + 显示: + 未投票 + 已投票 + 应用过滤器后未找到公投 + 公投信息将在这里显示,当它们开始时 + 未找到输入的标题或 ID 的公投 + 按公投标题或 ID 搜索 + 公投 + 未找到公投 + 赞成:%s + 使用 Nova DApp 浏览器 + 只有提案人可以编辑此描述和标题。如果您拥有提案人的账户,请访问 Polkassembly 并填写有关您提案的信息 + 完整详情 + 请求的金额 + 时间线 + 你的投票: + 批准曲线 + 受益人 + 复制哈希 + 存款 + 选民 + 调用哈希 + 预览过长 + 参数 JSON + 提议者 + 支持曲线 + 投票率 + 投票阈值 + 位置:%s 来自 %s + 为了投票,您需要在钱包中添加一个 %s 账户 + 公投 %s + 反对:%s + 反对票 + %s 通过 %s 的投票 + 支持票 + 质押 + 已批准 + 已取消 + 决策中 + 在 %s 中决策 + 已执行 + 在队列中(%s of %s) + 已删除 + 未通过 + 通过中 + 准备中 + 已拒绝 + %s 后批准 + %s 后执行 + %s 后超时 + %s 后拒绝 + 已超时 + 等待存款 + 门槛:%s of %s + 投票结果:已批准 + 已取消 + 已创建 + 投票:决策中 + 已执行 + 投票:在队列中 + 已删除 + 投票:未通过 + 投票:通过中 + 投票:准备中 + 投票结果:已拒绝 + 已超时 + 投票:等待存款 + 要通过:%s + 众贷 + 国库:大额支出 + 国库:大额小费 + Fellowship: 管理 + 治理:注册员 + 治理:租赁 + 国库:中等支出 + 治理:取消者 + 治理:删除者 + 主要议程 + 财政:小额支出 + 财政:小费 + 财政:任何 + 仍锁定于 %s + 可解锁 + 弃权 + 赞成 + 重新使用所有锁:%s + 重新使用治理锁:%s + 治理锁 + 锁定期 + 反对 + 通过增加锁定期来倍增票数 + 为 %s 投票 + 锁定期过后不要忘记解锁您的代币 + 已投票的公投 + %s 票 + %s × %sx + 投票者列表将出现在这里 + %s 票 + 团契:白名单 + 你的投票:%s 票 + 公投已完成,投票结束 + 公投已完成 + 您正在为选定的公投轨道委托投票。请要么请求您的受托人投票,要么删除委托以便直接投票。 + 已经委托投票 + 您已达到轨道的最大投票数 %s + 达到最大投票数 + 您的可用投票代币不足。可用于投票:%s。 + 撤销访问类型 + 撤销权利 + 移除投票 + + 您之前在%d个轨道上参与了公投。为了使这些轨道可用于委托,您需要移除现有的投票。 + + 移除您的投票记录? + 更新区块链运行时信息失败。部分功能可能无法工作。 + 运行时更新失败 + 联系人 + 我的账户 + 未找到输入名称或池ID的池。请确保输入的数据正确 + 账户地址或账户名称 + 搜索结果将在此显示 + 搜索结果 + 活跃池:%d + 成员 + 选择池 + 选择要添加委托的轨道 + 可用轨道 + 请选择您希望委托投票权的轨道。 + 选择要编辑委托的轨道 + 选择要撤销委托的轨道 + 不可用的轨道 + Nova需要启用地理位置,以便能够进行蓝牙扫描查找您的Ledger设备 + 请在设备设置中启用地理位置 + 地址或w3n + 收件人是一个系统账户。它不受任何公司或个人控制。您确定仍然要执行此转账吗? + 代币将会丢失 + 授权给 + 请确保在设置中启用了生物识别 + 设置中禁用了生物识别 + 社区 + 电子邮件 + 通用 + 带有密钥对的钱包(在nova钱包中创建或导入的)上的每次签名操作都应在构造签名前要求进行PIN验证 + 请求操作签名的认证 + 首选项 + 屏幕录制和截图将不可用。最小化的应用程序将不显示内容 + 安全模式 + 安全性 + 支持和反馈 + Twitter + 维基 + Youtube + 高级质押管理 + 不能更改质押类型 + 您已经有了直接质押 + 直接质押 + 您指定的金额少于使用%s获得奖励所需的最低质押额%s。您应该考虑使用池质押来获得奖励。 + 在治理中重用代币 + 最低质押: %s + 奖励:自动支付 + 奖励:手动领取 + 您已经在矿池中质押了 + 池质押 + 您的质押小于获得奖励的最小金额 + 不支持的质押类型 + sr25519(推荐) + Schnorrkel + 所选账户已作为控制器使用 + 添加委托权限(代理) + 您的委托 + 活跃委托者 + 将控制器账户%s添加到应用程序中执行此操作。 + 添加委托 + 您的质押金额少于%s的最低限额。质押金额低于最低限额会增加质押不产生奖励的几率 + 质押更多代币 + 更换您的验证者。 + 现在一切正常。警告将出现在这里。 + 在验证者质押指派队列中的过时位置可能会暂停您的奖励 + 质押改进 + 赎回未质押的代币。 + 请等待下一个时代的开始。 + 警报 + 已经是控制器 + 您已在 %s 中有质押 + 质押余额 + 余额 + 更多质押 + 您既未提名也未验证 + 更换控制器 + 更换验证器 + %s / %s + 已选验证器 + 控制器 + 控制器账户 + 我们发现这个账户没有自由令牌,您确定要更改控制器吗? + 控制器账户可以:从质押中提取,赎回,返回到质押中,更改奖励目的地和验证器。 + 控制器用途:提取,赎回,返回质押,更换验证器并设置奖励目的地 + 控制器已更改 + 此验证器被封锁,目前不能选择。请在下一个时代再试。 + 清除过滤器 + 取消全选 + 用推荐的填满其余部分 + 验证器:%d / %d + 选择验证器(最多 %d) + 显示所选:%d(最多 %d) + 选择验证器 + 预计奖励(%APR) + 预计奖励(%APY) + 更新你的列表 + 通过Nova DApp浏览器质押 + 更多质押选项 + 质押并赚取奖励 + 预计奖励 + 时代 #%s + 预计收益 + 预计%s收益 + 验证者自己的质押 + 验证者的自有质押(%s) + 解质押期间的代币不产生奖励。 + 解质押期间代币不产生奖励 + 解质押期后别忘了赎回你的代币。 + 解质押期后不要忘记赎回你的代币 + 从下一个时代开始,你的奖励将会增加。 + 从下一个时代开始,你将获得增加的奖励 + 每个时代质押的代币都会产生奖励(%s)。 + 质押中的代币在每个时代都会产生奖励(%s) + Nova钱包将更改奖励目的地至你的账户,以避免剩余质押。 + 如果你想解除质押代币,你必须等待解质押期(%s)。 + 要解质押代币,你必须等待解质押期(%s) + 质押信息 + 活跃提名人 + + %d天 + + 最低质押 + %s网络 + 已质押 + 请切换你的钱包到%s以设置代理 + 选择贮藏账户以设置代理 + 管理 + %s(最大 %s) + 已达到提名人最大数量。请稍后再试 + 无法开始质押 + 最小质押 + 为了开始质押,你需要在你的钱包中添加一个%s账户 + 每月 + 在设备中添加你的控制器账户。 + 无法访问控制器账户 + 已提名: + %s已奖励 + 你的一个验证者已被网络选中。 + 活跃状态 + 非活跃状态 + 你的质押金额低于获得奖励的最低质押。 + 你的所有验证者均未被网络选中。 + 你的质押将从下一个时代开始。 + 非活跃 + 等待下一个时代 + 等待下一个时代(%s) + 你的余额不足以支付%s的代理存款。可用余额:%s + 整理员 + 担保人的最低股份高于您的委托。您将不会从担保人那里收到奖励。 + 担保人信息 + 担保人自己的股份 + 担保人:%s + 您的一个或多个担保人已被网络选举。 + 委托人 + 您已达到%d担保人委托的最大数量 + 您不能选择新的担保人 + 新的担保人 + 等待下一轮(%s) + 您有所有担保人的待处理取消质押请求。 + 没有可用于取消质押的担保人 + 返回的代币将从下一轮开始计算 + 每轮质押的代币都会产生奖励(%s) + 选择担保人 + 选择担保人… + 从下一轮开始,您将获得增加的奖励 + 由于您的委托中没有任何一个是活跃的,您将不会收到这一轮的奖励。 + 您已经从这个担保人那里解除质押代币。每个担保人只能有一个待处理的解除质押请求。 + 您无法从此验证人解除抵押 + 您的抵押必须大于此验证人的最小抵押额(%s)。 + 您将不会收到奖励 + 您的一些验证人要么没有被选中,要么他们的最小抵押额高于您的抵押金额。在本轮中与他们抵押,您将不会收到奖励。 + 您的验证人 + 您的抵押已指派给下一批验证人 + 活跃的验证人但不产生奖励 + 没有足够抵押被选中的验证人 + 将在下一轮中生效的验证人 + 等待中(%s) + 支付 + 支付已过期 + + %d天后到期 + + 您可以自行支付它们,当它们即将到期时,但您将支付费用 + 奖励每2-3天由验证人支付 + 全部 + 全部时间 + 结束日期总是今天 + 自定义周期 + %d天 + 选择结束日期 + 结束 + 过去6个月(6个月) + 6个月 + 过去30天(30天) + 30天 + 过去3个月(3个月) + 3个月 + 选择日期 + 选择开始日期 + 开始 + 显示质押奖励 + 过去7天(7天) + 7天 + 去年(1年) + 1年 + 您的可用余额为%s,您需要保留%s作为最低余额并支付%s的网络费用。您最多可以质押%s。 + 委托权限(代理) + 当前队列槽 + 新队列槽 + 返回质押 + 全部取消质押 + 返回的代币将从下一个时代开始计算 + 自定义金额 + 您要返回质押的金额大于取消质押的余额 + 最新取消质押 + 最有利可图的 + 未超额认购 + 拥有链上身份 + 未被削减 + 每个身份限2个验证器 + 至少有一个身份联系方式 + 推荐的验证器 + 验证器 + 估计奖励(APY) + 兑换 + 可兑换:%s + 奖励 + 奖励去向 + 可转移奖励 + 时代 + 奖励详情 + 验证器 + 再投资收益 + 无需再投资的收益 + 太好了!所有奖励都已支付。 + 太棒了!您没有未支付的奖励 + 全部支付(%s) + 待发放奖励 + 未支付奖励 + 奖励 + 关于奖励 + 奖励(APY) + 奖励目的地 + 自行选择 + 选择支付账户 + 选择推荐 + 已选%d(最多%d) + 验证器(%d) + 更新控制器到Stash + 使用代理将Staking操作委托给另一个帐户 + 控制器账户正在被弃用 + 选择另一个帐户作为控制器,将质押管理操作委托给它 + 提高质押安全性 + 设置验证人 + 验证人未被选择 + 选择验证人开始质押 + 要持续获得奖励的推荐最低质押额是%s。 + 您不能质押低于网络最小值(%s) + 最小质押额应大于%s + 增加质押 + 增加质押奖励 + 如何使用您的奖励? + 选择您的奖励类型 + 支付账户 + 惩罚 + 质押%s + 最大质押 + 质押期 + 质押类型 + 您应该信任您的提名人能够胜任且诚实地行事,完全根据他们目前的盈利能力来做决定可能导致利润减少甚至资金损失。 + 谨慎选择您的验证者,因为他们应该专业且诚实地行事。仅基于盈利性来做出决定可能会导致奖励减少甚至赌注损失 + 与您的验证者一起抵押 + Nova Wallet将根据安全和盈利性标准选择顶级验证者 + 与推荐的验证者一起抵押 + 开始抵押 + 保管库 + 使用保管库账户可以绑定更多并设置控制器。 + 保管库用于:抵押更多并设置控制器 + 保管库账户 %s 无法更新抵押设置。 + 提名人通过锁定他的代币来赚取被动收入,以确保网络安全。为此,提名人应选择多个验证者进行支持。提名时应谨慎选择验证者。如果所选的验证者行为不当,根据事件的严重程度,他们将面临削减惩罚。 + Nova Wallet通过帮助提名人选择验证者来提供支持。移动应用程序从区块链中获取数据,并组成一个验证者列表,这些验证者具有:最多的利润、带有联系信息的身份、未被削减且可接受提名。Nova Wallet还关心去中心化,所以如果一个人或公司运行多个验证节点,推荐列表中最多只会显示2个节点。 + 什么是提名人? + 质押奖励在每个时代结束时可供支付(Kusama中为6小时,Polkadot中为24小时)。网络在84个时代内存储待处理奖励,在大多数情况下,验证者会为所有人支付奖励。然而,验证者可能会忘记或他们可能会遇到某些问题,因此提名人可以自行支付他们的奖励。 + 尽管奖励通常由验证者分配,Nova Wallet通过提醒即将到期的未支付奖励来提供帮助。您将收到关于此及其他质押活动的警报。 + 接收奖励 + 质押是通过在网络中锁定您的代币以赚取被动收入的一种选择。质押奖励每个时代分配一次(Kusama为6小时,Polkadot为24小时)。您可以随意质押,为了解质押您的代币,您需要等待解质押期结束,使您的代币可供赎回。 + 质押是网络安全性和可靠性的重要部分。任何人都可以运行验证节点,但只有那些质押了足够代币的人才会被网络选举参与组成新区块并获得奖励。验证者往往自己没有足够的代币,因此,提名人通过锁定他们的代币来帮助他们达到所需的质押量。 + 什么是质押? + 验证者需要全天候运行一个区块链节点,并且必须拥有足够的质押额(包括自己拥有的和提名人提供的)被网络选举。验证者应维护其节点的性能和可靠性以获得奖励。成为一个验证者几乎是一份全职工作,有些公司专注于成为区块链网络上的验证者。 + 任何人都可以成为验证者并运行区块链节点,但这需要一定的技术技能和责任感。Polkadot和Kusama网络有一个名为Thousand Validators Programme的项目,为初学者提供支持。此外,网络本身将始终奖励那些拥有较少股份(但足以被选举)的验证者,以改善去中心化。 + 什么是验证者? + 将您的账户切换到贮藏账户以设置控制器。 + 质押 + %s 质押 + 已奖励 + 共计质押 + 提升阈值 + 对我的整理者 + 不含Yield Boost + 含Yield Boost + 自动质押%s我所有可转账代币之上 + 自动质押%s(之前:%s)我所有可转账代币之上 + 我想要质押 + Yield Boost + 质押类型 + 您正在解除所有代币的质押,并且不能再质押更多。 + 无法质押更多 + 在部分解除质押时,您应至少保留 %s 的质押。您是否要通过解除剩余的 %s 来完全解除质押? + 质押的金额过小 + 您想要解除质押的金额大于质押余额 + 解除质押 + 解除质押的交易将显示在这里 + 解除质押的交易将会在这里显示 + 解除质押:%s + 在解质押期结束后,您的代币将可供赎回。 + 您已达到解除质押请求的限制(%d 个活跃请求)。 + 达到解除质押请求的限制 + 解除质押期 + 全部解除质押 + 全部解除质押? + 预计奖励(% APY) + 预计奖励 + 验证者信息 + 超额认购。这个时代您将不会从验证者那里收到奖励。 + 提名人 + 超额认购。只有最高质押的提名人才能获得奖励。 + 自己的 + 没有搜索结果。\n确保您输入了完整的账户地址 + 因网络中的不当行为(例如,离线、攻击网络或运行修改过的软件)而被处罚的验证者。 + 总质押量 + 总质押量(%s) + 奖励低于网络费用。 + 年度 + 您的质押已分配给以下验证者。 + 您的质押已分配给下一个验证者 + 已选(%s) + 本时代未被选中的验证者。 + 没有足够质押以被选中的验证者 + 未分配您的质押的其他活跃验证者。 + 没有您的质押分配的活跃验证者 + 未选中(%s) + 你的代币被分配给了超额认购的验证者。在这个时代,你将不会收到来自这个验证者的奖励。 + 奖励 + 您的质押 + 您的验证者 + 您的验证者将在下个时代变更。 + 由于%s,您的余额中有锁定的代币。为了继续,请输入少于%s或多于%s的金额。要质押其他金额,您应该解除%s的锁定。 + 您不能质押指定的金额 + 已选:%d(最多 %d) + 可用余额:%1$s(%2$s) + %s与您质押的代币 + 参与治理 + 质押超过%1$s并且%2$s与您质押的代币 + 参与治理 + 随时用最少的%1$s质押。您的质押将积极获得奖励%2$s + 在%s内 + 随时质押。您的质押将积极获得奖励%s + 了解更多信息关于%1$s质押在%2$s + Nova Wiki + 奖励每%1$s累积一次。质押超过%2$s自动获得奖励支付,否则您需要手动领取奖励 + 每%s + 奖励累积%s + 奖励累积%s。您需要手动领取奖励 + 奖励在%s累积并添加到可转账余额中 + 奖励在%s累积并重新加入赌注 + 奖励和质押状态会随时间变化。%s不时 + 监控您的赌注 + 开始质押 + 查看%s + 使用条款 + %1$s是一个%2$s带有%3$s + 没有代币价值 + 测试网络 + %1$s\n在您的%2$s代币\n每年 + 最高可赚取%s + 随时取消质押,并在%s赎回您的资金。取消质押时不会获得奖励 + 经过%s + 您选择的池因为没有选定的验证者或其赌注低于最小值而处于非活跃状态。\n您确定要继续选择的池吗? + 已达到提名人的最大数量。请稍后再试 + %s目前不可用 + 验证者:%d(最大%d) + 用于支付网络费用的代币 + 网络费用将添加到输入的金额之上 + 不支持此对 + 您在支付%s网络费后至少应保留%s,因为您持有的代币不足 + 您必须至少保留%s,以接收%s代币 + 您最多可以交换%1$s,因为您需要支付%2$s的网络费 + 您最多可以交换%1$s,因为您需要支付%2$s的网络费并将%3$s兑换为%4$s,以满足%5$s的最低余额 + 最大交换 + 最小交换 + 您的余额至少应保留%1$s。您是否想通过添加剩余的%2$s来进行全部交换? + 您的余额剩余太少 + 在支付%2$s的网络费和将%3$s转换为%4$s以满足%5$s的最低余额后,您的余额至少应保留%1$s。\n\n您是否想通过添加剩余的%6$s来进行全部交换? + 支付 + 接收 + 选择一个代币 + 代币不足以交换 + 流动性不足 + 您不能接收少于%s + 使用信用卡立即购买%s + 从另一个网络转移%s + 通过QR或您的地址接收%s + 使用%s获取 + 滑点必须指定在%s到%s之间 + 无效滑点 + 选择一个代币来支付 + 选择一个代币来接收 + 输入金额 + 输入其他金额 + 为了支付网络费用,Nova将自动将%s兑换为%s,以保持您账户的最低%s余额。 + 区块链收取的网络费用,用于处理和验证任何交易。可能会根据网络状况或交易速度而变化。 + 池子没有足够的流动性进行交换 + 价格差异指的是两种不同资产之间的价格差。在加密货币交换中,价格差异通常是您要交换的资产的价格与您交换的资产的价格之间的差异。 + 价格差异 + %s ≈ %s + 两种不同加密货币之间的汇率。它表示您可以用一定数量的另一种加密货币交换获得多少加密货币。 + 汇率 + 旧汇率:%1$s ≈ %2$s。\n新汇率:%1$s ≈ %3$s + 兑换率已更新 + 重复操作 + 交换设置 + 滑点 + 在去中心化交易中,交换滑点是一种常见现象,由于市场条件的变化,交易的最终价格可能会与预期价格略有不同。 + 输入其他值 + 请输入介于%s和%s之间的值 + 滑点 + 因高滑点而可能遭受前置交易。 + 因低滑点容忍度可能会被回退。 + %s的金额小于%s的最低余额 + 您尝试交换的金额太小 + 质押 + 钱包 + 今天 + 复制哈希 + 费用 + 来自 + 交易哈希 + 交易详情 + 在%s中查看 + 在Polkascan中查看 + 在Subscan中查看 + %s 在 %s + 完成 + 失败 + 待定 + 来自:%s + 发送至:%s + 转账 + 传入和传出\n转账将显示在这里 + 您的操作将显示在此处 + 删除投票以便在这些轨道中代理 + 您已经代理投票的轨道 + 不可用轨道 + 您已投票的轨道 + 安装 + 版本 %s + 更新可用 + 为避免任何问题,并改善您的用户体验,我们强烈建议您尽快安装最新更新 + 关键更新 + 最新 + Nova Wallet 可用许多惊人的新功能!确保更新您的应用程序以访问它们 + 重大更新 + 关键 + 重要 + 查看所有可用更新 + 名称 + 钱包名称 + 此名称仅为您显示,并将仅存储在您的移动设备上。 + 此账户未被网络选举参与当前时代 + 重新投票 + 投票 + 投票状态 + 购买 + 用...购买 + 接收 + 接收 %s + 发送 + 兑换 + 资产 + 您的资产将显示在这里。\n确保\"隐藏零余额\"\n过滤器处于关闭状态 + 资产价值 + 可用 + 已质押 + 余额详情 + 总余额 + 转账后总计 + 已冻结 + 已锁定 + 可赎回 + 已预留 + 可转让 + 解除绑定中 + 钱包 + 新连接 + + %s 账户缺失。请在设置中向钱包添加账户 + + Nova Wallet 不支持“%s”请求的某些必需网络 + Wallet Connect 会话将在这里显示 + WalletConnect + 未知 dApp + + %s 不支持的网络已隐藏 + + WalletConnect v2 + 跨链转账 + 加密货币 + 法定货币 + 热门法定货币 + 货币 + 交易详情 + 隐藏余额为零的资产 + 其他交易 + 显示 + 奖励和惩罚 + 交换 + 过滤器 + 转账 + 资产管理 + 名称示例:主账户、我的验证器、Dotsama 众贷等。 + 将此 QR 码分享给发送方 + 让发送方扫描此 QR 码 + 我的 %s 地址用于接收 %s: + 分享 QR 码 + 接收者 + 确保地址来自正确的网络 + 地址格式无效。确保地址属于正确的网络 + 最小余额 + 由于跨链限制,您转账的金额不能超过%s + 您的余额不足以支付 %s 的跨链手续费。\n转账后剩余余额为:%s + 跨链费用将加在输入金额之上。接收者可能会收到部分跨链费用 + 确认转账 + 跨链 + 跨链费 + 您的转账将因目的账户没有足够的%s来接受其他代币转账而失败 + 收件人无法接受转账 + 您的转账将失败,因为目的账户的最终金额将低于最小余额。请尝试增加金额。 + 您的转账将从区块存储中移除账户,因为它将使总余额低于最小余额。 + 转账后您的账户将因总余额低于最低限额而从区块链中移除 + 转账将移除账户 + 转账后您的账户将因总余额低于最低限额而从区块链中移除。剩余余额也将转给接收者。 + 来自网络 + 您需要至少 %s 才能支付此交易费用并保持余额高于最低网络余额。您当前的余额为:%s。您需要将 %s 添加到您的余额以执行此操作。 + 自己 + 在链上 + 以下地址:%s 已知用于网络钓鱼活动,因此我们不建议向该地址发送代币。您还想继续吗? + 欺诈警告 + 接收者被代币所有者阻止,当前无法接受入账转账 + 接收者无法接受转账 + 接收者网络 + 到网络 + 从发送 %s + 在发送 %s + + 发送者 + 代币 + 发送给此联系人 + 转账详情 + 您的余额 + %s (%s) + %s地址为%s + Nova检测到关于%1$s地址信息完整性的问题。请联系%1$s的所有者解决完整性问题。 + 完整性检查失败 + 无效的接收者 + 在%s网络上未找到%s的有效地址 + %s未找到 + %1$s w3n服务不可用。请稍后重试或手动输入%1$s地址 + 解析w3n时出错 + Nova无法为令牌%s解析代码 + 令牌%s尚未支持 + 昨天 + 当前Collator的收益增强将被关闭。新Collator:%s + 更改已增强收益的Collator? + 您的余额不足以支付%s的网络费用和%s的收益增强执行费用。\n用于支付费用的可用余额:%s + 没有足够的代币支付首次执行费 + 您的余额不足以支付%s的网络费用且不低于%s的门槛。\n用于支付费用的可用余额:%s + 代币不足以保持高于门槛 + 加注时间 + 收益增强将自动加注我所有可转让代币中超过%s的%s + 已增强收益 + diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index 0657a6719f..3275357c36 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -1,6 +1,8 @@ + By continuing, you agree to our\n%1$s and %2$s + Something went wrong Please try again later by accessing notification settings from the Settings tab @@ -1615,7 +1617,6 @@ Privacy Policy Import account Already have a wallet - By continuing, you agree to our \nTerms and Conditions and Privacy Policy Terms and Conditions Biometry Pin code has been successfully changed diff --git a/core-api/src/main/java/io/novafoundation/nova/core/model/Language.kt b/core-api/src/main/java/io/novafoundation/nova/core/model/Language.kt index dbb61dee21..11f661b1d2 100644 --- a/core-api/src/main/java/io/novafoundation/nova/core/model/Language.kt +++ b/core-api/src/main/java/io/novafoundation/nova/core/model/Language.kt @@ -1,5 +1,5 @@ package io.novafoundation.nova.core.model data class Language( - val iso: String + val iso639Code: String ) diff --git a/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/data/repository/datasource/AccountDataSourceImpl.kt b/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/data/repository/datasource/AccountDataSourceImpl.kt index 5086b59976..bc337ff21f 100644 --- a/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/data/repository/datasource/AccountDataSourceImpl.kt +++ b/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/data/repository/datasource/AccountDataSourceImpl.kt @@ -198,7 +198,7 @@ class AccountDataSourceImpl( } override suspend fun changeSelectedLanguage(language: Language) = withContext(Dispatchers.IO) { - preferences.saveCurrentLanguage(language.iso) + preferences.saveCurrentLanguage(language.iso639Code) } override suspend fun accountExists(accountId: AccountId, chainId: ChainId): Boolean { diff --git a/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/presentation/language/mapper/LanguageMapper.kt b/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/presentation/language/mapper/LanguageMapper.kt index 483cf986c3..b45dea582b 100644 --- a/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/presentation/language/mapper/LanguageMapper.kt +++ b/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/presentation/language/mapper/LanguageMapper.kt @@ -1,13 +1,14 @@ package io.novafoundation.nova.feature_account_impl.presentation.language.mapper +import io.novafoundation.nova.common.utils.capitalize import io.novafoundation.nova.core.model.Language import io.novafoundation.nova.feature_account_api.presenatation.language.LanguageModel import java.util.Locale fun mapLanguageToLanguageModel(language: Language): LanguageModel { - val languageLocale = Locale(language.iso) + val languageLocale = Locale(language.iso639Code) return LanguageModel( - language.iso, + language.iso639Code, languageLocale.displayLanguage.capitalize(), languageLocale.getDisplayLanguage(languageLocale).capitalize() ) diff --git a/feature-crowdloan-impl/src/main/java/io/novafoundation/nova/feature_crowdloan_impl/presentation/contribute/custom/referral/ReferralContributeView.kt b/feature-crowdloan-impl/src/main/java/io/novafoundation/nova/feature_crowdloan_impl/presentation/contribute/custom/referral/ReferralContributeView.kt index 291515eedd..e3952a21ac 100644 --- a/feature-crowdloan-impl/src/main/java/io/novafoundation/nova/feature_crowdloan_impl/presentation/contribute/custom/referral/ReferralContributeView.kt +++ b/feature-crowdloan-impl/src/main/java/io/novafoundation/nova/feature_crowdloan_impl/presentation/contribute/custom/referral/ReferralContributeView.kt @@ -78,7 +78,7 @@ class ReferralContributeView @JvmOverloads constructor( referralNovaBonusApply.setOnClickListener { viewState.applyNovaCode() } - referralPrivacyText.text = styleText(context.getString(R.string.onboarding_terms_and_conditions_1_v2_2_0)) { + referralPrivacyText.text = styleText(context.getString(R.string.onboarding_terms_and_conditions_1_v2_2_1)) { clickable(context.getString(R.string.onboarding_terms_and_conditions_2)) { viewState.termsClicked() } diff --git a/feature-onboarding-impl/src/main/java/io/novafoundation/nova/feature_onboarding_impl/presentation/welcome/WelcomeFragment.kt b/feature-onboarding-impl/src/main/java/io/novafoundation/nova/feature_onboarding_impl/presentation/welcome/WelcomeFragment.kt index b46630ef38..e8c50d0645 100644 --- a/feature-onboarding-impl/src/main/java/io/novafoundation/nova/feature_onboarding_impl/presentation/welcome/WelcomeFragment.kt +++ b/feature-onboarding-impl/src/main/java/io/novafoundation/nova/feature_onboarding_impl/presentation/welcome/WelcomeFragment.kt @@ -9,8 +9,14 @@ import android.view.ViewGroup import io.novafoundation.nova.common.base.BaseFragment import io.novafoundation.nova.common.di.FeatureUtils import io.novafoundation.nova.common.mixin.impl.observeBrowserEvents +import io.novafoundation.nova.common.utils.clickableSpan +import io.novafoundation.nova.common.utils.colorSpan +import io.novafoundation.nova.common.utils.formatting.applyTermsAndPrivacyPolicy +import io.novafoundation.nova.common.utils.formatting.spannable.SpannableFormatter +import io.novafoundation.nova.common.utils.setFullSpan import io.novafoundation.nova.common.utils.styleText import io.novafoundation.nova.common.utils.setVisible +import io.novafoundation.nova.common.utils.toSpannable import io.novafoundation.nova.feature_account_api.presenatation.account.add.AddAccountPayload import io.novafoundation.nova.feature_account_api.presenatation.mixin.importType.setupImportTypeChooser import io.novafoundation.nova.feature_onboarding_api.di.OnboardingFeatureApi @@ -49,34 +55,23 @@ class WelcomeFragment : BaseFragment() { } override fun initViews() { - configureTermsAndPrivacy( - getString(R.string.onboarding_terms_and_conditions_1_v2_2_0), - getString(R.string.onboarding_terms_and_conditions_2), - getString(R.string.onboarding_privacy_policy) - ) - termsTv.movementMethod = LinkMovementMethod.getInstance() - termsTv.highlightColor = Color.TRANSPARENT - createAccountBtn.setOnClickListener { viewModel.createAccountClicked() } importAccountBtn.setOnClickListener { viewModel.importAccountClicked() } welcomeAddWatchWallet.setOnClickListener { viewModel.addWatchWalletClicked() } welcomeConnectHardwareWallet.setOnClickListener { viewModel.connectHardwareWalletClicked() } back.setOnClickListener { viewModel.backClicked() } + configureTermsAndPrivacy() } - private fun configureTermsAndPrivacy(sourceText: String, terms: String, privacy: String) { - val linkColor = requireContext().getColor(R.color.text_primary) - - termsTv.text = styleText(sourceText) { - clickable(terms, linkColor) { - viewModel.termsClicked() - } - - clickable(privacy, linkColor) { - viewModel.privacyClicked() - } - } + private fun configureTermsAndPrivacy() { + termsTv.applyTermsAndPrivacyPolicy( + R.string.onboarding_terms_and_conditions_1_v2_2_1, + R.string.onboarding_terms_and_conditions_2, + R.string.onboarding_privacy_policy, + viewModel::termsClicked, + viewModel::privacyClicked + ) } override fun inject() { diff --git a/feature-onboarding-impl/src/main/res/layout/fragment_welcome.xml b/feature-onboarding-impl/src/main/res/layout/fragment_welcome.xml index a3ba0072e6..3a0a26c471 100644 --- a/feature-onboarding-impl/src/main/res/layout/fragment_welcome.xml +++ b/feature-onboarding-impl/src/main/res/layout/fragment_welcome.xml @@ -95,11 +95,11 @@ android:layout_marginEnd="@dimen/x2" android:layout_marginBottom="24dp" android:gravity="center" - android:text="@string/onboarding_terms_and_conditions_1_v2_2_0" android:textColor="@color/text_secondary" android:textColorLink="@color/text_primary" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" /> + app:layout_constraintStart_toStartOf="parent" + tools:text="@string/onboarding_terms_and_conditions_1_v2_2_1" /> \ No newline at end of file diff --git a/feature-push-notifications/src/main/java/io/novafoundation/nova/feature_push_notifications/presentation/welcome/PushWelcomeFragment.kt b/feature-push-notifications/src/main/java/io/novafoundation/nova/feature_push_notifications/presentation/welcome/PushWelcomeFragment.kt index e5c311efba..f4cf69eb8f 100644 --- a/feature-push-notifications/src/main/java/io/novafoundation/nova/feature_push_notifications/presentation/welcome/PushWelcomeFragment.kt +++ b/feature-push-notifications/src/main/java/io/novafoundation/nova/feature_push_notifications/presentation/welcome/PushWelcomeFragment.kt @@ -1,8 +1,6 @@ package io.novafoundation.nova.feature_push_notifications.presentation.welcome -import android.graphics.Color import android.os.Bundle -import android.text.method.LinkMovementMethod import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,12 +9,8 @@ import io.novafoundation.nova.common.di.FeatureUtils import io.novafoundation.nova.common.mixin.impl.observeBrowserEvents import io.novafoundation.nova.common.mixin.impl.observeRetries import io.novafoundation.nova.common.utils.applyStatusBarInsets -import io.novafoundation.nova.common.utils.clickableSpan -import io.novafoundation.nova.common.utils.colorSpan -import io.novafoundation.nova.common.utils.formatting.spannable.SpannableFormatter +import io.novafoundation.nova.common.utils.formatting.applyTermsAndPrivacyPolicy import io.novafoundation.nova.common.utils.permissions.setupPermissionAsker -import io.novafoundation.nova.common.utils.setFullSpan -import io.novafoundation.nova.common.utils.toSpannable import io.novafoundation.nova.feature_push_notifications.R import io.novafoundation.nova.feature_push_notifications.di.PushNotificationsFeatureApi import io.novafoundation.nova.feature_push_notifications.di.PushNotificationsFeatureComponent @@ -43,19 +37,12 @@ class PushWelcomeFragment : BaseFragment() { } private fun configureTermsAndPrivacy() { - val linkColor = requireContext().getColor(R.color.text_primary) - - pushWelcomeTermsAndConditions.movementMethod = LinkMovementMethod.getInstance() - pushWelcomeTermsAndConditions.highlightColor = Color.TRANSPARENT - - pushWelcomeTermsAndConditions.text = SpannableFormatter.format( - requireContext().getString(R.string.push_welcome_terms_and_conditions), - requireContext().getString(R.string.common_terms_and_conditions_formatting) - .toSpannable(clickableSpan { viewModel.termsClicked() }) - .setFullSpan(colorSpan(linkColor)), - requireContext().getString(R.string.common_privacy_policy_formatting) - .toSpannable(clickableSpan { viewModel.privacyClicked() }) - .setFullSpan(colorSpan(linkColor)) + pushWelcomeTermsAndConditions.applyTermsAndPrivacyPolicy( + R.string.push_welcome_terms_and_conditions, + R.string.common_terms_and_conditions_formatting, + R.string.common_privacy_policy_formatting, + viewModel::termsClicked, + viewModel::privacyClicked ) } From a17ca3b074116e1c05b74132ec20e43e026f21ee Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Wed, 20 Mar 2024 14:55:13 +0100 Subject: [PATCH 07/17] Update strings.xml --- common/src/main/res/values-ru/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/common/src/main/res/values-ru/strings.xml b/common/src/main/res/values-ru/strings.xml index 9d69887507..5e564ae2ee 100644 --- a/common/src/main/res/values-ru/strings.xml +++ b/common/src/main/res/values-ru/strings.xml @@ -503,7 +503,6 @@ Неверный формат пути деривации Неверный формат мнемоники Неверный формат ссылки - Основной канал уведомлений Поиск по адресу или имени Недопустимый формат адреса. Убедитесь, что адрес принадлежит правильной сети результаты поиска: %d From c2f8ac8110250fceb5f8f26830fd248bd6c943c6 Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Wed, 20 Mar 2024 15:08:36 +0100 Subject: [PATCH 08/17] Update WelcomeFragment.kt --- .../presentation/welcome/WelcomeFragment.kt | 8 -------- 1 file changed, 8 deletions(-) diff --git a/feature-onboarding-impl/src/main/java/io/novafoundation/nova/feature_onboarding_impl/presentation/welcome/WelcomeFragment.kt b/feature-onboarding-impl/src/main/java/io/novafoundation/nova/feature_onboarding_impl/presentation/welcome/WelcomeFragment.kt index e8c50d0645..ba2c72390b 100644 --- a/feature-onboarding-impl/src/main/java/io/novafoundation/nova/feature_onboarding_impl/presentation/welcome/WelcomeFragment.kt +++ b/feature-onboarding-impl/src/main/java/io/novafoundation/nova/feature_onboarding_impl/presentation/welcome/WelcomeFragment.kt @@ -1,22 +1,14 @@ package io.novafoundation.nova.feature_onboarding_impl.presentation.welcome -import android.graphics.Color import android.os.Bundle -import android.text.method.LinkMovementMethod import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import io.novafoundation.nova.common.base.BaseFragment import io.novafoundation.nova.common.di.FeatureUtils import io.novafoundation.nova.common.mixin.impl.observeBrowserEvents -import io.novafoundation.nova.common.utils.clickableSpan -import io.novafoundation.nova.common.utils.colorSpan import io.novafoundation.nova.common.utils.formatting.applyTermsAndPrivacyPolicy -import io.novafoundation.nova.common.utils.formatting.spannable.SpannableFormatter -import io.novafoundation.nova.common.utils.setFullSpan -import io.novafoundation.nova.common.utils.styleText import io.novafoundation.nova.common.utils.setVisible -import io.novafoundation.nova.common.utils.toSpannable import io.novafoundation.nova.feature_account_api.presenatation.account.add.AddAccountPayload import io.novafoundation.nova.feature_account_api.presenatation.mixin.importType.setupImportTypeChooser import io.novafoundation.nova.feature_onboarding_api.di.OnboardingFeatureApi From c77591770fa18ffb58984a66cc68cacacf97ffd3 Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Wed, 20 Mar 2024 15:34:20 +0100 Subject: [PATCH 09/17] Update SwapValidationFailureUi.kt --- .../presentation/main/SwapValidationFailureUi.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/presentation/main/SwapValidationFailureUi.kt b/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/presentation/main/SwapValidationFailureUi.kt index cccd9e8139..775eb53192 100644 --- a/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/presentation/main/SwapValidationFailureUi.kt +++ b/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/presentation/main/SwapValidationFailureUi.kt @@ -4,7 +4,6 @@ import io.novafoundation.nova.common.base.TitleAndMessage import io.novafoundation.nova.common.mixin.api.CustomDialogDisplayer import io.novafoundation.nova.common.resources.ResourceManager import io.novafoundation.nova.common.utils.formatting.format -import io.novafoundation.nova.common.utils.formatting.formatWithoutSymbol import io.novafoundation.nova.common.validation.TransformedFailure import io.novafoundation.nova.common.validation.ValidationFlowActions import io.novafoundation.nova.common.validation.ValidationStatus From 81656cdf0020a11d09c41c616856a2a7ec9f320e Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Wed, 20 Mar 2024 18:01:27 +0100 Subject: [PATCH 10/17] Fixed cross chain fee loading state --- .../presentation/send/amount/SelectSendViewModel.kt | 9 ++++++--- .../presentation/send/amount/di/SelectSendModule.kt | 3 --- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/send/amount/SelectSendViewModel.kt b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/send/amount/SelectSendViewModel.kt index f54e78249d..608e23b2b7 100644 --- a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/send/amount/SelectSendViewModel.kt +++ b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/send/amount/SelectSendViewModel.kt @@ -16,7 +16,6 @@ import io.novafoundation.nova.common.view.ButtonState import io.novafoundation.nova.feature_account_api.data.mappers.mapChainToUi import io.novafoundation.nova.feature_account_api.domain.filter.selectAddress.SelectAddressAccountFilter import io.novafoundation.nova.feature_account_api.domain.interfaces.AccountRepository -import io.novafoundation.nova.feature_account_api.domain.interfaces.MetaAccountGroupingInteractor import io.novafoundation.nova.feature_account_api.domain.interfaces.SelectedAccountUseCase import io.novafoundation.nova.feature_account_api.domain.model.accountIdIn import io.novafoundation.nova.feature_account_api.domain.model.requireAccountIdIn @@ -74,7 +73,6 @@ class SelectSendViewModel( private val chainRegistry: ChainRegistry, private val interactor: WalletInteractor, private val sendInteractor: SendInteractor, - private val metaAccountGroupingInteractor: MetaAccountGroupingInteractor, private val router: AssetsRouter, private val payload: SendPayload, private val initialRecipientAddress: String?, @@ -317,7 +315,12 @@ class SelectSendViewModel( amountChooserMixin.backPressuredAmount ) { originAsset, destinationAsset, address, amount -> originFeeMixin.invalidateFee() - crossChainFeeMixin.invalidateFee() + + if (originAsset.chain.id != destinationAsset.chain.id) { + crossChainFeeMixin.invalidateFee() + } else { + crossChainFeeMixin.setFee(null) + } val assetTransfer = buildTransfer(origin = originAsset, destination = destinationAsset, amount = amount, address = address) val planks = originAsset.asset.planksFromAmount(amount) diff --git a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/send/amount/di/SelectSendModule.kt b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/send/amount/di/SelectSendModule.kt index 6f5418c41d..01c16a80f5 100644 --- a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/send/amount/di/SelectSendModule.kt +++ b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/send/amount/di/SelectSendModule.kt @@ -12,7 +12,6 @@ import io.novafoundation.nova.common.mixin.actionAwaitable.ActionAwaitableMixin import io.novafoundation.nova.common.resources.ResourceManager import io.novafoundation.nova.common.validation.ValidationExecutor import io.novafoundation.nova.feature_account_api.domain.interfaces.AccountRepository -import io.novafoundation.nova.feature_account_api.domain.interfaces.MetaAccountGroupingInteractor import io.novafoundation.nova.feature_account_api.domain.interfaces.SelectedAccountUseCase import io.novafoundation.nova.feature_account_api.presenatation.actions.ExternalActions import io.novafoundation.nova.feature_account_api.presenatation.mixin.addressInput.AddressInputMixinFactory @@ -37,7 +36,6 @@ class SelectSendModule { chainRegistry: ChainRegistry, interactor: WalletInteractor, sendInteractor: SendInteractor, - metaAccountGroupingInteractor: MetaAccountGroupingInteractor, router: AssetsRouter, payload: SendPayload, initialRecipientAddress: String?, @@ -57,7 +55,6 @@ class SelectSendModule { chainRegistry = chainRegistry, interactor = interactor, sendInteractor = sendInteractor, - metaAccountGroupingInteractor = metaAccountGroupingInteractor, router = router, payload = payload, initialRecipientAddress = initialRecipientAddress, From 1e624ce41ec47604c64cae18d477938f331d3606 Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Wed, 20 Mar 2024 19:42:18 +0100 Subject: [PATCH 11/17] Move formatting logic for amount and planks to common module --- ...roxyExtrinsicValidationRequestBusHandler.kt | 6 ++---- .../novafoundation/nova/common/utils/Planks.kt | 7 ------- .../nova/common/utils/Precision.kt | 13 +++++++++++++ .../nova/common/utils/TokenSymbol.kt | 18 ++++++++++++++++++ .../ProxiedExtrinsicValidationSystem.kt | 10 +++------- .../domain/model/MetaAccountAssetBalance.kt | 3 ++- .../account/proxy/ProxySigningPresenter.kt | 3 ++- .../data/mappers/Mappers.kt | 3 ++- .../proxy/sign/RealProxySigningPresenter.kt | 11 +++++++---- .../assets/search/AssetSearchInteractor.kt | 2 +- .../domain/common/AssetSorting.kt | 2 +- .../domain/tokens/add/AddTokensInteractor.kt | 6 ++++-- .../balance/common/BalanceListAdapter.kt | 2 +- .../balance/detail/BalanceDetailFragment.kt | 2 +- .../balance/list/BalanceListViewModel.kt | 2 +- .../send/amount/SelectSendViewModel.kt | 2 -- .../send/amount/di/SelectSendModule.kt | 3 --- .../history/mixin/OperationMappers.kt | 4 ++-- .../domain/providers/MercuryoProvider.kt | 2 +- .../domain/providers/TransakProvider.kt | 2 +- .../metamask/states/DefaultMetamaskState.kt | 6 ++++-- .../model/signPayload/evm/EvmChain.kt | 6 ++++-- .../main/input/SwapAmountInputMixinFactory.kt | 2 +- .../main/view/FeeAssetSelectorBottomSheet.kt | 2 +- .../feature_wallet_api/data/mappers/Asset.kt | 2 +- .../validation/EvmAssetExistenceValidation.kt | 4 ++-- .../presentation/formatters/Formatters.kt | 10 ++++------ .../presentation/model/ChooseAmountModel.kt | 2 +- .../data/mappers/AssetMappers.kt | 2 +- .../data/repository/TokenRepositoryImpl.kt | 8 ++++---- .../data/repository/WalletRepositoryImpl.kt | 4 ++-- .../nova/runtime/ext/ChainExt.kt | 2 +- .../multiNetwork/chain/mappers/ChainMappers.kt | 10 ++++++---- .../runtime/multiNetwork/chain/model/Chain.kt | 6 ++++-- 34 files changed, 98 insertions(+), 71 deletions(-) delete mode 100644 common/src/main/java/io/novafoundation/nova/common/utils/Planks.kt create mode 100644 common/src/main/java/io/novafoundation/nova/common/utils/Precision.kt create mode 100644 common/src/main/java/io/novafoundation/nova/common/utils/TokenSymbol.kt diff --git a/app/src/main/java/io/novafoundation/nova/app/root/presentation/requestBusHandler/ProxyExtrinsicValidationRequestBusHandler.kt b/app/src/main/java/io/novafoundation/nova/app/root/presentation/requestBusHandler/ProxyExtrinsicValidationRequestBusHandler.kt index 9c52fcfea4..c4e8494278 100644 --- a/app/src/main/java/io/novafoundation/nova/app/root/presentation/requestBusHandler/ProxyExtrinsicValidationRequestBusHandler.kt +++ b/app/src/main/java/io/novafoundation/nova/app/root/presentation/requestBusHandler/ProxyExtrinsicValidationRequestBusHandler.kt @@ -8,10 +8,8 @@ import io.novafoundation.nova.feature_account_api.data.proxy.validation.ProxyExt import io.novafoundation.nova.feature_account_api.data.proxy.validation.ProxyExtrinsicValidationRequestBus.ValidationResponse import io.novafoundation.nova.feature_account_api.data.proxy.validation.ProxiedExtrinsicValidationFailure import io.novafoundation.nova.feature_account_api.data.proxy.validation.ProxiedExtrinsicValidationPayload -import io.novafoundation.nova.feature_wallet_api.domain.model.amountFromPlanks import io.novafoundation.nova.feature_wallet_api.domain.validation.ProxyHaveEnoughFeeValidationFactory import io.novafoundation.nova.feature_wallet_api.domain.validation.proxyHasEnoughFeeValidation -import io.novafoundation.nova.feature_wallet_api.presentation.formatters.formatTokenAmount import kotlinx.coroutines.flow.launchIn class ProxyExtrinsicValidationRequestBusHandler( @@ -47,8 +45,8 @@ class ProxyExtrinsicValidationRequestBusHandler( ProxiedExtrinsicValidationFailure.ProxyNotEnoughFee( metaAccount = payload.proxyMetaAccount, asset = asset, - fee = asset.amountFromPlanks(fee.amount).formatTokenAmount(asset), - availableBalance = asset.amountFromPlanks(availableBalance).formatTokenAmount(asset) + fee = fee.amount, + availableBalance = availableBalance ) } ) diff --git a/common/src/main/java/io/novafoundation/nova/common/utils/Planks.kt b/common/src/main/java/io/novafoundation/nova/common/utils/Planks.kt deleted file mode 100644 index 6fb339c0b1..0000000000 --- a/common/src/main/java/io/novafoundation/nova/common/utils/Planks.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.novafoundation.nova.common.utils - -import java.math.BigDecimal -import java.math.BigInteger - -fun BigDecimal.planksFromAmount(precision: Int) = this.scaleByPowerOfTen(precision).toBigInteger() -fun BigInteger.amountFromPlanks(precision: Int) = toBigDecimal(scale = precision) diff --git a/common/src/main/java/io/novafoundation/nova/common/utils/Precision.kt b/common/src/main/java/io/novafoundation/nova/common/utils/Precision.kt new file mode 100644 index 0000000000..5b7a08f5d2 --- /dev/null +++ b/common/src/main/java/io/novafoundation/nova/common/utils/Precision.kt @@ -0,0 +1,13 @@ +package io.novafoundation.nova.common.utils + +import java.math.BigDecimal +import java.math.BigInteger + +@JvmInline +value class Precision(val value: Int) + +fun Int.asPrecision() = Precision(this) + +fun BigDecimal.planksFromAmount(precision: Precision) = scaleByPowerOfTen(precision.value).toBigInteger() + +fun BigInteger.amountFromPlanks(precision: Precision) = toBigDecimal(scale = precision.value) diff --git a/common/src/main/java/io/novafoundation/nova/common/utils/TokenSymbol.kt b/common/src/main/java/io/novafoundation/nova/common/utils/TokenSymbol.kt new file mode 100644 index 0000000000..91b4e0dda6 --- /dev/null +++ b/common/src/main/java/io/novafoundation/nova/common/utils/TokenSymbol.kt @@ -0,0 +1,18 @@ +package io.novafoundation.nova.common.utils + +import io.novafoundation.nova.common.utils.formatting.format +import java.math.BigDecimal +import java.math.RoundingMode + +@JvmInline +value class TokenSymbol(val value: String) + +fun String.asTokenSymbol() = TokenSymbol(this) + +fun BigDecimal.formatTokenAmount(tokenSymbol: TokenSymbol, roundingMode: RoundingMode = RoundingMode.FLOOR): String { + return format(roundingMode).withTokenSymbol(tokenSymbol) +} + +fun String.withTokenSymbol(tokenSymbol: TokenSymbol): String { + return "$this ${tokenSymbol.value}" +} diff --git a/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/data/proxy/validation/ProxiedExtrinsicValidationSystem.kt b/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/data/proxy/validation/ProxiedExtrinsicValidationSystem.kt index 58af57f03d..05ee2e9294 100644 --- a/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/data/proxy/validation/ProxiedExtrinsicValidationSystem.kt +++ b/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/data/proxy/validation/ProxiedExtrinsicValidationSystem.kt @@ -1,15 +1,11 @@ package io.novafoundation.nova.feature_account_api.data.proxy.validation -import io.novafoundation.nova.common.validation.ValidationSystem -import io.novafoundation.nova.common.validation.ValidationSystemBuilder import io.novafoundation.nova.feature_account_api.domain.model.MetaAccount import io.novafoundation.nova.runtime.multiNetwork.ChainWithAsset import io.novafoundation.nova.runtime.multiNetwork.chain.model.Chain import io.novasama.substrate_sdk_android.runtime.AccountId import io.novasama.substrate_sdk_android.runtime.definitions.types.generics.GenericCall - -typealias ProxiedExtrinsicValidationSystem = ValidationSystem -typealias ProxiedExtrinsicValidationSystemBuilder = ValidationSystemBuilder +import java.math.BigInteger class ProxiedExtrinsicValidationPayload( val proxyMetaAccount: MetaAccount, @@ -23,7 +19,7 @@ sealed interface ProxiedExtrinsicValidationFailure { class ProxyNotEnoughFee( val metaAccount: MetaAccount, val asset: Chain.Asset, - val fee: String, - val availableBalance: String + val fee: BigInteger, + val availableBalance: BigInteger ) : ProxiedExtrinsicValidationFailure } diff --git a/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/domain/model/MetaAccountAssetBalance.kt b/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/domain/model/MetaAccountAssetBalance.kt index e0c19daf65..d211f09a3d 100644 --- a/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/domain/model/MetaAccountAssetBalance.kt +++ b/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/domain/model/MetaAccountAssetBalance.kt @@ -1,5 +1,6 @@ package io.novafoundation.nova.feature_account_api.domain.model +import io.novafoundation.nova.common.utils.Precision import io.novafoundation.nova.feature_currency_api.domain.model.Currency import io.novafoundation.nova.runtime.multiNetwork.chain.model.Chain import java.math.BigDecimal @@ -10,7 +11,7 @@ class MetaAccountAssetBalance( val freeInPlanks: BigInteger, val reservedInPlanks: BigInteger, val offChainBalance: BigInteger?, - val precision: Int, + val precision: Precision, val rate: BigDecimal? ) diff --git a/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/presenatation/account/proxy/ProxySigningPresenter.kt b/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/presenatation/account/proxy/ProxySigningPresenter.kt index 5c6aede27b..0ee4d42796 100644 --- a/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/presenatation/account/proxy/ProxySigningPresenter.kt +++ b/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/presenatation/account/proxy/ProxySigningPresenter.kt @@ -3,6 +3,7 @@ package io.novafoundation.nova.feature_account_api.presenatation.account.proxy import io.novafoundation.nova.feature_account_api.domain.model.MetaAccount import io.novafoundation.nova.feature_proxy_api.domain.model.ProxyType import io.novafoundation.nova.runtime.multiNetwork.chain.model.Chain +import java.math.BigInteger interface ProxySigningPresenter { @@ -12,5 +13,5 @@ interface ProxySigningPresenter { suspend fun signingIsNotSupported() - suspend fun notEnoughFee(metaAccount: MetaAccount, chainAsset: Chain.Asset, availableBalance: String, fee: String) + suspend fun notEnoughFee(metaAccount: MetaAccount, chainAsset: Chain.Asset, availableBalance: BigInteger, fee: BigInteger) } diff --git a/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/data/mappers/Mappers.kt b/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/data/mappers/Mappers.kt index 4855059dd1..c428808042 100644 --- a/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/data/mappers/Mappers.kt +++ b/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/data/mappers/Mappers.kt @@ -1,6 +1,7 @@ package io.novafoundation.nova.feature_account_impl.data.mappers import io.novafoundation.nova.common.resources.ResourceManager +import io.novafoundation.nova.common.utils.asPrecision import io.novafoundation.nova.common.utils.filterNotNull import io.novafoundation.nova.core.model.CryptoType import io.novafoundation.nova.core.model.Node @@ -109,7 +110,7 @@ fun mapMetaAccountWithBalanceFromLocal(local: MetaAccountWithBalanceLocal): Meta freeInPlanks = freeInPlanks, reservedInPlanks = reservedInPlanks, offChainBalance = offChainBalance, - precision = precision, + precision = precision.asPrecision(), rate = rate, ) } diff --git a/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/presentation/proxy/sign/RealProxySigningPresenter.kt b/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/presentation/proxy/sign/RealProxySigningPresenter.kt index c78e66d2ad..1d4f0cca09 100644 --- a/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/presentation/proxy/sign/RealProxySigningPresenter.kt +++ b/feature-account-impl/src/main/java/io/novafoundation/nova/feature_account_impl/presentation/proxy/sign/RealProxySigningPresenter.kt @@ -4,7 +4,9 @@ import android.text.SpannableStringBuilder import io.novafoundation.nova.common.data.storage.Preferences import io.novafoundation.nova.common.resources.ContextManager import io.novafoundation.nova.common.resources.ResourceManager +import io.novafoundation.nova.common.utils.amountFromPlanks import io.novafoundation.nova.common.utils.colorSpan +import io.novafoundation.nova.common.utils.formatTokenAmount import io.novafoundation.nova.common.utils.formatting.spannable.SpannableFormatter import io.novafoundation.nova.common.utils.toSpannable import io.novafoundation.nova.common.view.dialog.dialog @@ -14,6 +16,7 @@ import io.novafoundation.nova.feature_account_impl.R import io.novafoundation.nova.feature_account_impl.presentation.common.sign.notSupported.SigningNotSupportedPresentable import io.novafoundation.nova.feature_proxy_api.domain.model.ProxyType import io.novafoundation.nova.runtime.multiNetwork.chain.model.Chain +import java.math.BigInteger import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import kotlin.coroutines.resume @@ -73,8 +76,8 @@ class RealProxySigningPresenter( override suspend fun notEnoughFee( metaAccount: MetaAccount, chainAsset: Chain.Asset, - availableBalance: String, - fee: String + availableBalance: BigInteger, + fee: BigInteger ) = withContext(Dispatchers.Main) { suspendCoroutine { continuation -> dialog(contextManager.getActivity()!!) { @@ -83,8 +86,8 @@ class RealProxySigningPresenter( resourceManager.getString( R.string.proxy_error_not_enough_to_pay_fee_message, metaAccount.name, - fee, - availableBalance + fee.amountFromPlanks(chainAsset.precision).formatTokenAmount(chainAsset.symbol), + availableBalance.amountFromPlanks(chainAsset.precision).formatTokenAmount(chainAsset.symbol) ) ) diff --git a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/domain/assets/search/AssetSearchInteractor.kt b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/domain/assets/search/AssetSearchInteractor.kt index 96790acd0c..83f77686e7 100644 --- a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/domain/assets/search/AssetSearchInteractor.kt +++ b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/domain/assets/search/AssetSearchInteractor.kt @@ -144,7 +144,7 @@ class AssetSearchInteractor( return searchTokens( query = query, chainsById = chainsById, - tokenSymbol = { it.token.configuration.symbol }, + tokenSymbol = { it.token.configuration.symbol.value }, relevantToChains = { asset, chainIds -> asset.token.configuration.chainId in chainIds } ) } diff --git a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/domain/common/AssetSorting.kt b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/domain/common/AssetSorting.kt index 083cb4542d..18e153fb31 100644 --- a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/domain/common/AssetSorting.kt +++ b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/domain/common/AssetSorting.kt @@ -62,7 +62,7 @@ fun getAssetBaseComparator( return compareByDescending(comparing) .thenByDescending { it.balanceWithOffchain.total.amount } .thenByDescending { it.asset.token.configuration.isUtilityAsset } // utility assets first - .thenBy { it.asset.token.configuration.symbol } + .thenBy { it.asset.token.configuration.symbol.value } } fun getAssetGroupBaseComparator( diff --git a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/domain/tokens/add/AddTokensInteractor.kt b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/domain/tokens/add/AddTokensInteractor.kt index 949a97fb2a..9f77eb2222 100644 --- a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/domain/tokens/add/AddTokensInteractor.kt +++ b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/domain/tokens/add/AddTokensInteractor.kt @@ -1,6 +1,8 @@ package io.novafoundation.nova.feature_assets.domain.tokens.add import io.novafoundation.nova.common.address.format.EthereumAddressFormat +import io.novafoundation.nova.common.utils.asPrecision +import io.novafoundation.nova.common.utils.asTokenSymbol import io.novafoundation.nova.common.validation.ValidationSystem import io.novafoundation.nova.feature_assets.domain.tokens.add.validations.AddEvmTokenValidationSystem import io.novafoundation.nova.feature_assets.domain.tokens.add.validations.CoinGeckoLinkValidationFactory @@ -77,8 +79,8 @@ class RealAddTokensInteractor( id = chainAssetIdOfErc20Token(customErc20Token.contract), priceId = priceId, chainId = customErc20Token.chainId, - symbol = customErc20Token.symbol, - precision = customErc20Token.decimals, + symbol = customErc20Token.symbol.asTokenSymbol(), + precision = customErc20Token.decimals.asPrecision(), buyProviders = emptyMap(), staking = emptyList(), type = Chain.Asset.Type.EvmErc20(customErc20Token.contract), diff --git a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/balance/common/BalanceListAdapter.kt b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/balance/common/BalanceListAdapter.kt index cd7c409568..636dd1e8d0 100644 --- a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/balance/common/BalanceListAdapter.kt +++ b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/balance/common/BalanceListAdapter.kt @@ -96,7 +96,7 @@ class AssetViewHolder( bindTotal(asset) - itemAssetToken.text = asset.token.configuration.symbol + itemAssetToken.text = asset.token.configuration.symbol.value setOnClickListener { itemHandler.assetClicked(asset) } } diff --git a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/balance/detail/BalanceDetailFragment.kt b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/balance/detail/BalanceDetailFragment.kt index ef0e337ddc..0684fd9f62 100644 --- a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/balance/detail/BalanceDetailFragment.kt +++ b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/balance/detail/BalanceDetailFragment.kt @@ -121,7 +121,7 @@ class BalanceDetailFragment : BaseFragment() { viewModel.assetDetailsModel.observe { asset -> balanceDetailTokenIcon.loadTokenIcon(asset.token.configuration.iconUrl, imageLoader) - balanceDetailTokenName.text = asset.token.configuration.symbol + balanceDetailTokenName.text = asset.token.configuration.symbol.value balanceDetailRate.text = asset.token.rate diff --git a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/balance/list/BalanceListViewModel.kt b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/balance/list/BalanceListViewModel.kt index 4b994d91dd..5fb4dab4b3 100644 --- a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/balance/list/BalanceListViewModel.kt +++ b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/balance/list/BalanceListViewModel.kt @@ -290,7 +290,7 @@ class BalanceListViewModel( val breakdown = balanceBreakdown.breakdown.map { BalanceBreakdownAmount( - name = it.token.configuration.symbol + " " + mapBalanceIdToUi(resourceManager, it.id), + name = it.token.configuration.symbol.value + " " + mapBalanceIdToUi(resourceManager, it.id), amount = mapAmountToAmountModel(it.tokenAmount, it.token) ) } diff --git a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/send/amount/SelectSendViewModel.kt b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/send/amount/SelectSendViewModel.kt index f54e78249d..8fa7b27a23 100644 --- a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/send/amount/SelectSendViewModel.kt +++ b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/send/amount/SelectSendViewModel.kt @@ -16,7 +16,6 @@ import io.novafoundation.nova.common.view.ButtonState import io.novafoundation.nova.feature_account_api.data.mappers.mapChainToUi import io.novafoundation.nova.feature_account_api.domain.filter.selectAddress.SelectAddressAccountFilter import io.novafoundation.nova.feature_account_api.domain.interfaces.AccountRepository -import io.novafoundation.nova.feature_account_api.domain.interfaces.MetaAccountGroupingInteractor import io.novafoundation.nova.feature_account_api.domain.interfaces.SelectedAccountUseCase import io.novafoundation.nova.feature_account_api.domain.model.accountIdIn import io.novafoundation.nova.feature_account_api.domain.model.requireAccountIdIn @@ -74,7 +73,6 @@ class SelectSendViewModel( private val chainRegistry: ChainRegistry, private val interactor: WalletInteractor, private val sendInteractor: SendInteractor, - private val metaAccountGroupingInteractor: MetaAccountGroupingInteractor, private val router: AssetsRouter, private val payload: SendPayload, private val initialRecipientAddress: String?, diff --git a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/send/amount/di/SelectSendModule.kt b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/send/amount/di/SelectSendModule.kt index 6f5418c41d..01c16a80f5 100644 --- a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/send/amount/di/SelectSendModule.kt +++ b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/send/amount/di/SelectSendModule.kt @@ -12,7 +12,6 @@ import io.novafoundation.nova.common.mixin.actionAwaitable.ActionAwaitableMixin import io.novafoundation.nova.common.resources.ResourceManager import io.novafoundation.nova.common.validation.ValidationExecutor import io.novafoundation.nova.feature_account_api.domain.interfaces.AccountRepository -import io.novafoundation.nova.feature_account_api.domain.interfaces.MetaAccountGroupingInteractor import io.novafoundation.nova.feature_account_api.domain.interfaces.SelectedAccountUseCase import io.novafoundation.nova.feature_account_api.presenatation.actions.ExternalActions import io.novafoundation.nova.feature_account_api.presenatation.mixin.addressInput.AddressInputMixinFactory @@ -37,7 +36,6 @@ class SelectSendModule { chainRegistry: ChainRegistry, interactor: WalletInteractor, sendInteractor: SendInteractor, - metaAccountGroupingInteractor: MetaAccountGroupingInteractor, router: AssetsRouter, payload: SendPayload, initialRecipientAddress: String?, @@ -57,7 +55,6 @@ class SelectSendModule { chainRegistry = chainRegistry, interactor = interactor, sendInteractor = sendInteractor, - metaAccountGroupingInteractor = metaAccountGroupingInteractor, router = router, payload = payload, initialRecipientAddress = initialRecipientAddress, diff --git a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/transaction/history/mixin/OperationMappers.kt b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/transaction/history/mixin/OperationMappers.kt index 8b0ec2c304..62de34155a 100644 --- a/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/transaction/history/mixin/OperationMappers.kt +++ b/feature-assets/src/main/java/io/novafoundation/nova/feature_assets/presentation/transaction/history/mixin/OperationMappers.kt @@ -198,11 +198,11 @@ private fun Operation.Type.Swap.formatSubHeader(resourceManager: ResourceManager } return buildSpannable(resourceManager) { - append(amountIn.chainAsset.symbol) + append(amountIn.chainAsset.symbol.value) append(" ") appendSpan(ImageSpan(arrowRight, imageAlignment)) append(" ") - append(amountOut.chainAsset.symbol) + append(amountOut.chainAsset.symbol.value) } } diff --git a/feature-buy-impl/src/main/java/io/novafoundation/nova/feature_buy_impl/domain/providers/MercuryoProvider.kt b/feature-buy-impl/src/main/java/io/novafoundation/nova/feature_buy_impl/domain/providers/MercuryoProvider.kt index d5a0ab3b3e..df618bbced 100644 --- a/feature-buy-impl/src/main/java/io/novafoundation/nova/feature_buy_impl/domain/providers/MercuryoProvider.kt +++ b/feature-buy-impl/src/main/java/io/novafoundation/nova/feature_buy_impl/domain/providers/MercuryoProvider.kt @@ -55,7 +55,7 @@ class MercuryoProvider( .appendQueryParameter("widget_id", widgetId) .appendQueryParameter("type", TYPE_BUY) .appendNullableQueryParameter(NETWORK_KEY, network) - .appendQueryParameter("currency", tokenType.symbol) + .appendQueryParameter("currency", tokenType.symbol.value) .appendQueryParameter("address", address) .appendQueryParameter("return_url", ExternalProvider.REDIRECT_URL_BASE.urlEncoded()) .appendQueryParameter("signature", signature) diff --git a/feature-buy-impl/src/main/java/io/novafoundation/nova/feature_buy_impl/domain/providers/TransakProvider.kt b/feature-buy-impl/src/main/java/io/novafoundation/nova/feature_buy_impl/domain/providers/TransakProvider.kt index e4d862e338..4993d067fb 100644 --- a/feature-buy-impl/src/main/java/io/novafoundation/nova/feature_buy_impl/domain/providers/TransakProvider.kt +++ b/feature-buy-impl/src/main/java/io/novafoundation/nova/feature_buy_impl/domain/providers/TransakProvider.kt @@ -53,7 +53,7 @@ class TransakProvider( .authority(host) .appendQueryParameter("apiKey", apiKey) .appendQueryParameter("environment", environment) - .appendQueryParameter("cryptoCurrencyCode", chainAsset.symbol) + .appendQueryParameter("cryptoCurrencyCode", chainAsset.symbol.value) .appendNullableQueryParameter(NETWORK_KEY, network) .appendQueryParameter("walletAddress", address) .appendQueryParameter("disableWalletAddressForm", "true") diff --git a/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/web3/metamask/states/DefaultMetamaskState.kt b/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/web3/metamask/states/DefaultMetamaskState.kt index 80e6b2a6ee..e44e4fe026 100644 --- a/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/web3/metamask/states/DefaultMetamaskState.kt +++ b/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/web3/metamask/states/DefaultMetamaskState.kt @@ -2,6 +2,8 @@ package io.novafoundation.nova.feature_dapp_impl.web3.metamask.states import io.novafoundation.nova.common.address.AddressIconGenerator import io.novafoundation.nova.common.resources.ResourceManager +import io.novafoundation.nova.common.utils.asPrecision +import io.novafoundation.nova.common.utils.asTokenSymbol import io.novafoundation.nova.feature_account_api.presenatation.account.wallet.WalletUiUseCase import io.novafoundation.nova.feature_dapp_impl.R import io.novafoundation.nova.feature_dapp_impl.domain.DappInteractor @@ -248,8 +250,8 @@ class DefaultMetamaskState( nativeCurrency = with(nativeCurrency) { EvmChain.NativeCurrency( name = name, - symbol = symbol, - decimals = decimals + symbol = symbol.asTokenSymbol(), + decimals = decimals.asPrecision() ) }, rpcUrl = rpcUrls.first(), diff --git a/feature-external-sign-api/src/main/java/io/novafoundation/nova/feature_external_sign_api/model/signPayload/evm/EvmChain.kt b/feature-external-sign-api/src/main/java/io/novafoundation/nova/feature_external_sign_api/model/signPayload/evm/EvmChain.kt index e5ceb793d9..8c44bcdf8c 100644 --- a/feature-external-sign-api/src/main/java/io/novafoundation/nova/feature_external_sign_api/model/signPayload/evm/EvmChain.kt +++ b/feature-external-sign-api/src/main/java/io/novafoundation/nova/feature_external_sign_api/model/signPayload/evm/EvmChain.kt @@ -1,6 +1,8 @@ package io.novafoundation.nova.feature_external_sign_api.model.signPayload.evm import android.os.Parcelable +import io.novafoundation.nova.common.utils.Precision +import io.novafoundation.nova.common.utils.TokenSymbol import kotlinx.android.parcel.Parcelize @Parcelize @@ -15,7 +17,7 @@ data class EvmChain( @Parcelize class NativeCurrency( val name: String, - val symbol: String, - val decimals: Int + val symbol: TokenSymbol, + val decimals: Precision ) : Parcelable } diff --git a/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/presentation/main/input/SwapAmountInputMixinFactory.kt b/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/presentation/main/input/SwapAmountInputMixinFactory.kt index 2d74a8043d..fe76503290 100644 --- a/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/presentation/main/input/SwapAmountInputMixinFactory.kt +++ b/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/presentation/main/input/SwapAmountInputMixinFactory.kt @@ -76,7 +76,7 @@ private class RealSwapAmountInputMixin( return SwapInputAssetModel( assetIcon = SwapInputAssetModel.SwapAssetIcon.Chosen(chainAsset.iconUrl), - title = chainAsset.symbol, + title = chainAsset.symbol.value, subtitleIcon = Icon.FromLink(chain.icon), subtitle = chain.name, showInput = true, diff --git a/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/presentation/main/view/FeeAssetSelectorBottomSheet.kt b/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/presentation/main/view/FeeAssetSelectorBottomSheet.kt index e983afd4a8..c957a138bd 100644 --- a/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/presentation/main/view/FeeAssetSelectorBottomSheet.kt +++ b/feature-swap-impl/src/main/java/io/novafoundation/nova/feature_swap_impl/presentation/main/view/FeeAssetSelectorBottomSheet.kt @@ -28,7 +28,7 @@ class FeeAssetSelectorBottomSheet( super.onCreate(savedInstanceState) payload.options.forEach { feeOption -> - bottomSheetFeeSelectionAssets.addTab(feeOption.symbol) + bottomSheetFeeSelectionAssets.addTab(feeOption.symbol.value) } bottomSheetFeeSelectionAssets.onTabSelected { index -> diff --git a/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/data/mappers/Asset.kt b/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/data/mappers/Asset.kt index 81a68b9bd0..1bf7065461 100644 --- a/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/data/mappers/Asset.kt +++ b/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/data/mappers/Asset.kt @@ -23,7 +23,7 @@ fun mapAssetToAssetModel( chainAssetId = asset.token.configuration.id, imageUrl = token.configuration.iconUrl, tokenName = token.configuration.name, - tokenSymbol = token.configuration.symbol, + tokenSymbol = token.configuration.symbol.value, assetBalance = formattedAmount ) } diff --git a/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/domain/validation/EvmAssetExistenceValidation.kt b/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/domain/validation/EvmAssetExistenceValidation.kt index a99a51f5fe..e1e510f02f 100644 --- a/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/domain/validation/EvmAssetExistenceValidation.kt +++ b/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/domain/validation/EvmAssetExistenceValidation.kt @@ -32,8 +32,8 @@ class EvmAssetExistenceValidation( when { alreadyExistingAsset == null -> valid() // we only allow to modify manually added tokens. Default tokens should remain unchanged - alreadyExistingAsset.source == Source.MANUAL -> assetAlreadyExists(alreadyExistingAsset.symbol, true).validationWarning() - else -> assetAlreadyExists(alreadyExistingAsset.symbol, false).validationError() + alreadyExistingAsset.source == Source.MANUAL -> assetAlreadyExists(alreadyExistingAsset.symbol.value, true).validationWarning() + else -> assetAlreadyExists(alreadyExistingAsset.symbol.value, false).validationError() } } catch (e: Exception) { validationError(addressMappingError(value)) diff --git a/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/presentation/formatters/Formatters.kt b/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/presentation/formatters/Formatters.kt index c00cbe4fcd..c8d12f14bf 100644 --- a/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/presentation/formatters/Formatters.kt +++ b/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/presentation/formatters/Formatters.kt @@ -1,7 +1,10 @@ package io.novafoundation.nova.feature_wallet_api.presentation.formatters import io.novafoundation.nova.common.utils.SemiUnboundedRange +import io.novafoundation.nova.common.utils.asTokenSymbol +import io.novafoundation.nova.common.utils.formatTokenAmount import io.novafoundation.nova.common.utils.formatting.format +import io.novafoundation.nova.common.utils.withTokenSymbol import io.novafoundation.nova.feature_wallet_api.data.network.blockhain.types.Balance import io.novafoundation.nova.feature_wallet_api.domain.model.amountFromPlanks import io.novafoundation.nova.runtime.multiNetwork.chain.model.Chain @@ -31,13 +34,8 @@ fun BigDecimal.formatTokenAmount(chainAsset: Chain.Asset, roundingMode: Rounding } fun BigDecimal.formatTokenAmount(tokenSymbol: String, roundingMode: RoundingMode = RoundingMode.FLOOR): String { - return format(roundingMode).withTokenSymbol(tokenSymbol) + return formatTokenAmount(tokenSymbol.asTokenSymbol(), roundingMode) } - -fun String.withTokenSymbol(tokenSymbol: String): String { - return "$this $tokenSymbol" -} - fun BigDecimal.formatTokenChange(chainAsset: Chain.Asset, isIncome: Boolean): String { val withoutSign = formatTokenAmount(chainAsset) val sign = if (isIncome) '+' else '-' diff --git a/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/presentation/model/ChooseAmountModel.kt b/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/presentation/model/ChooseAmountModel.kt index e0fcd19ff1..49b9b8a133 100644 --- a/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/presentation/model/ChooseAmountModel.kt +++ b/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/presentation/model/ChooseAmountModel.kt @@ -26,6 +26,6 @@ internal fun ChooseAmountModel( ) internal fun ChooseAmountInputModel(chainAsset: Chain.Asset): ChooseAmountInputModel = ChooseAmountInputModel( - tokenSymbol = chainAsset.symbol, + tokenSymbol = chainAsset.symbol.value, tokenIcon = chainAsset.iconUrl, ) diff --git a/feature-wallet-impl/src/main/java/io/novafoundation/nova/feature_wallet_impl/data/mappers/AssetMappers.kt b/feature-wallet-impl/src/main/java/io/novafoundation/nova/feature_wallet_impl/data/mappers/AssetMappers.kt index d6c904091a..4e7d248d8a 100644 --- a/feature-wallet-impl/src/main/java/io/novafoundation/nova/feature_wallet_impl/data/mappers/AssetMappers.kt +++ b/feature-wallet-impl/src/main/java/io/novafoundation/nova/feature_wallet_impl/data/mappers/AssetMappers.kt @@ -21,7 +21,7 @@ fun mapTokenWithCurrencyToToken( chainAsset: Chain.Asset, ): Token { return mapTokenLocalToToken( - tokenWithCurrency.token ?: TokenLocal.createEmpty(chainAsset.symbol, tokenWithCurrency.currency.id), + tokenWithCurrency.token ?: TokenLocal.createEmpty(chainAsset.symbol.value, tokenWithCurrency.currency.id), tokenWithCurrency.currency, chainAsset ) diff --git a/feature-wallet-impl/src/main/java/io/novafoundation/nova/feature_wallet_impl/data/repository/TokenRepositoryImpl.kt b/feature-wallet-impl/src/main/java/io/novafoundation/nova/feature_wallet_impl/data/repository/TokenRepositoryImpl.kt index 8ab4dcd608..bce2036938 100644 --- a/feature-wallet-impl/src/main/java/io/novafoundation/nova/feature_wallet_impl/data/repository/TokenRepositoryImpl.kt +++ b/feature-wallet-impl/src/main/java/io/novafoundation/nova/feature_wallet_impl/data/repository/TokenRepositoryImpl.kt @@ -21,7 +21,7 @@ class TokenRepositoryImpl( override suspend fun observeTokens(chainAssets: List): Flow> { if (chainAssets.isEmpty()) return flowOf(emptyMap()) - val symbols = chainAssets.map { it.symbol }.distinct() + val symbols = chainAssets.map { it.symbol.value }.distinct() return tokenDao.observeTokensWithCurrency(symbols).map { tokens -> val tokensBySymbol = tokens.associateBy { it.token?.tokenSymbol } @@ -31,7 +31,7 @@ class TokenRepositoryImpl( keySelector = { chainAsset -> chainAsset.fullId }, valueTransform = { chainAsset -> mapTokenLocalToToken( - tokenLocal = tokensBySymbol[chainAsset.symbol]?.token, + tokenLocal = tokensBySymbol[chainAsset.symbol.value]?.token, currencyLocal = currency, chainAsset = chainAsset ) @@ -43,13 +43,13 @@ class TokenRepositoryImpl( override suspend fun getToken(chainAsset: Chain.Asset): Token = getTokenOrNull(chainAsset)!! override suspend fun getTokenOrNull(chainAsset: Chain.Asset): Token? = withContext(Dispatchers.Default) { - val tokenLocal = tokenDao.getTokenWithCurrency(chainAsset.symbol) + val tokenLocal = tokenDao.getTokenWithCurrency(chainAsset.symbol.value) tokenLocal?.let { mapTokenWithCurrencyToToken(tokenLocal, chainAsset) } } override fun observeToken(chainAsset: Chain.Asset): Flow { - return tokenDao.observeTokenWithCurrency(chainAsset.symbol) + return tokenDao.observeTokenWithCurrency(chainAsset.symbol.value) .map { mapTokenWithCurrencyToToken(it, chainAsset) } diff --git a/feature-wallet-impl/src/main/java/io/novafoundation/nova/feature_wallet_impl/data/repository/WalletRepositoryImpl.kt b/feature-wallet-impl/src/main/java/io/novafoundation/nova/feature_wallet_impl/data/repository/WalletRepositoryImpl.kt index a23ea5c180..b5d9377b82 100644 --- a/feature-wallet-impl/src/main/java/io/novafoundation/nova/feature_wallet_impl/data/repository/WalletRepositoryImpl.kt +++ b/feature-wallet-impl/src/main/java/io/novafoundation/nova/feature_wallet_impl/data/repository/WalletRepositoryImpl.kt @@ -109,7 +109,7 @@ class WalletRepositoryImpl( val newTokens = coinPriceChanges.flatMap { (priceId, coinPriceChange) -> syncingPriceIdsToSymbols[priceId]?.let { symbols -> symbols.map { symbol -> - TokenLocal(symbol, coinPriceChange?.rate, currency.id, coinPriceChange?.recentRateChange) + TokenLocal(symbol.value, coinPriceChange?.rate, currency.id, coinPriceChange?.recentRateChange) } } ?: emptyList() } @@ -125,7 +125,7 @@ class WalletRepositoryImpl( val coinPriceChange = getAssetPrice(priceId, currency) - val token = TokenLocal(asset.symbol, coinPriceChange?.rate, currency.id, coinPriceChange?.recentRateChange) + val token = TokenLocal(asset.symbol.value, coinPriceChange?.rate, currency.id, coinPriceChange?.recentRateChange) assetCache.insertToken(token) } diff --git a/runtime/src/main/java/io/novafoundation/nova/runtime/ext/ChainExt.kt b/runtime/src/main/java/io/novafoundation/nova/runtime/ext/ChainExt.kt index a260629f79..a4c22d9eb0 100644 --- a/runtime/src/main/java/io/novafoundation/nova/runtime/ext/ChainExt.kt +++ b/runtime/src/main/java/io/novafoundation/nova/runtime/ext/ChainExt.kt @@ -144,7 +144,7 @@ inline val Chain.Asset.isCommissionAsset: Boolean private const val MOONBEAM_XC_PREFIX = "xc" fun Chain.Asset.unifiedSymbol(): String { - return symbol.removePrefix(MOONBEAM_XC_PREFIX) + return symbol.value.removePrefix(MOONBEAM_XC_PREFIX) } val Chain.Node.isWss: Boolean diff --git a/runtime/src/main/java/io/novafoundation/nova/runtime/multiNetwork/chain/mappers/ChainMappers.kt b/runtime/src/main/java/io/novafoundation/nova/runtime/multiNetwork/chain/mappers/ChainMappers.kt index e26a212eec..63a5c7c55f 100644 --- a/runtime/src/main/java/io/novafoundation/nova/runtime/multiNetwork/chain/mappers/ChainMappers.kt +++ b/runtime/src/main/java/io/novafoundation/nova/runtime/multiNetwork/chain/mappers/ChainMappers.kt @@ -3,6 +3,8 @@ package io.novafoundation.nova.runtime.multiNetwork.chain.mappers import android.util.Log import com.google.gson.Gson import io.novafoundation.nova.common.utils.asGsonParsedNumber +import io.novafoundation.nova.common.utils.asPrecision +import io.novafoundation.nova.common.utils.asTokenSymbol import io.novafoundation.nova.common.utils.enumValueOfOrNull import io.novafoundation.nova.common.utils.fromJson import io.novafoundation.nova.common.utils.fromJsonOrNull @@ -166,8 +168,8 @@ fun mapChainAssetToLocal(asset: Chain.Asset, gson: Gson): ChainAssetLocal { return ChainAssetLocal( id = asset.id, - symbol = asset.symbol, - precision = asset.precision, + symbol = asset.symbol.value, + precision = asset.precision.value, chainId = asset.chainId, name = asset.name, priceId = asset.priceId, @@ -329,8 +331,8 @@ fun mapChainAssetLocalToAsset(local: ChainAssetLocal, gson: Gson): Chain.Asset { return Chain.Asset( iconUrl = local.icon, id = local.id, - symbol = local.symbol, - precision = local.precision, + symbol = local.symbol.asTokenSymbol(), + precision = local.precision.asPrecision(), name = local.name, chainId = local.chainId, priceId = local.priceId, diff --git a/runtime/src/main/java/io/novafoundation/nova/runtime/multiNetwork/chain/model/Chain.kt b/runtime/src/main/java/io/novafoundation/nova/runtime/multiNetwork/chain/model/Chain.kt index 37a5420663..0f2f565581 100644 --- a/runtime/src/main/java/io/novafoundation/nova/runtime/multiNetwork/chain/model/Chain.kt +++ b/runtime/src/main/java/io/novafoundation/nova/runtime/multiNetwork/chain/model/Chain.kt @@ -1,6 +1,8 @@ package io.novafoundation.nova.runtime.multiNetwork.chain.model import io.novafoundation.nova.common.utils.Identifiable +import io.novafoundation.nova.common.utils.Precision +import io.novafoundation.nova.common.utils.TokenSymbol import java.math.BigInteger typealias ChainId = String @@ -61,8 +63,8 @@ data class Chain( val id: ChainAssetId, val priceId: String?, val chainId: ChainId, - val symbol: String, - val precision: Int, + val symbol: TokenSymbol, + val precision: Precision, val buyProviders: Map, val staking: List, val type: Type, From 0912a398fc3fe96780af41f9f386d17047184a92 Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Thu, 21 Mar 2024 11:26:43 +0100 Subject: [PATCH 12/17] Added toString() for TokenSymbol to support corner cases --- .../java/io/novafoundation/nova/common/utils/TokenSymbol.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/io/novafoundation/nova/common/utils/TokenSymbol.kt b/common/src/main/java/io/novafoundation/nova/common/utils/TokenSymbol.kt index 91b4e0dda6..24af37c2c6 100644 --- a/common/src/main/java/io/novafoundation/nova/common/utils/TokenSymbol.kt +++ b/common/src/main/java/io/novafoundation/nova/common/utils/TokenSymbol.kt @@ -5,7 +5,10 @@ import java.math.BigDecimal import java.math.RoundingMode @JvmInline -value class TokenSymbol(val value: String) +value class TokenSymbol(val value: String) { + + override fun toString() = value +} fun String.asTokenSymbol() = TokenSymbol(this) From 699a51b056dc2aea9d27c42c496a7540f55c3aee Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Thu, 21 Mar 2024 11:55:34 +0100 Subject: [PATCH 13/17] Fixed crash --- .../nova/feature_wallet_api/domain/ArbitraryTokenCase.kt | 3 ++- .../domain/interfaces/CoinPriceRepository.kt | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/domain/ArbitraryTokenCase.kt b/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/domain/ArbitraryTokenCase.kt index 2be35fc25e..b30a1b9ec8 100644 --- a/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/domain/ArbitraryTokenCase.kt +++ b/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/domain/ArbitraryTokenCase.kt @@ -31,7 +31,8 @@ class RealArbitraryTokenUseCase( val priceId = chainAsset.priceId val rate = if (priceId != null) { - coinPriceRepository.getCoinPriceAtTime(priceId, currency, at) + runCatching { coinPriceRepository.getCoinPriceAtTime(priceId, currency, at) } + .getOrNull() } else { null } diff --git a/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/domain/interfaces/CoinPriceRepository.kt b/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/domain/interfaces/CoinPriceRepository.kt index ca5810ec64..4c5af1e8b5 100644 --- a/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/domain/interfaces/CoinPriceRepository.kt +++ b/feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/domain/interfaces/CoinPriceRepository.kt @@ -3,15 +3,21 @@ package io.novafoundation.nova.feature_wallet_api.domain.interfaces import io.novafoundation.nova.feature_currency_api.domain.model.Currency import io.novafoundation.nova.feature_wallet_api.domain.model.CoinRateChange import io.novafoundation.nova.feature_wallet_api.domain.model.HistoricalCoinRate +import retrofit2.HttpException +import kotlin.jvm.Throws import kotlin.time.Duration interface CoinPriceRepository { + @Throws(HttpException::class) suspend fun getCoinPriceAtTime(priceId: String, currency: Currency, timestamp: Duration): HistoricalCoinRate? + @Throws(HttpException::class) suspend fun getCoinPriceRange(priceId: String, currency: Currency, fromTimestamp: Long, toTimestamp: Long): List + @Throws(HttpException::class) suspend fun getCoinRates(priceIds: Set, currency: Currency): Map + @Throws(HttpException::class) suspend fun getCoinRate(priceId: String, currency: Currency): CoinRateChange? } From 093730541d0c3e64f161af99ec72d04c4208aa62 Mon Sep 17 00:00:00 2001 From: valentunn <70131744+valentunn@users.noreply.github.com> Date: Wed, 27 Mar 2024 12:10:27 +0300 Subject: [PATCH 14/17] Cloud backup CI secrets (#1451) --- .github/workflows/android_build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/android_build.yml b/.github/workflows/android_build.yml index 4bcba8f9f6..6a7e93c21d 100644 --- a/.github/workflows/android_build.yml +++ b/.github/workflows/android_build.yml @@ -48,6 +48,8 @@ on: required: true WALLET_CONNECT_PROJECT_ID: required: true + DEBUG_GOOGLE_OAUTH_ID: + required: true # Special secrets for signing: CI_MARKET_KEYSTORE_PASS: required: false @@ -90,6 +92,7 @@ env: INFURA_API_KEY: ${{ secrets.INFURA_API_KEY }} DWELLIR_API_KEY: ${{ secrets.DWELLIR_API_KEY }} WALLET_CONNECT_PROJECT_ID: ${{ secrets.WALLET_CONNECT_PROJECT_ID }} + DEBUG_GOOGLE_OAUTH_ID: ${{ secrets.DEBUG_GOOGLE_OAUTH_ID }} CI_MARKET_KEYSTORE_PASS: ${{ secrets.CI_MARKET_KEYSTORE_PASS }} CI_MARKET_KEYSTORE_KEY_ALIAS: ${{ secrets.CI_MARKET_KEYSTORE_KEY_ALIAS }} From 1b8ca428ef2685d7603f7814fb621a366befebaf Mon Sep 17 00:00:00 2001 From: Stepan Lavrentev <40560660+stepanLav@users.noreply.github.com> Date: Tue, 2 Apr 2024 11:56:18 +0300 Subject: [PATCH 15/17] fix: SwapServiceIntegrationTest (#1458) * fix: SwapServiceIntegrationTest * fix: CrossChainTransfersIntegrationTest * fix: use value instead of toString() --- .../novafoundation/nova/CrossChainTransfersIntegrationTest.kt | 2 +- .../java/io/novafoundation/nova/SwapServiceIntegrationTest.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/androidTest/java/io/novafoundation/nova/CrossChainTransfersIntegrationTest.kt b/app/src/androidTest/java/io/novafoundation/nova/CrossChainTransfersIntegrationTest.kt index 611fa4b406..c2534c7cca 100644 --- a/app/src/androidTest/java/io/novafoundation/nova/CrossChainTransfersIntegrationTest.kt +++ b/app/src/androidTest/java/io/novafoundation/nova/CrossChainTransfersIntegrationTest.kt @@ -61,7 +61,7 @@ class CrossChainTransfersIntegrationTest : BaseIntegrationTest() { ) { runBlocking { val originChain = chainRegistry.findChain { it.name == from }!! - val asssetInOrigin = originChain.assets.find { it.symbol == what }!! + val asssetInOrigin = originChain.assets.find { it.symbol.value == what }!! val destinationChain = chainRegistry.findChain { it.name == to }!! diff --git a/app/src/androidTest/java/io/novafoundation/nova/SwapServiceIntegrationTest.kt b/app/src/androidTest/java/io/novafoundation/nova/SwapServiceIntegrationTest.kt index df3c39ad02..9e9ab4927d 100644 --- a/app/src/androidTest/java/io/novafoundation/nova/SwapServiceIntegrationTest.kt +++ b/app/src/androidTest/java/io/novafoundation/nova/SwapServiceIntegrationTest.kt @@ -173,11 +173,11 @@ class SwapServiceIntegrationTest : BaseIntegrationTest() { } private fun Chain.siri(): Chain.Asset { - return assets.first { it.symbol == "SIRI" } + return assets.first { it.symbol.value == "SIRI" } } private fun Chain.dot(): Chain.Asset { - return assets.first { it.symbol == "DOT" } + return assets.first { it.symbol.value == "DOT" } } private fun Chain.wnd(): Chain.Asset { From 0c61026fdb93a7c44d9022d0cf27bb3b125dbc39 Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Thu, 4 Apr 2024 17:38:12 +0200 Subject: [PATCH 16/17] Added turkish language and translation for push notifications --- .../nova/common/resources/LanguagesHolder.kt | 3 +- common/src/main/res/values-es/strings.xml | 75 +- common/src/main/res/values-it/strings.xml | 80 +- common/src/main/res/values-pt/strings.xml | 72 +- common/src/main/res/values-ru/strings.xml | 10 + common/src/main/res/values-tr/strings.xml | 1472 +++++++++++++++++ common/src/main/res/values-zh-rCN/strings.xml | 73 +- 7 files changed, 1768 insertions(+), 17 deletions(-) create mode 100644 common/src/main/res/values-tr/strings.xml diff --git a/common/src/main/java/io/novafoundation/nova/common/resources/LanguagesHolder.kt b/common/src/main/java/io/novafoundation/nova/common/resources/LanguagesHolder.kt index 9093c21f31..0fabddbe72 100644 --- a/common/src/main/java/io/novafoundation/nova/common/resources/LanguagesHolder.kt +++ b/common/src/main/java/io/novafoundation/nova/common/resources/LanguagesHolder.kt @@ -14,8 +14,9 @@ class LanguagesHolder { private val PORTUGUESE = Language("pt") private val RUSSIAN = Language("ru") private val SPANISH = Language("es") + private val TURKISH = Language("tr") - private val availableLanguages = mutableListOf(ENGLISH, CHINESE, ITALIAN, PORTUGUESE, RUSSIAN, SPANISH) + private val availableLanguages = mutableListOf(ENGLISH, CHINESE, ITALIAN, PORTUGUESE, RUSSIAN, SPANISH, TURKISH) } fun getDefaultLanguage(): Language { diff --git a/common/src/main/res/values-es/strings.xml b/common/src/main/res/values-es/strings.xml index 9644cdb5b1..4eaa144041 100644 --- a/common/src/main/res/values-es/strings.xml +++ b/common/src/main/res/values-es/strings.xml @@ -176,7 +176,7 @@ Vesting Comprar tokens ¿Recibió su DOT de vuelta de los crowdloans? ¡Comience a hacer staking de su DOT hoy para obtener las máximas recompensas posibles! - Potencie su DOT \", \"🚀 + Potencie su DOT 🚀 Filtrar tokens Todas las redes Gestionar tokens @@ -230,6 +230,7 @@ Cadena Cambiar Elegir red + Limpiar Cerrar ¿Estás seguro de que quieres cerrar esta pantalla?\nTus cambios no se aplicarán. Completado @@ -313,6 +314,7 @@ Sin cambios Vamos a mostrar su mnemónico. Asegúrese de que nadie pueda ver su pantalla y no tome capturas de pantalla - ellas pueden ser recogidas por malware de terceros Ninguno + No disponible Lo sentimos, no tiene fondos suficientes para pagar la tarifa de red. Saldo insuficiente Apagado @@ -332,9 +334,11 @@ Los permisos solicitados son necesarios para usar esta pantalla. Permisos necesarios Precio + Política de Privacidad Proceder Depósito de proxy Revocar acceso + Notificaciones Push Leer más Recomendado Actualizar comisión @@ -343,6 +347,7 @@ Requerido Restablecer Reintentar + Algo salió mal. Por favor, intenta nuevamente Revocar Guardar Escanear el código QR @@ -358,9 +363,11 @@ Saltar proceso Ocurrió un error al enviar algunas transacciones. ¿Quieres intentar de nuevo? No se pudo enviar algunas transacciones + Algo salió mal Ordenar por Estado Dirección Substrate + Términos y Condiciones Tiempo restante Título Abrir configuración @@ -485,7 +492,6 @@ Cadena no soportada con hash de génesis %s Asegúrese de que la operación sea correcta No se pudo firmar la operación solicitada - Cadena no encontrada El dominio del enlace %s no está permitido Tipo de gobernanza no especificado @@ -494,6 +500,7 @@ Ruta de derivación inválida Mnemónico no válido URL inválida + Canal de Notificación Predeterminado +%d Buscar por dirección o nombre Formato de dirección inválido. Asegúrese de que la dirección pertenezca a la red correcta @@ -562,6 +569,11 @@ Usted paga Usted recibe Seleccione un token + Canal de Notificación de Gobernanza + + Necesitas seleccionar al menos %d pista + Necesitas seleccionar al menos %d pistas + Desbloquear Historia Correo electrónico @@ -611,9 +623,13 @@ Selecciona una cuenta para agregar a la cartera Transacción de pago enviada Agregar token - Por favor, intenta con otra. Frase mnemotécnica inválida, por favor verifica una vez más el orden de las palabras + No puedes seleccionar más de %d carteras + + Selecciona al menos %d cartera + Selecciona al menos %d carteras + Comisión de red Dirección del nodo Información del Nodo @@ -690,6 +706,47 @@ La transacción será iniciada por %s como una cuenta delegada. La tarifa de red será pagada por la cuenta delegada. Esta es una cuenta Delegada (Proxied) %s proxy + El delegado ha votado + Nuevo Referéndum + Actualización de Referéndum + %s Referéndum #%s está en vivo ahora! + 🗳️ Nuevo referéndum + Descarga Nova Wallet v%s para obtener todas las nuevas funciones! + ¡Un nuevo update de Nova Wallet está disponible! + %s referéndum #%s ha finalizado y sido aprobado 🎉 + ✅ Referéndum aprobado! + %s Referéndum #%s cambio de status de %s a %s + %s referéndum #%s ha terminado y sido rechazado! + ❌ Referéndum rechazado! + 🗳️ Estado del Referendum cambiado + %s Referéndum #%s cambió su estado a %s + Anuncios de Nova + Balances + Activar notificaciones + No recibirás notificaciones sobre Actividades de Carteras (Balances, Staking) porque no has seleccionado ninguna cartera + Otros + Tokens recibidos + Tokens enviados + Recompensas de Staking + Carteras + ⭐️ Nueva recompensa %s + Recibido %s de staking %s + ⭐️ Nueva recompensa + Nova Wallet • ahora + Recibido +0.6068 KSM ($20.35) de staking Kusama + Recibido %s en %s + ⬇️ Recibido + ⬇️ Recibido %s + Enviado %s a %s en %s + 💸 Enviado + 💸 Enviado %s + Seleccione hasta 3 billeteras para ser notificado cuando la billetera tenga actividad + No ahora + Habilitar notificaciones push + Reciba notificaciones sobre operaciones de Wallet, actualizaciones de Gobernanza, actividad de Staking y Seguridad, para que siempre esté informado + Al habilitar las notificaciones push, acepta nuestros %s y %s + Intente de nuevo más tarde accediendo a los ajustes de notificación desde la pestaña de Configuración + ¡No te pierdas de nada! Pega el json o sube un archivo… Subir archivo Restaurar JSON @@ -738,6 +795,7 @@ Decidiendo Decidiendo en %s Ejecutado + En cola En cola (%s de %s) Eliminado No pasa @@ -831,6 +889,8 @@ Pistas no disponibles Nova necesita que la ubicación esté habilitada para poder realizar el escaneo bluetooth y encontrar tu dispositivo Ledger Por favor, habilita la geolocalización en las configuraciones del dispositivo + Seleccione pistas para + %d de %d Dirección o w3n El destinatario es una cuenta del sistema. No está controlado por ninguna empresa o individuo.\n¿Estás seguro de que aún quieres realizar esta transferencia? Los tokens se perderán @@ -843,6 +903,8 @@ Cada operación de firma en monederos con par de claves (creados en nova wallet o importados) debería requerir verificación PIN antes de construir la firma Solicitar autenticación para firmar operaciones Preferencias + Las notificaciones push están disponibles solo para la versión de Nova Wallet descargada desde Google Play. + Las notificaciones push solo están disponibles para dispositivos con servicios de Google. La grabación de pantalla y las capturas de pantalla no estarán disponibles. La aplicación minimizada no mostrará el contenido Modo seguro Seguridad @@ -865,7 +927,6 @@ Tipo de staking no soportado sr25519 (recomendado) Schnorrkel - La cuenta seleccionada ya está siendo utilizada como controladora. Añadir autoridad delegada (Proxy) Tus delegaciones @@ -960,6 +1021,7 @@ Esperando la próxima Era esperando la próxima era (%s) No tienes saldo suficiente para el depósito de proxy de %s. Saldo disponible: %s + Canal de Notificaciones de Staking Colador El stake mínimo del colador es mayor que tu delegación. No recibirás recompensas de este colador. Información sobre el colador @@ -1259,6 +1321,7 @@ Completado Fallido Pendiente + Canal de Notificaciones de Transacciones De: %s Para: %s Transferencia @@ -1345,7 +1408,7 @@ El formato de la dirección es inválido.\nAsegúrate de que la dirección\npertenezca a la red correcta Saldo mínimo Debido a las restricciones entre cadenas, puedes transferir no más de %s - No tienes suficiente saldo para pagar la tarifa de cadena cruzada de %s.\nSaldo restante tras la transferencia: %s + No tienes suficiente saldo para pagar la tarifa de cadena cruzada de %s.\nSaldo restante después de la transferencia: %s La tarifa de cadena cruzada se agrega al monto ingresado. El destinatario puede recibir parte de la tarifa de cadena cruzada Confirmar transferencia Cadena cruzada @@ -1358,7 +1421,7 @@ La transferencia eliminará la cuenta Tu cuenta será eliminada de la blockchain después de la transferencia ya que hace que el saldo total sea menor que el mínimo. El saldo restante también será transferido al destinatario. Desde la red - Necesitas tener al menos %s para pagar esta tarifa de transacción y mantener el saldo por encima del mínimo de la red. Tu saldo actual es: %s. Necesitas añadir %s a tu saldo para realizar esta operación. + Necesitas tener al menos %s para pagar esta tarifa de transacción y permanecer por encima del saldo mínimo de la red. Tu saldo actual es: %s. Necesitas agregar %s a tu saldo para realizar esta operación. A mí mismo En cadena La siguiente dirección: %s es conocida por ser utilizada en actividades de phishing, por lo tanto, no recomendamos enviar tokens a esa dirección. ¿Te gustaría proceder de todos modos? diff --git a/common/src/main/res/values-it/strings.xml b/common/src/main/res/values-it/strings.xml index 14212e5f09..ec5425c6d0 100644 --- a/common/src/main/res/values-it/strings.xml +++ b/common/src/main/res/values-it/strings.xml @@ -176,7 +176,7 @@ Vesting Compra token Hai ricevuto i tuoi DOT dai crowdloan? Inizia a fare staking dei tuoi DOT oggi per ottenere il massimo delle ricompense possibili! - Potenzia i tuoi DOT \ndei DOT \", + Potenzia i tuoi DOT \ndei DOT 🚀 Filtra i token Tutte le reti Gestisci i token @@ -200,6 +200,13 @@ Commissione di trasferimento Rete non risponde A + + + + + + + Accetta i termini... Account Indirizzo dell\'account @@ -230,6 +237,7 @@ Catena Modifica Scegli la rete + Cancella Chiudi Sei sicuro di voler chiudere questa schermata?\nLe tue modifiche non verranno applicate. Completato @@ -313,6 +321,7 @@ Nessuna modifica Stiamo per mostrare il tuo mnemonico. Assicurati che nessuno possa vedere il tuo schermo e non fare screenshot; potrebbero essere raccolti da malware di terze parti Nessuno + Non disponibile Spiacenti, non hai abbastanza fondi per pagare la tassa di rete. Saldo insufficiente Spento @@ -332,9 +341,11 @@ Le autorizzazioni richieste sono necessarie per utilizzare questa schermata. Autorizzazioni necessarie Prezzo + Politica sulla privacy Procedi Deposito proxy Revoca accesso + Notifiche push Leggi di più Consigliato Aggiorna commissioni @@ -343,6 +354,7 @@ Obbligatorio Ripristina Riprova + Qualcosa è andato storto. Per favore, riprova Revoca Salva Scansiona il codice QR @@ -358,9 +370,11 @@ Salta il processo Si è verificato un errore durante l\'invio di alcune transazioni. Vuoi riprovare? Impossibile inviare alcune transazioni + Qualcosa è andato storto Ordina per Stato Indirizzo Substrate + Termini e condizioni Tempo rimasto Titolo Apri Impostazioni @@ -485,7 +499,7 @@ Catena non supportata con hash di genesi %s Assicurati che l\'operazione sia corretta Impossibile firmare l\'operazione richiesta - + Identificativo della rete non trovato Il dominio dal link %s non è permesso Il tipo di governance non è specificato @@ -494,6 +508,7 @@ Percorso di derivazione non valido La mnemonica non è valida URL non valido + Canale di notifica predefinito +%d Cerca per indirizzo o nome Formato dell\'indirizzo non valido. Assicurati che l\'indirizzo appartenga alla rete corretta @@ -562,6 +577,11 @@ Tu paghi Tu ricevi Seleziona un token + Canale di notifica della governance + + È necessario selezionare almeno %d traccia + È necessario selezionare almeno %d tracce + Sblocca Cronologia Email @@ -611,9 +631,14 @@ Seleziona l\'account da aggiungere al portafoglio Transazione di pagamento inviata Aggiungi token - + Per favore, prova un\'altra Frase mnemonica non valida, controlla ancora una volta l\'ordine delle parole + Non è possibile selezionare più di %d portafogli + + Seleziona almeno %d portafoglio + Seleziona almeno %d portafogli + Commissione di rete Indirizzo del nodo Informazioni sul nodo @@ -690,6 +715,47 @@ La transazione sarà avviata da %s come account delegato. La commissione di rete sarà pagata dall\'account delegato. Questo è un account Delegante (Proxy) %s proxy + Il delegato ha votato + Nuovo Referendum + Aggiornamento Referendum + %s Referendum #%s è ora attivo! + 🏛️ Nuovo referendum + Scarica Nova Wallet v%s per ottenere tutte le nuove funzionalità! + Un nuovo aggiornamento di Nova Wallet è disponibile! + %s referendum #%s si è concluso ed è stato approvato 🎉 + ✅ Referendum approvato! + %s Referendum #%s stato cambiato da %s a %s + %s referendum #%s si è concluso ed è stato rifiutato! + ❌ Referendum rifiutato! + 🏛️ Stato del referendum cambiato + %s Referendum #%s stato cambiato in %s + Annunci Nova + Saldi + Abilita notifiche + Non riceverai notifiche sulle Attività del Portafoglio (Saldi, Staking) perché non hai selezionato nessun portafoglio + Altro + Token ricevuti + Token inviati + Ricompense di staking + Portafogli + ✨ Nuova ricompensa %s + Ricevuto %s da staking %s + ✨ Nuova ricompensa + Nova Wallet • ora + Ricevuti +0.6068 KSM ($20.35) da staking Kusama + Ricevuti %s su %s + ⬇️ Ricevuto + ⬇️ Ricevuto %s + Inviati %s a %s su %s + 💸 Inviato + 💸 Inviato %s + Seleziona fino a 3 portafogli per essere notificato quando il portafoglio ha attività + Non ora + Abilita notifiche push + Ricevi notifiche su operazioni del Wallet, aggiornamenti della Governance, attività di Staking e Sicurezza, così sarai sempre informato + Abilitando le notifiche push, accetti i nostri %s e %s + Si prega di riprovare più tardi accedendo alle impostazioni delle notifiche dalla scheda Impostazioni + Non perdere nulla! Incolla json o carica il file... Carica file Ripristina JSON per il recupero @@ -738,6 +804,7 @@ In decisione Decisione in %s Eseguito + In coda In coda (%s di %s) Annullato Non superato @@ -831,6 +898,8 @@ Tracce non disponibili Nova ha bisogno che la posizione sia attivata per poter effettuare la scansione Bluetooth per trovare il tuo dispositivo Ledger Si prega di abilitare la geolocalizzazione nelle impostazioni del dispositivo + Seleziona brani per + %d di %d Indirizzo o w3n Il destinatario è un conto di sistema. Non è controllato da alcuna azienda o individuo.\nSei sicuro di voler comunque effettuare questo trasferimento? I token verranno persi @@ -843,6 +912,8 @@ Ogni operazione di firma sui portafogli con coppia di chiavi (creata in un portafoglio di nova o importata) dovrebbe richiedere la verifica del PIN prima di costruire la firma Richiedi autenticazione per la firma operazioni Preferenze + Le notifiche push sono disponibili solo per la versione di Nova Wallet scaricata da Google Play. + Le notifiche push sono disponibili solo per dispositivi con servizi Google. La registrazione dello schermo e gli screenshot non saranno disponibili. L\'app minimizzata non visualizzerà il contenuto Modalità sicura Sicurezza @@ -865,6 +936,7 @@ Tipo di staking non supportato sr25519 (raccomandato) Schnorrkel + L\'account selezionato è già in uso come controller Aggiungi autorità delegata (Proxy) Le tue deleghe @@ -959,6 +1031,7 @@ In attesa della prossima era in attesa della prossima era (%s) Non hai abbastanza saldo per il deposito del proxy di %s. Saldo disponibile: %s + Canale di Notifica Staking Collatore Il deposito minimo del collator è superiore alla tua delega. Non riceverai ricompense dal collator. Informazioni sul collator @@ -1258,6 +1331,7 @@ Completato Fallito In sospeso + Canale di Notifica Transazioni Da: %s A: %s Trasferimento diff --git a/common/src/main/res/values-pt/strings.xml b/common/src/main/res/values-pt/strings.xml index 0c0d1869d0..6e2da52fe5 100644 --- a/common/src/main/res/values-pt/strings.xml +++ b/common/src/main/res/values-pt/strings.xml @@ -230,6 +230,7 @@ Cadeia Alterar Escolher rede + Limpar Fechar Tem certeza de que deseja fechar esta tela?\nSuas alterações não serão aplicadas. Concluído @@ -313,6 +314,7 @@ Sem alterações Vamos mostrar sua mnemônica. Certifique-se de que ninguém pode ver sua tela e não tire capturas de tela — elas podem ser coletadas por malwares de terceiros Nenhum + Não disponível Desculpe, você não tem fundos suficientes para pagar a taxa de rede. Saldo insuficiente Desligado @@ -332,9 +334,11 @@ As permissões solicitadas são necessárias para usar esta tela. Permissões necessárias Preço + Política de Privacidade Prosseguir Depósito de proxy Revogar acesso + Notificações push Ler mais Recomendado Atualizar taxa @@ -343,6 +347,7 @@ Obrigatório Redefinir Tentar novamente + Algo deu errado. Por favor, tente novamente Revogar Salvar Escaneie o código QR @@ -358,9 +363,11 @@ Pular processo Ocorreu um erro ao enviar algumas transações. Deseja tentar novamente? Falha ao enviar algumas transações + Algo deu errado Ordenar por Status Endereço Substrate + Termos e Condições Tempo restante Título Abrir Configurações @@ -485,7 +492,7 @@ Cadeia não suportada com hash de gênese %s Certifique-se de que a operação está correta Falha ao assinar a operação solicitada - + Cadeia não encontrada Domínio do link %s não é permitido Tipo de governança não especificado @@ -494,6 +501,7 @@ Caminho de derivação inválido Mnemônico não é válido URL inválido + Canal de Notificação Padrão +%d Pesquisar por endereço ou nome O formato do endereço é inválido. Certifique-se de que o endereço pertence à rede correta @@ -562,6 +570,11 @@ Você paga Você recebe Selecione um token + Canal de Notificação da Governança + + Você precisa selecionar pelo menos %d trilha + Você precisa selecionar pelo menos %d trilhas + Desbloquear Histórico Email @@ -611,9 +624,14 @@ Selecione a conta para adicionar à carteira Transação de pagamento enviada Adicionar token - + Por favor, tente outra. Frase secreta mnemônica inválida, por favor verifique mais uma vez a ordem das palavras + Você não pode selecionar mais do que %d carteiras + + Selecione pelo menos %d carteira + Selecione pelo menos %d carteiras + Taxa da rede Endereço do nó Informação do Nó @@ -690,6 +708,47 @@ A transação será iniciada por %s como uma conta delegada. A taxa de rede será paga pela conta delegada. Esta é uma conta delegada (Proxied) %s proxy + Voto do delegado realizado + Novo Referendo + Atualização de Referendo + %s Referendo #%s está agora ativo! + 🏛️ Novo referendo + Baixe Nova Wallet v%s para obter todas as novas funcionalidades! + Uma nova atualização da Nova Wallet está disponível! + %s referendo #%s terminou e foi aprovado ud83c df89 + ✅ Referendo aprovado! + %s Referendo #%s alterou o status de %s para %s + %s referendo #%s terminou e foi rejeitado! + ❌ Referendo rejeitado! + 🏛️ Status do referendo alterado + %s Referendo #%s alterou o status para %s + Anúncios Nova + Saldos + Ativar notificações + Você não receberá notificações sobre Atividades da Carteira (Saldos, Staking) porque você não selecionou nenhuma carteira + Outros + Tokens recebidos + Tokens enviados + Recompensas de Staking + Carteiras + ✨ Nova recompensa %s + Recebido %s de staking %s + ✨ Nova recompensa + Nova Wallet • agora + Recebido +0.6068 KSM ($20.35) de staking Kusama + Recebido %s em %s + ⬇️ Recebido + ⬇️ Recebido %s + Enviado %s para %s em %s + 💸 Enviado + 💸 Enviado %s + Selecione até 3 carteiras para ser notificado quando houver atividade na carteira + Agora não + Ativar notificações push + Receba notificações sobre operações de carteira, atualizações de Governança, atividade de Staking e Segurança, para que você esteja sempre informado + Ao ativar as notificações push, você concorda com nossos %s e %s + Por favor, tente novamente mais tarde acessando as configurações de notificação na aba Configurações + Não perca nada! Cole o json ou faça upload do arquivo… Fazer upload de arquivo Restaurar JSON @@ -738,6 +797,7 @@ Decidindo Decidirá em %s Executado + Na fila Na fila (%s de %s) Cancelado Não aprovado @@ -831,6 +891,8 @@ Faixas indisponíveis Nova precisa que a localização seja ativada para poder realizar a varredura Bluetooth para encontrar seu dispositivo Ledger Por favor, ative a localização geográfica nas configurações do dispositivo + Selecione faixas para + %d de %d Endereço ou w3n O destinatário é uma conta do sistema. Não é controlado por nenhuma empresa ou indivíduo.\nVocê ainda deseja realizar esta transferência? Os tokens serão perdidos @@ -843,6 +905,8 @@ Cada operação de assinatura em carteiras com par de chaves (criada na nova wallet ou importada) deve exigir a verificação do PIN antes da construção da assinatura Solicitar autenticação para assinatura de operações Preferências + As notificações push estão disponíveis apenas para a versão da Nova Wallet baixada do Google Play. + Notificações push estão disponíveis apenas para dispositivos com serviços Google. A gravação de tela e capturas de tela não estarão disponíveis. O aplicativo minimizado não exibirá o conteúdo Modo seguro Segurança @@ -865,7 +929,7 @@ Tipo de staking não suportado sr25519 (recomendado) Schnorrkel - + A conta selecionada já está em uso como controladora Adicionar autoridade delegada (Proxy) Suas delegações @@ -960,6 +1024,7 @@ Aguardando a próxima Era aguardando a próxima era (%s) Você não tem saldo suficiente para o depósito proxy de %s. Saldo disponível: %s + Canal de notificações de piquetagem Colator O stake mínimo do colator é maior que a sua delegação. Você não receberá recompensas deste colator. Informação do colator @@ -1259,6 +1324,7 @@ Concluído Falhou Pendente + Canal de Notificação de Transações De: %s Para: %s Transferência diff --git a/common/src/main/res/values-ru/strings.xml b/common/src/main/res/values-ru/strings.xml index 5db12e1442..923eea9815 100644 --- a/common/src/main/res/values-ru/strings.xml +++ b/common/src/main/res/values-ru/strings.xml @@ -200,6 +200,13 @@ Комиссия Сеть недоступна Кому + + + + + + + Примите условия... Аккаунт Адрес аккаунта @@ -502,6 +509,7 @@ Неподдерживаемый блокчейн с генезис хэшем %s Убедитесь, что операция правильная Не удалось подписать запрошенную операцию + Сеть не найдена Домен из ссылки %s не в списке разрешённых Не указан тип управления @@ -634,6 +642,7 @@ Выберите аккаунт для добавления в кошелёк Транзакция на выплату отправлена Добавить + Пожалуйста, попробуйте другую. Ваша мнемоника недействительна, пожалуйста, проверьте еще раз порядок слов Вы не можете выбрать более %d кошельков. @@ -942,6 +951,7 @@ Неподдерживаемый тип стейкинга sr25519 (рекомендованный) Schnorrkel + Выбранный аккаунт уже используется в качестве контроллера. Делегировать полномочия (прокси) Ваши делегации diff --git a/common/src/main/res/values-tr/strings.xml b/common/src/main/res/values-tr/strings.xml new file mode 100644 index 0000000000..09df7541a1 --- /dev/null +++ b/common/src/main/res/values-tr/strings.xml @@ -0,0 +1,1472 @@ + + + Bize Ulaşın + Github + Gizlilik Politikası + Bizi Değerlendirin + Telegram + Kullanım Koşulları + Şartlar ve Koşullar + Hakkında + Uygulama Versiyonu + Web Sitesi + %s adresini doğru bir şekilde giriniz... + EVM Adresi geçerli veya boş olmalı... + Geçerli bir substrate adresi giriniz... + Hesap ekle + Hesap zaten var. Lütfen başka bir tane deneyin. + Herhangi bir cüzdanı adresi ile takip et + Yalnızca-izleme cüzdanı ekle + Anımsatıcı Şifre İfadesi + İfadenizi yazın ve güvenli bir yerde saklayın + Lütfen ifadenizi doğru ve okunaklı bir şekilde yazdığınızdan emin olun. + %s adresi + Anımsatıcıyı onayla + Kelimeleri doğru sırayla seçin. + Hadi bunu bir daha kontrol edelim + Kelimeleri doğru sıradaki gibi seçin + Yeni bir hesap oluştur + Cep telefonunuzda panoyu veya ekran görüntülerini kullanmayın, yedekleme için güvenli yöntemler bulmaya çalışın (örn. kağıt) + İsim sadece bu uygulamada yerel olarak kullanılacak. Daha sonra düzenleyebilirsiniz + Cüzdan ismi oluştur + Yedek mnemonic + Mnemonic hesaba erişimi kurtarmak için kullanılır. Yazın, bunun olmadan hesabınıza erişimi kurtaramayız! + Gizliliği değiştirilmiş hesaplar + Unut + Devam etmeden önce cüzdanınızı dışa aktardığınızdan emin olun. + Cüzdanı unut? + Geçersiz Ethereum türevi yolu + Geçersiz Substrate türevi yolu + Bu cüzdan %1$s ile eşleştirildi. Nova, istediğiniz herhangi bir işlemi şekillendirmenize yardımcı olacak ve bunları %1$s kullanarak imzalamanız istenecektir + %s tarafından desteklenmiyor + Bu yalnızca izleme amaçlı bir cüzdandır, Nova size bakiyeler ve diğer bilgileri gösterebilir, ancak bu cüzdanla herhangi bir işlem gerçekleştiremezsiniz + Cüzdan takma adı girin... + Lütfen, başka bir tane deneyin. + Ethereum anahtar çifti kripto tipi + Ethereum gizli türetme yolu + Hesabı dışa aktar + Dışa Aktar + Bu, verileri şifrelemek ve JSON dosyasını kaydetmek için gereklidir. + Yeni bir şifre belirle + Gizlinizi kaydedin ve güvenli bir yerde saklayın + Şifreyi değiştir + Gizlinizi yazın ve güvenli bir yerde saklayın + Geçersiz geri yükleme json\'u. Lütfen girdinin geçerli bir json içerdiğinden emin olun. + Seed geçersiz. Lütfen girdinizin 64 hex simgesi içerdiğinden emin olun. + JSON ağ bilgisi içermiyor. Lütfen aşağıda belirtin. + Geri Yükleme JSON\'unuzu sağlayın + Tipik olarak 12 kelimelik ifade (ancak 15, 18, 21 veya 24 de olabilir) + Kelimeleri virgül ya da başka işaretler olmadan sadece bir boşluk ile ayırın + Kelimeleri doğru sırayla girin + Şifre + 0xAB + Ham seed\'inizi girin + Nova, tüm uygulamalarla uyumludur + Cüzdanı içe aktar + Hesap + Türetme yolu desteklenmeyen semboller içeriyor ya da yanlış yapıda + Geçersiz türetme yolu + JSON dosyası + Ledger cihazınızda Ledger Live uygulaması kullanılarak Ağ uygulamasının kurulduğundan emin olun. Ledger cihazınızda ağ uygulamasını açın. + En az bir hesap ekleyin + Cüzdanınıza hesaplar ekleyin + Ledger’ın resmi Bluetooth Bağlantı Kılavuzu + Network uygulamasının Ledger cihazınıza Ledger Live uygulaması kullanılarak kurulduğundan emin olun + Open the network app on your Ledger device + Nova Cüzdan\'ın Bluetooth ve Konum\'a erişimini izin verin + Select account to add to wallet + Ledger Nano X’i bağlayın + Ledger Nano X + Lütfen telefon ayarlarınızda ve Ledger cihazınızda Bluetooth’u etkinleştirin. Ledger cihazınızın kilidini açın ve %s uygulamasını açın. + Ledger cihazınızı seçin + 12, 15, 18, 21 veya 24 kelime uzunluğunda ifade + Bu ağ için bir hesabınız yok, hesap oluşturabilir veya hesap aktarabilirsiniz. + Hesap Gerekli + Hesap bulunamadı + Parity Signer + %s, %s\'yi desteklemiyor + %s\'ten başarıyla okunan hesaplar + İşte hesaplarınız + Geçersiz QR kodu, lütfen %s\'ten QR kodu taradığınızdan emin olun + En üstte olanı seçtiğinizden emin olun + Open Parity Signer application on your smartphone + Go to “Keys” tab. Select seed, then account you would like to add to Nova Wallet + Parity Signer, size taramak için QR kodu sağlayacak + %s\'tan cüzdan ekle + %s, rasgele mesajların imzalanmasını desteklemez - yalnızca işlemler + İmza desteklenmiyor + %s\'ten QR kodunu tarayın + %s ile QR kodunu tarayın + %s\'ta bir hata var + QR kodunun süresi doldu + Güvenlik nedenleriyle oluşturulan işlemler yalnızca %s için geçerlidir.\nLütfen yeni bir QR kodu oluşturun ve %s ile imzalayın + QR kodu %s için geçerlidir + Lütfen şu anda imza işlemi için QR kodunu taradığınızdan emin olun + %s ile imzala + Polkadot Vault + Dikkat edin, türev yol adı boş olmalıdır + Open Polkadot Vault application on your smartphone + Go to “Key Sets” tab. Select your Key set, Network, and then the account you would like to add to Nova Wallet + Polkadot Vault size taramak için QR kodu sağlayacak + Özel anahtar + Size Delege Edilenler (Proksi) + Herhangi + Açık Artırma + Proksiyi İptal Et + Yönetim + Kimlik Değerlendirmesi + Aday Gösterme Havuzları + Transfer Dışı + Staking + Zaten bir hesabım var + 64 onaltılık sembol + Donanım cüzdanı seçin + Sırrınızın tipini seçin + Cüzdan seçin + Ortak sır ile hesaplar + Substrate anahtar çifti kripto tipi + Substrate sır türetme yolu + Cüzdan adı + Moonbeam, Moonriver ve diğer ağlar + EVM Adresi (İsteğe bağlı) + Önceden ayarlanmış cüzdanlar + Polkadot, Kusama, Karura, KILT ve 50+ ağlar + Nova Wallet\'ta özel anahtarınızı sağlamadan herhangi bir cüzdanın etkinliğini takip edin + Cüzdanınız yalnızca gözlem amacıyla kullanılabilir, yani herhangi bir işlem yapamazsınız + Hata! Anahtar eksik + yalnızca-izle + Polkadot Vault, Ledger veya Parity Signer kullanın + Donanım cüzdanı bağlayın + %s hesabını ekle + Cüzdan ekle + %s hesabını değiştir + Hesabı değiştir + Delege etmek için cüzdana %s hesabı eklemeniz gerekiyor + Hesap için delegasyon yap + Delegasyon yapılacak hesap + Delegasyon yapılacak cüzdan + Erişim türü ver + Proxy kaldırılana kadar depozito hesabınızda rezerve olarak kalır. + %s\'da eklenen maksimum proxy (%s) limitine ulaştınız. Yeni eklemeler yapabilmek için proxy\'leri kaldırın. + Maksimum proxy sayısına ulaşıldı + Girilen sözleşme adresi Nova\'da zaten %s tokeni olarak bulunmaktadır. + Girilen sözleşme adresi Nova\'da zaten %s tokeni olarak bulunmaktadır. Değiştirmek istediğinize emin misiniz? + Bu token zaten var + Lütfen sağlanan URL\'nin şu formatta olduğundan emin olun: www.coingecko.com/en/coins/tether. + Geçersiz CoinGecko bağlantısı + Girilen sözleşme adresi %s ERC-20 sözleşmesi değil. + Geçersiz sözleşme adresi + Ondalıklar en az 0 ve en fazla 36 olmalıdır. + Geçersiz ondalık değeri + Sözleşme adresi girin + Ondalık sayısını girin + Sembol girin + Token ekle + Sözleşme adresi + Ondalıklar + Fiyat bilgisi için Coingecko bağlantısı (İsteğe bağlı) + Sembol + ERC-20 token bilgilerini girin + ERC-20 token eklemek için ağı seçin + Kalabalık Krediler + Yönetim v1 + AçıkGov + Seçimler + Stake etme + Vesting + Token Al + Crowdloan\'larınızdan DOT\'unuzu geri aldınız mı? Bugün DOT\'unuzu stake etmeye başlayın ve mümkün olan en yüksek ödülleri alın! + DOT\'unuzu Artırın 🚀 + Token\'ları Filtrele + Tüm Ağlar + Token\'ları Yönet + %s\'yi Ledger kontrolü altındaki hesaba aktarmayın çünkü Ledger %s gönderimini desteklemiyor, bu nedenle varlıklar bu hesapta takılı kalacak + Ledger bu token\'i desteklemiyor + Ağ veya token adına göre ara + Girilen adla herhangi bir ağ veya token bulunamadı + Cüzdanlarınız + Göndermek için token\'ınız yok.\nHesabınıza token alın veya alın. + Ödeme yapılacak Token + Alınacak Token + Biyometrik Doğrulama + Satın alma başlatıldı! Lütfen 60 dakika kadar bekleyin. Durumu e-postadan takip edebilirsiniz. + Satın alma işlemine devam etmek için Nova Wallet uygulamasından %s\'a yönlendirileceksiniz + Tarayıcıda devam et? + Varlık + Kullanılabilir bakiye + Üzgünüz, bakiye kontrol isteği başarısız oldu. Lütfen, daha sonra tekrar deneyin. + Üzgünüz, transfer sağlayıcısına ulaşamadık. Lütfen, daha sonra tekrar deneyin. + Üzgünüz, belirtilen miktarı harcamak için yeterli fonunuz yok + Transfer ücreti + Ağ yanıt vermiyor + Kime + + + + + + + + Şartları kabul et... + Hesap + Hesap adresi + Aktif + Ekle + Delegasyon ekle + Adres + Gelişmiş + Tümü + İzin ver + Miktar + Miktar çok düşük + Miktar çok büyük + Uygulandı + Uygula + Tekrar sor + Dikkat! + Mevcut: %s + Ortalama + Bakiye + Bonus + Ara + İptal et + Bu işlemi iptal etmek istediğinizden emin misiniz? + Üzgünüz, bu isteği işlemek için doğru uygulamanız yok + Bu bağlantı açılamıyor + Ağ ücreti için\n%s ödemeniz gerektiğinden en fazla %s kullanabilirsiniz. + Zincir + Değiştir + Ağı seçin + Temizle + Kapat + Bu ekranı kapatmak istediğinizden emin misiniz?\nDeğişiklikleriniz uygulanmayacak. + Tamamlandı + Tamamlandı (%s) + Onayla + Onay + Emin misiniz? + Onaylandı + Devam et + Panoya kopyalandı + Adresi kopyala + Kimliği kopyala + Şifreleme tipi + Tarih + %s ve %s + Detaylar + Devre dışı + Bağlantıyı kes + Tamam + Bunu bir daha gösterme + Düzenle + %s (+%s daha fazla) + E-posta uygulaması seçin + Etkinleştir + Adres girin… + Miktar girin... + Hata + Yeterli token yok + Etkinlik + EVM adresi + Bu işlem sonrası hesabınız, toplam bakiyeyi minimal bakiyenin altına düşürdüğü için blockchain\'den kaldırılacak + Hesap kaldırılacak + Süresi doldu + Keşfet + Tahmini ağ ücreti %s, varsayılan ağ ücretinden (%s) çok daha yüksek. Bu, geçici bir ağ yoğunluğundan kaynaklanıyor olabilir. Daha düşük bir ağ ücreti için yenileyebilirsiniz. + Ağ ücreti çok yüksek + Şuna göre sırala: + Filtreler + Daha fazla bilgi edinin + + her gün + her %s günde bir + + günlük + her gün + %s alın + Yönetim + Onaltılık dizi + + %d saat + %d saat + + Nasıl çalışır + Anladım + Bilgi + Bir şifre belirleyin… + QR kodu geçersiz + Daha fazla bilgi edinin + Hakkında daha fazla bilgi edinin + Ledger + %s kaldı + Maksimum + %s maksimum + + %d dakika + %d dakika + + %s hesabı eksik + Modül + + %s desteklenmiyor + Ağlar + + + Ağlar + + İleri + Hayır + Cihazda dosya aktarım uygulaması bulunamadı. Lütfen yükleyin ve tekrar deneyin + Bu işlemi gerçekleştirecek uygun uygulama cihazda bulunamadı + Değişiklik yok + Mnemonik kelime sıranızı göstermek üzereyiz. Ekranınızın kimse tarafından görünmediğinden emin olun ve ekran görüntüleri almaktan kaçının - üçüncü taraf zararlı yazılımları tarafından toplanabilirler + Hiçbiri + Mevcut değil + Üzgünüm, ağ ücretini ödeyecek yeterli bakiyeniz yok. + Yetersiz bakiye + Kapalı + Tamam + Tamam, geri dön + Açık + Devam ediyor + İsteğe bağlı + Bir seçenek seçin + Yapıştır + / yıl + %s / yıl + yıl başına + % + Bu ekranı kullanmak için istenen izinler gereklidir. Ayarlarda bunları etkinleştirmelisiniz. + İzinler reddedildi + Bu ekranı kullanmak için istenen izinler gereklidir. + Gerekli izinler + Fiyat + Gizlilik Politikası + Devam et + Vekil depozito + Erişimi iptal et + Bildirimleri İt + Daha fazla oku + Önerilen + Ücreti yenile + Reddet + Kaldır + Gerekli + Sıfırla + Yeniden dene + Bir şeyler yanlış gitti. Lütfen tekrar deneyin + İptal et + Kaydet + QR kodunu tarayın + Arama + Arama sonuçları burada gösterilecek + Arama sonuçları: %d + Gizli türetme yolu + Ayarlar + Paylaş + İmza isteği + İmza geçersiz + Atla + İşlemi atla + Bazı işlemler gönderilirken hata oluştu. Yeniden denemek ister misiniz? + Bazı işlemler gönderilemedi + Bir şeyler yanlış gitti + Sırala + Durum + Substrate adresi + Şartlar ve Koşullar + Kalan zaman + Başlık + Ayarları Aç + Bakiyeniz çok küçük + Toplam + İşlem Kimliği + İşlem Gönderildi + Tekrar Deneyin + Tür + Lütfen başka bir girişle tekrar deneyin. Hata tekrar ederse, lütfen destek ile iletişime geçin. + Bilinmeyen + + %s desteklenmiyor + %s desteklenmiyor + + Sınırsız + Güncelle + Kullan + Alıcı geçerli bir %s adresi olmalıdır + Geçersiz alıcı + Bekleniyor + Cüzdan + Uyarı + Evet + Miktar pozitif olmalıdır + Referandum + Oylama + Takip + Düğüm daha önce eklenmiş. Lütfen başka bir düğüm deneyin. + Düğüm ile bağlantı kurulamıyor. Lütfen başka birini deneyin. + Maalesef ağ desteklenmiyor. Lütfen aşağıdakilerden birini deneyin: %s. + Sil + %s silinmesini onaylayın. + Ağı sil? + Lütfen bağlantınızı kontrol edin veya daha sonra tekrar deneyin + Özel + Varsayılan + Ağlar + Bağlantı ekle + QR kodu tarayın + Özel kitle fonlamaları henüz desteklenmiyor. + Özel kitle fonlaması + Kitle fonlamaları hakkında + Doğrudan + Acala\'ya farklı katkı türleri hakkında daha fazla bilgi edinin + Likid katkı + Aktif (%s) + Şartlar ve Koşulları kabul et + Nova Wallet bonusu (%s) + Astar referans kodu geçerli bir Polkadot adresi olmalıdır + Seçilen miktarın katkıda bulunulması sonucunda toplanan miktarın crowdloan sınırını aşması mümkün değildir. Maksimum izin verilen katkı %s. + Seçilen crowdloana katkıda bulunulamaz çünkü maksimum sınırına zaten ulaşılmıştır. + Crowdloan sınırı aşıldı + Crowdloana katkıda bulun + Katkı + %s katkıda bulundunuz + Likid + Paralel + Katkılarınız\n burada görünecek + %s içinde iade edilecek + Parachain tarafından iade edilecek + %s (%s aracılığıyla) + Crowdloanlar + Özel bir bonus alın + Crowdloanlar burada gösterilecek + Seçilen crowdloana artık katkıda bulunulamaz çünkü sona ermiştir. + Crowdloan sona erdi + Referans kodunuzu girin + Crowdloan bilgisi + %s\'in crowdloanını öğren + %s\'in crowdloan web sitesi + Leasing periyodu + Parachainlere katkıda bulunmak için %s seçin. Katkıda bulunduğunuz tokenları geri alacak ve parachain bir slot kazanırsa, açık artırma sona erdikten sonra ödüller alacaksınız + Katkıda bulunabilmek için cüzdanınıza bir %s hesabı eklemeniz gerekiyor + Bonusu Uygula + Referans kodunuz yoksa, katkınız için bonus almak üzere Nova referans kodunu uygulayabilirsiniz + Bonus uygulanmadı + Moonbeam crowdloan yalnızca SR25519 veya ED25519 kripto tipi hesapları destekler. Lütfen katkı için başka bir hesap kullanmayı düşünün + Bu hesapla katkıda bulunulamaz + Moonbeam crowdloan\'ına katılmak için cüzdanınıza bir Moonbeam hesabı eklemelisiniz + Moonbeam hesabı eksik + Bu crowdloan, bulunduğunuz konumda mevcut değil. + Bölgeniz desteklenmiyor + %s ödül hedefi + Anlaşmayı Gönder + Devam etmek için blok zinciri üzerinde Şartlar & Koşullar ile anlaşma sunmanız gerekmektedir. Bu, tüm takip eden Moonbeam katkıları için sadece bir kez yapılması gereken bir işlemdir + Şartlar ve Koşulları okudum ve kabul ediyorum + Toplandı + Referans kodu + Referans kodu geçersiz. Lütfen başka bir tane deneyin + %s\'nin Şartlar ve Koşulları + Katkıda bulunmanın izin verilen minimum miktarı %s. + Katkı miktarı çok küçük + Kiralanma dönemi sonrasında %s tokenlarınız iade edilecektir. + Katkılarınız + Toplandı: %s / %s + Kullandığınızda adresinizi görmelerine izin verdiğiniz DApps + \"%s\" DApp Yetkilendirmelerden kaldırılacak + Yetkilendirilmişlerden Kaldırılsın mı? + Yetkilendirilmiş DApp\'ler + Katalog + Uygulamaya güveniyorsanız bu isteği onaylayın + ‘%s’ hesap adreslerinize erişsin mi? + Uygulamaya güveniyorsanız bu isteği onaylayın.\\nİşlem detaylarını kontrol edin. + DApp + DApp\'ler + Favoriler + Favorilere Ekle + ‘%s’ DApp Favorilerden kaldırılacak + Favorilerden Kaldırılsın mı? + DApp\'lerin listesi burada görünecek + Hesaplarınızı Nova Wallet\'tan kullanarak web\'i gezin + Nova Tarayıcısına Hoş Geldiniz + Favorilere Ekle + Masaüstü modu + Favorilerden Çıkar + Sayfa ayarları + Tamam, geri götür + Nova Wallet, bu web sitesinin hesaplarınızın ve jetonlarınızın güvenliğini tehlikeye atabileceğine inanıyor + Phishing Tespit Edildi + İsimle arayın veya URL girin + Desteklenmeyen zincir, genesis hash %s + İşlemin doğru olduğundan emin olun + İstenen işlemi imzalama başarısız oldu + + Zincir bulunamadı + Bağlantıdaki %s alan adı izin verilenler listesinde değil + Yönetim türü belirtilmemiş + Yönetim türü desteklenmiyor + Geçersiz kripto türü + Geçersiz türetim yolu + Geçersiz mnemonik + Geçersiz url + Varsayılan Bildirim Kanalı + +%d + Adrese veya isme göre ara + Adres formatı geçersiz. Adresin doğru ağa ait olduğundan emin olun + arama sonuçları: %d + Nova Cüzdan otomatik olarak yetkilendirdiğiniz hesapları (Vekil) sizin için ayrı bir kategoriye ekler. Ayarlarda cüzdanları daima yönetebilirsiniz. + Yetkilendirilmiş hesapların güncellenmesi + Tüm zamanlar için oylama + Yetkilendir + Tüm hesaplar + Bireyler + Organizasyonlar + Bir yetkilendirmeyi iptal ettikten sonra yetkilendirme dönemi başlayacak + Oylarınız otomatik olarak yetkilendirdiklerinizin oyu ile birlikte kullanılacaktır + Yetkilendirme bilgisi + Birey + Organizasyon + Yetkilendirilen oylar + Yetkilendirmeler + Yetkilendirmeyi düzenle + Kendi kendinize atanamazsınız, lütfen farklı bir adres seçin + Kendinize atama yapılamaz + Nova kullanıcılarının sizi daha iyi tanıması için hakkınızda daha fazla bilgi verin + Bir Delege misiniz? + Kendinizi tanımlayın + %s yolları boyunca + Son %s oyladı + %s üzerinden oylarınız + Oylarınız: %s üzerinden %s + Oyları Kaldır + Delegasyonu İptal Et + Delege edilmeme süresi sona erdikten sonra, tokenlarınızın kilidini açmanız gerekecek. + Delege Edilen Oylar + Delegasyonlar + Son %s oyladı + Yollar + Tümünü Seç + En az 1 yol seçin... + Delege etmek için kullanılabilir yol yok + Fellowship + Yönetim + Hazine + Delege Edilmeme Süresi + Delegasyonunuz + Delegasyonlarınız + Göster + Bu hesaba zaten delege ediyorsunuz: %s + Delegasyon zaten var + (BTC/ETH uyumlu) + ECDSA + ed25519 (alternatif) + Edwards + Ücreti ödemek için yeterli token yok + Kontrat + Kontrat Çağrısı + Fonksiyon + Şifreyi doğrula + Şifreler eşleşmiyor + Şifre belirleyin + Ağ: %s\nMnemonik: %s\nTüretme yolu: %s + Ağ: %s\nMnemonik: %s + Lütfen ücret hesaplanana kadar bekleyin + Ücret hesaplama işlemi sürüyor + Staking için %s delegasyonu ekle + Takas detayları + Maks: + Ödediğiniz + Aldığınız + Bir token seçin + Yönetim Bildirim Kanalı + + En az %d parça seçmelisiniz + En az %d parça seçmelisiniz + + Kilit Aç + Geçmiş + E-posta + Resmi Ad + Element İsmi + Kimlik + Web + Sağlanan JSON dosyası farklı bir ağ için oluşturulmuş. + Lütfen girdiğinizin geçerli bir json olduğundan emin olun. + JSON geri yükleme geçersiz + Lütfen, şifrenin doğruluğunu kontrol edin ve tekrar deneyin. + Anahtar dosyasının şifresi çözülemedi + Json yapıştırın + Desteklenmeyen şifreleme türü + Substrate gizli anahtarı olan bir hesabın Ethereum şifrelemesi olan ağa aktarımı yapılamaz + Ethereum gizli anahtarı olan bir hesabın Substrate şifrelemesi olan ağa aktarımı yapılamaz + Mnemoniğiniz geçersiz + Lütfen girişinizin 64 hex sembolü içerdiğinden emin olun. + Seed geçersiz + Proxy adresi geçerli bir %s adresi olmalıdır + Geçersiz proxy adresi + QR kod çözümlenemedi + QR kodu + Galeriden yükle + Dil + Ledger %s desteklemiyor + Operasyon cihaz tarafından iptal edildi. Ledger\'ınızın kilidini açtığınızdan emin olun. + Operasyon iptal edildi + Ledger cihazınızda %s uygulamasını açın + %s uygulaması başlatılmadı + Operasyon cihazda bir hata ile tamamlandı. Lütfen, daha sonra tekrar deneyin. + Ledger operasyonu başarısız + Daha fazla hesap yükle + İnceleyin ve Onaylayın + İşlemi onaylamak için %s üzerindeki her iki düğmeye basın + Lütfen, %s uygulamasını Ledger Live kullanarak güncelleyin + Metaveri güncelliğini yitirdi + Ledger, rastgele mesajların imzalanmasını desteklemiyor - sadece işlemler + Lütfen, şu anda onaylamakta olduğunuz operasyon için doğru Ledger cihazını seçtiğinizden emin olun + Güvenlik nedenleriyle üretilen işlemler sadece %s için geçerlidir. Lütfen tekrar deneyin ve Ledger ile onaylayın + İşlem süresi doldu + İşlem %s için geçerlidir + Ledger bu işlemi desteklemiyor. + İşlem desteklenmiyor + Adresi onaylamak için %s üzerindeki her iki düğmeye basın + Bu cüzdan Ledger ile eşleştirildi. Nova istediğiniz herhangi bir işlemi oluşturmanıza yardımcı olacak ve bunları Ledger kullanarak imzalamanız istenecektir. + Cüzdana eklemek için hesap seçin + Ödeme işlemi gönderildi + Token ekle + + Lütfen, başka bir tane deneyin. + Geçersiz mnemonik şifre, lütfen kelime sırasını bir kez daha kontrol edin + %d cüzdandan fazla seçemezsiniz + + En az %d cüzdan seçin + En az %d cüzdan seçin + + Ağ ücreti + Düğüm adresi + Düğüm Bilgisi + Bağlanıyor… + Koleksiyon + Oluşturan + %s karşılığında %s + %s birimi %s içinden + #%s Baskı %s içinden + Sınırsız seri + Sahibi + Listelenmemiş + Senin NFT\'lerin + Ödülleri Talep Et + Tokenleriniz stake\'e geri eklenecek + Doğrudan + Havuz staking bilgisi + Ödülleriniz (%s) de talep edilecek ve serbest bakiyenize eklenecektir. + Havuz + Havuz yok ediliyor durumunda olduğundan belirtilen işlem gerçekleştirilemez. Yakında kapatılacak. + Havuz yok ediliyor + Havuzunuz için çıkarılma kuyruğunda şu anda boş yer yok. Lütfen %s sonra tekrar deneyin + Havuzunuzdan çok sayıda kişi payını çekiyor + Havuzunuz + Havuzunuz (#%s) + Hesap oluştur + Yeni bir cüzdan oluştur + Gizlilik Politikası + Hesabı içe aktar + Zaten bir cüzdanım var + Devam ederek %1$s ve %2$s ile bizim koşullarımızı kabul etmiş olursunuz + Kullanım Koşulları + Takas + Collatorlerinizden biri ödül üretmiyor + Collatorlerinizden biri mevcut turda seçilmedi + %s için unstaking periyodunuz geçti. Tokenlarınızı geri almayı unutmayın + Bu collator ile stake yapılamıyor + Collator değiştir + Bu collatora daha fazla stake eklenemez + Collatorları yönet + Seçilen collator stakinge katılmayı durdurmayı niyetlendi + Tüm tokenlarını unstake etmekte olduğunuz bir collatora stake ekleyemezsiniz + Stakeiniz, bu collator için minimum stake (%s) miktarından daha az olacak + Kalan staking bakiyeniz ağın minimum değeri (%s) altına düşecek ve unstaking miktarına ek olacak + Yetkilendirilmediniz. Lütfen tekrar deneyin. + Yetkilendirme için biyometrik kullanın + Nova Cüzdan, yetkisiz kullanıcıların uygulamaya erişimini engellemek için biyometrik doğrulama kullanır. + Biyometri + Pin kodu başarıyla değiştirildi + Pin kodunuzu onaylayın + Pin kodu oluşturun + PIN kodunu girin + Pin kodunuzu ayarlayın + Havuz maksimum üye sayısına ulaştığı için havuza katılamazsınız + Havuz dolu + Açık olmayan bir havuza katılamazsınız. Lütfen havuz sahibi ile iletişime geçin. + Havuz açık değil + Hesaplar + Cüzdanlar + Dil + Pin kodunu değiştir + PIN ile onayla + Güvenli mod + Ayarlar + Bu hesap aşağıdaki hesaba işlem yapma yetkisi verdi: + Artık geçerli değil + Proxy nedir? + Staking operasyonları + Temsil edilen hesap %s, %s tutarındaki ağ ücretini ödemek için yeterli bakiyeye sahip değil. Ücreti ödemek için kullanılabilir bakiye: %s + Temsilci cüzdanlar rastgele mesajların imzalanmasını desteklemiyor - yalnızca işlemler + %1$s, %2$s yetkilerini devretmedi + %1$s, %2$s iznini yalnızca %3$s için devretti + Hata! Yeterli İzin Yok + İşlem, temsil edilen hesap olarak %s tarafından başlatılacak. Ağ ücreti temsil edilen hesap tarafından ödenecek. + Bu Temsilci (Vekâleten) Hesabıdır + %s proxy + Delegenin oyu + Yeni Referandum + Referandum Güncellemesi + %s Referandum #%s şimdi canlı! + 🗳️ Yeni referandum + Tüm yeni özellikleri almak için Nova Wallet v%s\'yi indirin! + Nova Wallet\'in yeni güncellemesi mevcut! + %s referandumu #%s sona erdi ve onaylandı 🎉 + ✅ Referandum onaylandı! + %s Referandum #%s durumu %s\'dan %s\'a değişti + %s referandum #%s sona erdi ve reddedildi! + ❌ Referandum reddedildi! + 🗳️ Referandum durumu değişti + %s Referandum #%s durumu %s olarak değişti + Nova duyuruları + Bakiyeler + Bildirimleri etkinleştir + Herhangi bir cüzdan seçmediğiniz için Cüzdan Aktiviteleri (Bakiyeler, Staking) hakkında bildirim almayacaksınız + Diğerleri + Alınan Tokenlar + Gönderilen Tokenlar + Staking Ödülleri + Cüzdanlar + ✨ Yeni ödül %s + %s staking\'den %s alındı + ✨ Yeni ödül + Nova Wallet • şimdi + Kusama staking\'den +0.6068 KSM ($20.35) alındı + %s, %s üzerinde alındı + ⬇️ Alındı + ⬇️ %s Alındı + %s, %s\'a %s üzerinde gönderildi + 💸 Gönderildi + 💸 %s Gönderildi + Cüzdanınızın aktivitesi olduğunda bildirim almak için en fazla 3 cüzdan seçin + Şimdi Değil + Bildirimleri Etkinleştir + Cüzdan işlemleri, Yönetim güncellemeleri, Staking aktivitesi ve Güvenlik hakkında bilgilendirilerek her zaman haberdar olun + Bildirimleri etkinleştirmekle, %s ve %s kabul etmiş olursunuz + Lütfen, Ayarlar sekmesinden bildirim ayarlarına erişerek daha sonra tekrar deneyin + Hiçbir şeyi kaçırmayın! + Json yapıştırın ya da dosya yükleyin... + Dosya yükle + JSON Kurtar + Mnemonic kod cümlesi + Ham çekirdek + Kaynak tipi + Tüm referandumlar + Göster: + Oy kullanılmamış + Oy kullanılmış + Uygulanan filtrelerle hiç referandum bulunamadı + Referandumlar başladığında bilgiler burada görünecek + Girilen başlık veya ID ile hiç referandum bulunamadı + Referandum başlığı veya ID ile ara + Referandumlar + Referandum bulunamadı + Evet: %s + Nova DApp tarayıcısını kullanın + Bu açıklamayı ve başlığı yalnızca öneren kişi düzenleyebilir. Eğer öneren kişinin hesabına erişiminiz varsa, Polkassembly\'i ziyaret edin ve teklifiniz hakkında bilgi doldurun + Tam detaylar + İstenen miktar + Zaman çizelgesi + Oyunuz: + Onay eğrisi + Yararlanıcı + Hash\'i kopyala + Depozito + Seçmen + Çağrı hash\'i + Önizleme için çok uzun + Parametreler JSON + Teklif Eden + Destek eğrisi + Katılım + Oylama eşiği + Konum: %s / %s + Oy kullanmak için cüzdanınıza bir %s hesabı eklemeniz gerekiyor + %s Referandumu + Hayır: %s + Hayır oyları + %s tarafından %s oylar + Evet oyları + Staking + Onaylandı + İptal edildi + Karar veriliyor + %s içinde karar verilecek + Yürütüldü + Kuyrukta + Sırada (%s / %s) + İptal edildi + Geçmiyor + Geçiyor + Hazırlanıyor + Reddedildi + %s içinde onay + %s içinde yürütülecek + %s içinde zaman aşımı + %s içinde reddedilecek + Zaman aşımına uğradı + Depozito bekleniyor + Eşik: %s / %s + Oylandı: Onaylandı + İptal edildi + Oluşturuldu + Oylama: Karar veriliyor + Yürütüldü + Oylama: Sırada + İptal edildi + Oylama: Geçmiyor + Oylama: Geçiyor + Oylama: Hazırlanıyor + Oylandı: Reddedildi + Zaman aşımına uğradı + Oylama: Depozito bekleniyor + Geçmek için: %s + Kalabalık Krediler + Hazine: büyük harcamalar + Hazine: büyük bahşişler + Karşılıklı Yardım: yönetim + Yönetim: kaydedici + Yönetim: kiralama + Hazine: orta düzey harcamalar + Yönetim: iptal edici + Yönetim: öldürücü + Ana gündem + Hazine: küçük harcama + Hazine: küçük bahşişler + Hazine: herhangi + %s\'de kilitli kalmaya devam ediyor + Kilidi Açılabilir + Çekimser + Evet + %s: Tüm kilitleri yeniden kullan + %s: Yönetim kilidini yeniden kullan + Yönetim kilidi + Kilitlenme süresi + Hayır + Kilitlenme süresini artırarak oyları çoğaltın + %s için oy ver + Kilitlenme süresi sona erdikten sonra tokenlerinizi kilidini açmayı unutmayın + Oy verilen referandalar + %s oylar + %s × %s + Oy verenlerin listesi burada görünecek + %s oylar + Kaderdaşlık: beyaz liste + Sizin oyunuz: %s oylar + Referandum tamamlandı ve oylama sona erdi + Referandum tamamlandı + Seçilen referandum yolu için oyları delegasyon yapıyorsunuz. Lütfen delegenizin oy vermesini isteyin veya doğrudan oy verebilmek için delegasyonu kaldırın. + Zaten oylar delegasyonu yapılıyor + %s oyları için maximuma ulaştınız + Oyların maksimum sayısına ulaşıldı + Oylamak için yeterli tokeniniz yok. Oylamak için kullanılabilir: %s. + Erişim türünü iptal et + İçin iptal et + Oyları kaldır + + %d parçada daha önce referandum oylaması yaptınız. Bu parçayı delegasyon için kullanılabilir hale getirmek için mevcut oylarınızı kaldırmanız gerekiyor. + %d parçada daha önce referandum oylaması yaptınız. Bu parçaları delegasyon için kullanılabilir hale getirmek için mevcut oylarınızı kaldırmanız gerekiyor. + + Oy geçmişinizi kaldırılsın mı? + Blockchain çalışma zamanı hakkında bilgiler güncellenemedi. Bazı işlevler çalışmayabilir. + Çalışma zamanı güncelleme hatası + Kişiler + hesaplarım + Girilen ada veya havuz ID\'sine sahip hiçbir havuz bulunamadı. Doğru veri girdiğinizden emin olun + Hesap adresi veya hesap adı + Arama sonuçları burada görüntülenecek + Arama sonuçları + aktif havuzlar: %d + katılımcılar + Havuz seç + Delegasyon eklemek için parçaları seçin + Kullanılabilir parçalar + Lütfen oy gücünüzü devretmek istediğiniz yolları seçin. + Delegasyonu düzenlemek için yolları seçin + Delegasyonunuzu iptal etmek için yolları seçin + Ulaşılamayan yollar + Nova\'nın Bluetooth taraması yaparak Ledger cihazınızı bulabilmesi için konumun etkinleştirilmesi gerekiyor + Lütfen cihaz ayarlarında coğrafi konumu etkinleştirin + İçin şarkıları seçin + %d / %d + Adres veya w3n + Alıcı, bir sistem hesabıdır. Bir şirket veya birey tarafından kontrol edilmez.\nBu transferi gerçekleştirmek istediğinize emin misiniz? + Token\'lar kaybolacak + Yetki ver + Lütfen, biyometrinin Ayarlar\'da etkinleştirildiğinden emin olun + Ayarlar\'da biyometrik kapalı + Topluluk + Email + Genel + Anahtar çiftiyle (nova cüzdanında oluşturulan veya içe aktarılan) cüzdanlarda sign işlemi yapılırken, imza oluşturmadan önce PIN doğrulaması gerektirir + Operasyon imzalanırken kimlik doğrulama isteyin + Tercihler + Push bildirimleri sadece Google Play\'den indirilen Nova Wallet sürümü için kullanılabilir. + Push bildirimleri yalnızca Google hizmetleri olan cihazlar için kullanılabilir. + Ekran kaydı ve ekran görüntüsü almak mümkün olmayacak. Küçültülmüş uygulama içeriği göstermeyecek + Güvenli mod + Güvenlik + Destek & Geribildirim + Twitter + Wiki + Youtube + Gelişmiş staking yönetimi + Staking türü değiştirilemez + Zaten Direkt staking\'e sahipsiniz + Direkt Staking + Belirttiğiniz miktar, %s ile ödül kazanmak için gereken minimum stake\'ten az. Ödül kazanmak için Havuz staking\'ini kullanmayı düşünmelisiniz. + Yönetişimde token\'ları yeniden kullan + Minimum stake: %s + Ödüller: Otomatik olarak ödenir + Ödüller: Manuel olarak talep edilir + Zaten bir havuzda staking yapıyorsunuz + Havuz staking\'i + Stake miktarınız ödül kazanmak için gerekli minimumun altında + Desteklenmeyen staking türü + sr25519 (önerilir) + Schnorrkel + + Seçilen hesap zaten kontrolör olarak kullanılmakta + Yetki devri ekle (Vekil) + Delegasyonlarınız + Aktif delegatörler + %s kontrolör hesabını bu işlemi gerçekleştirmek için uygulamaya ekleyin. + Delegasyon ekle + Bahis miktarınız, minimum %s değerinin altında. Minimumdan daha az bir stake, stakingin ödül üretme ihtimalini azaltır + Daha fazla token stake et + Doğrulayıcılarınızı değiştirin. + Şu anda her şey yolunda. Uyarılar burada görünecek. + Stake ataması için bir doğrulayıcıya olan kuyrukta güncel olmayan bir pozisyon, ödül alımınızı askıya alabilir + Staking iyileştirmeleri + Stakesiz token\'ları geri al. + Lütfen bir sonraki devrin başlamasını bekleyin. + Uyarılar + Zaten kontrolör + %s içinde zaten stakinginiz var + Staking bakiyesi + Bakiye + Daha fazla stake yap + Ne aday gösteriyorsunuz ne de doğruluyorsunuz + Kontrolcüyü değiştir + Doğrulayıcıları değiştir + %s / %s + Seçilen doğrulayıcılar + Kontrolör + Kontrolör hesabı + Bu hesabın ücretsiz tokenları olmadığını fark ettik, kontrolörü değiştirmek istediğinizden emin misiniz? + Kontrolör, stakeden çıkarabilir, kurtarabilir, stakeye geri dönebilir, ödül hedefini ve doğrulayıcıları değiştirebilir. + Kontrolör, unstake yapmak, kurtarmak, stakeye geri dönmek, doğrulayıcıları değiştirmek ve ödül hedefini ayarlamak için kullanılır + Kontrolör değiştirildi + Bu doğrulayıcı engellenmiş ve şu anda seçilemez. Lütfen bir sonraki devirde tekrar deneyin. + Filtreleri temizle + Tüm seçimleri iptal et + Gerisini önerilenlerle doldur + Doğrulayıcılar: %d / %d + Doğrulayıcı seç (%d maks.) + Seçilenleri göster: %d (%d maks.) + Doğrulayıcı seç + Tahmini ödüller (% APR) + Tahmini ödüller (% APY) + Listenizi güncelleyin + Nova DApp tarayıcısı ile Staking + Daha fazla staking seçeneği + Stake yapın ve ödüller kazanın + Tahmini ödüller + dönem #%s + Tahmini kazançlar + Tahmini %s kazançları + Validatörün kendi stake\'i + Validatörün kendi stake\'i (%s) + Unstaking dönemindeki tokenler ödül üretmez. + Unstaking döneminde tokenler ödül üretmez + Unstaking döneminin ardından tokenlarınızı geri almayı unutmayın. + Unstaking döneminin ardından tokenlarınızı geri almayı unutmayın + Ödülleriniz, sonraki dönemden itibaren artırılacak. + Sonraki dönemden itibaren artırılmış ödüller alacaksınız + Stake edilen tokenler, her dönem (%s) ödül üretir. + Stake içindeki tokenler, her dönem (%s) ödül üretir + Nova cüzdanı, kalan stake\'i önlemek için ödül hedefinizi hesabınıza değiştirir. + Tokenleri unstake yapmak istiyorsanız, unstaking dönemini (%s) beklemeniz gerekecek. + Tokenleri unstake yapmak için unstaking dönemini (%s) beklemeniz gerekecek + Staking bilgisi + Aktif aday gösterenler + + %d gün + %d gün + + Minimum staking + %s ağı + Stake Edildi + Proxy ayarlamak için cüzdanınızı %s olarak değiştirin lütfen + Proxy ayarlamak için stash hesabı seçin + Yönet + %s (maksimum %s) + Maksimum aday sayısına ulaşıldı. Daha sonra tekrar deneyin + Staking başlatılamıyor + Min. stake + Staking başlatmak için cüzdanınıza bir %s hesabı eklemeniz gerekiyor + Aylık + Kontrol hesabınızı cihazınıza ekleyin. + Kontrol hesabına erişim yok + Aday Gösterildi: + %s ödüllendirildi + Ağ tarafından seçilen doğrulayıcılarınız var. + Aktif durum + İnaktif durum + Stake ettiğiniz miktar, ödül almak için gerekli minimum staketin altında. + Doğrulayıcılarınızdan hiçbiri ağ tarafından seçilmedi. + Stakinginiz bir sonraki dönemde başlayacak. + İnaktif + Bir Sonraki Era için Bekleniyor + bir sonraki era için bekleniyor (%s) + Proxy depozitosu için yeterli bakiyeniz yok %s. Mevcut bakiye: %s + Staking Bildirim Kanalı + Kolektör + Collator\'un minimum stake\'i, delegasyonunuzdan yüksektir. Bu collator\'dan ödül alamayacaksınız. + Collator bilgisi + Collator\'un kendi stake\'i + Collator\'lar: %s + Ağ tarafından seçilen bir veya daha fazla collator\'unuz var. + Delegator\'lar + %d collator\'un maksimum delegasyon sayısına ulaştınız + Yeni bir collator seçemezsiniz + Yeni collator + Bir sonraki raunt için bekleniyor (%s) + Tüm collator\'larınız için bekleyen unstake istekleriniz var. + Unstake için uygun collator yok + İade edilen token\'lar bir sonraki raunttan itibaren sayılacak + Stake\'teki token\'lar, her rauntta (%s) ödül üretir + Collator seç + Collator seçin... + Bir sonraki raunddan itibaren artırılmış ödüller alacaksınız + Hiçbir delegasyonunuz aktif olmadığı için bu raunt için ödül almayacaksınız. + Bu collator\'dan zaten token unstaking yapıyorsunuz. Her collator için yalnızca bir bekleyen unstake olabilir. + Bu kolatordan unstake yapamazsınız + Stake\'iniz, bu kolator için belirlenen minimum stake (%s) miktarından fazla olmalıdır. + Ödül alamayacaksınız + Kolatörleriniz ya seçilmemiş ya da stake miktarınız onların minimum stake miktarından düşük. Bu turda onlarla staking yaparak ödül alamayacaksınız. + Kolatörleriniz + Stake\'iniz sonraki kolatörlere atandı + Ödül üretmeyen aktif kolatörler + Seçilmek için yeterli stake\'e sahip olmayan kolatörler + Bir sonraki turda etkinleşecek kolatörler + Bekleyen (%s) + Ödeme + Ödeme süresi doldu + + %d gün kaldı + %d gün kaldı + + Ödüllerin süresi dolmak üzereyken kendi kendinize ödeyebilirsiniz, fakat ücreti siz ödersiniz + Ödüller her 2-3 günde bir doğrulayıcılar tarafından ödenir + Hepsi + Tüm zamanlar + Bitiş tarihi her zaman bugündür + Özel dönem + %dG + Bitiş tarihini seçin + Bitiş + Son 6 ay (6A) + 6A + Son 30 gün (30G) + 30G + Son 3 ay (3A) + 3A + Tarih seçin + Başlangıç tarihini seçin + Başlangıç + Staking ödüllerini göster + Son 7 gün (7G) + 7G + Geçen yıl (1Y) + 1Y + Kullanılabilir bakiyeniz %s, minimum bakiye olarak %s bırakmalı ve %s ağ ücretini ödemelisiniz. En fazla %s stake edebilirsiniz. + Yetkilendirilmiş vekiller (proxy) + Mevcut kuyruk yuvası + Yeni kuyruk yuvası + Stake\'e geri dön + Stakingten çıkan her şey + Geri döndürülen tokenler bir sonraki çağdan itibaren sayılacaktır + Özel miktar + Stake\'e geri dönmek istediğiniz miktar, unstaking bakiyesinden daha büyüktür + En son unstaked + En karlı + Limit aşmamış + Çevrimiçi kimliğe sahip + Ceza almamış + Kimlik başına en fazla 2 doğrulayıcı sınırlaması + En az bir kimlik iletişimine sahip + Önerilen doğrulayıcılar + Doğrulayıcılar + Tahmini ödül (APY) + Tahsil et + Tahsil edilebilir: %s + Ödül + Ödül hedefi + Aktarılabilir ödüller + Era + Ödül detayları + Doğrulayıcı + Yeniden yatırımla kazançlar + Yeniden yatırım yapılmadan kazançlar + Mükemmel! Tüm ödüller ödendi. + Harika! Ödenmemiş ödülünüz yok + Hepsini öde (%s) + Bekleyen ödüller + Ödenmemiş ödüller + Ödüller + Ödüller hakkında + Ödüller (APY) + Ödüllerin hedefi + Kendi seçiminizi yapın + Ödeme hesabı seçin + Önerileni seç + seçilen %d (maks. %d) + Doğrulayıcılar (%d) + Kontrolörü Stash olarak güncelle + Başka bir hesaba Staking işlemlerini devretmek için Araçları kullanın + Denetleyici Hesaplar Kullanımdan Kaldırılıyor + Staking yönetim işlemlerini ona devretmek için başka bir hesabı denetleyici olarak seçin + Staking güvenliğini geliştirin + Doğrulayıcıları Ayarla + Doğrulayıcılar seçilmedi + Staking\'e başlamak için doğrulayıcıları seçin + Tutarlı bir şekilde ödül almak için önerilen minimum stake %s\'dir. + Ağın minimum değerinin (%s) altında stake yapamazsınız + Minimum stake, %s\'den büyük olmalıdır + Stake\'i Artır + Ödülleri Yeniden Stake Et + Ödüllerinizi nasıl kullanırsınız? + Ödül türünüzü seçin + Ödeme hesabı + Slash + %s\'yi Stake Et + Maksimum Stake + Staking Periyodu + Staking Türü + Adaylarınıza yetenekli ve dürüst davranacaklarına güvenmelisiniz, kararınızı yalnızca mevcut karlılıklarına dayandırmak, karlarda azalmaya ya da hatta fon kaybına yol açabilir. + Doğrulayıcılarınızı dikkatle seçin, yetkin ve dürüst bir şekilde hareket etmeleri gerekir. Kararınızı yalnızca karlılığa dayandırmak, ödüllerde azalmaya hatta bahsinizin kaybına yol açabilir. + Doğrulayıcılarınızla stake yapın + Nova Wallet, güvenlik ve karlılık kriterlerine dayanarak en iyi doğrulayıcıları seçecek + Tavsiye edilen doğrulayıcılarla stake yapın + Stake işlemine başla + Stash + Stash, daha fazla bağlama ve denetleyiciyi ayarlamak için kullanılabilir. + Stash, daha fazla stake yapmak ve denetleyiciyi ayarlamak için kullanılır + Stash hesabı %s, stake ayarlarını güncellemek için kullanılamıyor. + Nominator, ağı güvende tutmak için token\'larını kilitleyerek pasif gelir kazanır. Bunu başarmak için, bir dizi validator seçmelidir. Nominator, validator seçerken dikkatli olmalıdır. Seçilen validator uygun davranmazsa, her ikisine de olayın ciddiyetine bağlı olarak slashing cezaları uygulanacaktır. + Nova Wallet, validator seçmelerine yardımcı olarak nominatorları destekler. Mobil uygulama, blockchain\'den veri alır ve şunlara sahip bir validator listesi oluşturur: en çok kar, iletişim bilgileriyle kimlik, slashed olmamış ve aday gösterilmeye hazır. Nova Wallet ayrıca merkezsizleştirmeyi de önemser, bu yüzden bir kişi veya şirket birden fazla validator düğümü işletiyorsa, bunlardan sadece 2\'si önerilen listeye dahil edilecektir. + Nominator kimdir? + Staking ödülleri, her dönemin sonunda (Kusama\'da 6 saat ve Polkadot\'ta 24 saatte bir) ödeme yapılabilecek şekilde mevcuttur. Ağ, bekleyen ödülleri 84 dönem boyunca saklar ve çoğu durumda doğrulayıcılar herkes için ödülleri öder. Ancak, doğrulayıcılar unutabilir veya başlarına bir şey gelebilir, bu yüzden adaylar ödüllerini kendileri ödeyebilir. + Ödüller genellikle doğrulayıcılar tarafından dağıtılsa da, Nova Wallet, süresi dolmak üzere olan ödenmemiş ödüller varsa bu konuda uyarıda bulunarak yardımcı olur. Bu ve staking ekranındaki diğer aktiviteler hakkında uyarılar alacaksınız. + Ödüllerin Alınması + Staking, tokenlerinizi ağda kilitleyerek pasif gelir elde etme seçeneğidir. Staking ödülleri, her dönemde (Kusama\'da 6 saat ve Polkadot\'ta 24 saatte bir) tahsis edilir. İstediğiniz sürece stake edebilir ve tokenlerinizi unstake etmek için unstake döneminin sonunu beklemeniz gerekmekte, bu da tokenlerinizin geri alınabilir olmasını sağlar. + Staking, ağ güvenliği ve güvenilirliğinin önemli bir parçasıdır. Herkes doğrulayıcı düğümleri çalıştırabilir, ancak yeterli tokenları staked olanlar yeni bloklar oluşturma ve ödüller almak üzere ağ tarafından seçilecektir. Doğrulayıcıların genellikle kendileri yeterli tokenlara sahip olmamaları nedeniyle, adaylar onların gerekli miktarı sağlamalarına tokenlerini kilitleyerek yardımcı olur. + Staking Nedir? + Doğrulayıcı, bir blok zinciri düğümünü 24/7 çalıştırır ve ağ tarafından seçilmek için yeterli stakede sahip olması gerekir (hem kendi hem de adaylar tarafından sağlanan). Doğrulayıcılar, ödüllendirilmek için düğümlerinin performansını ve güvenilirliğini sürdürmelidir. Doğrulayıcı olmak neredeyse tam zamanlı bir iştir, blok zinciri ağlarında doğrulayıcı olarak odaklanan şirketler vardır. + Herkes bir doğrulayıcı olabilir ve bir blockchain düğümü çalıştırabilir, ancak bu belirli bir teknik beceri ve sorumluluk gerektirir. Polkadot ve Kusama ağları, başlayanlara destek sağlamak için Bin Doğrulayıcı Programı adında bir programı başlatmıştır. Dahası, ağ kendisi her zaman daha az stake\'e sahip (ancak seçilmek için yeterli) daha fazla doğrulayıcıyı ödüllendirecektir ki bu da merkeziyetçiliği iyileştirmeye yardımcı olur. + Doğrulayıcı Kimdir? + Kontrolörü belirlemek için hesabınızı stash\'e çevirin. + Staking + %s staking + Ödüllendirildi + Toplam Stake Edilen + Boost Eşiği + Benim için collator + Yield Boost olmadan + Yield Boost ile + transfer edilebilir tüm jetonlarımı otomatik olarak stake etmek için %s yukarıda + önceki: %s şimdi: %s transfer edilebilir tüm jetonlarımı otomatik olarak stake etmek için + Stake yapmak istiyorum + Yield Boost + Staking Türü + Tüm jetonlarınızı unstaking yapıyorsunuz ve daha fazla stake yapamazsınız. + Daha fazla stake yapma imkanı yok + Kısmen unstake yaparken en azından %s tutarında bahis bırakmalısınız. Kalan %s miktarını da unstake yaparak tamamen unstake işlemi gerçekleştirmek ister misiniz? + Stakette kalan miktar çok küçük + Unstake yapmak istediğiniz miktar, staked bakiyenizden daha büyük + Unstake + Unstaking işlemleri burada görünecek + Unstaking işlemleri burada görüntülenecek + Unstaking: %s + Unstaking süresi sona erdikten sonra tokenlarınızı geri alabilirsiniz. + Unstaking istek sınırına ulaştınız (%d aktif istekler). + Unstaking istek sınırına ulaşıldı + Unstaking süresi + Hepsini unstake yap + Tümünü unstake yap? + Tahmini ödül (% APY) + Tahmini ödül + Validator bilgisi + Aşırı abonelik. Bu era içinde bu validatörden ödül alamayacaksınız. + Nominatorlar + Aşırı abonelik. Yalnızca en yüksek stake\'e sahip nominatorlara ödül verilir. + Kendi + Arama sonuçları bulunamadı.\nHesap adresini tam olarak yazdığınızdan emin olun + Doğrulayıcı ağ içinde uygunsuz davrandığı için cezalandırıldı (ör. çevrimdışı olmak, ağa saldırmak veya değiştirilmiş yazılım çalıştırmak). + Toplam stake + Toplam stake (%s) + Ödül, ağ ücretinden daha az. + Yıllık + Stake\'iniz aşağıdaki doğrulayıcılara tahsis edilmiştir. + Stake\'iniz sonraki doğrulayıcılara atandı + Seçilen (%s) + Bu dönemde seçilmeyen doğrulayıcılar. + Seçilmek için yeterli stake\'i olmayan doğrulayıcılar + Stake tahsisiniz olmadan aktif olan diğerleri. + Stake atamanız olmadan aktif doğrulayıcılar + Seçilmeyen (%s) + Tokenleriniz aşırı abone olan doğrulayıcılara tahsis edildi. Bu dönemde ödül almayacaksınız. + Ödüller + Stake\'iniz + Doğrulayıcılarınız + Doğrulayıcılarınız bir sonraki dönemde değişecek. + Bakiyenizde %s nedeniyle kilitlenmiş tokenlarınız var. Devam etmek için %s\'dan az ya da %s\'dan fazla bir miktar girmelisiniz. Başka bir miktar yatırmak için %s kilitlerinizi kaldırmalısınız. + Belirtilen miktarı yatıramazsınız + Seçilen: %d (maksimum %d) + Kullanılabilir bakiye: %1$s (%2$s) + %s ile staked tokenlarınızla + Yönetişime katılın + %1$s\'dan fazla stake yapın ve staked tokenlarınızla %2$s + yönetişime katılın + %1$s kadar azıyla istediğiniz zaman stake yapabilirsiniz. Stakeniz %2$s aktif olarak ödül kazanacak + %s içinde + İstediğiniz zaman stake yapabilirsiniz. Stakeniz %s aktif olarak ödül kazanacak + %1$s staking hakkında daha fazla bilgiyi %2$s adresinde bulabilirsiniz + Nova Wiki + Ödüller %1$s biriktirilir. Otomatik ödül ödemesi için %2$s üzerinde stake yapın, aksi takdirde ödülleri manuel olarak talep etmeniz gerekecektir + her %s + Ödüller %s biriktirilir + Ödüller %s biriktirilir. Ödülleri manuel olarak talep etmeniz gerekir + Ödüller %s birikir ve transfer edilebilir bakiyeye eklenir + Ödüller %s birikir ve stake\'e geri eklenir + Ödüller ve staking durumu zamanla değişir. Zaman zaman %s + Stake\'inizi izleyin + Stake Başlat + %s\'ı Görüntüleyin + Kullanım Koşulları + %1$s bir %2$s ve %3$s ile olan bir durumdur + token değeri yok + test ağı + %1$s\n%2$s tokenlarınızda\nyılda + %s kadar kazanın + Istediğiniz zaman unstake yapın ve fonlarınızı %s geri alın. Unstaking yapılırken hiçbir ödül kazanılmaz + %s\'dan sonra + Seçtiğiniz havuz, seçilen validatorler ya da minimumdan daha az stake olmaması nedeniyle etkin değil.\nSeçtiğiniz Havuz ile devam etmek istediğinizden emin misiniz? + Maksimum nominator sayısına ulaşıldı. Daha sonra tekrar deneyin + %s şu anda kullanılamıyor + Validatorler: %d (maks %d) + Ağ ücreti ödemek için token + Ağ ücreti girilen miktarın üstüne eklenir + Bu çift desteklenmiyor + Ödeme yaptıktan sonra ağ ücreti olarak %s tutarında en azından %s tutmanız gerekmektedir çünkü yeterli olmayan tokenlara sahipsiniz + %s token almak için en az %s tutmalısınız + Ağ ücreti için %2$s ödemeniz gerektiği için en fazla %1$s tutarında takas yapabilirsiniz. + Ağ ücreti olarak %2$s ödemeniz ve %5$s asgari bakiyeyi karşılamak için %3$s\'i %4$s\'e dönüştürmeniz gerektiği için en fazla %1$s kadar takas yapabilirsiniz. + Maksimuma Takas + Minimuma Takas + Bakiyenizde en az %1$s bırakmalısınız. Kalan %2$s\'yi de ekleyerek tam takası gerçekleştirmek ister misiniz? + Bakiyenizde çok küçük bir miktar kaldı + Ağ ücreti olarak %2$s ödemeniz ve asgari bakiye %5$s\'ı karşılamak için %3$s\'ü %4$s\'ye dönüştürmeniz gerektiği için bakiyenizde en az %1$s tutmalısınız.\n\nKalan %6$s\'yi de ekleyerek tam takası gerçekleştirmek ister misiniz? + Öde + Al + Bir token seçin + Takas için yeterli token yok + Yeterli likidite yok + %s\'den daha az alamazsınız + Kredi kartıyla %s\'yi anında satın al + Başka bir ağdan %s transfer et + QR veya adresinizle %s alın + %s kullanarak alın + Kayma %s ile %s arasında belirtilmeli + Geçersiz kayma + Ödeme yapmak için bir token seçin + Almak için bir token seçin + Miktar girin + Başka bir miktar girin + %s ile ağ ücreti ödemek için, Nova otomatik olarak hesabınızın minimum %s bakiyesini korumak için %s\'i %s\'ye dönüştürecektir. + Herhangi bir işlemi işlemek ve doğrulamak için blockchain tarafından alınan ağ ücretleri. Ağ koşullarına veya işlem hızına bağlı olarak değişebilir. + Havuzda takas için yeterli likidite yok + Fiyat farkı, iki farklı varlık arasındaki fiyat farkını ifade eder. Kripto takas yaparken, fiyat farkı genellikle takas ettiğiniz varlığın fiyatı ile takas ettiğiniz varlığın fiyatı arasındaki farktır. + Fiyat farkı + %s ≈ %s + İki farklı kriptopara arasındaki döviz kuru. Belirli bir miktar başka bir kriptopara karşılığında ne kadar kriptopara alabileceğinizi gösterir. + Oran + Eski oran: %1$s ≈ %2$s.\nYeni oran: %1$s ≈ %3$s + Takas oranı güncellendi + İşlemi tekrarla + Takas ayarları + Kayma + Takas kayması, değişken piyasa koşulları nedeniyle, bir takas işleminin nihai fiyatının beklenen fiyattan küçük bir miktar farklılık gösterebileceği merkeziyetsiz ticarette yaygın bir durumdur. + Başka bir değer girin + %s ile %s arasında bir değer girin + Kayma + Yüksek kayma nedeniyle işlem ön alıma maruz kalabilir. + Düşük kayma toleransı nedeniyle işlem geri alınabilir. + %s miktarı, %s\'nin minimum bakiyesinden az + Çok küçük bir miktar takası yapmaya çalışıyorsunuz + Staking + Cüzdan + Bugün + Hash\'i kopyala + Ücret + Gönderen + Dış İşlem Hash\'i + İşlem Detayları + %s\'de Görüntüle + Polkascan\'da Görüntüle + Subscan\'de Görüntüle + %s, %s tarihinde + Tamamlandı + Başarısız + Beklemede + İşlem Bildirim Kanalı + %s tarafından + Alıcı: %s + Transfer + Gelen ve giden transferler burada görünecek + İşlemleriniz burada görüntülenecek + Bu izlerde delegasyon yapabilmek için oyları kaldırın + Zaten oylarınızı delegasyon yaptığınız izler + Ulaşılamayan izler + Mevcut oyların olduğu izler + Yükle + Versiyon %s + Güncelleme mevcut + Herhangi bir sorundan kaçınmak ve kullanıcı deneyiminizi iyileştirmek için, en kısa sürede güncellemeleri yüklemenizi şiddetle tavsiye ederiz + Kritik güncelleme + En güncel + Nova Wallet için birçok harika yeni özellik mevcut! Bu özelliklere erişim sağlamak için uygulamanızı güncellemekten emin olun + Büyük güncelleme + Kritik + Önemli + Tüm mevcut güncellemeleri görüntüle + Ad + Cüzdan Adı + Bu ad yalnızca sizin için görüntülenecek ve mobil cihazınızda yerel olarak saklanacaktır. + Bu hesap, güncel dönemde ağ tarafından katılım için seçilmedi + Yeniden Oy Ver + Oy Ver + Oylama Durumu + Satın al + ile Satın al + Al + %s al + Gönder + Takas et + Varlıklar + Varlıklarınız burada görünecek. \'Sıfır bakiyeleri gizle\' filtresinin kapalı olduğundan emin olun + Varlıkların değeri + Mevcut + Bağlanmış + Bakiye detayları + Toplam bakiye + Transfer sonrası toplam + Dondurulmuş + Kilitli + Talep edilebilir + Rezerve edilmiş + Aktarılabilir + Unstaking + Cüzdan + Yeni bağlantı + + %s hesap eksik. Ayarlarda cüzdana hesap ekleyin + %s hesaplar eksik. Ayarlarda cüzdana hesaplar ekleyin + + Nova Cüzdan\'ın desteklemediği \\"%s\\" tarafından istenen bazı gerekli ağlar + Wallet Connect oturumları burada gösterilecek + WalletConnect + Bilinmeyen dApp + + %s desteklenmeyen ağ gizlendi + %s desteklenmeyen ağlar gizlendi + + WalletConnect v2 + Çapraz zincir transferi + Kripto Para Birimleri + Fiat para birimleri + Popüler fiat para birimleri + Para Birimi + Extrinsik detaylar + Sıfır bakiyeli varlıkları gizle + Diğer işlemler + Göster + Ödüller ve Ceza Kesintileri + Takaslar + Filtreler + Transferler + Varlıkları Yönet + İsim örnekleri: Ana hesap, Benim validatörüm, Dotsama kitle fonlamaları, vb. + Bu QR\'yi gönderici ile paylaşın + Göndericiye bu QR kodunu taratın + %s adresim %s almak için: + QR kodunu paylaş + Alıcı + Adresin doğru ağdan olduğundan emin olun + Adres formatı geçersiz. Adresin doğru ağa ait olduğundan emin olun + Minimum bakiye + Çapraz zincir kısıtlamaları nedeniyle %s\'den fazla aktarım yapamazsınız + Çapraz zincir ücreti olan %s\'ı ödemek için yeterli bakiyeniz yok. Transfer sonrası kalan bakiye: %s + Çapraz zincir ücreti girilen miktarın üstüne eklenir. Alıcı, çapraz zincir ücretinin bir kısmını alabilir + Transferi onayla + Çapraz zincir + Çapraz zincir ücreti + Hedef hesapta diğer token transferlerini kabul etmek için yeterli %s olmadığından transferiniz başarısız olacak + Alıcı transferi kabul edemiyor + Hedef hesaptaki nihai miktar, minimal bakiyeden az olacağı için transferiniz başarısız olacak. Lütfen miktarı artırmayı deneyin. + Toplam bakiyenin minimal bakiyeden düşük olması nedeniyle transferiniz hesabı blok depodan kaldıracak. + Hesabınız, toplam tutarı asgari tutarın altına düşürdüğü için transfer sonrası blockchain\'den kaldırılacak. + Transfer hesabı kaldıracak + Hesabınız, toplam tutarı minimumun altına düşürdüğü için transfer sonrası blockchain\'den kaldırılacak. Kalan bakiye de alıcıya aktarılacak. + Ağdan + Bu işlem ücretini ödemek ve ağın minimum bakiyesinin üzerinde kalmak için en az %s sahip olmanız gerekir. Mevcut bakiyeniz: %s. Bu işlemi gerçekleştirmek için bakiyenize %s eklemeniz gerekmektedir. + Kendime + Zincir içinde + Belirtilen adres: %s, dolandırıcılık aktivitelerinde kullanıldığı bilindiğinden, bu adrese token gönderilmesi önerilmez. Yine de devam etmek istiyor musunuz? + Dolandırıcılık uyarısı + Alıcı, token sahibi tarafından engellendi ve şu anda gelen transferleri kabul edemiyor + Alıcı transferi kabul edemiyor + Alıcı ağı + Ağa + %s gönder + %s üzerinde gönder + için + Gönderen + Tokenler + Bu kişiye gönder + Transfer detayları + Bakiyeniz + %s (%s) + %s adresleri %s için + Nova, %1$s adreslerinin bilgi bütünlüğüyle ilgili sorunları tespit etti. Lütfen bütünlük sorunlarını çözmek için %1$s sahibiyle iletişime geçin. + Bütünlük kontrolü başarısız + Geçersiz alıcı + %s için %s ağında geçerli bir adres bulunamadı + %s bulunamadı + %1$s w3n hizmetleri kullanılamıyor. Daha sonra tekrar deneyin veya %1$s adresini manuel olarak girin + W3n çözme hatası + Nova, %s tokeni için kodu çözümleyemez + %s tokeni henüz desteklenmiyor + Dün + Mevcut kolatörler için Yield Boost kapatılacak. Yeni kolatör: %s + Yield Boost\'u değiştirilsin mi? + Ağ ücretini %s ve yield boost yürütme ücretini %s ödemek için yeterli bakiyeniz yok.\nÜcreti ödemek için kullanılabilir bakiye: %s + İlk yürütme ücretini ödemek için yeterli token yok + Ağ ücretini %s ödemek ve eşiğin altına düşmemek için %s yeterli bakiyeniz yok.\nÜcreti ödemek için kullanılabilir bakiye: %s + Eşiğin üstünde kalmak için yeterli token yok + Bahis artış süresi + Yield Boost, %s tüm transfer edilebilir tokenlerimi otomatik olarak %s üzerinde stake edecek + Yield Boost\'lu + diff --git a/common/src/main/res/values-zh-rCN/strings.xml b/common/src/main/res/values-zh-rCN/strings.xml index c9b7a868a8..bf07d6edb1 100644 --- a/common/src/main/res/values-zh-rCN/strings.xml +++ b/common/src/main/res/values-zh-rCN/strings.xml @@ -230,6 +230,7 @@ 更改 选择网络 + 清除 关闭 您确定要关闭此屏幕吗?\n您的更改将不会被应用。 已完成 @@ -309,6 +310,7 @@ 无变化 我们即将显示您的助记词。确保没有人能看到您的屏幕并且不要截屏 —— 它们可能被第三方恶意软件收集 + 不可用 抱歉,您没有足够的资金支付网络费用。 余额不足 关闭 @@ -328,9 +330,11 @@ 请求的权限是使用此屏幕所必需的。 需要权限 价格 + 隐私政策 继续 代理存款 撤销访问 + 推送通知 阅读更多 推荐 刷新费用 @@ -339,6 +343,7 @@ 必需的 重置 重试 + 出了些问题。请再试一次 撤销 保存 扫描二维码 @@ -354,9 +359,11 @@ 跳过过程 提交某些交易时出错。您想要重试吗? 提交某些交易失败 + 出了些问题 排序方式 状态 Substrate 地址 + 条款和条件 剩余时间 标题 打开设置 @@ -480,7 +487,7 @@ 不支持的链,创世哈希%s 确保操作是正确的 未能签署所请求的操作 - + 未找到链 链接%s中的域名不被允许 未指定治理类型 @@ -489,6 +496,7 @@ 无效的派生路径 无效的助记词 无效的URL + 默认通知渠道 +%d 通过地址或名称搜索 地址格式无效。请确保地址属于正确的网络 @@ -557,6 +565,10 @@ 您支付 您收到 选择一个代币 + 治理通知渠道 + + 您至少需要选择%d轨道 + 解锁 历史 电子邮件 @@ -606,9 +618,13 @@ 选择要添加到钱包的账户 支付交易已发送 添加代币 - + 请尝试另一个。 助记词短语无效,请再次检查单词顺序 + 您不能选择超过%d个钱包 + + 请至少选择%d个钱包 + 网络费用 节点地址 节点信息 @@ -685,6 +701,47 @@ 交易将由被委托账户%s发起。网络费用将由被委托账户支付。 这是委托(代理)账户 %s代理 + 代表已投票 + 新公投 + 公投更新 + %s公投#%s现已生效! + 🗳️新公投 + 下载Nova Wallet v%s以获取所有新功能! + Nova Wallet有新的更新可用! + %s公投#%s已结束并被批准🎉 + ✅公投批准! + %s公投#%s状态从%s变为%s + %s公投#%s已结束并被驳回! + ❌公投被驳回! + 🗳️公投状态变更 + %s 公投 #%s 状态变为 %s + Nova 公告 + 余额 + 启用通知 + 因为您没有选择任何钱包,您将不会接收到有关钱包活动(余额,质押)的通知 + 其他 + 收到的代币 + 发送的代币 + 质押奖励 + 钱包 + ⭐️ 新奖励 %s + 从 %s 质押中收到 %s + ⭐ 新奖励 + Nova Wallet • 现在 + 从 Kusama 质押收到 +0.6068 KSM ($20.35) + 在 %s 上收到 %s + ⬇️ 已收到 + ⬇️ 收到 %s + 已发送 %s 到 %s 上的 %s + 💸 已发送 + 💸 发送 %s + 选择最多 3 个钱包以在钱包有活动时被通知 + 暂不 + 启用推送通知 + 接收有关钱包操作、治理更新、质押活动和安全的通知,让您始终了解最新情况 + 启用推送通知,即表示您同意我们的 %s 和 %s + 请稍后再试,通过设置选项卡中的通知设置访问 + 不要错过任何事情! 粘贴 json 字符串或上传文件… 上传文件 恢复 JSON @@ -733,6 +790,7 @@ 决策中 在 %s 中决策 已执行 + 在队列中 在队列中(%s of %s) 已删除 未通过 @@ -825,6 +883,8 @@ 不可用的轨道 Nova需要启用地理位置,以便能够进行蓝牙扫描查找您的Ledger设备 请在设备设置中启用地理位置 + 选择曲目 + %d / %d 地址或w3n 收件人是一个系统账户。它不受任何公司或个人控制。您确定仍然要执行此转账吗? 代币将会丢失 @@ -837,6 +897,8 @@ 带有密钥对的钱包(在nova钱包中创建或导入的)上的每次签名操作都应在构造签名前要求进行PIN验证 请求操作签名的认证 首选项 + 推送通知仅适用于从Google Play下载的Nova Wallet版本。 + 推送通知仅适用于具有Google服务的设备。 屏幕录制和截图将不可用。最小化的应用程序将不显示内容 安全模式 安全性 @@ -859,6 +921,7 @@ 不支持的质押类型 sr25519(推荐) Schnorrkel + 所选账户已作为控制器使用 添加委托权限(代理) 您的委托 @@ -952,6 +1015,7 @@ 等待下一个时代 等待下一个时代(%s) 你的余额不足以支付%s的代理存款。可用余额:%s + 质押通知频道 整理员 担保人的最低股份高于您的委托。您将不会从担保人那里收到奖励。 担保人信息 @@ -1250,6 +1314,7 @@ 完成 失败 待定 + 交易通知频道 来自:%s 发送至:%s 转账 @@ -1334,7 +1399,7 @@ 地址格式无效。确保地址属于正确的网络 最小余额 由于跨链限制,您转账的金额不能超过%s - 您的余额不足以支付 %s 的跨链手续费。\n转账后剩余余额为:%s + 您的余额不足以支付%s的跨链费用。\n转账后的剩余余额:%s 跨链费用将加在输入金额之上。接收者可能会收到部分跨链费用 确认转账 跨链 @@ -1347,7 +1412,7 @@ 转账将移除账户 转账后您的账户将因总余额低于最低限额而从区块链中移除。剩余余额也将转给接收者。 来自网络 - 您需要至少 %s 才能支付此交易费用并保持余额高于最低网络余额。您当前的余额为:%s。您需要将 %s 添加到您的余额以执行此操作。 + 您需要至少有%s来支付此次交易费用并保持网络最低余额以上。您当前的余额是:%s。您需要向您的余额中添加%s来执行此操作。 自己 在链上 以下地址:%s 已知用于网络钓鱼活动,因此我们不建议向该地址发送代币。您还想继续吗? From 164b779504531806cce104b55406e02a26b98fa6 Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Fri, 5 Apr 2024 15:48:54 +0200 Subject: [PATCH 17/17] Bump version --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 053a6db98c..eef040ac8a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,8 @@ buildscript { ext { // App version - versionName = '7.10.1' - versionCode = 128 + versionName = '7.11.0' + versionCode = 129 applicationId = "io.novafoundation.nova" releaseApplicationSuffix = "market"