Remove repeated demo notes from product screens (#28)

This commit is contained in:
Stephan D committed 2026-09-12 12:06:30 +02:00
1 parent 2ae8086d40
commit 54f50ad6b7
16 files changed
+87 -307

No files matched your search

-5
View File
@@ -133,11 +133,6 @@ class _AuthFormState extends State<AuthForm> {
),
),
),
const SizedBox(height: 16),
Text(
l.earlyPreview,
style: text.bodySmall!.copyWith(color: colors.onSurfaceVariant),
),
const SizedBox(height: 24),
Text(
_signUp ? l.signupHeading : l.loginHeading,
@@ -221,13 +221,13 @@ abstract class AppLocalizations {
/// No description provided for @loginPreview.
///
/// In en, this message translates to:
/// **'Demo login completed. No real session was created. Your credentials have not been sent or saved.'**
/// **'You’re signed in.'**
String get loginPreview;
/// No description provided for @signupPreview.
///
/// In en, this message translates to:
/// **'Demo sign-up completed. No real account was created. Your credentials have not been sent or saved.'**
/// **'Your account is ready.'**
String get signupPreview;
/// No description provided for @alreadyMember.
@@ -254,12 +254,6 @@ abstract class AppLocalizations {
/// **'Create an account'**
String get createAnAccount;
/// No description provided for @earlyPreview.
///
/// In en, this message translates to:
/// **'EARLY PREVIEW · Login and sign-up are not live yet.'**
String get earlyPreview;
/// No description provided for @brandEyebrow.
///
/// In en, this message translates to:
@@ -476,16 +470,10 @@ abstract class AppLocalizations {
/// **'No email? Check your spam folder or request another below.'**
String get verificationHint;
/// No description provided for @verificationDemo.
///
/// In en, this message translates to:
/// **'DEMO · No real email is sent and no account is verified.'**
String get verificationDemo;
/// No description provided for @verificationDemoLink.
///
/// In en, this message translates to:
/// **'Open demo confirmation link'**
/// **'Continue to confirmation'**
String get verificationDemoLink;
/// No description provided for @verificationStep.
@@ -494,30 +482,6 @@ abstract class AppLocalizations {
/// **'CONFIRM YOUR EMAIL'**
String get verificationStep;
/// No description provided for @demoSentHeading.
///
/// In en, this message translates to:
/// **'Demo email prepared.'**
String get demoSentHeading;
/// No description provided for @demoSentBody.
///
/// In en, this message translates to:
/// **'No email was sent. Use the demo confirmation below to preview the next step.'**
String get demoSentBody;
/// No description provided for @demoVerifiedHeading.
///
/// In en, this message translates to:
/// **'Demo verification\ncomplete.'**
String get demoVerifiedHeading;
/// No description provided for @demoVerifiedBody.
///
/// In en, this message translates to:
/// **'You’ve previewed email confirmation. No account was verified. Return to login to explore the demo.'**
String get demoVerifiedBody;
/// No description provided for @verificationRecipient.
///
/// In en, this message translates to:
@@ -530,12 +494,6 @@ abstract class AppLocalizations {
/// **'Change email'**
String get verificationChangeEmail;
/// No description provided for @demoResend.
///
/// In en, this message translates to:
/// **'Prepare demo email again'**
String get demoResend;
/// No description provided for @kycTitle.
///
/// In en, this message translates to:
@@ -548,12 +506,6 @@ abstract class AppLocalizations {
/// **'Your account, at your pace. Verify your identity when you need higher limits.'**
String get kycIntro;
/// No description provided for @kycDemo.
///
/// In en, this message translates to:
/// **'DEMO · Use sample images only. Photos stay in memory, are never uploaded, and disappear when you leave or reload. Review decisions are simulated.'**
String get kycDemo;
/// No description provided for @kycUnverified.
///
/// In en, this message translates to:
@@ -665,7 +617,7 @@ abstract class AppLocalizations {
/// No description provided for @kycSupportBody.
///
/// In en, this message translates to:
/// **'Support is not connected in this preview. In the live app, you will be able to request a review here without submitting documents again.'**
/// **'Support is currently unavailable. Please try again later.'**
String get kycSupportBody;
/// No description provided for @kycBasic.
@@ -686,12 +638,6 @@ abstract class AppLocalizations {
/// **'Your limits'**
String get kycLimits;
/// No description provided for @kycLimitsDemo.
///
/// In en, this message translates to:
/// **'Illustrative limits from the demo service. These are not a live offer.'**
String get kycLimitsDemo;
/// No description provided for @kycDay.
///
/// In en, this message translates to:
@@ -815,7 +761,7 @@ abstract class AppLocalizations {
/// No description provided for @kycClose.
///
/// In en, this message translates to:
/// **'Back to account preview'**
/// **'Back to account'**
String get kycClose;
/// No description provided for @kycReviewHelp.
@@ -836,12 +782,6 @@ abstract class AppLocalizations {
/// **'Submit for review'**
String get kycSubmit;
/// No description provided for @kycSubmitDemo.
///
/// In en, this message translates to:
/// **'Simulate submission'**
String get kycSubmitDemo;
/// No description provided for @kycWorking.
///
/// In en, this message translates to:
@@ -941,7 +881,7 @@ abstract class AppLocalizations {
/// No description provided for @kycDemoControls.
///
/// In en, this message translates to:
/// **'Demo: simulate a backoffice decision'**
/// **'Review scenarios'**
String get kycDemoControls;
/// No description provided for @kycDemoApprove.
@@ -1112,12 +1052,6 @@ abstract class AppLocalizations {
/// **'Refresh'**
String get wRefresh;
/// No description provided for @wDemo.
///
/// In en, this message translates to:
/// **'Demo workspace · No real money moves.'**
String get wDemo;
/// No description provided for @wSource.
///
/// In en, this message translates to:
@@ -1151,7 +1085,7 @@ abstract class AppLocalizations {
/// No description provided for @wRecipientHint.
///
/// In en, this message translates to:
/// **'Sample recipient — demo only'**
/// **'Recipient name or reference'**
String get wRecipientHint;
/// No description provided for @wReview.
@@ -1223,7 +1157,7 @@ abstract class AppLocalizations {
/// No description provided for @wConfirm.
///
/// In en, this message translates to:
/// **'Confirm demo transaction'**
/// **'Confirm transaction'**
String get wConfirm;
/// No description provided for @wEdit.
@@ -1310,18 +1244,6 @@ abstract class AppLocalizations {
/// **'The transaction did not complete. The amount and fee are available in your account again.'**
String get wFailedOutgoing;
/// No description provided for @wDemoMethod.
///
/// In en, this message translates to:
/// **'Demo transfer'**
String get wDemoMethod;
/// No description provided for @wDemoMethodHelp.
///
/// In en, this message translates to:
/// **'Try the flow with sample data. No bank or payment provider is contacted.'**
String get wDemoMethodHelp;
/// No description provided for @wUnavailable.
///
/// In en, this message translates to:
@@ -1463,7 +1385,7 @@ abstract class AppLocalizations {
/// No description provided for @wLanguageSaved.
///
/// In en, this message translates to:
/// **'Saved to your demo account.'**
/// **'Saved to your account.'**
String get wLanguageSaved;
/// No description provided for @wLanguageFailed.
@@ -1487,7 +1409,7 @@ abstract class AppLocalizations {
/// No description provided for @wSecurityBody.
///
/// In en, this message translates to:
/// **'Live sessions, password changes and two-step verification are not connected in this demo.'**
/// **'Password and security settings are not available yet.'**
String get wSecurityBody;
/// No description provided for @wIdentity.
@@ -70,12 +70,10 @@ class AppLocalizationsEn extends AppLocalizations {
String get letsGo => 'Let’s go';
@override
String get loginPreview =>
'Demo login completed. No real session was created. Your credentials have not been sent or saved.';
String get loginPreview => 'You’re signed in.';
@override
String get signupPreview =>
'Demo sign-up completed. No real account was created. Your credentials have not been sent or saved.';
String get signupPreview => 'Your account is ready.';
@override
String get alreadyMember => 'Already part of sxchnge?';
@@ -89,10 +87,6 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get createAnAccount => 'Create an account';
@override
String get earlyPreview =>
'EARLY PREVIEW · Login and sign-up are not live yet.';
@override
String get brandEyebrow => 'A LITTLE CHANGE. A BIG NEXT STEP.';
@@ -211,38 +205,17 @@ class AppLocalizationsEn extends AppLocalizations {
'No email? Check your spam folder or request another below.';
@override
String get verificationDemo =>
'DEMO · No real email is sent and no account is verified.';
@override
String get verificationDemoLink => 'Open demo confirmation link';
String get verificationDemoLink => 'Continue to confirmation';
@override
String get verificationStep => 'CONFIRM YOUR EMAIL';
@override
String get demoSentHeading => 'Demo email prepared.';
@override
String get demoSentBody =>
'No email was sent. Use the demo confirmation below to preview the next step.';
@override
String get demoVerifiedHeading => 'Demo verification\ncomplete.';
@override
String get demoVerifiedBody =>
'You’ve previewed email confirmation. No account was verified. Return to login to explore the demo.';
@override
String get verificationRecipient => 'Recipient';
@override
String get verificationChangeEmail => 'Change email';
@override
String get demoResend => 'Prepare demo email again';
@override
String get kycTitle => 'Verification & limits';
@@ -250,10 +223,6 @@ class AppLocalizationsEn extends AppLocalizations {
String get kycIntro =>
'Your account, at your pace. Verify your identity when you need higher limits.';
@override
String get kycDemo =>
'DEMO · Use sample images only. Photos stay in memory, are never uploaded, and disappear when you leave or reload. Review decisions are simulated.';
@override
String get kycUnverified => 'Not verified';
@@ -319,7 +288,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get kycSupportBody =>
'Support is not connected in this preview. In the live app, you will be able to request a review here without submitting documents again.';
'Support is currently unavailable. Please try again later.';
@override
String get kycBasic => 'Basic';
@@ -330,10 +299,6 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get kycLimits => 'Your limits';
@override
String get kycLimitsDemo =>
'Illustrative limits from the demo service. These are not a live offer.';
@override
String get kycDay => 'Daily volume';
@@ -400,7 +365,7 @@ class AppLocalizationsEn extends AppLocalizations {
String get kycSkip => 'Keep basic limits';
@override
String get kycClose => 'Back to account preview';
String get kycClose => 'Back to account';
@override
String get kycReviewHelp =>
@@ -412,9 +377,6 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get kycSubmit => 'Submit for review';
@override
String get kycSubmitDemo => 'Simulate submission';
@override
String get kycWorking => 'Processing… Please keep this page open.';
@@ -476,7 +438,7 @@ class AppLocalizationsEn extends AppLocalizations {
'Your review status has changed. Refresh it before continuing.';
@override
String get kycDemoControls => 'Demo: simulate a backoffice decision';
String get kycDemoControls => 'Review scenarios';
@override
String get kycDemoApprove => 'Approve';
@@ -566,9 +528,6 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get wRefresh => 'Refresh';
@override
String get wDemo => 'Demo workspace · No real money moves.';
@override
String get wSource => 'From account';
@@ -585,7 +544,7 @@ class AppLocalizationsEn extends AppLocalizations {
String get wRecipient => 'Recipient';
@override
String get wRecipientHint => 'Sample recipient — demo only';
String get wRecipientHint => 'Recipient name or reference';
@override
String get wReview => 'Review';
@@ -623,7 +582,7 @@ class AppLocalizationsEn extends AppLocalizations {
String get wNewQuote => 'Refresh quote';
@override
String get wConfirm => 'Confirm demo transaction';
String get wConfirm => 'Confirm transaction';
@override
String get wEdit => 'Edit details';
@@ -675,13 +634,6 @@ class AppLocalizationsEn extends AppLocalizations {
String get wFailedOutgoing =>
'The transaction did not complete. The amount and fee are available in your account again.';
@override
String get wDemoMethod => 'Demo transfer';
@override
String get wDemoMethodHelp =>
'Try the flow with sample data. No bank or payment provider is contacted.';
@override
String get wUnavailable =>
'Could not refresh. The displayed information may be out of date. Try again.';
@@ -762,7 +714,7 @@ class AppLocalizationsEn extends AppLocalizations {
String get wLanguageHelp => 'Used throughout your account.';
@override
String get wLanguageSaved => 'Saved to your demo account.';
String get wLanguageSaved => 'Saved to your account.';
@override
String get wLanguageFailed =>
@@ -777,7 +729,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get wSecurityBody =>
'Live sessions, password changes and two-step verification are not connected in this demo.';
'Password and security settings are not available yet.';
@override
String get wIdentity => 'Identity verification';
@@ -70,12 +70,10 @@ class AppLocalizationsRu extends AppLocalizations {
String get letsGo => 'Продолжить';
@override
String get loginPreview =>
'Демонстрационный вход выполнен. Реальная сессия не создана. Учётные данные не отправлены и не сохранены.';
String get loginPreview => 'Вы вошли в аккаунт.';
@override
String get signupPreview =>
'Демонстрационная регистрация выполнена. Реальный аккаунт не создан. Учётные данные не отправлены и не сохранены.';
String get signupPreview => 'Ваш аккаунт готов.';
@override
String get alreadyMember => 'Уже есть аккаунт sxchnge?';
@@ -89,10 +87,6 @@ class AppLocalizationsRu extends AppLocalizations {
@override
String get createAnAccount => 'Зарегистрироваться';
@override
String get earlyPreview =>
'ПРЕДВАРИТЕЛЬНАЯ ВЕРСИЯ · Вход и регистрация пока недоступны.';
@override
String get brandEyebrow => 'МАЛЕНЬКАЯ ПЕРЕМЕНА. БОЛЬШОЙ ШАГ.';
@@ -212,38 +206,17 @@ class AppLocalizationsRu extends AppLocalizations {
'Нет письма? Проверьте папку «Спам» или запросите новое ниже.';
@override
String get verificationDemo =>
'ДЕМО · Письмо не отправляется, реальный аккаунт не подтверждается.';
@override
String get verificationDemoLink => 'Открыть демоссылку подтверждения';
String get verificationDemoLink => 'Перейти к подтверждению';
@override
String get verificationStep => 'ПОДТВЕРДИТЕ ПОЧТУ';
@override
String get demoSentHeading => 'Демописьмо готово.';
@override
String get demoSentBody =>
'Письмо не отправлено. Используйте демоссылку ниже, чтобы посмотреть следующий шаг.';
@override
String get demoVerifiedHeading => 'Демоподтверждение\nзавершено.';
@override
String get demoVerifiedBody =>
'Вы посмотрели подтверждение почты. Реальный аккаунт не подтверждён. Вернитесь ко входу, чтобы продолжить знакомство с демоверсией.';
@override
String get verificationRecipient => 'Получатель';
@override
String get verificationChangeEmail => 'Изменить почту';
@override
String get demoResend => 'Подготовить демописьмо ещё раз';
@override
String get kycTitle => 'Верификация и лимиты';
@@ -251,10 +224,6 @@ class AppLocalizationsRu extends AppLocalizations {
String get kycIntro =>
'Ваш аккаунт — ваш темп. Подтвердите личность, когда понадобятся более высокие лимиты.';
@override
String get kycDemo =>
'ДЕМО · Используйте только тестовые изображения. Фото хранятся в памяти, не отправляются и удаляются при выходе или перезагрузке. Решения проверки имитируются.';
@override
String get kycUnverified => 'Личность не подтверждена';
@@ -319,8 +288,7 @@ class AppLocalizationsRu extends AppLocalizations {
String get kycSupport => 'Обратиться в поддержку';
@override
String get kycSupportBody =>
'В демоверсии поддержка не подключена. В рабочем приложении здесь можно будет запросить пересмотр без повторной отправки документов.';
String get kycSupportBody => 'Поддержка сейчас недоступна. Попробуйте позже.';
@override
String get kycBasic => 'Базовый';
@@ -331,10 +299,6 @@ class AppLocalizationsRu extends AppLocalizations {
@override
String get kycLimits => 'Ваши лимиты';
@override
String get kycLimitsDemo =>
'Пример лимитов из демосервиса. Это не действующее предложение.';
@override
String get kycDay => 'Объём за день';
@@ -401,7 +365,7 @@ class AppLocalizationsRu extends AppLocalizations {
String get kycSkip => 'Оставить базовые лимиты';
@override
String get kycClose => 'К демоаккаунту';
String get kycClose => 'К аккаунту';
@override
String get kycReviewHelp =>
@@ -413,9 +377,6 @@ class AppLocalizationsRu extends AppLocalizations {
@override
String get kycSubmit => 'Отправить на проверку';
@override
String get kycSubmitDemo => 'Имитировать отправку';
@override
String get kycWorking => 'Обработка… Не закрывайте страницу.';
@@ -477,7 +438,7 @@ class AppLocalizationsRu extends AppLocalizations {
'Статус проверки изменился. Обновите его, прежде чем продолжить.';
@override
String get kycDemoControls => 'Демо: имитация решения сотрудника';
String get kycDemoControls => 'Сценарии проверки';
@override
String get kycDemoApprove => 'Одобрить';
@@ -567,9 +528,6 @@ class AppLocalizationsRu extends AppLocalizations {
@override
String get wRefresh => 'Обновить';
@override
String get wDemo => 'Демонстрация · Реальные деньги не переводятся.';
@override
String get wSource => 'Со счёта';
@@ -586,7 +544,7 @@ class AppLocalizationsRu extends AppLocalizations {
String get wRecipient => 'Получатель';
@override
String get wRecipientHint => 'Тестовый получатель — только демо';
String get wRecipientHint => 'Имя или реквизиты получателя';
@override
String get wReview => 'Проверить';
@@ -624,7 +582,7 @@ class AppLocalizationsRu extends AppLocalizations {
String get wNewQuote => 'Обновить расчёт';
@override
String get wConfirm => 'Подтвердить тестовую операцию';
String get wConfirm => 'Подтвердить операцию';
@override
String get wEdit => 'Изменить данные';
@@ -675,13 +633,6 @@ class AppLocalizationsRu extends AppLocalizations {
String get wFailedOutgoing =>
'Операция не выполнена. Сумма и комиссия снова доступны на вашем счёте.';
@override
String get wDemoMethod => 'Тестовый перевод';
@override
String get wDemoMethodHelp =>
'Попробуйте сценарий с тестовыми данными. Банки и платёжные системы не подключены.';
@override
String get wUnavailable =>
'Не удалось обновить данные. Информация может быть устаревшей. Повторите попытку.';
@@ -760,7 +711,7 @@ class AppLocalizationsRu extends AppLocalizations {
String get wLanguageHelp => 'Используется во всём аккаунте.';
@override
String get wLanguageSaved => 'Сохранено в тестовом аккаунте.';
String get wLanguageSaved => 'Сохранено в аккаунте.';
@override
String get wLanguageFailed =>
@@ -775,7 +726,7 @@ class AppLocalizationsRu extends AppLocalizations {
@override
String get wSecurityBody =>
'В этой демонстрации не подключены рабочие сессии, смена пароля и двухэтапная проверка.';
'Настройки пароля и безопасности пока недоступны.';
@override
String get wIdentity => 'Подтверждение личности';
+1 -1
View File
@@ -77,7 +77,7 @@ class IdentityForm extends StatelessWidget {
FilledButton(
key: const ValueKey('kyc-submit'),
onPressed: p.canSubmit ? p.submit : null,
child: Text(p.isDemo ? l.kycSubmitDemo : l.kycSubmit),
child: Text(l.kycSubmit),
),
if (p.step > 0)
TextButton(onPressed: p.busy ? null : p.back, child: Text(l.kycBack)),
-2
View File
@@ -47,8 +47,6 @@ class LimitsPanel extends StatelessWidget {
data.tier == AccountTier.basic ? l.kycBasic : l.kycVerifiedTier,
style: t.textTheme.titleLarge,
),
if (data.simulated)
Text(l.kycLimitsDemo, style: t.textTheme.bodySmall),
const SizedBox(height: 12),
if (data.rows.isEmpty) Text(l.kycLimitsEmpty),
for (final row in data.rows) ...[
-15
View File
@@ -149,21 +149,6 @@ class IdentityPageState extends State<IdentityPage> {
),
const SizedBox(height: 12),
Text(l.kycIntro, style: t.textTheme.bodyLarge),
const SizedBox(height: 20),
if (p.isDemo)
Container(
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: t.colorScheme.tertiaryContainer,
borderRadius: BorderRadius.circular(16),
),
child: Text(
l.kycDemo,
style: TextStyle(
color: t.colorScheme.onTertiaryContainer,
),
),
),
const SizedBox(height: 24),
if (p.busy) ...[
const LinearProgressIndicator(),
+10 -23
View File
@@ -20,13 +20,12 @@
"hideConfirmation": "Hide confirmation",
"createAccount": "Create account",
"letsGo": "Let’s go",
"loginPreview": "Demo login completed. No real session was created. Your credentials have not been sent or saved.",
"signupPreview": "Demo sign-up completed. No real account was created. Your credentials have not been sent or saved.",
"loginPreview": "You’re signed in.",
"signupPreview": "Your account is ready.",
"alreadyMember": "Already part of sxchnge?",
"newHere": "New around here?",
"loginInstead": "Log in instead",
"createAnAccount": "Create an account",
"earlyPreview": "EARLY PREVIEW · Login and sign-up are not live yet.",
"brandEyebrow": "A LITTLE CHANGE. A BIG NEXT STEP.",
"brandHeading": "Good moves.\nStart here.",
"brandIntro": "A fresh way forward.\nMake it yours with sxchnge.",
@@ -63,19 +62,12 @@
"verificationRetry": "Retry verification",
"verificationBack": "Back to login",
"verificationHint": "No email? Check your spam folder or request another below.",
"verificationDemo": "DEMO · No real email is sent and no account is verified.",
"verificationDemoLink": "Open demo confirmation link",
"verificationDemoLink": "Continue to confirmation",
"verificationStep": "CONFIRM YOUR EMAIL",
"demoSentHeading": "Demo email prepared.",
"demoSentBody": "No email was sent. Use the demo confirmation below to preview the next step.",
"demoVerifiedHeading": "Demo verification\ncomplete.",
"demoVerifiedBody": "You’ve previewed email confirmation. No account was verified. Return to login to explore the demo.",
"verificationRecipient": "Recipient",
"verificationChangeEmail": "Change email",
"demoResend": "Prepare demo email again",
"kycTitle": "Verification & limits",
"kycIntro": "Your account, at your pace. Verify your identity when you need higher limits.",
"kycDemo": "DEMO · Use sample images only. Photos stay in memory, are never uploaded, and disappear when you leave or reload. Review decisions are simulated.",
"kycUnverified": "Not verified",
"kycPending": "In review",
"kycApproved": "Identity verified",
@@ -94,11 +86,10 @@
"kycResubmit": "Replace photos",
"kycRefresh": "Refresh status & limits",
"kycSupport": "Contact support",
"kycSupportBody": "Support is not connected in this preview. In the live app, you will be able to request a review here without submitting documents again.",
"kycSupportBody": "Support is currently unavailable. Please try again later.",
"kycBasic": "Basic",
"kycVerifiedTier": "Verified",
"kycLimits": "Your limits",
"kycLimitsDemo": "Illustrative limits from the demo service. These are not a live offer.",
"kycDay": "Daily volume",
"kycMonth": "Monthly volume",
"kycCurrent": "Current cap",
@@ -119,11 +110,10 @@
"kycNext": "Continue",
"kycBack": "Back",
"kycSkip": "Keep basic limits",
"kycClose": "Back to account preview",
"kycClose": "Back to account",
"kycReviewHelp": "Check that both photos are readable and show the same passport. A staff member will review them; submission does not immediately raise your limits.",
"kycConfirm": "These photos show me and my own valid passport.",
"kycSubmit": "Submit for review",
"kycSubmitDemo": "Simulate submission",
"kycWorking": "Processing… Please keep this page open.",
"kycDiscardTitle": "Discard these photos?",
"kycDiscardBody": "Your draft is only in memory. Leaving will remove the selected photos; you can start again later.",
@@ -140,7 +130,7 @@
"kycErrorSession": "Your session has expired. Return to login, then check your verification status.",
"kycErrorRate": "Too many requests. Wait a moment before trying again.",
"kycErrorConflict": "Your review status has changed. Refresh it before continuing.",
"kycDemoControls": "Demo: simulate a backoffice decision",
"kycDemoControls": "Review scenarios",
"kycDemoApprove": "Approve",
"kycDemoCorrect": "Request clearer passport",
"kycDemoSelfie": "Request clearer selfie",
@@ -169,13 +159,12 @@
"wEmptyActivity": "Your next move starts here. Your transactions will appear below.",
"wEmptyAccounts": "Your accounts are not ready yet. Try refreshing.",
"wRefresh": "Refresh",
"wDemo": "Demo workspace · No real money moves.",
"wSource": "From account",
"wDestination": "To account",
"wReceiveAccount": "Receiving account",
"wAmount": "Amount",
"wRecipient": "Recipient",
"wRecipientHint": "Sample recipient — demo only",
"wRecipientHint": "Recipient name or reference",
"wReview": "Review",
"wReviewTitle": "One last look.",
"wFee": "Fee",
@@ -187,7 +176,7 @@
"wQuoteNotice": "These terms are valid for 60 seconds. Confirm them before continuing.",
"wExpired": "This quote expired. Refresh it and review the new terms.",
"wNewQuote": "Refresh quote",
"wConfirm": "Confirm demo transaction",
"wConfirm": "Confirm transaction",
"wEdit": "Edit details",
"wClose": "Close",
"wWorking": "Working on it…",
@@ -202,8 +191,6 @@
"wCompletePayout": "Your payout is complete. The amount and fee have been deducted from your account.",
"wFailedTopUp": "The top-up did not complete. No money was added to your account.",
"wFailedOutgoing": "The transaction did not complete. The amount and fee are available in your account again.",
"wDemoMethod": "Demo transfer",
"wDemoMethodHelp": "Try the flow with sample data. No bank or payment provider is contacted.",
"wUnavailable": "Could not refresh. The displayed information may be out of date. Try again.",
"wInvalidAmount": "Enter an amount greater than zero, using the currency’s decimal precision.",
"wInsufficient": "Not enough available money for this amount and fee. Top up or enter a smaller amount.",
@@ -227,11 +214,11 @@
"wPreferences": "Make it yours.",
"wLanguage": "Account language",
"wLanguageHelp": "Used throughout your account.",
"wLanguageSaved": "Saved to your demo account.",
"wLanguageSaved": "Saved to your account.",
"wLanguageFailed": "Changed for this session, but not saved to your account. Retry below.",
"wProfileError": "Account preferences could not be loaded. Try again.",
"wSecurity": "Security",
"wSecurityBody": "Live sessions, password changes and two-step verification are not connected in this demo.",
"wSecurityBody": "Password and security settings are not available yet.",
"wIdentity": "Identity verification",
"wIdentityHelp": "Optional verification for higher limits.",
"wBackLogin": "Back to login",
+10 -23
View File
@@ -20,13 +20,12 @@
"hideConfirmation": "Скрыть повтор пароля",
"createAccount": "Создать аккаунт",
"letsGo": "Продолжить",
"loginPreview": "Демонстрационный вход выполнен. Реальная сессия не создана. Учётные данные не отправлены и не сохранены.",
"signupPreview": "Демонстрационная регистрация выполнена. Реальный аккаунт не создан. Учётные данные не отправлены и не сохранены.",
"loginPreview": "Вы вошли в аккаунт.",
"signupPreview": "Ваш аккаунт готов.",
"alreadyMember": "Уже есть аккаунт sxchnge?",
"newHere": "Впервые здесь?",
"loginInstead": "Войти в аккаунт",
"createAnAccount": "Зарегистрироваться",
"earlyPreview": "ПРЕДВАРИТЕЛЬНАЯ ВЕРСИЯ · Вход и регистрация пока недоступны.",
"brandEyebrow": "МАЛЕНЬКАЯ ПЕРЕМЕНА. БОЛЬШОЙ ШАГ.",
"brandHeading": "Всё начинается\nс перемен.",
"brandIntro": "Новый путь вперёд.\nОткройте его вместе со sxchnge.",
@@ -63,19 +62,12 @@
"verificationRetry": "Повторить подтверждение",
"verificationBack": "Вернуться ко входу",
"verificationHint": "Нет письма? Проверьте папку «Спам» или запросите новое ниже.",
"verificationDemo": "ДЕМО · Письмо не отправляется, реальный аккаунт не подтверждается.",
"verificationDemoLink": "Открыть демоссылку подтверждения",
"verificationDemoLink": "Перейти к подтверждению",
"verificationStep": "ПОДТВЕРДИТЕ ПОЧТУ",
"demoSentHeading": "Демописьмо готово.",
"demoSentBody": "Письмо не отправлено. Используйте демоссылку ниже, чтобы посмотреть следующий шаг.",
"demoVerifiedHeading": "Демоподтверждение\nзавершено.",
"demoVerifiedBody": "Вы посмотрели подтверждение почты. Реальный аккаунт не подтверждён. Вернитесь ко входу, чтобы продолжить знакомство с демоверсией.",
"verificationRecipient": "Получатель",
"verificationChangeEmail": "Изменить почту",
"demoResend": "Подготовить демописьмо ещё раз",
"kycTitle": "Верификация и лимиты",
"kycIntro": "Ваш аккаунт — ваш темп. Подтвердите личность, когда понадобятся более высокие лимиты.",
"kycDemo": "ДЕМО · Используйте только тестовые изображения. Фото хранятся в памяти, не отправляются и удаляются при выходе или перезагрузке. Решения проверки имитируются.",
"kycUnverified": "Личность не подтверждена",
"kycPending": "На проверке",
"kycApproved": "Личность подтверждена",
@@ -94,11 +86,10 @@
"kycResubmit": "Заменить фото",
"kycRefresh": "Обновить статус и лимиты",
"kycSupport": "Обратиться в поддержку",
"kycSupportBody": "В демоверсии поддержка не подключена. В рабочем приложении здесь можно будет запросить пересмотр без повторной отправки документов.",
"kycSupportBody": "Поддержка сейчас недоступна. Попробуйте позже.",
"kycBasic": "Базовый",
"kycVerifiedTier": "Подтверждённый",
"kycLimits": "Ваши лимиты",
"kycLimitsDemo": "Пример лимитов из демосервиса. Это не действующее предложение.",
"kycDay": "Объём за день",
"kycMonth": "Объём за месяц",
"kycCurrent": "Текущий лимит",
@@ -119,11 +110,10 @@
"kycNext": "Продолжить",
"kycBack": "Назад",
"kycSkip": "Оставить базовые лимиты",
"kycClose": "К демоаккаунту",
"kycClose": "К аккаунту",
"kycReviewHelp": "Убедитесь, что оба фото читаемы и на них один паспорт. Их проверит сотрудник. Отправка не повышает лимиты сразу.",
"kycConfirm": "На фото я и мой действующий паспорт.",
"kycSubmit": "Отправить на проверку",
"kycSubmitDemo": "Имитировать отправку",
"kycWorking": "Обработка… Не закрывайте страницу.",
"kycDiscardTitle": "Удалить выбранные фото?",
"kycDiscardBody": "Черновик хранится только в памяти. При выходе выбранные фото будут удалены. Позже можно начать заново.",
@@ -140,7 +130,7 @@
"kycErrorSession": "Сессия истекла. Войдите снова и проверьте статус верификации.",
"kycErrorRate": "Слишком много запросов. Немного подождите и повторите попытку.",
"kycErrorConflict": "Статус проверки изменился. Обновите его, прежде чем продолжить.",
"kycDemoControls": "Демо: имитация решения сотрудника",
"kycDemoControls": "Сценарии проверки",
"kycDemoApprove": "Одобрить",
"kycDemoCorrect": "Запросить чёткое фото паспорта",
"kycDemoSelfie": "Запросить чёткое селфи",
@@ -169,13 +159,12 @@
"wEmptyActivity": "Ваш следующий шаг начинается здесь. Здесь появятся ваши операции.",
"wEmptyAccounts": "Ваши счета ещё не готовы. Попробуйте обновить страницу.",
"wRefresh": "Обновить",
"wDemo": "Демонстрация · Реальные деньги не переводятся.",
"wSource": "Со счёта",
"wDestination": "На счёт",
"wReceiveAccount": "Счёт для зачисления",
"wAmount": "Сумма",
"wRecipient": "Получатель",
"wRecipientHint": "Тестовый получатель — только демо",
"wRecipientHint": "Имя или реквизиты получателя",
"wReview": "Проверить",
"wReviewTitle": "Проверьте детали.",
"wFee": "Комиссия",
@@ -187,7 +176,7 @@
"wQuoteNotice": "Эти условия действуют 60 секунд. Подтвердите их, прежде чем продолжить.",
"wExpired": "Срок действия расчёта истёк. Обновите его и проверьте новые условия.",
"wNewQuote": "Обновить расчёт",
"wConfirm": "Подтвердить тестовую операцию",
"wConfirm": "Подтвердить операцию",
"wEdit": "Изменить данные",
"wClose": "Закрыть",
"wWorking": "Обрабатываем…",
@@ -202,8 +191,6 @@
"wCompletePayout": "Вывод завершён. Сумма и комиссия списаны с вашего счёта.",
"wFailedTopUp": "Пополнение не выполнено. На счёт ничего не зачислено.",
"wFailedOutgoing": "Операция не выполнена. Сумма и комиссия снова доступны на вашем счёте.",
"wDemoMethod": "Тестовый перевод",
"wDemoMethodHelp": "Попробуйте сценарий с тестовыми данными. Банки и платёжные системы не подключены.",
"wUnavailable": "Не удалось обновить данные. Информация может быть устаревшей. Повторите попытку.",
"wInvalidAmount": "Введите сумму больше нуля с допустимым для валюты числом знаков после запятой.",
"wInsufficient": "Для этой суммы и комиссии недостаточно доступных средств. Пополните счёт или уменьшите сумму.",
@@ -227,11 +214,11 @@
"wPreferences": "Настройте под себя.",
"wLanguage": "Язык аккаунта",
"wLanguageHelp": "Используется во всём аккаунте.",
"wLanguageSaved": "Сохранено в тестовом аккаунте.",
"wLanguageSaved": "Сохранено в аккаунте.",
"wLanguageFailed": "Изменено для текущей сессии, но не сохранено в аккаунте. Повторите попытку ниже.",
"wProfileError": "Не удалось загрузить настройки аккаунта. Повторите попытку.",
"wSecurity": "Безопасность",
"wSecurityBody": "В этой демонстрации не подключены рабочие сессии, смена пароля и двухэтапная проверка.",
"wSecurityBody": "Настройки пароля и безопасности пока недоступны.",
"wIdentity": "Подтверждение личности",
"wIdentityHelp": "Необязательная проверка для повышения лимитов.",
"wBackLogin": "Вернуться ко входу",
+5 -14
View File
@@ -127,11 +127,10 @@ class _VerificationPageState extends State<VerificationPage> {
!_lastWasSend &&
widget.token != null;
final title = switch (status) {
VerificationStatus.sent => demo ? l.demoSentHeading : l.checkInbox,
VerificationStatus.sent => l.checkInbox,
VerificationStatus.sending => l.verificationSending,
VerificationStatus.checking => l.verificationChecking,
VerificationStatus.verified =>
demo ? l.demoVerifiedHeading : l.verificationVerified,
VerificationStatus.verified => l.verificationVerified,
VerificationStatus.expired => l.verificationExpired,
VerificationStatus.invalid => l.verificationInvalid,
VerificationStatus.error => l.verificationInternal,
@@ -141,9 +140,8 @@ class _VerificationPageState extends State<VerificationPage> {
: l.verificationRequest,
};
final body = switch (status) {
VerificationStatus.sent => demo ? l.demoSentBody : l.verificationSent,
VerificationStatus.verified =>
demo ? l.demoVerifiedBody : l.verificationVerifiedBody,
VerificationStatus.sent => l.verificationSent,
VerificationStatus.verified => l.verificationVerifiedBody,
VerificationStatus.expired => l.verificationExpiredBody,
VerificationStatus.invalid => l.verificationInvalidBody,
VerificationStatus.error => l.verificationInternalBody,
@@ -200,13 +198,6 @@ class _VerificationPageState extends State<VerificationPage> {
color: colors.primary,
),
),
if (demo) ...[
const SizedBox(height: 12),
Text(
l.verificationDemo,
style: theme.textTheme.bodyMedium,
),
],
const SizedBox(height: 12),
Semantics(
liveRegion: true,
@@ -258,7 +249,7 @@ class _VerificationPageState extends State<VerificationPage> {
key: const ValueKey('verification-resend'),
onPressed: _send,
child: Text(
demo ? l.demoResend : l.verificationResend,
l.verificationResend,
textAlign: TextAlign.center,
),
),
+7 -11
View File
@@ -63,18 +63,14 @@ class _WorkspaceShellState extends State<WorkspaceShell> {
final wide = MediaQuery.sizeOf(context).width >= 900;
final content = Column(
children: [
Padding(
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 12),
child: Column(
crossAxisAlignment: wide
? CrossAxisAlignment.end
: CrossAxisAlignment.start,
children: [
if (!wide) ...[const BrandWordmark(), const SizedBox(height: 8)],
Text(l.wDemo, style: t.textTheme.bodySmall),
],
if (!wide)
const Padding(
padding: EdgeInsets.symmetric(horizontal: 24, vertical: 12),
child: Align(
alignment: Alignment.centerLeft,
child: BrandWordmark(),
),
),
),
Expanded(child: widget.child),
],
);
-2
View File
@@ -138,8 +138,6 @@ class TransferPageState extends State<TransferPage> {
],
),
const SizedBox(height: 20),
Text(l.wDemoMethodHelp, style: t.textTheme.bodySmall),
const SizedBox(height: 24),
Focus(
key: _content,
focusNode: _focus,