CAKE-356 | added isYatDevMode parameter to the yat_alert.dart; deleted yat_webview_page.dart and yat_view_model.dart; applied localization of Yat to the app

wownero
OleksandrSobol 3 years ago
parent 455efeb91f
commit cdddc12c81

@ -45,7 +45,6 @@ import 'package:cake_wallet/src/screens/unspent_coins/unspent_coins_list_page.da
import 'package:cake_wallet/src/screens/wallet_keys/wallet_keys_page.dart';
import 'package:cake_wallet/src/screens/exchange/exchange_page.dart';
import 'package:cake_wallet/src/screens/exchange/exchange_template_page.dart';
import 'package:cake_wallet/src/screens/yat/yat_webview_page.dart';
import 'package:cake_wallet/store/dashboard/orders_store.dart';
import 'package:cake_wallet/store/node_list_store.dart';
import 'package:cake_wallet/store/secret_store.dart';
@ -99,7 +98,6 @@ import 'package:cake_wallet/view_model/wallet_list/wallet_list_view_model.dart';
import 'package:cake_wallet/view_model/wallet_restore_view_model.dart';
import 'package:cake_wallet/view_model/wallet_seed_view_model.dart';
import 'package:cake_wallet/view_model/exchange/exchange_view_model.dart';
import 'package:cake_wallet/view_model/yat_view_model.dart';
import 'package:flutter/widgets.dart';
import 'package:get_it/get_it.dart';
import 'package:hive/hive.dart';
@ -636,15 +634,5 @@ Future setup(
param2: unspentCoinsListViewModel));
});
getIt.registerFactory(() => YatViewModel(
yatStore: getIt.get<YatStore>()
));
getIt.registerFactoryParam<YatWebViewPage, YatMode, void>((YatMode mode, _) =>
YatWebViewPage(
mode: mode,
yatViewModel: getIt.get<YatViewModel>(),
));
_isSetupFinished = true;
}

@ -1,5 +1,4 @@
import 'dart:async';
import 'package:cake_wallet/bitcoin/unspent_coins_info.dart';
import 'package:cake_wallet/entities/language_service.dart';
import 'package:cake_wallet/buy/order.dart';
@ -205,10 +204,8 @@ class AppState extends State<App> with SingleTickerProviderStateMixin {
try {
final uri = await getInitialUri();
if (uri == null) {
print('Error: no initial uri');
return;
}
print('got initial uri: $uri');
if (!mounted) return;
_fetchEmojiFromUri(uri, yatStore);
} catch (e) {
@ -221,7 +218,6 @@ class AppState extends State<App> with SingleTickerProviderStateMixin {
if (!kIsWeb) {
stream = getUriLinksStream().listen((Uri uri) {
if (!mounted) return;
print('got uri: $uri');
_fetchEmojiFromUri(uri, yatStore);
}, onError: (Object error) {
if (!mounted) return;
@ -285,53 +281,3 @@ class AppState extends State<App> with SingleTickerProviderStateMixin {
});
}
}
/*class App extends StatelessWidget {
App() {
SystemChrome.setPreferredOrientations(
[DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
}
@override
Widget build(BuildContext context) {
return Observer(builder: (BuildContext context) {
final settingsStore = getIt.get<AppStore>().settingsStore;
final statusBarColor = Colors.transparent;
final authenticationStore = getIt.get<AuthenticationStore>();
final initialRoute =
authenticationStore.state == AuthenticationState.denied
? Routes.disclaimer
: Routes.login;
final currentTheme = settingsStore.currentTheme;
final statusBarBrightness = currentTheme.type == ThemeType.dark
? Brightness.light
: Brightness.dark;
final statusBarIconBrightness = currentTheme.type == ThemeType.dark
? Brightness.light
: Brightness.dark;
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarColor: statusBarColor,
statusBarBrightness: statusBarBrightness,
statusBarIconBrightness: statusBarIconBrightness));
return Root(
authenticationStore: authenticationStore,
navigatorKey: navigatorKey,
child: MaterialApp(
navigatorKey: navigatorKey,
debugShowCheckedModeBanner: false,
theme: settingsStore.theme,
localizationsDelegates: [
S.delegate,
GlobalCupertinoLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: S.delegate.supportedLocales,
locale: Locale(settingsStore.languageCode),
onGenerateRoute: (settings) => Router.createRoute(settings),
initialRoute: initialRoute,
));
});
}
}*/

@ -13,7 +13,6 @@ import 'package:cake_wallet/src/screens/seed/pre_seed_page.dart';
import 'package:cake_wallet/src/screens/support/support_page.dart';
import 'package:cake_wallet/src/screens/unspent_coins/unspent_coins_details_page.dart';
import 'package:cake_wallet/src/screens/unspent_coins/unspent_coins_list_page.dart';
import 'package:cake_wallet/src/screens/yat/yat_webview_page.dart';
import 'package:cake_wallet/store/settings_store.dart';
import 'package:cake_wallet/view_model/buy/buy_view_model.dart';
import 'package:cake_wallet/view_model/monero_account_list/account_list_item.dart';
@ -380,11 +379,6 @@ Route<dynamic> createRoute(RouteSettings settings) {
getIt.get<UnspentCoinsDetailsPage>(
param1: args));
case Routes.yat:
return MaterialPageRoute<void>(
builder: (_) =>
getIt.get<YatWebViewPage>(param1: settings.arguments as YatMode));
default:
return MaterialPageRoute<void>(
builder: (_) => Scaffold(

@ -57,5 +57,4 @@ class Routes {
static const buyWebView = '/buy_web_view';
static const unspentCoinsList = '/unspent_coins_list';
static const unspentCoinsDetails = '/unspent_coins_details';
static const yat = '/yat';
}

@ -150,7 +150,7 @@ class QRWidget extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'Yat Address',
S.of(context).yat_address,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 13,

@ -18,8 +18,8 @@ void showAddressAlert(BuildContext context, ParsedAddress parsedAddress) async {
content = S.of(context).openalias_alert_content(parsedAddress.name);
break;
case ParseFrom.yatRecord:
title = 'Address detected';
content = 'This address is from ${parsedAddress.name} on Yat';
title = S.of(context).address_detected;
content = S.of(context).address_from_yat(parsedAddress.name);
break;
case ParseFrom.notParsed:
return;

@ -1,17 +1,22 @@
import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/screens/yat/widgets/yat_bar.dart';
import 'package:cake_wallet/src/screens/yat/yat_webview_page.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart';
import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:cake_wallet/palette.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:cake_wallet/generated/i18n.dart';
class YatAlert extends StatelessWidget {
YatAlert({this.isYatDevMode = false})
: baseUrl = isYatDevMode ? _baseDevUrl : _baseReleaseUrl;
final bool isYatDevMode;
final String baseUrl;
static const aspectRatioImage = 1.133;
static const _baseUrl = 'https://y.at';
static const _signInSuffix = '/partner/CW/link';
static const _baseDevUrl = 'https://yat.fyi';
static const _baseReleaseUrl = 'https://y.at';
static const _signInSuffix = '/partner/CW/link-email';
static const _createSuffix = '/create';
final image = Image.asset('assets/images/yat_crypto.png');
@ -42,7 +47,7 @@ class YatAlert extends StatelessWidget {
child: Column(
children: [
Text(
'Send and receive crypto more easily with Yat',
S.of(context).yat_alert_title,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 24,
@ -55,7 +60,7 @@ class YatAlert extends StatelessWidget {
Padding(
padding: EdgeInsets.only(top: 20),
child: Text(
'Cake Wallet users can now send and receive all their favorite currencies with a one-of-a-kind emoji-based username.',
S.of(context).yat_alert_content,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 16,
@ -76,7 +81,7 @@ class YatAlert extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.center,
children: [
PrimaryIconButton(
text: 'Get your Yat',
text: S.of(context).get_your_yat,
textColor: Colors.white,
color: Palette.protectiveBlue,
borderColor: Palette.protectiveBlue,
@ -86,15 +91,13 @@ class YatAlert extends StatelessWidget {
.arrow_up_right_square,
mainAxisAlignment: MainAxisAlignment.end,
onPressed: () {
//Navigator.of(context)
// .popAndPushNamed(Routes.yat, arguments: YatMode.create);
final url = _baseUrl + _createSuffix;
final url = baseUrl + _createSuffix;
launch(url);
}),
Padding(
padding: EdgeInsets.only(top: 24),
child: PrimaryIconButton(
text: 'Connect an existing Yat',
text: S.of(context).connect_an_existing_yat,
textColor: Colors.black,
color: Palette.blueAlice,
borderColor: Palette.blueAlice,
@ -104,9 +107,7 @@ class YatAlert extends StatelessWidget {
.arrow_up_right_square,
mainAxisAlignment: MainAxisAlignment.end,
onPressed: () {
//Navigator.of(context)
// .popAndPushNamed(Routes.yat, arguments: YatMode.connect);
final url = _baseUrl + _signInSuffix;
final url = baseUrl + _signInSuffix;
launch(url);
})
)

@ -1,117 +0,0 @@
import 'dart:async';
import 'dart:io';
import 'package:cake_wallet/palette.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/view_model/yat_view_model.dart';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
enum YatMode {create, connect}
class YatWebViewPage extends BasePage {
YatWebViewPage({this.yatViewModel, this.mode});
final YatMode mode;
final YatViewModel yatViewModel;
@override
String get title => 'Yat';
@override
Color get backgroundDarkColor => Colors.white;
@override
Color get titleColor => Palette.darkBlueCraiola;
@override
Widget body(BuildContext context) => YatWebViewPageBody(yatViewModel, mode);
}
class YatWebViewPageBody extends StatefulWidget{
YatWebViewPageBody(this.yatViewModel, this.mode);
final YatMode mode;
final YatViewModel yatViewModel;
@override
YatWebViewPageBodyState createState() =>
YatWebViewPageBodyState(yatViewModel, mode);
}
class YatWebViewPageBodyState extends State<YatWebViewPageBody> {
YatWebViewPageBodyState(this.yatViewModel, this.mode) {
switch (mode) {
case YatMode.create:
url = _baseUrl + _createSuffix;
break;
case YatMode.connect:
url = _baseUrl + _signInSuffix;
break;
default:
url = _baseUrl + _createSuffix;
}
}
static const _baseUrl = 'https://yat.fyi';
static const _signInSuffix = '/sign-in';
static const _createSuffix = '/create';
final YatMode mode;
final YatViewModel yatViewModel;
String url;
WebViewController _webViewController;
GlobalKey _webViewkey;
Timer _timer;
@override
void initState() {
super.initState();
_webViewkey = GlobalKey();
if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
WidgetsBinding.instance.addPostFrameCallback(_afterLayout);
}
@override
void dispose() {
super.dispose();
_timer?.cancel();
}
@override
Widget build(BuildContext context) {
return WebView(
key: _webViewkey,
initialUrl: url,
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController controller) =>
setState(() => _webViewController = controller));
}
void _afterLayout(dynamic _) {
_fetchYatInfo();
}
void _fetchYatInfo() {
final keyword = 'dashboard';
_timer?.cancel();
_timer = Timer.periodic(Duration(seconds: 1), (timer) async {
try {
if (_webViewController == null) {
return;
}
final url = await _webViewController.currentUrl();
print('URL = $url');
if (url.contains(keyword)) {
timer.cancel();
await yatViewModel.fetchCartInfo();
Navigator.of(context).pop();
}
} catch (e) {
print(e);
}
});
}
}

@ -157,12 +157,12 @@ abstract class SettingsViewModelBase with Store {
],
[
RegularListItem(
title: 'Manage Yats',
title: S.current.manage_yats,
handler: (BuildContext context) async {
await showPopUp<void>(
context: context,
builder: (BuildContext context) {
return YatAlert();
return YatAlert(isYatDevMode: true);
});
},
),

@ -1,39 +0,0 @@
import 'package:cake_wallet/store/yat_store.dart';
import 'package:flutter/foundation.dart';
import 'package:mobx/mobx.dart';
import 'dart:convert';
import 'package:cake_wallet/yat/yat_exception.dart';
import 'package:http/http.dart';
import 'package:cake_wallet/.secrets.g.dart' as secrets;
part 'yat_view_model.g.dart';
class YatViewModel = YatViewModelBase with _$YatViewModel;
abstract class YatViewModelBase with Store {
YatViewModelBase({@required this.yatStore});
final YatStore yatStore;
Future<void> fetchCartInfo() async {
final url = 'https://a.y.at/cart';
final _apiKey = secrets.yatApiToken;
final response = await get(
url,
headers: {
'Accept':'*/*',
'X-Api-Key': _apiKey
}
);
print('RESPONSE = ${response.body.toString()}');
/*if (response.statusCode != 200) {
throw YatException(text: response.body.toString());
}
final responseJSON = json.decode(response.body) as Map<String, dynamic>;
yatStore.yatAddress = responseJSON[''] as String;*/ // FIXME
}
}

@ -494,5 +494,13 @@
"address_detected" : "Adresse erkannt",
"address_from_domain" : "Diese Adresse ist von ${domain} auf Unstoppable Domains",
"add_receiver" : "Fügen Sie einen weiteren Empfänger hinzu (optional)"
"add_receiver" : "Fügen Sie einen weiteren Empfänger hinzu (optional)",
"manage_yats" : "Yats verwalten",
"yat_alert_title" : "Senden und Empfangen von Krypto leichter mit Yat",
"yat_alert_content" : "Cake Wallet-Benutzer können jetzt alle ihre Lieblingswährungen mit einem einzigartigen Emoji-basierten Benutzernamen senden und empfangen.",
"get_your_yat" : "Holen Sie sich Ihre Yat",
"connect_an_existing_yat" : "Verbinden Sie ein vorhandenes Yat",
"yat_address" : "Yat-Adresse",
"address_from_yat" : "Diese Adresse ist von ${emoji} auf Yat"
}

@ -494,5 +494,13 @@
"address_detected" : "Address detected",
"address_from_domain" : "This address is from ${domain} on Unstoppable Domains",
"add_receiver" : "Add another receiver (optional)"
"add_receiver" : "Add another receiver (optional)",
"manage_yats" : "Manage Yats",
"yat_alert_title" : "Send and receive crypto more easily with Yat",
"yat_alert_content" : "Cake Wallet users can now send and receive all their favorite currencies with a one-of-a-kind emoji-based username.",
"get_your_yat" : "Get your Yat",
"connect_an_existing_yat" : "Connect an existing Yat",
"yat_address" : "Yat Address",
"address_from_yat" : "This address is from ${emoji} on Yat"
}

@ -494,5 +494,13 @@
"address_detected" : "Dirección detectada",
"address_from_domain" : "Esta dirección es de ${domain} en Unstoppable Domains",
"add_receiver" : "Agregar otro receptor (opcional)"
"add_receiver" : "Agregar otro receptor (opcional)",
"manage_yats" : "Administrar Yats",
"yat_alert_title" : "Envíe y reciba criptomonedas más fácilmente con Yat",
"yat_alert_content" : "Los usuarios de Cake Wallet ahora pueden enviar y recibir todas sus monedas favoritas con un nombre de usuario único basado en emoji.",
"get_your_yat" : "Obtén tu Yat",
"connect_an_existing_yat" : "Conectar un Yat existente",
"yat_address" : "Dirección de Yat",
"address_from_yat" : "Esta dirección es de ${emoji} en Yat"
}

@ -494,5 +494,13 @@
"address_detected" : "पता लग गया",
"address_from_domain" : "यह पता ${domain} से है Unstoppable Domains",
"add_receiver" : "एक और रिसीवर जोड़ें (वैकल्पिक)"
"add_receiver" : "एक और रिसीवर जोड़ें (वैकल्पिक)",
"manage_yats" : "Yats प्रबंधित करें",
"yat_alert_title" : "के साथ अधिक आसानी से क्रिप्टो भेजें और प्राप्त करें Yat",
"yat_alert_content" : "Cake Wallet उपयोगकर्ता अब अपनी सभी पसंदीदा मुद्राओं को एक-एक तरह के इमोजी-आधारित उपयोगकर्ता नाम के साथ भेज और प्राप्त कर सकते हैं।",
"get_your_yat" : "अपना प्राप्त करें Yat",
"connect_an_existing_yat" : "मौजूदा Yat कनेक्ट करें",
"yat_address" : "Yat पता",
"address_from_yat" : "यह पता ${emoji} से है Yat"
}

@ -494,5 +494,13 @@
"address_detected" : "Adresa je otkrivena",
"address_from_domain" : "To je adresa od ${domain} na Unstoppable Domains",
"add_receiver" : "Dodajte drugi prijemnik (izborno)"
"add_receiver" : "Dodajte drugi prijemnik (izborno)",
"manage_yats" : "Upravljanje Yat",
"yat_alert_title" : "Lakše šaljite i primajte kriptovalute s Yatom",
"yat_alert_content" : "Korisnici Cake Wallet sada mogu slati i primati sve svoje omiljene valute s jedinstvenim korisničkim imenom na temelju emojija.",
"get_your_yat" : "Uzmi svoj Yat",
"connect_an_existing_yat" : "Povežite postojeći Yat",
"yat_address" : "Yat adresa",
"address_from_yat" : "To je adresa od ${emoji} na Yat"
}

@ -494,5 +494,13 @@
"address_detected" : "Indirizzo rilevato",
"address_from_domain" : "Questo indirizzo è da ${domain} in poi Unstoppable Domains",
"add_receiver" : "Aggiungi un altro ricevitore (opzionale)"
"add_receiver" : "Aggiungi un altro ricevitore (opzionale)",
"manage_yats" : "Gestisci Yats",
"yat_alert_title" : "Invia e ricevi criptovalute più facilmente con Yat",
"yat_alert_content" : "Gli utenti di Cake Wallet possono ora inviare e ricevere tutte le loro valute preferite con un nome utente unico basato su emoji.",
"get_your_yat" : "Ottieni il tuo Yat",
"connect_an_existing_yat" : "Collegare un Yat esistente",
"yat_address" : "Indirizzo Yat",
"address_from_yat" : "Questo indirizzo è da ${emoji} in poi Yat"
}

@ -494,5 +494,13 @@
"address_detected" : "アドレスが検出されました",
"address_from_domain" : "このアドレスは ${domain} からのものです Unstoppable Domains",
"add_receiver" : "別のレシーバーを追加します(オプション)"
"add_receiver" : "別のレシーバーを追加します(オプション)",
"manage_yats" : "Yatsを管理する",
"yat_alert_title" : "Yatで暗号をより簡単に送受信できます",
"yat_alert_content" : "Cake Walletユーザーは、独自の絵文字ベースのユーザー名を使用して、お気に入りのすべての通貨を送受信できるようになりました。",
"get_your_yat" : "あなたのYatを入手してください",
"connect_an_existing_yat" : "既存のYatを接続します",
"yat_address" : "Yat 住所",
"address_from_yat" : "このアドレスは ${emoji} からのものです Yat"
}

@ -494,5 +494,13 @@
"address_detected" : "주소 감지",
"address_from_domain" : "이 주소는 ${domain} 의 주소입니다 Unstoppable Domains",
"add_receiver" : "다른 수신기 추가(선택 사항)"
"add_receiver" : "다른 수신기 추가(선택 사항)",
"manage_yats" : "관리하다 Yats",
"yat_alert_title" : "Yat으로 더 쉽게 암호화폐를 보내고 받으십시오.",
"yat_alert_content" : "Cake Wallet 사용자는 이제 독특한 이모티콘 기반 사용자 이름으로 좋아하는 모든 통화를 보내고 받을 수 있습니다.",
"get_your_yat" : "당신의 Yat를 얻으십시오",
"connect_an_existing_yat" : "기존 Yat 연결",
"yat_address" : "Yat 주소",
"address_from_yat" : "이 주소는 ${emoji} 의 주소입니다 Yat"
}

@ -494,5 +494,13 @@
"address_detected" : "Adres gedetecteerd",
"address_from_domain" : "Dit adres is van ${domain} op Unstoppable Domains",
"add_receiver" : "Nog een ontvanger toevoegen (optioneel)"
"add_receiver" : "Nog een ontvanger toevoegen (optioneel)",
"manage_yats" : "Yats beheren",
"yat_alert_title" : "Verzend en ontvang crypto gemakkelijker met Yat",
"yat_alert_content" : "Cake Wallet-gebruikers kunnen nu al hun favoriete valuta's verzenden en ontvangen met een unieke emoji-gebaseerde gebruikersnaam.",
"get_your_yat" : "Haal je Yato",
"connect_an_existing_yat" : "Verbind een bestaande Yat",
"yat_address" : "Yat-adres",
"address_from_yat" : "Dit adres is van ${emoji} op Yat"
}

@ -494,5 +494,13 @@
"address_detected" : "Wykryto adres",
"address_from_domain" : "Ten adres jest od ${domain} na Unstoppable Domains",
"add_receiver" : "Dodaj kolejny odbiornik (opcjonalnie)"
"add_receiver" : "Dodaj kolejny odbiornik (opcjonalnie)",
"manage_yats" : "Zarządzaj Yats",
"yat_alert_title" : "Łatwiejsze wysyłanie i odbieranie kryptowalut dzięki Yat",
"yat_alert_content" : "Użytkownicy Cake Wallet mogą teraz wysyłać i odbierać wszystkie swoje ulubione waluty za pomocą jedynej w swoim rodzaju nazwy użytkownika opartej na emoji.",
"get_your_yat" : "Zdobądź swój Yat",
"connect_an_existing_yat" : "Podłącz istniejący Yat",
"yat_address" : "Adres Yat",
"address_from_yat" : "Ten adres jest od ${emoji} na Yat"
}

@ -494,5 +494,13 @@
"address_detected" : "Endereço detectado",
"address_from_domain" : "Este endereço é de ${domain} em Unstoppable Domains",
"add_receiver" : "Adicione outro receptor (opcional)"
"add_receiver" : "Adicione outro receptor (opcional)",
"manage_yats" : "Gerenciar Yats",
"yat_alert_title" : "Envie e receba criptografia mais facilmente com Yat",
"yat_alert_content" : "Os usuários da Cake Wallet agora podem enviar e receber todas as suas moedas favoritas com um nome de usuário baseado em emoji único.",
"get_your_yat" : "Pegue seu Yat",
"connect_an_existing_yat" : "Conecte um Yat existente",
"yat_address" : "Endereço Yat",
"address_from_yat" : "Este endereço é de ${emoji} em Yat"
}

@ -494,5 +494,13 @@
"address_detected" : "Обнаружен адрес",
"address_from_domain" : "Этот адрес от ${domain} на Unstoppable Domains",
"add_receiver" : "Добавить получателя (необязательно)"
"add_receiver" : "Добавить получателя (необязательно)",
"manage_yats" : "Управлять Yat",
"yat_alert_title" : "С Yat проще отправлять и получать криптовалюту",
"yat_alert_content" : "Пользователи Cake Wallet теперь могут отправлять и получать криптовалюту при помощи уникального имени пользователя на основе эмодзи.",
"get_your_yat" : "Получить свой Yat",
"connect_an_existing_yat" : "Подключить существующий Yat",
"yat_address" : "Yat адрес",
"address_from_yat" : "Этот адрес от ${emoji} на Yat"
}

@ -494,5 +494,13 @@
"address_detected" : "Виявлено адресу",
"address_from_domain" : "Ця адреса від ${domain} на Unstoppable Domains",
"add_receiver" : "Додати одержувача (необов'язково)"
"add_receiver" : "Додати одержувача (необов'язково)",
"manage_yats" : "Керувати Yat",
"yat_alert_title" : "За допомогою Yat легше надсилати та отримувати криптовалюту",
"yat_alert_content" : "Користувачі Cake Wallet тепер можуть надсилати та отримувати криптовалюту за допомогою унікального імені користувача на основі смайликів.",
"get_your_yat" : "Одержати свій Yat",
"connect_an_existing_yat" : "Підключити існуючий Yat",
"yat_address" : "Yat адреса",
"address_from_yat" : "Ця адреса від ${emoji} на Yat"
}

@ -494,5 +494,13 @@
"address_detected" : "檢測到地址",
"address_from_domain" : "此地址來自 Unstoppable Domains 上的 ${domain}",
"add_receiver" : "添加另一個接收器(可選)"
"add_receiver" : "添加另一個接收器(可選)",
"manage_yats" : "管理 Yats",
"yat_alert_title" : "使用 Yat 更輕鬆地發送和接收加密貨幣",
"yat_alert_content" : "Cake Wallet 用戶現在可以使用獨一無二的基於表情符號的用戶名發送和接收他們喜歡的所有貨幣。",
"get_your_yat" : "得到你的 Yat",
"connect_an_existing_yat" : "連接現有 Yat",
"yat_address" : "Yat 地址",
"address_from_yat" : "此地址來自 Yat 上的 ${emoji}"
}
Loading…
Cancel
Save