From 08811dffbfdd9b356102ccb018bda49e2d1624ac Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 17 Oct 2024 12:54:13 +0300 Subject: [PATCH] Updated on 2026-08-14 --- core/res/src/main/res/values-de/strings.xml | 7 +- core/res/src/main/res/values-es/strings.xml | 7 +- core/res/src/main/res/values-fr/strings.xml | 7 +- core/res/src/main/res/values-ru/strings.xml | 4 + .../src/main/res/values-uk-rUA/strings.xml | 220 +++++++++--------- core/res/src/main/res/values/strings.xml | 5 +- .../core/ui/extensions/TextReference.kt | 33 ++- .../SetConfirmationStateLoadingTransformer.kt | 9 +- .../SetInitialDataStateTransformer.kt | 20 +- .../state/utils/StakingRewardsUtils.kt | 44 +++- 10 files changed, 205 insertions(+), 151 deletions(-) diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml index c1bb266ba5..51282f72a9 100644 --- a/core/res/src/main/res/values-de/strings.xml +++ b/core/res/src/main/res/values-de/strings.xml @@ -119,14 +119,14 @@ Adressen abrufen Zum Anbieter gehen Zum Token - Stunde + stunde Importieren In Arbeit Später %1$s übrig Gesperrt Hauptnetz - Monat + monat Netzgebühr Der überwiesene Betrag wird um %1$s (%2$s) gekürzt, um die gewählte Gebührenhöhe zu decken. Weiter @@ -176,7 +176,7 @@ Es ist ein Fehler aufgetreten. Bitte versuche es erneut. Nicht erreichbar staking beenden - Woche + woche Ja Vertragsadresse kopiert! Verfügbare Netzwerke @@ -428,7 +428,6 @@ Die Änderung der Liquidität, die dem Token während des angegebenen Zeitraums zur Verfügung steht Liquidität Liquiditätsindex - Leer Gelistet auf Niedrig MarketCap diff --git a/core/res/src/main/res/values-es/strings.xml b/core/res/src/main/res/values-es/strings.xml index 67bc35be25..f6aeb64737 100644 --- a/core/res/src/main/res/values-es/strings.xml +++ b/core/res/src/main/res/values-es/strings.xml @@ -287,6 +287,7 @@ Comentarios Comentarios en Tangem No se puede completar una transacción + Error de descripción de moneda Esta transacción La red cobrará una tarifa de aprobación de token para verificar que está autorizando el uso de su token para el swap. Especifique el límite aprobado para el token seleccionado. @@ -390,6 +391,7 @@ Suministro circulante El número total de monedas que están disponibles para el comercio y que circulan en el mercado. Suministro circulante + No se encontraron intercambios Compradores experimentados Compradores netos con el requisito adicional de tener al menos 100 transacciones salientes Compradores experimentados @@ -407,6 +409,7 @@ El cambio en la cantidad de liquidez disponible para el token durante el período de tiempo especificado Liquidez Índice de liquidez + Listado en Bajo Capital. de mercado El valor total de una criptomoneda calculado multiplicando su precio por la cantidad de monedas en circulación @@ -477,12 +480,12 @@ Creando un backup Leer más sobre seed phrase - Vacío + Escriba estas %d palabras en el orden que se indica a continuación y guárdelas en un lugar seguro y secreto. Su seed phrase - Vacío + %d palabras Para importar su billetera, ingrese su seed phrase en el campo de abajo diff --git a/core/res/src/main/res/values-fr/strings.xml b/core/res/src/main/res/values-fr/strings.xml index 5efbcda226..fd6c3314ac 100644 --- a/core/res/src/main/res/values-fr/strings.xml +++ b/core/res/src/main/res/values-fr/strings.xml @@ -287,6 +287,7 @@ Commentaires Commentaires sur Tangem Impossible d\'effectuer une transaction + Erreur de description de la pièce Cette transaction Le réseau facturera des frais d\'approbation de jeton pour vérifier que vous autorisez l\'utilisation de votre jeton pour l\'échange. Spécifiez la limite approuvée pour le jeton sélectionné @@ -390,6 +391,7 @@ Approvisionnement en circulation Le nombre total de pièces disponibles pour le trading et en circulation sur le marché Approvisionnement en circulation + Aucun échange trouvé Acheteurs expérimentés Acheteurs nets avec l\'exigence supplémentaire d\'avoir au moins 100 transactions sortantes Acheteurs expérimentés @@ -407,6 +409,7 @@ Le changement dans la quantité de liquidité disponible pour le jeton pendant la période spécifiée Liquidité Indice de liquidité + Listé sur Faible Cap. boursière La valeur d\'une crypto-monnaie est calculée en multipliant son prix par le nombre de pièces en circulation @@ -477,12 +480,12 @@ Sauvegarde en cours En savoir plus sur les seed phrases - Vide + Écrivez ces %d mots dans l\'ordre indiqué ci-dessous et conservez-les dans un endroit sûr et secret. Votre seed phrase - Vide + %d mots Pour importer votre portefeuille, entrez votre seed phrase dans le champ ci-dessous diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml index 5c0cc709dd..3e346d67a4 100644 --- a/core/res/src/main/res/values-ru/strings.xml +++ b/core/res/src/main/res/values-ru/strings.xml @@ -125,6 +125,7 @@ Получить ваши адреса К провайдеру Перейти в токен + час Импортировать В процессе Позже @@ -181,6 +182,7 @@ Произошла ошибка. Пожалуйста, попробуйте снова. Недоступно Завершить стейкинг + неделю Да Адрес контракта скопирован! Доступные сети @@ -772,6 +774,7 @@ Каждый %s Каждый день Каждые %s дня + Каждые За эпоху За эру Ежечасно @@ -780,6 +783,7 @@ Вознаграждения Стейкинг закрыт Застейкать еще + Вы стейкаете %1$s и будете получать награду %2$s Нажмите для разблокировки Нажмите для разблокировки Нажмите для вывода diff --git a/core/res/src/main/res/values-uk-rUA/strings.xml b/core/res/src/main/res/values-uk-rUA/strings.xml index baed26eb8c..520382b7eb 100644 --- a/core/res/src/main/res/values-uk-rUA/strings.xml +++ b/core/res/src/main/res/values-uk-rUA/strings.xml @@ -12,19 +12,19 @@ Не вдається відправити транзакцію Обраний гаманець не підтримує мережу %1$s Щоб активувати криптографічне шифрування блокчейну %1$s, вам потрібно скинути налаштування гаманця до заводських. Зніміть свої кошти перед цим, щоб переконатися, що ви їх не втратите, а потім завершіть процес скидання. Вхід до поточного гаманця буде неможливий після скидання. - Токени в мережі %1$s не підтримуються цією карткою через обмеження прошивки. - У вас виникли труднощі зі скануванням картки? + Токени в мережі %1$s не підтримуються цією карткою або кільцем через обмеження прошивки. + У вас виникли труднощі зі скануванням картки або кільця? Ця картка не призначена для роботи з цим додатком Комісія за замовчуванням Увімкніть комісію за замовчуванням, щоб автоматично встановлювати комісію за транзакцію і пропускати сторінку комісій під час відправлення коштів. Ви завжди можете повернутися до цієї сторінки за необхідності. Перейдіть до налаштувань, щоб увімкнути біометричну автентифікацію в додатку Tangem Увімкнути біометричну автентифікацію Усі збережені коди доступу будуть видалені. Вам доведеться вводити код доступу при роботі з гаманцем. - При відключенні функції збереження гаманця всі збережені до цього гаманці будуть видалені зі застосунку. + При відключенні функції збереження гаманця всі до цього збережені гаманці будуть видалені зі застосунку. Зберегти код доступу - Підключіть функцію збереження кодів доступу від карток на телефоні у зашифрованому виді, і при роботі з карткою замість коду доступу буде запитуватися біометрична автентифікація. + Підключіть функцію збереження кодів доступу від карток на телефоні у зашифрованому виді, і при роботі з карткою або кільцем замість коду доступу буде запитуватися біометрична автентифікація. Зберігати гаманець у додатку - Увімкніть функцію привʼязки карток у застосунку, а також можливість біометричної автентифікації. Підпис транзакції й надалі буде потребувати картку. + Увімкніть функцію привʼязки карток у застосунку, а також можливість біометричної автентифікації. Підпис транзакції й надалі буде потребувати картку або кільце. Темна Світла Системна @@ -34,34 +34,34 @@ Більше не показувати Зрозуміло Баланси приховані - Будь ласка, відскануйте картку - Будь ласка, повторіть спробу через 30 секунд або відскануйте картку + Будь ласка, відскануйте картку або кільце + Будь ласка, спробуйте знову через 30 секунд або відскануйте картку або кільце Забагато спроб Ви вимкнули біометричну автентифікацію на своєму телефоні і не зможете зберігати гаманці в додатку. Щоб зберегти гаманці, будь ласка, увімкніть функцію біометричної автентифікації в налаштуваннях телефону. Почніть процес резервного копіювання Використовуйте банківську картку або інші способи оплати - %d картка - %d картки - %d карток - %d карток + %d пристрій + %d пристрої + %d пристроїв + %d пристроїв - Вимкніть цю опцію, якщо ви не хочете, щоб ця картка використовувалася для скидання кодів доступу до інших карток у цьому гаманці. Зверніть увагу, що це також унеможливить скидання коду доступу на цій картці. + Вимкніть цю опцію, якщо не хочете, щоб ця картка використовувалася для скидання кодів доступу на інших картках у цьому гаманці. Зверніть увагу, скидання коду доступу також не буде доступним на цій картці. Дозволяє використовувати цю картку для скидання коду доступу на інших картках у цьому гаманці Відновлення коду доступу Скинути Ви впевнені, що хочете це зробити? Зміна коду доступу - Код доступу буде змінено лише на цій картці - Усі картки у вибраному гаманці було скинуто до заводських налаштувань. Тепер ви можете створити новий гаманець. + Код доступу буде змінений лише на цій картці або кільцю + Усі пристрої Tangem у вибраному гаманці було скинуто до заводських налаштувань. Тепер ви можете створити новий гаманець. Скидання завершено - Ви хочете скинути наступну картку в цьому гаманці? - Скидання картки - Рекомендуємо завершити процес скидання для всіх карток у цьому гаманці - Ви скинули не всі картки + Бажаєте скинути наступний пристрій від цього гаманця? + Скидання гаманця + Рекомендуємо завершити процес скидання для всіх пристроїв Tangem гаманця + Ви скинули не всі Tangem пристрої Скинути до заводських налаштувань Тип безпеки - Налаштування картки + Налаштування пристрою Крім мережевих комісій, мережа Cardano стягує %1$s ADA при транзакції з токеном %2$s Вимоги до транзакції Cardano Щоб здійснити транзакцію %1$s, внесіть певну суму ADA для покриття мережевої комісії та мінімальне значення ADA (рекомендовано 5 ADA) @@ -122,7 +122,7 @@ За ринком Повільно Швидкість та комісія - Отримати адреси + Отримати ваші адреси Перейти до провайдера Перейти до токену година @@ -141,6 +141,7 @@ Зараз ОК Основна картка + Основне кільце Парольна фраза Вставити Політикою конфіденційності @@ -218,13 +219,13 @@ Код доступу Перед скануванням картки вам потрібно буде ввести правильний код доступу Затримка сканування - Цей механізм захищає картку від безконтактних атак. Між скануванням картки та виконанням команди буде додана затримка. + Цей механізм захищає картку або кільце від безконтактних атак. Між скануванням картки та виконанням команди буде додана затримка. Пароль Перед виконанням будь-якої команди, що тягне за собою зміну стану картки, вам необхідно буде ввести пароль. Реферальна програма Переверніть екран пристрою вниз, щоб швидко приховати та відобразити баланси %s хешів - Номер картки + Номер пристрою Звернутися у підтримку Додати більше карток Валюта застосунку @@ -235,7 +236,7 @@ Деталі Перевірте підключення до інтернету або змініть мережу Умови використання - Ви використали картку від іншого гаманця. Прикладіть картку, пов\'язану з цим гаманцем. + Ви використали картку або кільце від іншого гаманця. Прикладіть картку або кільце, пов\'язану з цим гаманцем. Мої токени У вас немає доданих токенів. Додайте токени для обміну Недоступний для обміну з %s @@ -290,14 +291,14 @@ Токенів не знайдено. Будь ласка, спробуйте інший запит ID: %s ID транзакції скопійовано - Конвертуйте одну з ваших валют в іншу + Обміняйте будь-який актив у своєму портфелі на цей токен Інформація нижче не є обов\'язковою. Ви можете стерти її, якщо бажаєте. Розкажіть, яких функцій вам не вистачає, і ми спробуємо вам допомогти. - Розкажіть, будь ласка, яку картку ви маєте? + Розкажіть, будь ласка, яку картку або кільце ви маєте? Привіт, команда підтримки, Будь ласка, розкажіть нам більше про вашу проблему. Кожна дрібниця може допомогти. Мої пропозиції - Не вдається відсканувати картку + Не вдається відсканувати картку/кільце Звернення в підтримку Звернення в підтримку Tangem Не вдається відправити транзакцію @@ -308,20 +309,21 @@ Кількість %s Функція підтвердження необхідна для надання дозволу іншій адресі на використання певної кількості ваших токенів. За задумом, смарт-контракти не можуть отримати доступ до ваших токенів без вашого схвалення. \"Розблоковуючи\" свої токени, ви дозволяєте смарт-контракту StakeKit використовувати їх. Майнери мережі отримують плату за газ (сплачену вами), щоб зафіксувати цю дію в блокчейні. Ви зможете застейкати свій токен після того, як дасте дозвіл. Щоб продовжити, вам потрібно дозволити смарт-контракту StakeKit використовувати ваш %s - Щоб продовжити, вам потрібно надати дозвіл смарт-контракту %1s використовувати ваш %2s + Щоб продовжити, вам потрібно дозволити смарт-контракту %1s використовувати ваш %2s Надати дозвіл Необмежено Купити Сканувати - Ця інформація була створена за допомогою ШІ - Щоб змінити код доступу, прикладіть картку, як показано вище, і не прибирайте її до закінчення операції + Ця інформація була створена за допомогою ШІ.\nНатисніть тут, якщо знайшли помилку. + Щоб змінити код доступу, прикладіть картку або кільце, як показано вище, і не прибирайте її до закінчення операції Щоб змінити пароль, прикладіть картку, як показано вище, і не прибирайте її до закінчення операції Щоб створити гаманець, прикладіть картку, як показано вище, і не прибирайте її до завершення операції + Щоб створити гаманець, торкніться кільця, як показано вище, і не прибирайте до кінця операції Прикладіть картку #%s для скидання Прикладіть, щоб відсканувати Прикладіть, щоб підписати - Прикладіть картку - Ви оновили біометричні дані, відскануйте свою картку для входу + Прикладіть картку або кільце + Ви оновили дані біометрії, відскануйте свою картку або кільце для входу Ваш баланс повинен перевищувати суму комісії для здійснення переказу Недостатньо балансу У вас недостатньо Mana для цієї транзакції. Будь ласка, зачекайте, поки Mana буде поповнена. Ваш баланс Mana становить %1$s/%2$s @@ -333,7 +335,7 @@ Щоб почати відстежувати свої криптоактиви та транзакції, додайте токени Керування токенами Для доступу до всіх мереж необхідно відсканувати картку - Відскануйте картку + Відскануйте картку або кільце Насолоджуйтесь %1$s комісією за обслуговування на свопах через Changelly з %2$s по %3$s лютого. Обмін із Changelly, %s комісії Токени @@ -369,7 +371,7 @@ Доступні мережі Моє портфоліо Маркет - Щоб згенерувати адреси для обраних мереж, потрібно відсканувати свою картку Tangem + Щоб згенерувати адреси для обраних мереж, відскануйте вашу картку або кільце Tangem гаманця Щоб додати токени, потягніть вгору або торкніться панелі пошуку Дані цього розділу отримані з наступних мереж: %s Не вдалося завантажити дані... @@ -397,10 +399,10 @@ В тренді Про %s - біржа - біржі - бірж - бірж + %d біржа + %d біржі + %d бірж + %d бірж На основі %d оцінки @@ -465,11 +467,11 @@ Потягніть вгору або торкніться панелі пошуку, щоб додати токени безпосередньо з маркету Додати токени Функція NFC недоступна на вашому пристрої - Вам потрібно встановити єдиний код доступу для захисту всіх ваших карток + Налаштуйте єдиний код доступу для захисту всіх ваших карток або кілець Захист - Пізніше ви зможете налаштувати індивідуальний код доступу до кожної картки + Встановіть індивідуальний код доступу для кожної картки або кільця пізніше. Персоналізація - Код доступу можна відновити за допомогою прив\'язаної картки. Не зберігайте всі картки в одному місці. + Відновіть код доступу за допомогою прив\'язаної картки або кільця. Не зберігайте всі свої пристрої в одному місці. Відновлення Оберіть будь-яке слово, фразу або число в якості коду доступу Створити код доступу @@ -477,27 +479,29 @@ Повторно введіть код доступу Код доступу повинен містити не менше 4 символів Введені коди доступу не збігаються - Необхідно повторити операцію. Карту буде скинуто до заводських налаштувань. + Необхідно повторити операцію, при цьому картка буде скинута до заводських налаштувань. Помилка активації Додати токени - Ви додали одну резервну картку. Після завершення процесу резервного копіювання ви не зможете додати більше резервних карток. Якщо у вас є ще одна картка, додайте її до резервної копії. Ви бажаєте продовжити? + Ви додали одну резервну картку або кільце. Після завершення процесу резервного копіювання ви не зможете додати їх більше. Якщо у вас є ще одна картка або кільце, додайте її до резервної копії. Бажаєте продовжити? Процес резервного копіювання частково завершено. Ви не можете вийти з нього зараз. Парольна фраза – це розширена функція безпеки, яку використовують криптогаманці. Вона додає додаткове слово або фразу на ваш вибір до вже існуючої seed - фрази, щоб розблокувати абсолютно новий набір адрес. - Додати резервну картку - Відсканувати картку #%d + Додати картку або кільце + Сканувати картку + Сканувати картку #%d Створити резервну копію - Відсканувати основну картку + Сканувати картку + Сканувати кільце Перейти до мого гаманця Завершення бекапу Отримати криптовалюту Сканувати основну картку Пропустити Як це працює? - Давайте згенеруємо всі ключі на вашій картці та створимо безпечний гаманець + Давайте згенеруємо всі ключі на вашій картці або кільці та створимо безпечний гаманець Створити гаманець Створити гаманець Інші опції - Ваші ключі будуть надійно згенеровані всередині картки. Ніякої seed-фрази, а це означає, що ніхто не зможе її експортувати або вкрасти. + Ваші ключі будуть надійно згенеровані всередині чіпу. Ніякої seed-фрази, а це означає, що ніхто не зможе її експортувати або вкрасти. Генеруйте ключі приватно Ваша картка активована та готова до використання Успішно! @@ -523,27 +527,30 @@ Щоб імпортувати гаманець, введіть seed-фразу в поле нижче Згенерувати seed-фразу Імпорт гаманця - Seed-фраза — це набір слів, який дозволяє відновити ваш гаманець. На відміну від ключів, що генеруються карткою, seed-фраза не захищена і може бути скопійована та викрадена. Використовуйте цю опцію на свій власний ризик. + Seed-фраза — це набір слів, який надає можливість відновити гаманець. На відміну від ключів, що генеруються карткою або кільцем, seed-фраза не захищена і може бути скопійована та вкрадена. Використовуйте цей варіант на свій власний страх та ризик. Використовувати seed-фразу Невірна seed-фраза. Будь ласка, перевірте порядок слів. Невірна seed-фраза. Будь ласка, перевірте правопис. Застаріло Щоб перевірити чи правильно ви записали seed-фразу, введіть 2-е, 7-е та 11-те слова Отже, давайте перевіримо - Щоб почати процес резервного копіювання, додайте одну або дві резервні картки. - Ви можете додати ще одну картку або завершити процес резервного копіювання + Щоб почати процес резервного копіювання, додайте одну або дві резервні картки або кільця. + Ви можете додати ще одну картку або кільце або завершити процес резервного копіювання Підготуйте резервну картку з номером %s - Відскануйте основну картку, щоб почати процес резервного копіювання. + Відскануйте основну картку або кільце, щоб почати процес резервного копіювання. Підготуйте основну картку з номером %s - Ваша картка налаштована та готова до використання. - Додано максимальну кількість карток. Завершіть процес резервного копіювання. - Активація картки + Підготуйте кільце та натисніть кнопку сканування нижче + Ваш гаманець налаштований та готовий до використання. + Додано максимальну кількість пристроїв. Завершіть процес резервного копіювання. + Активація гаманця + Резервна картка Резервна картка #%d - Немає резервних карток + Резервне кільце + Немає резервних пристроїв Сповіщення - Додано одну резервну картку + Додано один резервний пристрій Підготуйте свою картку - Додано дві резервні картки + Додано два резервних пристрої Поповніть гаманець на будь-яку суму, щоб почати користуватися карткою Щоб почати, просто поповніть гаманець більше, ніж на %1$s %2$s Купити криптовалюту @@ -551,7 +558,7 @@ Активація гаманця Процес поєднання карток частково завершено. Ви не можете вийти з нього зараз. Якщо процес створення гаманця буде перервано будь-яким чином, вам доведеться почати все спочатку - Ви можете створити резервну копію ключів на одній або двох інших порожніх картках Tangem Wallet. + Ви можете створити резервну копію своїх ключів на одній або двох інших порожніх картках або кільцях Tangem Wallet. Код доступу можна відновити за допомогою однієї з резервних карток. Всі резервні карти можна використовувати як повнофункціональні з ідентичними ключами. Ви зможете встановити код доступу для захисту своїх гаманців. @@ -569,7 +576,7 @@ Доступ до камери заборонено %1$s (%2$s) у мережі %3$s Надсилайте лише %s на цю адресу. Надсилання будь-якої іншої валюти призведе до її незворотної втрати. - Перекажіть кошти з іншого гаманця або біржі + Переказуйте кошти з будь-якого гаманця або біржі Взяти участь Не вдалося завантажити інформацію по реферальній програмі. Будь ласка, спробуйте пізніше. Не вдалося завантажити інформацію по реферальній програмі. Код помилки: %s. Будь ласка, спробуйте пізніше. @@ -606,13 +613,13 @@ Скинути картку Я розумію, що після виконання цієї дії у мене більше не буде доступу до поточного гаманця Я розумію, що не можу використати цю картку для відновлення свого коду доступу на інших картках поточного гаманця - Скидання до заводських налаштувань призведе до повного видалення гаманця з обраної картки. Ви не зможете відновити поточний гаманець або використати картку для відновлення коду доступу. - Скидання до заводських налаштувань призведе до повного видалення гаманця з обраної картки. Ви не зможете відновити поточний гаманець. + Скидання до заводських налаштувань призведе до повного видалення гаманця з обраної картки або кільця. Ви не зможете відновити поточний гаманець або використати цю картку або кільце для відновлення коду доступу. + Скидання до заводських налаштувань призведе до повного видалення гаманця з обраної картки або кільця. Ви не зможете відновити поточний гаманець. Власникам кілець - 3 обміни без комісії на Changelly до 15.11! Обмін з 0%% комісією! У вас є банківська картка іншої країни та посвідка на проживання або реєстрація за межами Російської Федерації? Російські банківські картки наразі не приймаються - Увійдіть у додаток та слідкуйте за своїм балансом без сканування картки + Увійдіть у додаток та слідкуйте за своїм балансом без сканування картки чи кільця Доступ до додатку Використовувати біометрію Для взаємодії з гаманцем будуть запитуватися біометричні дані замість коду доступу @@ -620,12 +627,12 @@ Схоже, що у вас відключена біометрична автентифікація, вона необхідна для збереження гаманців Увімкніть біометричну автентифікацію Бажаєте використовувати біометрію? - Зверніть увагу, що для здійснення транзакції з вашими коштами вам все одно знадобиться ваша картка + Зверніть увагу, що для здійснення транзакції з вашими коштами вам все одно знадобиться ваша картка або кільце Сканувати - Відскануйте картку, щоб змінити її налаштування. Зміни торкнуться лише відсканованої картки і не вплинуть на інші картки, прив\'язані до вашого гаманця. - Підготуйте свою картку + Відскануйте картку або кільце, щоб змінити її налаштування. Зміни торкнуться лише тої картки або кільця, які ви відсканували, і не вплинуть на інші пристрої, прив\'язані до вашого гаманця. + Підготуйте свій Tangem! Вже включено до введеної адреси - Сума комісії у %s разів перевищує рекомендовану. Переконайтеся, що користувацькі налаштування вірні. + Сума комісії у %s разів перевищує рекомендовану. Переконайтеся, що вказана комісія вірна. Ви вказали комісію нижче рекомендованої, це може спричинити затримку вашої транзакції. Продовжити? Причина: %1$s\nКод: %2$s Транзакція не завершена @@ -660,7 +667,7 @@ Сума перевищує баланс Для збереження вашого акаунту у блокчейні та захисту від можливих ризиків необхідний баланс не менше %s. Ця сума залишиться на вашому рахунку та не може бути знята. Екзистенційний депозит - Сума комісії в %s разів перевищує рекомендовану. Переконайтеся, що користувацькі налаштування вірні. + Сума комісії в %s разів перевищує рекомендовану. Переконайтеся, що вказана комісія вірна. Встановлена комісія завелика Через особливості мережі %1$s комісія за переказ всього балансу вища. Щоб зменшити комісію, Ви можете залишити %2$s. Підвищена комісія @@ -694,12 +701,12 @@ Ви надсилаєте **%1$s** і %2$s Ви надсилаєте **%1$s** комісія мережі буде покрита, використовуючи %1$s енергію - комісія мережі буде зменшена, витрачаючи %1$s + Комісія мережі буде зменшена, за рахунок використання %1$s енергії включно з комісією мережі %1$s Транзакція успішно підписана і відправлена до блокчейну. Баланс гаманця буде оновлено через деякий час %1$s — це монета у мережі Tron. Щоб розрахувати комісію та здійснити транзакцію, вам необхідно внести певну кількість Tron (TRX) на свій рахунок. Трансакцію надіслано - Підготуйте до сканування картку, яку потрібно налаштувати. + Підготуйтеся до сканування кільця або картки, яку ви хочете налаштувати. Забути гаманець Це призведе до видалення гаманця з застосунку. Сам гаманець можна додати знову. Ім\'я @@ -719,11 +726,11 @@ Рейтинг ринку Метрики Мінімальні вимоги - Немає винагород, щоб отримати + Немає винагород, до отримання Отримати винагороду - Спосіб отримання винагороди за стейкінг. Його можна отримати автоматично або вручну. + Метод отримання винагород за стейкінг.\nВін може зараховуватися автоматично на вашу адресу або вручну, коли винагороду треба вивести, створивши транзакцію на її отримання. Розклад винагород - Це графік, який визначає коли учасники стейкінгу отримують свої винагороди. + Це період, який визначає, коли учасники стейкінгу отримують свої винагороди. Нагороди для отримання: %s Стейкінг %s Період розблокування @@ -740,19 +747,20 @@ Стейкайте безпечно та почніть отримувати винагороди щоденно Стейкайте безпечно та почніть отримувати винагороди щогодини Стейкайте безпечно та почніть отримувати винагороди щомісяця - Стейкінг дозволяє заробляти %1$s. Ваші винагороди за стейкінг зараховуються щодня. - Стейкінг дозволяє заробляти %1$s. Ваші винагороди за стейкінг зараховуються кожну годину. - Стейкінг дозволяє заробляти %1$s. Ваші винагороди за стейкінг зараховуються щомісяця. - Стейкінг дозволяє заробляти %1$s. Ваші винагороди за стейкінг зараховуються щотиждня. + Стейкінг дає змогу вам отримувати %1$s. Винагорода буде зараховуватися кожного дня. + Стейкінг дає змогу вам отримувати %1$s. Винагорода буде зараховуватися кожну годину. + Стейкінг дає змогу вам отримувати %1$s. Винагорода буде зараховуватися щомісяця. + Стейкінг дає змогу вам отримувати %1$s. Винагорода буде зараховуватися кожен тиждень. Стейкайте безпечно та почніть отримувати винагороди щотижня Отримуйте винагороду за стейкінг Стейкінг тимчасово недоступний через проблеми в мережі. Будь ласка, спробуйте пізніше. Стейкінг в мережі %1$s з новим валідатором автоматично переведе всі раніше застейкані кошти до цього валідатора Реінвестуйте зароблені винагороди у суму стейкінгу, щоб збільшити потенційний прибуток. + Рестейк дозволяє вам перемістити ваші кошти від одного валідатора до іншого без необхідності виводити кошти зі стейкінгу Розблокуйте свої кошти, щоб вивести їх зі стейкінгу. Розблокування займе %s. Ваші кошти будуть доступні для використання після закінчення 21-денного періоду розблокування. Винагорода буде отримана разом з вашими незастейканими коштами. Ваші кошти будуть доступні після %s періоду розблокування. - Тепер ви можете вивести свої кошти, вони будуть доступні для використання відразу + Ви можете вивести свої кошти зі стейкінгу, вони будуть доступні для використання відразу Стейкінг в мережі Tron з новим валідатором автоматично переведе всі раніше застейкані кошти до цього валідатора Підготовка Готова до виведення @@ -763,19 +771,21 @@ Переголосувати Автоматично Вручну - Блок - День + За блок + Щоденно Кожен %s Щодня - Кожен %s - Епоха - Ера - Година + Кожні %s дні + Кожні + За епоху + За еру + Погодинно Місяць - Тиждень + Потижнево Винагороди Стейкінг закрито Застейкати більше + Ви стейкаєте %1$s і будете отримуватиме винагороду %2$s Натисніть, щоб розблокувати Натисніть, щоб розблокувати або проголосувати Натисніть, щоб вивести кошти @@ -795,13 +805,13 @@ Проголосувати Зняти Ваші стейкінги - Тримайте свою криптовалюту в безпеці. Приватні ключі надійно зберігаються на картці. + Тримайте свою криптовалюту в безпеці. Приватні ключі надійно зберігаються на картці або кільці Революційний апаратний гаманець - До трьох карток з одним гаманцем + До трьох карток або кілець з одним гаманцем Всі ключі у безпеці - Апаратний гаманець для ваших біткоїнів, ефіріуму та багатьох інших валют одночасно — і все це на одній картці + Апаратний гаманець для ваших біткоїнів, ефіріуму та багатьох інших валют одночасно — і все це на одній картці або кільці Тисячі криптовалют - Використовуйте його в дорозі, будь-де і будь-коли. Ніяких дротів чи батарейок. Просто прикладіть картку до телефону, коли вам потрібна криптовалюта. + Використовуйте його в дорозі, будь-де і будь-коли. Ніяких дротів чи батарейок. Просто прикладіть картку або кільце до телефону, коли вам потрібна криптовалюта. Гаманець для кожного Зустрічайте Tangem Обмінюйте, купуйте NFT, отримуйте позики та робіть депозити у понад 100 різних децентралізованих сервісах @@ -862,28 +872,28 @@ Ви відсканували не ту twin-картку. Будь ласка, спробуйте відсканувати іншу Це картка, яку ви тримаєте в руках. У парної картки номер %s.\n\nОбидві картки можна використовувати для зняття коштів з цього гаманця. Один гаманець. Дві картки. - Відсканувати картку #%s + Сканувати картку #%s Створення гаманця Відскануйте twin-картку # %s Підготовка картки Tangem Twin Ця дія є незворотною. Ви не матимете доступу до старого гаманця. Прикладіть twin-картку з номером %s та не прибирайте її до завершення операції - Використовуйте %s або відскануйте картку, щоб отримати доступ до свого гаманця + Використовуйте %s або відскануйте картку/кільце, щоб отримати доступ до свого гаманця Будьте в курсі останніх функцій та новин Дізнавайтеся першими про нові акції Бажаєте використовувати Push-повідомлення? Додати новий гаманець Ви впевнені, що хочете видалити цей гаманець? - Сталася помилка, будь ласка, відскануйте свою картку, щоб увійти в систему + Сталася помилка, будь ласка, відскануйте свою картку або кільце, для входу Цей гаманець вже збережено, ви можете додати інший Гаманець з назвою %s вже існує Назва гаманця - Перейменувати гаманець + Перейменування гаманця Розблокувати все Розблокувати все з %s Блокчейн недоступний. Спробуйте пізніше - Відскануйте картку + Відскануйте картку або кільце Запит на підпис повідомлення.\n\n%s Dapp %1$s, запит на\nпідпис транзакції BNB.\n\n%2$s Торговий ордер на %1$s\nЦіна: %2$s\nСума до отримання: %3$s\nСума до сплати: %4$s @@ -897,7 +907,7 @@ Запит на підключення сеансу WalletConnect містить непідтримувані блокчейни. Непідтримувані блокчейни:\n Зв\'язок з цим Dapp сервісом не може бути встановлений через його технічну реалізацію. Ми зіткнулися з невідомою помилкою. Повідомлення про помилку: %s. Якщо проблема не зникає — зверніться до нашої служби підтримки. - Невірна картка обрана в додатку Tangem + Невірна картка або кільце обрана в додатку Tangem Не вдалося створити транзакцію з даних Dapp. Код: %s Ми зіткнулися з невідомою помилкою. Код помилки: %d. Якщо проблема не зникає — зверніться до нашої служби підтримки. Немає відкритих сеансів WalletConnect @@ -922,10 +932,10 @@ Немає підключення до інтернету Налаштування гаманця Tangem - Використовуйте %s або відскануйте картку, щоб розблокувати доступ до гаманця + Використовуйте %s або відскануйте картку/кільце, щоб розблокувати доступ до вашого гаманця Процес підтвердження наразі триває і буде завершено найближчим часом Підтвердження в процесі - Схоже, що активація картки була виконана неправильно. Це може бути пов\'язано з проблемою з модулем NFC вашого пристрою або неправильним прикладанням картки до пристрою. Зверніться за допомогою до нашої служби підтримки. + Схоже, що активація карток або кільця була виконана неправильно. Це може бути пов\'язано з проблемою з модулем NFC вашого пристрою або неправильним прикладанням картки або кільця до телефону. Будь ласка, зверніться за допомогою до нашої служби підтримки для уточнення деталей. Помилка активації За рішенням розробників мережі BNB стандарт BEP-2 перестане підтримуватись у червні 2024 року. Щоб не втратити свої активи, їх необхідно конвертувати у стандарт BEP-20. Використовуйте функцію обміну, щоб перевести їх у мережу BNB Smart Chain. Відключення мережі BNB Beacon Chain @@ -944,7 +954,7 @@ Для роботи з мережею вимагається депозит Обмін буде доступний після завершення %s транзакції У вас є активна транзакція - Затвердження обміну триває і незабаром буде завершено + Дозвіл обміну триває і незабаром буде завершено Затвердження в процесі Мінімальна сума обміну становить - %1$s. Будь ласка, переконайтеся, що залишок на рахунку після обміну буде не менше за %2$s. У вашому списку немає доступних монет для обміну %s @@ -968,13 +978,13 @@ На цій картці залишається лише %s підписів. Ви повинні вивести всі свої кошти. Низька кількість підписів Токени в різних мережах можуть мати різні адреси. Переконайтеся, що ваша адреса відповідає мережі, коли переказуєте кошти. - Токен MATIC мігрує до POL. Однак кінцевого терміну не встановлено і MATIC ще не застарілий. Ви можете безпечно продовжувати використовувати токен MATIC або обміняти його на POL. + Токен MATIC мігрує до POL. Однак кінцевого терміну не встановлено і MATIC ще не застарілий. Ви можете спокійно продовжувати використовувати токен MATIC або обміняти його на POL. Міграція MATIC у POL - Використовуйте вашу картку, щоб отримати адресу для %d мережі - Використовуйте вашу картку, щоб отримати адреси для %d мереж - Використовуйте вашу картку, щоб отримати адреси для %d мереж - Використовуйте вашу картку, щоб отримати адреси для %d мереж + Використовуйте вашу картку або кільце, щоб отримати адресу для %d мережі + Використовуйте вашу картку або кільце, щоб отримати адреси для %d мереж + Використовуйте вашу картку або кільце, щоб отримати адреси для %d мереж + Використовуйте вашу картку або кільце, щоб отримати адреси для %d мереж Деякі адреси відсутні Мережа наразі недоступна. Будь ласка, спробуйте пізніше. @@ -1001,11 +1011,11 @@ Ви не завершили резервне копіювання. Бажаєте продовжити? Так, поновити Відмовитися - Якщо зараз відмовитися, то доведеться скинути картки до заводських налаштувань, щоб почати спочатку + Якщо зараз відмовитися, то доведеться скидувати пристроїв до заводських налаштувань, щоб почати спочатку Відновити бекап Це незворотна дія Увійдіть за допомогою %s - Сканувати картку - Використовуйте %s або відскануйте картку для доступу в додаток + Сканувати картку або кільце + Використовуйте %s або відскануйте картку або кільце для входу у додаток З поверненням! diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index afcccd7b55..ff9ddc76d8 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -338,7 +338,7 @@ Coin market cap Blockchain the cryptocurrency was initially created Native network - Using non-native networks for tokens enables cross-blockchain interoperability, allowing assets to be utilized in diverse decentralized applications and smart contracts across platforms. However, this often involves a custodian or smart contract to hold the original asset securely, introducing centralization and counterparty risk. + Using non-native networks for tokens enables cross-blockchain interoperability, allowing assets to be utilized in diverse decentralized applications and smart contracts across platforms. However, this often involves a custodian or smart contract to hold the original asset securely, introducing centralization and counterparty risk. Not original or primary blockchain the token is hosted Non-native networks Choose networks @@ -756,6 +756,7 @@ Each %s Each day Each %s days + Each Per Epoch Per Era Hourly @@ -764,7 +765,7 @@ Rewards Stake locked Stake more - You stake %1$s and will be receiving your reward each %2$s + You stake %1$s and will be receiving your reward %2$s Tap to unlock Tap to unlock or vote Tap to withdraw diff --git a/core/ui/src/main/java/com/tangem/core/ui/extensions/TextReference.kt b/core/ui/src/main/java/com/tangem/core/ui/extensions/TextReference.kt index c7a5af394e..efcf847a05 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/extensions/TextReference.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/extensions/TextReference.kt @@ -11,6 +11,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.AnnotatedString.Builder import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.decapitalize import org.intellij.markdown.MarkdownElementTypes import kotlin.contracts.ExperimentalContracts import kotlin.contracts.contract @@ -26,11 +27,16 @@ sealed interface TextReference { /** * Text resource id * - * @property id resource id - * @property formatArgs arguments. Impossible to use [kotlinx.collections.immutable.ImmutableList] because [Any] is - * unstable. + * @property id resource id + * @property formatArgs arguments. Impossible to use [kotlinx.collections.immutable.ImmutableList] because + * [Any] is unstable. + * @property decapitalize whether resolved reference should be decapitalized */ - data class Res(@StringRes val id: Int, val formatArgs: WrappedList = WrappedList(emptyList())) : TextReference + data class Res( + @StringRes val id: Int, + val formatArgs: WrappedList = WrappedList(emptyList()), + val decapitalize: Boolean = false, + ) : TextReference /** * Plural resource id @@ -78,10 +84,15 @@ sealed interface TextReference { * * @param id The resource ID of the string. * @param formatArgs A list of format arguments to be applied to the string resource. - * @return A [TextReference] representing the string resource with format arguments. + * @param decapitalize Whether resolved reference should be decapitalized + * @return [TextReference] representing the string resource with format arguments. */ -fun resourceReference(@StringRes id: Int, formatArgs: WrappedList = WrappedList(emptyList())): TextReference { - return TextReference.Res(id, formatArgs) +fun resourceReference( + @StringRes id: Int, + formatArgs: WrappedList = WrappedList(emptyList()), + decapitalize: Boolean = false, +): TextReference { + return TextReference.Res(id, formatArgs, decapitalize) } /** @@ -161,7 +172,13 @@ fun TextReference.resolveReference(): String { .map { if (it is TextReference) it.resolveReference() else it } .toTypedArray() - stringResource(id = id, *args) + val resolvedReference = stringResource(id = id, *args) + + if (decapitalize) { + resolvedReference.replaceFirstChar { char -> char.lowercase() } + } else { + resolvedReference + } } is TextReference.PluralRes -> pluralStringResource(id, count, *formatArgs.toTypedArray()) is TextReference.Str -> value diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetConfirmationStateLoadingTransformer.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetConfirmationStateLoadingTransformer.kt index e32fc821f9..01e54c47d2 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetConfirmationStateLoadingTransformer.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetConfirmationStateLoadingTransformer.kt @@ -11,7 +11,7 @@ import com.tangem.domain.staking.model.stakekit.action.StakingActionCommonType import com.tangem.domain.tokens.model.CryptoCurrency import com.tangem.features.staking.impl.R import com.tangem.features.staking.impl.presentation.state.* -import com.tangem.features.staking.impl.presentation.state.utils.getRewardSchedule +import com.tangem.features.staking.impl.presentation.state.utils.getRewardScheduleText import com.tangem.utils.transformer.Transformer import kotlinx.collections.immutable.persistentListOf @@ -62,9 +62,10 @@ internal class SetConfirmationStateLoadingTransformer( fiatCurrencyCode = appCurrency.code, fiatCurrencySymbol = appCurrency.symbol, ) - val rewardSchedule = getRewardSchedule( - yield.metadata.rewardSchedule, - cryptoCurrency.network.id.value, + val rewardSchedule = getRewardScheduleText( + rewardSchedule = yield.metadata.rewardSchedule, + networkId = cryptoCurrency.network.id.value, + decapitalize = true, ) return if (isEnterAction && amountDecimal != null && rewardSchedule != null) { resourceReference( diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetInitialDataStateTransformer.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetInitialDataStateTransformer.kt index e979ce93c5..0571fbf65e 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetInitialDataStateTransformer.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetInitialDataStateTransformer.kt @@ -18,7 +18,7 @@ import com.tangem.features.staking.impl.presentation.state.* import com.tangem.features.staking.impl.presentation.state.bottomsheet.InfoType import com.tangem.features.staking.impl.presentation.state.converters.RewardsValidatorStateConverter import com.tangem.features.staking.impl.presentation.state.converters.YieldBalancesConverter -import com.tangem.features.staking.impl.presentation.state.utils.getRewardSchedule +import com.tangem.features.staking.impl.presentation.state.utils.getRewardScheduleText import com.tangem.features.staking.impl.presentation.viewmodel.StakingClickIntents import com.tangem.lib.crypto.BlockchainUtils.isPolkadot import com.tangem.utils.Provider @@ -200,7 +200,11 @@ internal class SetInitialDataStateTransformer( } private fun createRewardScheduleItem(): RoundedListWithDividersItemData? { - val endTextReference = getRewardScheduleText() ?: return null + val endTextReference = getRewardScheduleText( + rewardSchedule = yield.metadata.rewardSchedule, + networkId = cryptoCurrencyStatusProvider().currency.network.id.value, + decapitalize = false, + ) ?: return null return RoundedListWithDividersItemData( id = R.string.staking_details_reward_schedule, @@ -252,18 +256,6 @@ internal class SetInitialDataStateTransformer( return resourceReference(R.string.common_range, wrappedList(formattedMinApr, formattedMaxApr)) } - private fun getRewardScheduleText(): TextReference? { - val rewardSchedule = getRewardSchedule( - yield.metadata.rewardSchedule, - cryptoCurrencyStatusProvider().currency.network.id.value, - ) ?: return null - - return resourceReference( - R.string.staking_reward_schedule_each, - wrappedList(rewardSchedule), - ) - } - private companion object { val EQUALITY_THRESHOLD = BigDecimal(1E-10) diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/utils/StakingRewardsUtils.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/utils/StakingRewardsUtils.kt index 5012e225b7..510266948e 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/utils/StakingRewardsUtils.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/utils/StakingRewardsUtils.kt @@ -16,23 +16,45 @@ private data object StakingRewardSchedule { val SOLANA_SCHEDULE = 2 to 3 } -internal fun getRewardSchedule(schedule: Yield.Metadata.RewardSchedule, networkId: String): TextReference? = - when (schedule) { +internal fun getRewardScheduleText( + rewardSchedule: Yield.Metadata.RewardSchedule, + networkId: String, + decapitalize: Boolean, +): TextReference? { + return when (rewardSchedule) { + Yield.Metadata.RewardSchedule.WEEK -> resourceReference( + id = R.string.staking_reward_schedule_week, + decapitalize = decapitalize, + ) + Yield.Metadata.RewardSchedule.HOUR -> resourceReference( + id = R.string.staking_reward_schedule_hour, + decapitalize = decapitalize, + ) + Yield.Metadata.RewardSchedule.DAY -> resourceReference( + id = R.string.staking_reward_schedule_day, + decapitalize = decapitalize, + ) + Yield.Metadata.RewardSchedule.MONTH -> resourceReference( + id = R.string.staking_reward_schedule_month, + decapitalize = decapitalize, + ) Yield.Metadata.RewardSchedule.BLOCK, Yield.Metadata.RewardSchedule.EPOCH, Yield.Metadata.RewardSchedule.ERA, - -> getCustomRewardSchedule(networkId) - Yield.Metadata.RewardSchedule.WEEK -> resourceReference(R.string.common_week) - Yield.Metadata.RewardSchedule.HOUR -> resourceReference(R.string.common_hour) - Yield.Metadata.RewardSchedule.DAY -> pluralReference(R.plurals.common_days_no_param, count = 1) - Yield.Metadata.RewardSchedule.MONTH -> resourceReference(R.string.common_month) - Yield.Metadata.RewardSchedule.UNKNOWN -> null + -> getCustomRewardSchedule( + networkId = networkId, + decapitalize = decapitalize, + ) + else -> null } +} -private fun getCustomRewardSchedule(networkId: String): TextReference? { +private fun getCustomRewardSchedule(networkId: String, decapitalize: Boolean = false): TextReference? { return when { isSolana(networkId) -> { combinedReference( + resourceReference(id = R.string.staking_reward_schedule_each_plural, decapitalize = decapitalize), + stringReference(NON_BREAKING_SPACE.toString()), stringReference("${SOLANA_SCHEDULE.first}$MINUS${SOLANA_SCHEDULE.second}$NON_BREAKING_SPACE"), pluralReference( id = R.plurals.common_days_no_param, @@ -42,11 +64,13 @@ private fun getCustomRewardSchedule(networkId: String): TextReference? { } isCosmos(networkId) -> { combinedReference( + resourceReference(id = R.string.staking_reward_schedule_each_plural, decapitalize = decapitalize), + stringReference(NON_BREAKING_SPACE.toString()), stringReference("${COSMOS_SCHEDULE.first}$MINUS${COSMOS_SCHEDULE.second}$NON_BREAKING_SPACE"), resourceReference(R.string.common_second_no_param), ) } - isTron(networkId) -> pluralReference(R.plurals.common_days_no_param, count = 1) + isTron(networkId) -> resourceReference(id = R.string.staking_reward_schedule_day, decapitalize = decapitalize) else -> null } } \ No newline at end of file