fix(client): 补 es/ja/ko/ru 支付文案 + 去掉 pubspec 重复依赖键

HEAD 上客户端编译不过,两处:

1. pay-v2 给 AppText 加了 28 个支付相关 getter,只补了 zh/en,
   es/ja/ko/ru 四个 Strings* 实现类没跟上 → non_abstract_class_
   inherits_abstract_member,flutter analyze/test/build 全挂。
   本次按 zh/en 原文补齐四语(购买/支付方式/USDT 收款/支付宝跳转/
   订单态等 28 条),用词沿用生命周期中文词的对应译法。

2. pubspec.yaml 里 url_launcher 声明了两次(line 23 与 line 30),
   yaml Duplicate mapping key 直接让 flutter 工具链抛异常。删掉
   后加的那条重复声明,保留带原注释的首条。

验证:flutter analyze 仅剩 3 条既有 info;flutter build ios --release
成功并已装到 iPad Pro 真机。(test/golden 34 个失败是既有 UI 漂移,
与本次改动无关——goldens 不涉及 es/ja/ko/ru。)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P9G7E3wmAYL9KeYCVZVsqu
This commit is contained in:
wangjia
2026-07-22 10:38:27 +08:00
parent 74d8c857be
commit d5fc9c1c07
5 changed files with 232 additions and 1 deletions
+58
View File
@@ -370,4 +370,62 @@ class StringsEs extends AppText {
String get ob3Title => 'Privado por diseño';
@override
String get ob3Sub => 'Cifrado de extremo a extremo. No guardamos ningún registro de navegación.';
// ── 支付 / 购买(pay-v2)──
@override
String get purchaseTitle => 'Comprar plan';
@override
String get paymentTitle => 'Pago';
@override
String get buyNow => 'Comprar ahora';
@override
String get payMethodAlipay => 'Alipay';
@override
String get payMethodCrypto => 'USDT (TRC20)';
@override
String get choosePayMethod => 'Elige un método de pago';
@override
String get proMonthly => 'Pro · Mensual';
@override
String get proQuarterly => 'Pro · Trimestral';
@override
String get proYearly => 'Pro · Anual';
@override
String get perQuarter => '/trimestre';
@override
String get perYear => '/año';
@override
String get payAmountLabel => 'Importe';
@override
String get payAddressLabel => 'Dirección';
@override
String get payNetworkLabel => 'Red';
@override
String get payExactAmountHint => 'Envía el importe exacto; se activa automáticamente';
@override
String get copied => 'Copiado';
@override
String get openAlipay => 'Pagar con Alipay';
@override
String get openAlipayHint => 'Vuelve tras pagar; esta página se actualiza sola';
@override
String get openAlipayFailed => 'No se pudo abrir Alipay; comprueba que esté instalado o inténtalo de nuevo';
@override
String get awaitingPayment => 'Esperando el pago';
@override
String get paySucceeded => 'Activado';
@override
String get payExpiresAt => 'Válido hasta';
@override
String get payDone => 'Hecho';
@override
String get payFailed => 'Pago fallido';
@override
String get payRetry => 'Reintentar';
@override
String get switchPayMethod => 'Cambiar de método de pago';
@override
String get cancelOrder => 'Cancelar pedido';
@override
String get qrNotSupported => 'Copia el contenido y ábrelo en Alipay';
}
+58
View File
@@ -370,4 +370,62 @@ class StringsJa extends AppText {
String get ob3Title => '設計段階からプライバシー重視';
@override
String get ob3Sub => 'エンドツーエンドで暗号化。閲覧ログは一切保持しません。';
// ── 支付 / 购买(pay-v2)──
@override
String get purchaseTitle => 'プランを購入';
@override
String get paymentTitle => 'お支払い';
@override
String get buyNow => '今すぐ購入';
@override
String get payMethodAlipay => 'Alipay';
@override
String get payMethodCrypto => 'USDT (TRC20)';
@override
String get choosePayMethod => 'お支払い方法を選択';
@override
String get proMonthly => 'Pro・月額';
@override
String get proQuarterly => 'Pro・3か月';
@override
String get proYearly => 'Pro・年額';
@override
String get perQuarter => '/3か月';
@override
String get perYear => '/年';
@override
String get payAmountLabel => '送金額';
@override
String get payAddressLabel => '送金先アドレス';
@override
String get payNetworkLabel => 'ネットワーク';
@override
String get payExactAmountHint => '表示どおりの金額を送金してください。着金後に自動で有効化されます';
@override
String get copied => 'コピーしました';
@override
String get openAlipay => 'Alipay で支払う';
@override
String get openAlipayHint => 'お支払い後に戻ってください。このページは自動更新されます';
@override
String get openAlipayFailed => 'Alipay を開けませんでした。インストール状況を確認するか、後でもう一度お試しください';
@override
String get awaitingPayment => 'お支払い待ち';
@override
String get paySucceeded => '有効化されました';
@override
String get payExpiresAt => '有効期限';
@override
String get payDone => '完了';
@override
String get payFailed => 'お支払いに失敗しました';
@override
String get payRetry => '再試行';
@override
String get switchPayMethod => '別のお支払い方法にする';
@override
String get cancelOrder => '注文をキャンセル';
@override
String get qrNotSupported => '内容をコピーして Alipay で開いてください';
}
+58
View File
@@ -370,4 +370,62 @@ class StringsKo extends AppText {
String get ob3Title => '설계부터 프라이버시';
@override
String get ob3Sub => '종단 간 암호화. 브라우징 기록을 전혀 저장하지 않습니다.';
// ── 支付 / 购买(pay-v2)──
@override
String get purchaseTitle => '요금제 구매';
@override
String get paymentTitle => '결제';
@override
String get buyNow => '지금 구매';
@override
String get payMethodAlipay => 'Alipay';
@override
String get payMethodCrypto => 'USDT (TRC20)';
@override
String get choosePayMethod => '결제 수단 선택';
@override
String get proMonthly => 'Pro · 월간';
@override
String get proQuarterly => 'Pro · 분기';
@override
String get proYearly => 'Pro · 연간';
@override
String get perQuarter => '/분기';
@override
String get perYear => '/년';
@override
String get payAmountLabel => '송금 금액';
@override
String get payAddressLabel => '받는 주소';
@override
String get payNetworkLabel => '네트워크';
@override
String get payExactAmountHint => '표시된 금액과 정확히 일치하게 보내주세요. 입금 후 자동으로 활성화됩니다';
@override
String get copied => '복사됨';
@override
String get openAlipay => 'Alipay로 결제';
@override
String get openAlipayHint => '결제 후 돌아오세요. 이 페이지는 자동으로 새로고침됩니다';
@override
String get openAlipayFailed => 'Alipay를 열 수 없습니다. 설치 여부를 확인하거나 잠시 후 다시 시도해 주세요';
@override
String get awaitingPayment => '결제 대기 중';
@override
String get paySucceeded => '활성화됨';
@override
String get payExpiresAt => '유효 기간';
@override
String get payDone => '완료';
@override
String get payFailed => '결제 실패';
@override
String get payRetry => '다시 시도';
@override
String get switchPayMethod => '다른 결제 수단 선택';
@override
String get cancelOrder => '주문 취소';
@override
String get qrNotSupported => '내용을 복사한 뒤 Alipay에서 열어주세요';
}
+58
View File
@@ -370,4 +370,62 @@ class StringsRu extends AppText {
String get ob3Title => 'Приватность по умолчанию';
@override
String get ob3Sub => 'Сквозное шифрование. Мы не храним журналы просмотров.';
// ── 支付 / 购买(pay-v2)──
@override
String get purchaseTitle => 'Купить тариф';
@override
String get paymentTitle => 'Оплата';
@override
String get buyNow => 'Купить';
@override
String get payMethodAlipay => 'Alipay';
@override
String get payMethodCrypto => 'USDT (TRC20)';
@override
String get choosePayMethod => 'Выберите способ оплаты';
@override
String get proMonthly => 'Pro · Помесячно';
@override
String get proQuarterly => 'Pro · Ежеквартально';
@override
String get proYearly => 'Pro · Ежегодно';
@override
String get perQuarter => '/квартал';
@override
String get perYear => '/год';
@override
String get payAmountLabel => 'Сумма';
@override
String get payAddressLabel => 'Адрес';
@override
String get payNetworkLabel => 'Сеть';
@override
String get payExactAmountHint => 'Отправьте точную сумму — доступ откроется автоматически';
@override
String get copied => 'Скопировано';
@override
String get openAlipay => 'Оплатить через Alipay';
@override
String get openAlipayHint => 'Вернитесь после оплаты — страница обновится сама';
@override
String get openAlipayFailed => 'Не удалось открыть Alipay. Проверьте, установлен ли он, или повторите позже';
@override
String get awaitingPayment => 'Ожидание оплаты';
@override
String get paySucceeded => 'Активировано';
@override
String get payExpiresAt => 'Действует до';
@override
String get payDone => 'Готово';
@override
String get payFailed => 'Оплата не прошла';
@override
String get payRetry => 'Повторить';
@override
String get switchPayMethod => 'Сменить способ оплаты';
@override
String get cancelOrder => 'Отменить заказ';
@override
String get qrNotSupported => 'Скопируйте данные и откройте в Alipay';
}
-1
View File
@@ -27,7 +27,6 @@ dependencies:
launch_at_startup: ^0.5.1
tray_manager: ^0.5.3
window_manager: ^0.5.1
url_launcher: ^6.3.0 # 支付 redirect(如支付宝)拉起外部浏览器/App
dev_dependencies:
flutter_test: