Merge origin/master into feat/apple-typed-resources-and-fixes

Brings in custom relays, relay connection policies, storage cache clearing, and
receiver-failure reporting. Apple-side conflict resolutions:
- CoreRepository: keep CoreDispatcher, adopt master's relay factory + network
  transition guard, drop the now-unused serial queue.
- TransferDetailsView: keep the toolbar-share layout; adopt master's
  invitationPresentation-based QR panel and the new .failed receiver case (typed).
- SettingsModel/SettingsScreen: typed L10n titleKey with master's .network case;
  relay controls and the Free up space / storage redesign coexist.
- Add the missing transfer_receiver_failed localization key.
- Regenerate l10n from the merged strings.json; keep the Apple catalog untracked.
- Drop the notificationsEnabled test assertion (notifications preference was
  intentionally removed on this branch).
This commit is contained in:
2026-07-24 17:48:10 +02:00
80 changed files with 5906 additions and 383 deletions

View File

@@ -170,6 +170,32 @@
<string name="receive_review_title">Revisar transferencia</string>
<string name="receive_title">Recibir</string>
<string name="receive_unknown_transfer">Transferencia de VniDrop</string>
<string name="relay_add_url">Añadir servidor de retransmisión</string>
<string name="relay_apply">Aplicar ajustes de red</string>
<string name="relay_applying">Aplicando…</string>
<string name="relay_apply_active_transfers">Detenga todas las transferencias y elementos compartidos activos antes de aplicar los ajustes de red.</string>
<string name="relay_apply_failed">No se han podido aplicar estos ajustes. Se han restaurado los ajustes de red anteriores.</string>
<string name="relay_apply_restart_description">Al aplicar los ajustes, se reinicia la conexión de red de VniDrop. Detenga primero las transferencias y los elementos compartidos activos. Es posible que tenga que volver a compartir las invitaciones existentes.</string>
<string name="relay_custom_urls_help">Introduzca una URL HTTPS de relé por línea. No se admiten credenciales en las URL. El certificado TLS debe ser emitido por una autoridad de certificación de confianza pública.</string>
<string name="relay_custom_urls_label">URL de relés</string>
<string name="relay_mode_automatic">Automático (recomendado)</string>
<string name="relay_mode_automatic_description">Usa la infraestructura pública de relés predeterminada de VniDrop cuando no haya una conexión directa disponible.</string>
<string name="relay_mode_custom">Personalizado estricto</string>
<string name="relay_mode_custom_description">Usa solo los relés personalizados configurados o conexiones directas. Informa de un error si no se puede establecer ningún relé personalizado.</string>
<string name="relay_mode_custom_direct_fallback">Personalizado con conexión directa de reserva</string>
<string name="relay_mode_custom_direct_fallback_description">Prefiere los relés personalizados configurados. Si no están disponibles, continúa solo con conexiones directas. Nunca usa relés públicos.</string>
<string name="relay_mode_local_only">Solo red local</string>
<string name="relay_mode_local_only_description">Desactiva todos los relés y permite solo conexiones directas, principalmente para dispositivos de la misma red.</string>
<string name="relay_privacy_description">Los relés reenvían tráfico cifrado y no pueden leer sus archivos, pero su operador puede observar los metadatos de conexión.</string>
<string name="relay_remove_url">Eliminar servidor de retransmisión</string>
<string name="relay_restore_failed">No se han podido restaurar los ajustes de red anteriores. Reinicie VniDrop y revise la configuración de relés.</string>
<string name="relay_settings_applied">Ajustes de red aplicados.</string>
<string name="relay_strict_warning">El modo personalizado estricto no se inicia a menos que se pueda acceder al menos a un relé configurado. VniDrop nunca usa relés ni descubrimiento públicos en este modo.</string>
<string name="relay_validation_duplicate_url">La URL de relé de la línea %1$d duplica una entrada anterior.</string>
<string name="relay_validation_https_required">La URL de relé de la línea %1$d debe empezar por https://.</string>
<string name="relay_validation_invalid_url">La URL de relé de la línea %1$d no es válida.</string>
<string name="relay_validation_missing_url">Añada al menos una URL de relé.</string>
<string name="relay_validation_too_many_urls">Puede configurar hasta %1$d servidores de retransmisión.</string>
<string name="send_access_anyone">Cualquiera que tenga esta transferencia</string>
<string name="send_access_anyone_description">No se requiere aprobación. Úselo solo para elementos que no le importe compartir.</string>
<string name="send_access_anyone_warning">Cualquiera que tenga la invitación puede descargar hasta que deje de compartir. No lo use para elementos privados o sensibles.</string>
@@ -193,6 +219,8 @@
<string name="send_transfer_created">Transferencia creada.</string>
<string name="send_transfer_details_title">Detalles de la transferencia</string>
<string name="send_transfers_title">Sus transferencias</string>
<string name="settings_advanced_title">Avanzado</string>
<string name="settings_network_title">Red</string>
<string name="settings_subtitle">Su nombre, dónde se guardan las transferencias, la apariencia y las notificaciones.</string>
<string name="settings_title">Ajustes</string>
<string name="snackbar_dismiss">Descartar</string>
@@ -253,6 +281,7 @@
<string name="transfer_receiver_accepted">Aprobado: esperando a que se complete</string>
<string name="transfer_receiver_completed">Recibido correctamente</string>
<string name="transfer_receiver_expired">Solicitud caducada</string>
<string name="transfer_receiver_failed">Error en la entrega</string>
<string name="transfer_receiver_refused">Solicitud rechazada</string>
<string name="transfer_receiver_requested">Esperando su aprobación</string>
<string name="transfer_receiver_unknown">Estado no disponible</string>
@@ -260,6 +289,7 @@
<string name="transfer_receivers_description">Solicitudes, aprobaciones y entregas completadas</string>
<string name="transfer_receivers_pending">%1$d en espera</string>
<string name="transfer_receivers_title">Destinatarios</string>
<string name="transfer_qr_unavailable">El QR no está disponible para esta invitación. Use Compartir o Descargar.</string>
<string name="transfer_scan_qr">Escanee con VniDrop para recibir esta transferencia</string>
<string name="transfer_share_description">Código QR, archivo de invitación y opciones cercanas</string>
<string name="transfer_share_title">Compartir</string>