fix(android): complete localized gateway trust flows

This commit is contained in:
Vincent Koc
2026-07-01 01:04:12 -07:00
committed by Vincent Koc
parent 844775a6de
commit 2fa4445529
26 changed files with 509 additions and 396 deletions
File diff suppressed because it is too large Load Diff
@@ -106,9 +106,13 @@ fun ConnectTabScreen(viewModel: MainViewModel) {
text = {
val message =
if (prompt.previousFingerprintSha256.isNullOrBlank()) {
"First-time TLS connection.\n\nVerify this SHA-256 fingerprint before trusting:\n${prompt.fingerprintSha256}"
stringResource(R.string.gateway_trust_first_seen, prompt.fingerprintSha256)
} else {
"The gateway TLS certificate changed. Only continue if you expected this.\n\nOld SHA-256 fingerprint:\n${prompt.previousFingerprintSha256}\n\nNew SHA-256 fingerprint:\n${prompt.fingerprintSha256}"
stringResource(
R.string.gateway_trust_changed,
prompt.previousFingerprintSha256,
prompt.fingerprintSha256,
)
}
Text(
message,
@@ -162,8 +166,11 @@ fun ConnectTabScreen(viewModel: MainViewModel) {
Column(verticalArrangement = Arrangement.spacedBy(6.dp)) {
Text(stringResource(R.string.gateway_connection), style = mobileTitle1, color = mobileText)
Text(
if (isConnected) stringResource(R.string.connected_gateway_ready)
else stringResource(R.string.connect_gateway_get_started),
if (isConnected) {
stringResource(R.string.connected_gateway_ready)
} else {
stringResource(R.string.connect_gateway_get_started)
},
style = mobileCallout,
color = mobileTextSecondary,
)
@@ -651,7 +658,11 @@ private fun CommandBlock(command: String) {
private fun EndpointPreview(endpoint: String) {
Column(verticalArrangement = Arrangement.spacedBy(4.dp)) {
HorizontalDivider(color = mobileBorder)
Text("Resolved endpoint", style = mobileCaption1.copy(fontWeight = FontWeight.SemiBold), color = mobileTextSecondary)
Text(
stringResource(R.string.resolved_endpoint),
style = mobileCaption1.copy(fontWeight = FontWeight.SemiBold),
color = mobileTextSecondary,
)
Text(endpoint, style = mobileCallout.copy(fontFamily = FontFamily.Monospace), color = mobileText)
HorizontalDivider(color = mobileBorder)
}
@@ -251,8 +251,18 @@ fun OnboardingFlow(
)
},
text = {
val message =
if (prompt.previousFingerprintSha256.isNullOrBlank()) {
stringResource(R.string.gateway_trust_first_seen, prompt.fingerprintSha256)
} else {
stringResource(
R.string.gateway_trust_changed,
prompt.previousFingerprintSha256,
prompt.fingerprintSha256,
)
}
Text(
"Verify the certificate fingerprint before continuing.\n\n${prompt.fingerprintSha256}",
message,
style = ClawTheme.type.body,
color = ClawTheme.colors.textMuted,
)
@@ -650,7 +660,7 @@ private fun GatewayRecoveryScreen(
ClawScaffold(modifier = modifier, contentPadding = PaddingValues(horizontal = 18.dp, vertical = 16.dp)) {
Column(modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.spacedBy(18.dp)) {
OnboardingHeader(title = stringResource(R.string.gateway_setup), onBack = onBack)
OnboardingHeader(title = stringResource(R.string.gateway_recovery), onBack = onBack)
Spacer(modifier = Modifier.height(12.dp))
Column(modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(12.dp)) {
Icon(
@@ -96,6 +96,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
@@ -325,24 +326,34 @@ private fun GatewayTrustDialog(
) {
val message =
if (prompt.previousFingerprintSha256.isNullOrBlank()) {
"Verify the certificate fingerprint before trusting this gateway.\n\n${prompt.fingerprintSha256}"
stringResource(R.string.gateway_trust_first_seen, prompt.fingerprintSha256)
} else {
"The gateway certificate changed. Continue only if you expected this.\n\nOld SHA-256:\n${prompt.previousFingerprintSha256}\n\nNew SHA-256:\n${prompt.fingerprintSha256}"
stringResource(
R.string.gateway_trust_changed,
prompt.previousFingerprintSha256,
prompt.fingerprintSha256,
)
}
AlertDialog(
onDismissRequest = onDecline,
containerColor = ClawTheme.colors.surfaceRaised,
title = { Text("Trust this gateway?", style = ClawTheme.type.section, color = ClawTheme.colors.text) },
title = {
Text(
stringResource(R.string.trust_this_gateway),
style = ClawTheme.type.section,
color = ClawTheme.colors.text,
)
},
text = { Text(message, style = ClawTheme.type.body, color = ClawTheme.colors.textMuted) },
confirmButton = {
TextButton(onClick = onAccept) {
Text("Trust")
Text(stringResource(R.string.trust_and_continue))
}
},
dismissButton = {
TextButton(onClick = onDecline) {
Text("Cancel")
Text(stringResource(R.string.cancel))
}
},
)
@@ -31,4 +31,7 @@
<string name="connect_manual_url">الاتصال باستخدام عنوان URL يدوي</string>
<string name="permissions">الأذونات</string>
<string name="done">تم</string>
<string name="gateway_trust_first_seen">تحقق من بصمة الشهادة قبل الوثوق بهذه البوابة.\n\n%1$s</string>
<string name="gateway_trust_changed">تم تغيير شهادة البوابة. تابع فقط إذا كنت تتوقع هذا التغيير.\n\nSHA-256 القديم:\n%1$s\n\nSHA-256 الجديد:\n%2$s</string>
<string name="gateway_recovery">استرداد البوابة</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">Über eine manuelle URL verbinden</string>
<string name="permissions">Berechtigungen</string>
<string name="done">Fertig</string>
<string name="gateway_trust_first_seen">Überprüfen Sie den Zertifikatfingerabdruck, bevor Sie diesem Gateway vertrauen.\n\n%1$s</string>
<string name="gateway_trust_changed">Das Gateway-Zertifikat wurde geändert. Fahren Sie nur fort, wenn Sie diese Änderung erwartet haben.\n\nAlter SHA-256-Wert:\n%1$s\n\nNeuer SHA-256-Wert:\n%2$s</string>
<string name="gateway_recovery">Gateway-Wiederherstellung</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">Conectar usando una URL manual</string>
<string name="permissions">Permisos</string>
<string name="done">Listo</string>
<string name="gateway_trust_first_seen">Verifica la huella digital del certificado antes de confiar en este gateway.\n\n%1$s</string>
<string name="gateway_trust_changed">El certificado del gateway cambió. Continúa solo si esperabas este cambio.\n\nSHA-256 anterior:\n%1$s\n\nSHA-256 nuevo:\n%2$s</string>
<string name="gateway_recovery">Recuperación del gateway</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">اتصال با استفاده از URL دستی</string>
<string name="permissions">مجوزها</string>
<string name="done">انجام شد</string>
<string name="gateway_trust_first_seen">پیش از اعتماد به این دروازه، اثر انگشت گواهی را تأیید کنید.\n\n%1$s</string>
<string name="gateway_trust_changed">گواهی دروازه تغییر کرده است. فقط در صورتی ادامه دهید که انتظار این تغییر را داشتید.\n\nSHA-256 قدیمی:\n%1$s\n\nSHA-256 جدید:\n%2$s</string>
<string name="gateway_recovery">بازیابی دروازه</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">Se connecter avec une URL manuelle</string>
<string name="permissions">Autorisations</string>
<string name="done">Terminé</string>
<string name="gateway_trust_first_seen">Vérifiez lempreinte du certificat avant daccorder votre confiance à cette passerelle.\n\n%1$s</string>
<string name="gateway_trust_changed">Le certificat de la passerelle a changé. Continuez uniquement si vous vous attendiez à ce changement.\n\nAncien SHA-256 :\n%1$s\n\nNouveau SHA-256 :\n%2$s</string>
<string name="gateway_recovery">Récupération de la passerelle</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">मैन्युअल URL का उपयोग करके कनेक्ट करें</string>
<string name="permissions">अनुमतियाँ</string>
<string name="done">हो गया</string>
<string name="gateway_trust_first_seen">इस गेटवे पर भरोसा करने से पहले प्रमाणपत्र फ़िंगरप्रिंट सत्यापित करें।\n\n%1$s</string>
<string name="gateway_trust_changed">गेटवे प्रमाणपत्र बदल गया है। केवल तभी जारी रखें जब आपको इस बदलाव की अपेक्षा थी।\n\nपुराना SHA-256:\n%1$s\n\nनया SHA-256:\n%2$s</string>
<string name="gateway_recovery">गेटवे पुनर्प्राप्ति</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">Hubungkan menggunakan URL manual</string>
<string name="permissions">Izin</string>
<string name="done">Selesai</string>
<string name="gateway_trust_first_seen">Verifikasi sidik jari sertifikat sebelum memercayai gateway ini.\n\n%1$s</string>
<string name="gateway_trust_changed">Sertifikat gateway berubah. Lanjutkan hanya jika Anda mengharapkan perubahan ini.\n\nSHA-256 lama:\n%1$s\n\nSHA-256 baru:\n%2$s</string>
<string name="gateway_recovery">Pemulihan gateway</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">Connetti usando un URL manuale</string>
<string name="permissions">Autorizzazioni</string>
<string name="done">Fine</string>
<string name="gateway_trust_first_seen">Verifica limpronta digitale del certificato prima di considerare attendibile questo gateway.\n\n%1$s</string>
<string name="gateway_trust_changed">Il certificato del gateway è cambiato. Continua solo se ti aspettavi questa modifica.\n\nSHA-256 precedente:\n%1$s\n\nNuovo SHA-256:\n%2$s</string>
<string name="gateway_recovery">Ripristino del gateway</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">手動 URL で接続</string>
<string name="permissions">権限</string>
<string name="done">完了</string>
<string name="gateway_trust_first_seen">このゲートウェイを信頼する前に、証明書のフィンガープリントを確認してください。\n\n%1$s</string>
<string name="gateway_trust_changed">ゲートウェイの証明書が変更されました。想定した変更である場合のみ続行してください。\n\n以前の SHA-256:\n%1$s\n\n新しい SHA-256:\n%2$s</string>
<string name="gateway_recovery">ゲートウェイの復旧</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">수동 URL을 사용하여 연결</string>
<string name="permissions">권한</string>
<string name="done">완료</string>
<string name="gateway_trust_first_seen">이 게이트웨이를 신뢰하기 전에 인증서 지문을 확인하세요.\n\n%1$s</string>
<string name="gateway_trust_changed">게이트웨이 인증서가 변경되었습니다. 예상한 변경인 경우에만 계속하세요.\n\n이전 SHA-256:\n%1$s\n\n새 SHA-256:\n%2$s</string>
<string name="gateway_recovery">게이트웨이 복구</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">Verbinden met een handmatige URL</string>
<string name="permissions">Machtigingen</string>
<string name="done">Gereed</string>
<string name="gateway_trust_first_seen">Controleer de certificaatvingerafdruk voordat je deze gateway vertrouwt.\n\n%1$s</string>
<string name="gateway_trust_changed">Het gatewaycertificaat is gewijzigd. Ga alleen door als je deze wijziging verwachtte.\n\nOude SHA-256:\n%1$s\n\nNieuwe SHA-256:\n%2$s</string>
<string name="gateway_recovery">Gatewayherstel</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">Połącz, używając ręcznego URL</string>
<string name="permissions">Uprawnienia</string>
<string name="done">Gotowe</string>
<string name="gateway_trust_first_seen">Sprawdź odcisk certyfikatu, zanim zaufasz tej bramie.\n\n%1$s</string>
<string name="gateway_trust_changed">Certyfikat bramy uległ zmianie. Kontynuuj tylko wtedy, gdy oczekujesz tej zmiany.\n\nStary SHA-256:\n%1$s\n\nNowy SHA-256:\n%2$s</string>
<string name="gateway_recovery">Odzyskiwanie bramy</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">Conectar usando uma URL manual</string>
<string name="permissions">Permissões</string>
<string name="done">Concluído</string>
<string name="gateway_trust_first_seen">Verifique a impressão digital do certificado antes de confiar neste gateway.\n\n%1$s</string>
<string name="gateway_trust_changed">O certificado do gateway foi alterado. Continue somente se você esperava essa alteração.\n\nSHA-256 antigo:\n%1$s\n\nSHA-256 novo:\n%2$s</string>
<string name="gateway_recovery">Recuperação do gateway</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">Подключиться с помощью URL вручную</string>
<string name="permissions">Разрешения</string>
<string name="done">Готово</string>
<string name="gateway_trust_first_seen">Проверьте отпечаток сертификата, прежде чем доверять этому шлюзу.\n\n%1$s</string>
<string name="gateway_trust_changed">Сертификат шлюза изменился. Продолжайте, только если вы ожидали это изменение.\n\nСтарый SHA-256:\n%1$s\n\nНовый SHA-256:\n%2$s</string>
<string name="gateway_recovery">Восстановление шлюза</string>
</resources>
@@ -1,3 +1,37 @@
<resources>
<string name="app_name">OpenClaw-nod</string>
<string name="app_name">OpenClaw Node</string>
<string name="gateway_connection">Gatewayanslutning</string>
<string name="connect_gateway">Anslut gateway</string>
<string name="disconnect">Koppla från</string>
<string name="trust_this_gateway">Lita på denna gateway?</string>
<string name="trust_and_continue">Lita på och fortsätt</string>
<string name="cancel">Avbryt</string>
<string name="endpoint">Slutpunkt</string>
<string name="status">Status</string>
<string name="connected_gateway_ready">Din gateway är aktiv och redo.</string>
<string name="connect_gateway_get_started">Anslut till din gateway för att komma igång.</string>
<string name="copy_report_for_claw">Kopiera rapport för Claw</string>
<string name="advanced_controls">Avancerade kontroller</string>
<string name="connection_method">Anslutningsmetod</string>
<string name="setup_code">Konfigurationskod</string>
<string name="manual">Manuell</string>
<string name="paste_setup_code">Klistra in konfigurationskod</string>
<string name="host">Värd</string>
<string name="use_tls">Använd TLS</string>
<string name="token_optional">Token (valfritt)</string>
<string name="password">Lösenord</string>
<string name="run_onboarding_again">Kör introduktionen igen</string>
<string name="resolved_endpoint">Löst slutpunkt</string>
<string name="gateway_setup">Gateway-konfiguration</string>
<string name="connect_to_gateway">Anslut till din gateway</string>
<string name="scan_setup_code">Skanna konfigurationskod</string>
<string name="use_gateway_qr">Använd gatewayens QR-kod eller konfigurationskod</string>
<string name="nearby_gateway">Gateway i närheten</string>
<string name="enter_gateway_url">Ange gateway-URL</string>
<string name="connect_manual_url">Anslut med en manuell URL</string>
<string name="permissions">Behörigheter</string>
<string name="done">Klar</string>
<string name="gateway_trust_first_seen">Verifiera certifikatets fingeravtryck innan du litar på denna gateway.\n\n%1$s</string>
<string name="gateway_trust_changed">Gateway-certifikatet har ändrats. Fortsätt bara om du förväntade dig denna ändring.\n\nTidigare SHA-256:\n%1$s\n\nNy SHA-256:\n%2$s</string>
<string name="gateway_recovery">Gateway-återställning</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">เชื่อมต่อโดยใช้ URL ด้วยตนเอง</string>
<string name="permissions">สิทธิ์</string>
<string name="done">เสร็จสิ้น</string>
<string name="gateway_trust_first_seen">ตรวจสอบลายนิ้วมือของใบรับรองก่อนเชื่อถือเกตเวย์นี้\n\n%1$s</string>
<string name="gateway_trust_changed">ใบรับรองของเกตเวย์มีการเปลี่ยนแปลง ดำเนินการต่อเมื่อคุณคาดว่าจะมีการเปลี่ยนแปลงนี้เท่านั้น\n\nSHA-256 เดิม:\n%1$s\n\nSHA-256 ใหม่:\n%2$s</string>
<string name="gateway_recovery">การกู้คืนเกตเวย์</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">Manuel URL kullanarak bağlan</string>
<string name="permissions">İzinler</string>
<string name="done">Bitti</string>
<string name="gateway_trust_first_seen">Bu ağ geçidine güvenmeden önce sertifika parmak izini doğrulayın.\n\n%1$s</string>
<string name="gateway_trust_changed">Ağ geçidi sertifikası değişti. Yalnızca bu değişikliği bekliyorsanız devam edin.\n\nEski SHA-256:\n%1$s\n\nYeni SHA-256:\n%2$s</string>
<string name="gateway_recovery">Ağ geçidi kurtarma</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">Підключитися за допомогою URL-адреси вручну</string>
<string name="permissions">Дозволи</string>
<string name="done">Готово</string>
<string name="gateway_trust_first_seen">Перевірте відбиток сертифіката, перш ніж довіряти цьому шлюзу.\n\n%1$s</string>
<string name="gateway_trust_changed">Сертифікат шлюзу змінився. Продовжуйте, лише якщо ви очікували цю зміну.\n\nСтарий SHA-256:\n%1$s\n\nНовий SHA-256:\n%2$s</string>
<string name="gateway_recovery">Відновлення шлюзу</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">Kết nối bằng URL thủ công</string>
<string name="permissions">Quyền</string>
<string name="done">Xong</string>
<string name="gateway_trust_first_seen">Xác minh dấu vân tay chứng chỉ trước khi tin cậy cổng này.\n\n%1$s</string>
<string name="gateway_trust_changed">Chứng chỉ cổng đã thay đổi. Chỉ tiếp tục nếu bạn mong đợi thay đổi này.\n\nSHA-256 cũ:\n%1$s\n\nSHA-256 mới:\n%2$s</string>
<string name="gateway_recovery">Khôi phục cổng</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">使用手动 URL 连接</string>
<string name="permissions">权限</string>
<string name="done">完成</string>
<string name="gateway_trust_first_seen">验证证书指纹后再信任此网关。\n\n%1$s</string>
<string name="gateway_trust_changed">网关证书已更改。仅当这是您预期的更改时才继续。\n\n旧 SHA-256\n%1$s\n\n新 SHA-256\n%2$s</string>
<string name="gateway_recovery">网关恢复</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">使用手動 URL 連接</string>
<string name="permissions">權限</string>
<string name="done">完成</string>
<string name="gateway_trust_first_seen">請先驗證憑證指紋,再信任此閘道。\n\n%1$s</string>
<string name="gateway_trust_changed">閘道憑證已變更。僅在這是您預期的變更時繼續。\n\n舊 SHA-256\n%1$s\n\n新 SHA-256\n%2$s</string>
<string name="gateway_recovery">閘道復原</string>
</resources>
@@ -31,4 +31,7 @@
<string name="connect_manual_url">Connect using a manual URL</string>
<string name="permissions">Permissions</string>
<string name="done">Done</string>
<string name="gateway_trust_first_seen">Verify the certificate fingerprint before trusting this gateway.\n\n%1$s</string>
<string name="gateway_trust_changed">The gateway certificate changed. Continue only if you expected this.\n\nOld SHA-256:\n%1$s\n\nNew SHA-256:\n%2$s</string>
<string name="gateway_recovery">Gateway Recovery</string>
</resources>