mirror of
https://github.com/dz0ny/meshcore-sar.git
synced 2026-08-11 16:30:28 +00:00
- Updated `app_localizations_sl.dart` with new strings for trail management, device information, and error messages. - Enhanced `app_sl.arb` with corresponding translations for the new strings. - Refactored `device_config_screen.dart` to utilize localized strings for device information and error handling. - Modified `map_tab.dart` to remove unused trail stats overlay. - Improved `ble_response_handler.dart` to include additional debug information for parsed contacts and advertisements. - Updated `trail_controls.dart` to use localized strings for trail management UI, including trail visibility toggle and confirmation dialogs.
1237 lines
29 KiB
Dart
1237 lines
29 KiB
Dart
// ignore: unused_import
|
|
import 'package:intl/intl.dart' as intl;
|
|
import 'app_localizations.dart';
|
|
|
|
// ignore_for_file: type=lint
|
|
|
|
/// The translations for Spanish Castilian (`es`).
|
|
class AppLocalizationsEs extends AppLocalizations {
|
|
AppLocalizationsEs([String locale = 'es']) : super(locale);
|
|
|
|
@override
|
|
String get appTitle => 'MeshCore SAR';
|
|
|
|
@override
|
|
String get messages => 'Mensajes';
|
|
|
|
@override
|
|
String get contacts => 'Contactos';
|
|
|
|
@override
|
|
String get map => 'Mapa';
|
|
|
|
@override
|
|
String get settings => 'Configuración';
|
|
|
|
@override
|
|
String get connect => 'Conectar';
|
|
|
|
@override
|
|
String get disconnect => 'Desconectar';
|
|
|
|
@override
|
|
String get scanningForDevices => 'Buscando dispositivos...';
|
|
|
|
@override
|
|
String get noDevicesFound => 'No se encontraron dispositivos';
|
|
|
|
@override
|
|
String get scanAgain => 'Buscar de nuevo';
|
|
|
|
@override
|
|
String get tapToConnect => 'Toca para conectar';
|
|
|
|
@override
|
|
String get deviceNotConnected => 'Dispositivo no conectado';
|
|
|
|
@override
|
|
String get locationPermissionDenied => 'Permiso de ubicación denegado';
|
|
|
|
@override
|
|
String get locationPermissionPermanentlyDenied =>
|
|
'Permiso de ubicación denegado permanentemente. Por favor, actívalo en Configuración.';
|
|
|
|
@override
|
|
String get locationPermissionRequired =>
|
|
'El permiso de ubicación es necesario para el seguimiento GPS y la coordinación del equipo. Puedes activarlo más tarde en Configuración.';
|
|
|
|
@override
|
|
String get locationServicesDisabled =>
|
|
'Los servicios de ubicación están desactivados. Por favor, actívalos en Configuración.';
|
|
|
|
@override
|
|
String get failedToGetGpsLocation => 'Error al obtener la ubicación GPS';
|
|
|
|
@override
|
|
String advertisedAtLocation(String latitude, String longitude) {
|
|
return 'Anunciado en $latitude, $longitude';
|
|
}
|
|
|
|
@override
|
|
String failedToAdvertise(String error) {
|
|
return 'Error al anunciar: $error';
|
|
}
|
|
|
|
@override
|
|
String reconnecting(int attempt, int max) {
|
|
return 'Reconectando... ($attempt/$max)';
|
|
}
|
|
|
|
@override
|
|
String get cancelReconnection => 'Cancelar reconexión';
|
|
|
|
@override
|
|
String get mapManagement => 'Gestión de mapas';
|
|
|
|
@override
|
|
String get general => 'General';
|
|
|
|
@override
|
|
String get theme => 'Tema';
|
|
|
|
@override
|
|
String get chooseTheme => 'Elegir tema';
|
|
|
|
@override
|
|
String get light => 'Claro';
|
|
|
|
@override
|
|
String get dark => 'Oscuro';
|
|
|
|
@override
|
|
String get blueLightTheme => 'Tema azul claro';
|
|
|
|
@override
|
|
String get blueDarkTheme => 'Tema azul oscuro';
|
|
|
|
@override
|
|
String get sarRed => 'SAR Rojo';
|
|
|
|
@override
|
|
String get alertEmergencyMode => 'Modo de alerta/emergencia';
|
|
|
|
@override
|
|
String get sarGreen => 'SAR Verde';
|
|
|
|
@override
|
|
String get safeAllClearMode => 'Modo seguro/todo despejado';
|
|
|
|
@override
|
|
String get autoSystem => 'Auto (Sistema)';
|
|
|
|
@override
|
|
String get followSystemTheme => 'Seguir el tema del sistema';
|
|
|
|
@override
|
|
String get showRxTxIndicators => 'Mostrar indicadores RX/TX';
|
|
|
|
@override
|
|
String get displayPacketActivity =>
|
|
'Mostrar indicadores de actividad de paquetes en la barra superior';
|
|
|
|
@override
|
|
String get language => 'Idioma';
|
|
|
|
@override
|
|
String get chooseLanguage => 'Elegir idioma';
|
|
|
|
@override
|
|
String get english => 'Inglés';
|
|
|
|
@override
|
|
String get slovenian => 'Esloveno';
|
|
|
|
@override
|
|
String get croatian => 'Croata';
|
|
|
|
@override
|
|
String get locationBroadcasting => 'Difusión de ubicación';
|
|
|
|
@override
|
|
String get autoLocationTracking => 'Seguimiento automático de ubicación';
|
|
|
|
@override
|
|
String get automaticallyBroadcastPosition =>
|
|
'Difundir automáticamente actualizaciones de posición';
|
|
|
|
@override
|
|
String get configureTracking => 'Configurar seguimiento';
|
|
|
|
@override
|
|
String get distanceAndTimeThresholds => 'Umbrales de distancia y tiempo';
|
|
|
|
@override
|
|
String get locationTrackingConfiguration =>
|
|
'Configuración de seguimiento de ubicación';
|
|
|
|
@override
|
|
String get configureWhenLocationBroadcasts =>
|
|
'Configurar cuándo se envían difusiones de ubicación a la red mesh';
|
|
|
|
@override
|
|
String get minimumDistance => 'Distancia mínima';
|
|
|
|
@override
|
|
String broadcastAfterMoving(String distance) {
|
|
return 'Difundir solo después de moverse $distance metros';
|
|
}
|
|
|
|
@override
|
|
String get maximumDistance => 'Distancia máxima';
|
|
|
|
@override
|
|
String alwaysBroadcastAfterMoving(String distance) {
|
|
return 'Siempre difundir después de moverse $distance metros';
|
|
}
|
|
|
|
@override
|
|
String get minimumTimeInterval => 'Intervalo de tiempo mínimo';
|
|
|
|
@override
|
|
String alwaysBroadcastEvery(String duration) {
|
|
return 'Siempre difundir cada $duration';
|
|
}
|
|
|
|
@override
|
|
String get save => 'Guardar';
|
|
|
|
@override
|
|
String get cancel => 'Cancelar';
|
|
|
|
@override
|
|
String get close => 'Cerrar';
|
|
|
|
@override
|
|
String get about => 'Acerca de';
|
|
|
|
@override
|
|
String get appVersion => 'Versión de la aplicación';
|
|
|
|
@override
|
|
String get appName => 'Nombre de la aplicación';
|
|
|
|
@override
|
|
String get aboutMeshCoreSar => 'Acerca de MeshCore SAR';
|
|
|
|
@override
|
|
String get aboutDescription =>
|
|
'Una aplicación de Búsqueda y Rescate diseñada para equipos de respuesta a emergencias. Las características incluyen:\n\n• Red mesh BLE para comunicación entre dispositivos\n• Mapas sin conexión con múltiples opciones de capas\n• Seguimiento en tiempo real de miembros del equipo\n• Marcadores tácticos SAR (persona encontrada, fuego, zona de preparación)\n• Gestión de contactos y mensajería\n• Seguimiento GPS con rumbo de brújula\n• Caché de teselas de mapa para uso sin conexión';
|
|
|
|
@override
|
|
String get technologiesUsed => 'Tecnologías utilizadas:';
|
|
|
|
@override
|
|
String get technologiesList =>
|
|
'• Flutter para desarrollo multiplataforma\n• BLE (Bluetooth Low Energy) para redes mesh\n• OpenStreetMap para mapas\n• Provider para gestión de estado\n• SharedPreferences para almacenamiento local';
|
|
|
|
@override
|
|
String get developer => 'Desarrollador';
|
|
|
|
@override
|
|
String get packageName => 'Nombre del paquete';
|
|
|
|
@override
|
|
String get sampleData => 'Datos de muestra';
|
|
|
|
@override
|
|
String get sampleDataDescription =>
|
|
'Cargar o borrar contactos de muestra, mensajes de canal y marcadores SAR para pruebas';
|
|
|
|
@override
|
|
String get loadSampleData => 'Cargar datos de muestra';
|
|
|
|
@override
|
|
String get clearAllData => 'Borrar todos los datos';
|
|
|
|
@override
|
|
String get clearAllDataConfirmTitle => 'Borrar todos los datos';
|
|
|
|
@override
|
|
String get clearAllDataConfirmMessage =>
|
|
'Esto borrará todos los contactos y marcadores SAR. ¿Estás seguro?';
|
|
|
|
@override
|
|
String get clear => 'Borrar';
|
|
|
|
@override
|
|
String loadedSampleData(
|
|
int teamCount,
|
|
int channelCount,
|
|
int sarCount,
|
|
int messageCount,
|
|
) {
|
|
return 'Cargados $teamCount miembros del equipo, $channelCount canales, $sarCount marcadores SAR, $messageCount mensajes';
|
|
}
|
|
|
|
@override
|
|
String failedToLoadSampleData(String error) {
|
|
return 'Error al cargar datos de muestra: $error';
|
|
}
|
|
|
|
@override
|
|
String get allDataCleared => 'Todos los datos borrados';
|
|
|
|
@override
|
|
String get failedToStartBackgroundTracking =>
|
|
'Error al iniciar el seguimiento en segundo plano. Verifica los permisos y la conexión BLE.';
|
|
|
|
@override
|
|
String locationBroadcast(String latitude, String longitude) {
|
|
return 'Difusión de ubicación: $latitude, $longitude';
|
|
}
|
|
|
|
@override
|
|
String get defaultPinInfo =>
|
|
'El PIN predeterminado para dispositivos sin pantalla es 123456. ¿Problemas para emparejar? Olvida el dispositivo bluetooth en la configuración del sistema.';
|
|
|
|
@override
|
|
String get noMessagesYet => 'Aún no hay mensajes';
|
|
|
|
@override
|
|
String get pullDownToSync => 'Desliza hacia abajo para sincronizar mensajes';
|
|
|
|
@override
|
|
String get deleteContact => 'Eliminar contacto';
|
|
|
|
@override
|
|
String get delete => 'Eliminar';
|
|
|
|
@override
|
|
String get viewOnMap => 'Ver en el mapa';
|
|
|
|
@override
|
|
String get refresh => 'Actualizar';
|
|
|
|
@override
|
|
String get sendDirectMessage => 'Enviar mensaje directo';
|
|
|
|
@override
|
|
String get resetPath => 'Restablecer ruta (Re-enrutar)';
|
|
|
|
@override
|
|
String get publicKeyCopied => 'Clave pública copiada al portapapeles';
|
|
|
|
@override
|
|
String copiedToClipboard(String label) {
|
|
return '$label copiado al portapapeles';
|
|
}
|
|
|
|
@override
|
|
String get pleaseEnterPassword => 'Por favor, introduce una contraseña';
|
|
|
|
@override
|
|
String failedToSyncContacts(String error) {
|
|
return 'Error al sincronizar contactos: $error';
|
|
}
|
|
|
|
@override
|
|
String get loggedInSuccessfully =>
|
|
'¡Inicio de sesión exitoso! Esperando mensajes de la sala...';
|
|
|
|
@override
|
|
String get loginFailed => 'Error de inicio de sesión - contraseña incorrecta';
|
|
|
|
@override
|
|
String loggingIn(String roomName) {
|
|
return 'Iniciando sesión en $roomName...';
|
|
}
|
|
|
|
@override
|
|
String failedToSendLogin(String error) {
|
|
return 'Error al enviar inicio de sesión: $error';
|
|
}
|
|
|
|
@override
|
|
String get lowLocationAccuracy => 'Baja precisión de ubicación';
|
|
|
|
@override
|
|
String get continue_ => 'Continuar';
|
|
|
|
@override
|
|
String get sendSarMarker => 'Enviar marcador SAR';
|
|
|
|
@override
|
|
String get deleteDrawing => 'Eliminar dibujo';
|
|
|
|
@override
|
|
String get drawLine => 'Dibujar línea';
|
|
|
|
@override
|
|
String get drawLineDesc => 'Dibujar una línea a mano alzada en el mapa';
|
|
|
|
@override
|
|
String get drawRectangle => 'Dibujar rectángulo';
|
|
|
|
@override
|
|
String get drawRectangleDesc => 'Dibujar un área rectangular en el mapa';
|
|
|
|
@override
|
|
String get shareDrawings => 'Compartir dibujos';
|
|
|
|
@override
|
|
String get clearAllDrawings => 'Borrar todos los dibujos';
|
|
|
|
@override
|
|
String get clearAll => 'Borrar todo';
|
|
|
|
@override
|
|
String get noLocalDrawings => 'No hay dibujos locales para compartir';
|
|
|
|
@override
|
|
String get publicChannel => 'Canal público';
|
|
|
|
@override
|
|
String get broadcastToAll => 'Difundir a todos los nodos cercanos (efímero)';
|
|
|
|
@override
|
|
String get storedPermanently => 'Almacenado permanentemente en la sala';
|
|
|
|
@override
|
|
String get notConnectedToDevice => 'No conectado al dispositivo';
|
|
|
|
@override
|
|
String get directMessage => 'Mensaje directo';
|
|
|
|
@override
|
|
String directMessageSentTo(String contactName) {
|
|
return 'Mensaje directo enviado a $contactName';
|
|
}
|
|
|
|
@override
|
|
String failedToSend(String error) {
|
|
return 'Error al enviar: $error';
|
|
}
|
|
|
|
@override
|
|
String directMessageInfo(String contactName) {
|
|
return 'Este mensaje se enviará directamente a $contactName. También aparecerá en el feed de mensajes principal.';
|
|
}
|
|
|
|
@override
|
|
String get typeYourMessage => 'Escribe tu mensaje...';
|
|
|
|
@override
|
|
String get quickLocationMarker => 'Marcador de ubicación rápida';
|
|
|
|
@override
|
|
String get markerType => 'Tipo de marcador';
|
|
|
|
@override
|
|
String get sendTo => 'Enviar a';
|
|
|
|
@override
|
|
String get noDestinationsAvailable => 'No hay destinos disponibles.';
|
|
|
|
@override
|
|
String get selectDestination => 'Seleccionar destino...';
|
|
|
|
@override
|
|
String get ephemeralBroadcastInfo =>
|
|
'Efímero: Solo difusión por el aire. No se almacena - los nodos deben estar en línea.';
|
|
|
|
@override
|
|
String get persistentRoomInfo =>
|
|
'Persistente: Almacenado de manera inmutable en la sala. Se sincroniza automáticamente y se conserva sin conexión.';
|
|
|
|
@override
|
|
String get location => 'Ubicación';
|
|
|
|
@override
|
|
String get fromMap => 'Desde el mapa';
|
|
|
|
@override
|
|
String get gettingLocation => 'Obteniendo ubicación...';
|
|
|
|
@override
|
|
String get locationError => 'Error de ubicación';
|
|
|
|
@override
|
|
String get retry => 'Reintentar';
|
|
|
|
@override
|
|
String get refreshLocation => 'Actualizar ubicación';
|
|
|
|
@override
|
|
String accuracyMeters(int accuracy) {
|
|
return 'Precisión: ±${accuracy}m';
|
|
}
|
|
|
|
@override
|
|
String get notesOptional => 'Notas (opcional)';
|
|
|
|
@override
|
|
String get addAdditionalInformation => 'Agregar información adicional...';
|
|
|
|
@override
|
|
String lowAccuracyWarning(int accuracy) {
|
|
return 'La precisión de la ubicación es ±${accuracy}m. Esto puede no ser lo suficientemente preciso para operaciones SAR.\n\n¿Continuar de todos modos?';
|
|
}
|
|
|
|
@override
|
|
String get loginToRoom => 'Iniciar sesión en la sala';
|
|
|
|
@override
|
|
String get enterPasswordInfo =>
|
|
'Introduce la contraseña para acceder a esta sala. La contraseña se guardará para uso futuro.';
|
|
|
|
@override
|
|
String get password => 'Contraseña';
|
|
|
|
@override
|
|
String get enterRoomPassword => 'Introduce la contraseña de la sala';
|
|
|
|
@override
|
|
String get loggingInDots => 'Iniciando sesión...';
|
|
|
|
@override
|
|
String get login => 'Iniciar sesión';
|
|
|
|
@override
|
|
String failedToAddRoom(String error) {
|
|
return 'Error al agregar la sala al dispositivo: $error\n\nLa sala puede no haber anunciado aún.\nIntenta esperar a que la sala transmita.';
|
|
}
|
|
|
|
@override
|
|
String get direct => 'Directo';
|
|
|
|
@override
|
|
String get flood => 'Inundación';
|
|
|
|
@override
|
|
String get admin => 'Admin';
|
|
|
|
@override
|
|
String get loggedIn => 'Sesión iniciada';
|
|
|
|
@override
|
|
String get noGpsData => 'Sin datos GPS';
|
|
|
|
@override
|
|
String get distance => 'Distancia';
|
|
|
|
@override
|
|
String pingingDirect(String name) {
|
|
return 'Haciendo ping a $name (directo vía ruta)...';
|
|
}
|
|
|
|
@override
|
|
String pingingFlood(String name) {
|
|
return 'Haciendo ping a $name (inundación - sin ruta)...';
|
|
}
|
|
|
|
@override
|
|
String directPingTimeout(String name) {
|
|
return 'Tiempo de espera de ping directo agotado - reintentando $name con inundación...';
|
|
}
|
|
|
|
@override
|
|
String pingSuccessful(String name, String fallback) {
|
|
return 'Ping exitoso a $name$fallback';
|
|
}
|
|
|
|
@override
|
|
String get viaFloodingFallback => ' (vía respaldo de inundación)';
|
|
|
|
@override
|
|
String pingFailed(String name) {
|
|
return 'Ping fallido a $name - no se recibió respuesta';
|
|
}
|
|
|
|
@override
|
|
String deleteContactConfirmation(String name) {
|
|
return '¿Estás seguro de que quieres eliminar \"$name\"?\n\nEsto eliminará el contacto tanto de la aplicación como del dispositivo de radio compañero.';
|
|
}
|
|
|
|
@override
|
|
String removingContact(String name) {
|
|
return 'Eliminando $name...';
|
|
}
|
|
|
|
@override
|
|
String contactRemoved(String name) {
|
|
return 'Contacto \"$name\" eliminado';
|
|
}
|
|
|
|
@override
|
|
String failedToRemoveContact(String error) {
|
|
return 'Error al eliminar contacto: $error';
|
|
}
|
|
|
|
@override
|
|
String get type => 'Tipo';
|
|
|
|
@override
|
|
String get publicKey => 'Clave pública';
|
|
|
|
@override
|
|
String get lastSeen => 'Visto por última vez';
|
|
|
|
@override
|
|
String get roomStatus => 'Estado de la sala';
|
|
|
|
@override
|
|
String get loginStatus => 'Estado de inicio de sesión';
|
|
|
|
@override
|
|
String get notLoggedIn => 'No ha iniciado sesión';
|
|
|
|
@override
|
|
String get adminAccess => 'Acceso de administrador';
|
|
|
|
@override
|
|
String get yes => 'Sí';
|
|
|
|
@override
|
|
String get no => 'No';
|
|
|
|
@override
|
|
String get permissions => 'Permisos';
|
|
|
|
@override
|
|
String get passwordSaved => 'Contraseña guardada';
|
|
|
|
@override
|
|
String get locationColon => 'Ubicación:';
|
|
|
|
@override
|
|
String get telemetry => 'Telemetría';
|
|
|
|
@override
|
|
String requestingTelemetry(String name) {
|
|
return 'Solicitando telemetría de $name...';
|
|
}
|
|
|
|
@override
|
|
String get voltage => 'Voltaje';
|
|
|
|
@override
|
|
String get battery => 'Batería';
|
|
|
|
@override
|
|
String get temperature => 'Temperatura';
|
|
|
|
@override
|
|
String get humidity => 'Humedad';
|
|
|
|
@override
|
|
String get pressure => 'Presión';
|
|
|
|
@override
|
|
String get gpsTelemetry => 'GPS (Telemetría)';
|
|
|
|
@override
|
|
String get updated => 'Actualizado';
|
|
|
|
@override
|
|
String pathResetInfo(String name) {
|
|
return 'Ruta restablecida para $name. El próximo mensaje encontrará una nueva ruta.';
|
|
}
|
|
|
|
@override
|
|
String get reLoginToRoom => 'Re-iniciar sesión en la sala';
|
|
|
|
@override
|
|
String get heading => 'Rumbo';
|
|
|
|
@override
|
|
String get elevation => 'Elevación';
|
|
|
|
@override
|
|
String get accuracy => 'Precisión';
|
|
|
|
@override
|
|
String get filterMarkers => 'Filtrar marcadores';
|
|
|
|
@override
|
|
String get filterMarkersTooltip => 'Filtrar marcadores';
|
|
|
|
@override
|
|
String get contactsFilter => 'Contactos';
|
|
|
|
@override
|
|
String get repeatersFilter => 'Repetidores';
|
|
|
|
@override
|
|
String get sarMarkers => 'Marcadores SAR';
|
|
|
|
@override
|
|
String get foundPerson => 'Persona encontrada';
|
|
|
|
@override
|
|
String get fire => 'Fuego';
|
|
|
|
@override
|
|
String get stagingArea => 'Área de preparación';
|
|
|
|
@override
|
|
String get showAll => 'Mostrar todo';
|
|
|
|
@override
|
|
String get nearbyContacts => 'Contactos cercanos';
|
|
|
|
@override
|
|
String get locationUnavailable => 'Ubicación no disponible';
|
|
|
|
@override
|
|
String get ahead => 'adelante';
|
|
|
|
@override
|
|
String degreesRight(int degrees) {
|
|
return '$degrees° derecha';
|
|
}
|
|
|
|
@override
|
|
String degreesLeft(int degrees) {
|
|
return '$degrees° izquierda';
|
|
}
|
|
|
|
@override
|
|
String latLonFormat(String latitude, String longitude) {
|
|
return 'Lat: $latitude Lon: $longitude';
|
|
}
|
|
|
|
@override
|
|
String get noContactsYet => 'Aún no hay contactos';
|
|
|
|
@override
|
|
String get connectToDeviceToLoadContacts =>
|
|
'Conéctate a un dispositivo para cargar contactos';
|
|
|
|
@override
|
|
String get teamMembers => 'Miembros del equipo';
|
|
|
|
@override
|
|
String get repeaters => 'Repetidores';
|
|
|
|
@override
|
|
String get rooms => 'Salas';
|
|
|
|
@override
|
|
String get channels => 'Canales';
|
|
|
|
@override
|
|
String get cacheStatistics => 'Estadísticas de caché';
|
|
|
|
@override
|
|
String get totalTiles => 'Total de teselas';
|
|
|
|
@override
|
|
String get cacheSize => 'Tamaño de caché';
|
|
|
|
@override
|
|
String get storeName => 'Nombre del almacén';
|
|
|
|
@override
|
|
String get noCacheStatistics => 'No hay estadísticas de caché disponibles';
|
|
|
|
@override
|
|
String get downloadRegion => 'Descargar región';
|
|
|
|
@override
|
|
String get mapLayer => 'Capa de mapa';
|
|
|
|
@override
|
|
String get regionBounds => 'Límites de región';
|
|
|
|
@override
|
|
String get north => 'Norte';
|
|
|
|
@override
|
|
String get south => 'Sur';
|
|
|
|
@override
|
|
String get east => 'Este';
|
|
|
|
@override
|
|
String get west => 'Oeste';
|
|
|
|
@override
|
|
String get zoomLevels => 'Niveles de zoom';
|
|
|
|
@override
|
|
String minZoom(int zoom) {
|
|
return 'Mín: $zoom';
|
|
}
|
|
|
|
@override
|
|
String maxZoom(int zoom) {
|
|
return 'Máx: $zoom';
|
|
}
|
|
|
|
@override
|
|
String get downloadingDots => 'Descargando...';
|
|
|
|
@override
|
|
String get cancelDownload => 'Cancelar descarga';
|
|
|
|
@override
|
|
String get downloadRegionButton => 'Descargar región';
|
|
|
|
@override
|
|
String get downloadNote =>
|
|
'Nota: Las regiones grandes o niveles de zoom altos pueden tomar un tiempo y espacio de almacenamiento significativos.';
|
|
|
|
@override
|
|
String get cacheManagement => 'Gestión de caché';
|
|
|
|
@override
|
|
String get clearAllMaps => 'Borrar todos los mapas';
|
|
|
|
@override
|
|
String get clearMapsConfirmTitle => 'Borrar todos los mapas';
|
|
|
|
@override
|
|
String get clearMapsConfirmMessage =>
|
|
'¿Estás seguro de que quieres eliminar todos los mapas descargados? Esta acción no se puede deshacer.';
|
|
|
|
@override
|
|
String get mapDownloadCompleted => '¡Descarga de mapa completada!';
|
|
|
|
@override
|
|
String get cacheClearedSuccessfully => '¡Caché borrada exitosamente!';
|
|
|
|
@override
|
|
String get downloadCancelled => 'Descarga cancelada';
|
|
|
|
@override
|
|
String get startingDownload => 'Iniciando descarga...';
|
|
|
|
@override
|
|
String get downloadingMapTiles => 'Descargando teselas de mapa...';
|
|
|
|
@override
|
|
String get downloadCompletedSuccessfully =>
|
|
'¡Descarga completada exitosamente!';
|
|
|
|
@override
|
|
String get cancellingDownload => 'Cancelando descarga...';
|
|
|
|
@override
|
|
String errorLoadingStats(String error) {
|
|
return 'Error al cargar estadísticas: $error';
|
|
}
|
|
|
|
@override
|
|
String downloadFailed(String error) {
|
|
return 'Error en la descarga: $error';
|
|
}
|
|
|
|
@override
|
|
String cancelFailed(String error) {
|
|
return 'Error al cancelar: $error';
|
|
}
|
|
|
|
@override
|
|
String clearCacheFailed(String error) {
|
|
return 'Error al borrar caché: $error';
|
|
}
|
|
|
|
@override
|
|
String minZoomError(String error) {
|
|
return 'Zoom mín: $error';
|
|
}
|
|
|
|
@override
|
|
String maxZoomError(String error) {
|
|
return 'Zoom máx: $error';
|
|
}
|
|
|
|
@override
|
|
String get minZoomGreaterThanMax =>
|
|
'El zoom mínimo debe ser menor o igual al zoom máximo';
|
|
|
|
@override
|
|
String get selectMapLayer => 'Seleccionar capa de mapa';
|
|
|
|
@override
|
|
String get mapOptions => 'Opciones de mapa';
|
|
|
|
@override
|
|
String get showLegend => 'Mostrar leyenda';
|
|
|
|
@override
|
|
String get displayMarkerTypeCounts =>
|
|
'Mostrar recuentos de tipos de marcadores';
|
|
|
|
@override
|
|
String get rotateMapWithHeading => 'Rotar mapa con rumbo';
|
|
|
|
@override
|
|
String get mapFollowsDirection =>
|
|
'El mapa sigue tu dirección cuando te mueves';
|
|
|
|
@override
|
|
String get showMapDebugInfo => 'Mostrar información de depuración del mapa';
|
|
|
|
@override
|
|
String get displayZoomLevelBounds => 'Mostrar nivel de zoom y límites';
|
|
|
|
@override
|
|
String get fullscreenMode => 'Modo de pantalla completa';
|
|
|
|
@override
|
|
String get hideUiFullMapView =>
|
|
'Ocultar todos los controles de IU para vista de mapa completo';
|
|
|
|
@override
|
|
String get openStreetMap => 'OpenStreetMap';
|
|
|
|
@override
|
|
String get openTopoMap => 'OpenTopoMap';
|
|
|
|
@override
|
|
String get esriSatellite => 'ESRI Satélite';
|
|
|
|
@override
|
|
String get downloadVisibleArea => 'Descargar área visible';
|
|
|
|
@override
|
|
String get initializingMap => 'Inicializando mapa...';
|
|
|
|
@override
|
|
String get dragToPosition => 'Arrastrar a posición';
|
|
|
|
@override
|
|
String get createSarMarker => 'Crear marcador SAR';
|
|
|
|
@override
|
|
String get compass => 'Brújula';
|
|
|
|
@override
|
|
String get navigationAndContacts => 'Navegación y contactos';
|
|
|
|
@override
|
|
String get sarAlert => 'ALERTA SAR';
|
|
|
|
@override
|
|
String get messageSentToPublicChannel => 'Mensaje enviado al canal público';
|
|
|
|
@override
|
|
String get pleaseSelectRoomToSendSar =>
|
|
'Por favor, selecciona una sala para enviar marcador SAR';
|
|
|
|
@override
|
|
String failedToSendSarMarker(String error) {
|
|
return 'Error al enviar marcador SAR: $error';
|
|
}
|
|
|
|
@override
|
|
String sarMarkerSentTo(String roomName) {
|
|
return 'Marcador SAR enviado a $roomName';
|
|
}
|
|
|
|
@override
|
|
String get notConnectedCannotSync =>
|
|
'No conectado - no se pueden sincronizar mensajes';
|
|
|
|
@override
|
|
String syncedMessageCount(int count) {
|
|
return 'Sincronizados $count mensaje(s)';
|
|
}
|
|
|
|
@override
|
|
String get noNewMessages => 'No hay mensajes nuevos';
|
|
|
|
@override
|
|
String syncFailed(String error) {
|
|
return 'Error de sincronización: $error';
|
|
}
|
|
|
|
@override
|
|
String get failedToResendMessage => 'Error al reenviar mensaje';
|
|
|
|
@override
|
|
String get retryingMessage => 'Reintentando mensaje...';
|
|
|
|
@override
|
|
String retryFailed(String error) {
|
|
return 'Error de reintento: $error';
|
|
}
|
|
|
|
@override
|
|
String get textCopiedToClipboard => 'Texto copiado al portapapeles';
|
|
|
|
@override
|
|
String get cannotReplySenderMissing =>
|
|
'No se puede responder: falta información del remitente';
|
|
|
|
@override
|
|
String get cannotReplyContactNotFound =>
|
|
'No se puede responder: contacto no encontrado';
|
|
|
|
@override
|
|
String get messageDeleted => 'Mensaje eliminado';
|
|
|
|
@override
|
|
String get refreshedContacts => 'Contactos actualizados';
|
|
|
|
@override
|
|
String get justNow => 'Justo ahora';
|
|
|
|
@override
|
|
String minutesAgo(int minutes) {
|
|
return 'Hace ${minutes}m';
|
|
}
|
|
|
|
@override
|
|
String hoursAgo(int hours) {
|
|
return 'Hace ${hours}h';
|
|
}
|
|
|
|
@override
|
|
String daysAgo(int days) {
|
|
return 'Hace ${days}d';
|
|
}
|
|
|
|
@override
|
|
String secondsAgo(int seconds) {
|
|
return 'Hace ${seconds}s';
|
|
}
|
|
|
|
@override
|
|
String get sending => 'Enviando...';
|
|
|
|
@override
|
|
String get sent => 'Enviado';
|
|
|
|
@override
|
|
String get delivered => 'Entregado';
|
|
|
|
@override
|
|
String deliveredWithTime(int time) {
|
|
return 'Entregado (${time}ms)';
|
|
}
|
|
|
|
@override
|
|
String get failed => 'Fallido';
|
|
|
|
@override
|
|
String get sarMarkerFoundPerson => 'Persona encontrada';
|
|
|
|
@override
|
|
String get sarMarkerFire => 'Ubicación de fuego';
|
|
|
|
@override
|
|
String get sarMarkerStagingArea => 'Área de preparación';
|
|
|
|
@override
|
|
String get sarMarkerObject => 'Objeto encontrado';
|
|
|
|
@override
|
|
String get from => 'De';
|
|
|
|
@override
|
|
String get coordinates => 'Coordenadas';
|
|
|
|
@override
|
|
String get tapToViewOnMap => 'Toca para ver en el mapa';
|
|
|
|
@override
|
|
String get radioSettings => 'Configuración de radio';
|
|
|
|
@override
|
|
String get frequencyMHz => 'Frecuencia (MHz)';
|
|
|
|
@override
|
|
String get frequencyExample => 'ej., 869.618';
|
|
|
|
@override
|
|
String get bandwidth => 'Ancho de banda';
|
|
|
|
@override
|
|
String get spreadingFactor => 'Factor de dispersión';
|
|
|
|
@override
|
|
String get codingRate => 'Tasa de codificación';
|
|
|
|
@override
|
|
String get txPowerDbm => 'Potencia TX (dBm)';
|
|
|
|
@override
|
|
String maxPowerDbm(int power) {
|
|
return 'Máx: $power dBm';
|
|
}
|
|
|
|
@override
|
|
String get you => 'Tú';
|
|
|
|
@override
|
|
String get offlineVectorMaps => 'Mapas vectoriales sin conexión';
|
|
|
|
@override
|
|
String get offlineVectorMapsDescription =>
|
|
'Importar y gestionar teselas de mapas vectoriales sin conexión (formato MBTiles) para usar sin conexión a internet';
|
|
|
|
@override
|
|
String get importMbtiles => 'Importar archivo MBTiles';
|
|
|
|
@override
|
|
String get importMbtilesNote =>
|
|
'Compatible con archivos MBTiles con teselas vectoriales (formato PBF/MVT). ¡Los extractos de Geofabrik funcionan muy bien!';
|
|
|
|
@override
|
|
String get noMbtilesFiles =>
|
|
'No se encontraron mapas vectoriales sin conexión';
|
|
|
|
@override
|
|
String get mbtilesImportedSuccessfully =>
|
|
'Archivo MBTiles importado exitosamente';
|
|
|
|
@override
|
|
String get failedToImportMbtiles => 'Error al importar archivo MBTiles';
|
|
|
|
@override
|
|
String get deleteMbtilesConfirmTitle => 'Eliminar mapa sin conexión';
|
|
|
|
@override
|
|
String deleteMbtilesConfirmMessage(String name) {
|
|
return '¿Estás seguro de que quieres eliminar \"$name\"? Esto eliminará permanentemente el mapa sin conexión.';
|
|
}
|
|
|
|
@override
|
|
String get mbtilesDeletedSuccessfully =>
|
|
'Mapa sin conexión eliminado exitosamente';
|
|
|
|
@override
|
|
String get failedToDeleteMbtiles => 'Error al eliminar mapa sin conexión';
|
|
|
|
@override
|
|
String get vectorTiles => 'Teselas vectoriales';
|
|
|
|
@override
|
|
String get schema => 'Esquema';
|
|
|
|
@override
|
|
String get unknown => 'Desconocido';
|
|
|
|
@override
|
|
String get bounds => 'Límites';
|
|
|
|
@override
|
|
String get onlineLayers => 'Capas en línea';
|
|
|
|
@override
|
|
String get offlineLayers => 'Capas sin conexión';
|
|
|
|
@override
|
|
String get locationTrail => 'Rastro de ubicación';
|
|
|
|
@override
|
|
String get showTrailOnMap => 'Mostrar rastro en el mapa';
|
|
|
|
@override
|
|
String get trailVisible => 'El rastro es visible en el mapa';
|
|
|
|
@override
|
|
String get trailHiddenRecording => 'El rastro está oculto (aún grabando)';
|
|
|
|
@override
|
|
String get duration => 'Duración';
|
|
|
|
@override
|
|
String get points => 'Puntos';
|
|
|
|
@override
|
|
String get clearTrail => 'Borrar rastro';
|
|
|
|
@override
|
|
String get clearTrailQuestion => '¿Borrar rastro?';
|
|
|
|
@override
|
|
String get clearTrailConfirmation =>
|
|
'¿Estás seguro de que quieres borrar el rastro de ubicación actual? Esta acción no se puede deshacer.';
|
|
|
|
@override
|
|
String get noTrailRecorded => 'Aún no se ha grabado rastro';
|
|
|
|
@override
|
|
String get startTrackingToRecord =>
|
|
'Inicia el seguimiento de ubicación para grabar tu rastro';
|
|
|
|
@override
|
|
String get trailControls => 'Controles del rastro';
|
|
|
|
@override
|
|
String get deviceInformation => 'Información del dispositivo';
|
|
|
|
@override
|
|
String get bleName => 'Nombre BLE';
|
|
|
|
@override
|
|
String get meshName => 'Nombre Mesh';
|
|
|
|
@override
|
|
String get notSet => 'No establecido';
|
|
|
|
@override
|
|
String get model => 'Modelo';
|
|
|
|
@override
|
|
String get version => 'Versión';
|
|
|
|
@override
|
|
String get buildDate => 'Fecha de compilación';
|
|
|
|
@override
|
|
String get firmware => 'Firmware';
|
|
|
|
@override
|
|
String get maxContacts => 'Contactos máximos';
|
|
|
|
@override
|
|
String get maxChannels => 'Canales máximos';
|
|
|
|
@override
|
|
String get publicInfo => 'Información pública';
|
|
|
|
@override
|
|
String get meshNetworkName => 'Nombre de red Mesh';
|
|
|
|
@override
|
|
String get nameBroadcastInMesh => 'Nombre difundido en anuncios mesh';
|
|
|
|
@override
|
|
String get telemetryAndLocationSharing => 'Telemetría y compartir ubicación';
|
|
|
|
@override
|
|
String get lat => 'Lat';
|
|
|
|
@override
|
|
String get lon => 'Lon';
|
|
|
|
@override
|
|
String get useCurrentLocation => 'Usar ubicación actual';
|
|
|
|
@override
|
|
String get noneUnknown => 'Ninguno/Desconocido';
|
|
|
|
@override
|
|
String get chatNode => 'Nodo de chat';
|
|
|
|
@override
|
|
String get repeater => 'Repetidor';
|
|
|
|
@override
|
|
String get roomChannel => 'Sala/Canal';
|
|
|
|
@override
|
|
String typeNumber(int number) {
|
|
return 'Tipo $number';
|
|
}
|
|
|
|
@override
|
|
String copiedToClipboardShort(String label) {
|
|
return 'Copiado $label al portapapeles';
|
|
}
|
|
|
|
@override
|
|
String failedToSave(String error) {
|
|
return 'Error al guardar: $error';
|
|
}
|
|
|
|
@override
|
|
String failedToGetLocation(String error) {
|
|
return 'Error al obtener ubicación: $error';
|
|
}
|
|
}
|