mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-07-12 11:52:07 +10:00
e1a4900dc0
This adds a simple UI in repeater management settings for remotely setting a repeater's private key. A key can be pasted from an external key generator, or a random one can be generated here, optionally with a specified prefix. If a prefix is specified, searching is done in 30ms batches in order to keep the UI responsive and show the progress indicator animation smoothly. Searches can be interrupted. An estimation of search length is given as expected number of generated key pairs. (A future improvement would be to observe keys per second performance and give time estimates based on that.) When it generates a new private key on your behalf, it can tell you what the corresponding public key will be. Unfortunately, if you paste one in from another source, it can't compute the corresponding public key. This is because the standard Dart crypto library doesn't provide that capability, nor does it give access to the elliptic curve functions it implements so we could do it ourselves. Our only recourse would be to copy the source for all those things, and I didn't think it was worth it. This will not check the validity of a pasted key, but the remote repeater will. It does limit it to the correct length and hexadecimal charset. Prefixes are limited to 4 characters. There's no technical reason for this, but users are unlikely to want more, and I think it would just be a bad experience to allow more and spin for a very long time. If someone really wants a longer one, they can use an external generator like they do now. Possible TODO: rewrite background processing using isolates. Closes #142.
4720 lines
123 KiB
Dart
4720 lines
123 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 Open';
|
|
|
|
@override
|
|
String get nav_contacts => 'Contactos';
|
|
|
|
@override
|
|
String get nav_channels => 'Canales';
|
|
|
|
@override
|
|
String get nav_map => 'Mapa';
|
|
|
|
@override
|
|
String get common_cancel => 'Cancelar';
|
|
|
|
@override
|
|
String get common_ok => 'Aceptar';
|
|
|
|
@override
|
|
String get common_connect => 'Conectar';
|
|
|
|
@override
|
|
String get common_unknownDevice => 'Dispositivo Desconocido';
|
|
|
|
@override
|
|
String get common_save => 'Guardar';
|
|
|
|
@override
|
|
String get common_delete => 'Eliminar';
|
|
|
|
@override
|
|
String get common_deleteAll => 'Eliminar todo';
|
|
|
|
@override
|
|
String get common_close => 'Cerrar';
|
|
|
|
@override
|
|
String get common_done => 'Hecho';
|
|
|
|
@override
|
|
String get common_edit => 'Editar';
|
|
|
|
@override
|
|
String get common_add => 'Añadir';
|
|
|
|
@override
|
|
String get common_settings => 'Configuración';
|
|
|
|
@override
|
|
String get common_disconnect => 'Desconectar';
|
|
|
|
@override
|
|
String get common_connected => 'Conectado';
|
|
|
|
@override
|
|
String get common_disconnected => 'Desconectado';
|
|
|
|
@override
|
|
String get common_create => 'Crear';
|
|
|
|
@override
|
|
String get common_continue => 'Continuar';
|
|
|
|
@override
|
|
String get common_share => 'Compartir';
|
|
|
|
@override
|
|
String get common_copy => 'Copiar';
|
|
|
|
@override
|
|
String get common_retry => 'Reintentar';
|
|
|
|
@override
|
|
String get common_hide => 'Ocultar';
|
|
|
|
@override
|
|
String get common_remove => 'Eliminar';
|
|
|
|
@override
|
|
String get common_enable => 'Activar';
|
|
|
|
@override
|
|
String get common_disable => 'Desactivar';
|
|
|
|
@override
|
|
String get common_undo => 'Deshacer';
|
|
|
|
@override
|
|
String get messageStatus_sent => 'Enviado';
|
|
|
|
@override
|
|
String get messageStatus_delivered => 'Entregado';
|
|
|
|
@override
|
|
String get messageStatus_pending => 'Enviando';
|
|
|
|
@override
|
|
String get messageStatus_failed => 'No se pudo enviar';
|
|
|
|
@override
|
|
String get messageStatus_repeated => 'Escuchado repetidamente';
|
|
|
|
@override
|
|
String get common_reboot => 'Reiniciar';
|
|
|
|
@override
|
|
String get common_loading => 'Cargando...';
|
|
|
|
@override
|
|
String get common_notAvailable => '—';
|
|
|
|
@override
|
|
String common_voltageValue(String volts) {
|
|
return '$volts V';
|
|
}
|
|
|
|
@override
|
|
String common_percentValue(int percent) {
|
|
return '$percent%';
|
|
}
|
|
|
|
@override
|
|
String get common_autoRefresh => 'Actualización automática';
|
|
|
|
@override
|
|
String get common_interval => 'Intervalo';
|
|
|
|
@override
|
|
String get scanner_title => 'MeshCore Open';
|
|
|
|
@override
|
|
String get connectionChoiceUsbLabel => 'USB';
|
|
|
|
@override
|
|
String get connectionChoiceBluetoothLabel => 'Bluetooth';
|
|
|
|
@override
|
|
String get connectionChoiceTcpLabel => 'TCP';
|
|
|
|
@override
|
|
String get tcpScreenTitle => 'Establecer conexión a través de TCP';
|
|
|
|
@override
|
|
String get tcpHostLabel => 'Dirección IP';
|
|
|
|
@override
|
|
String get tcpHostHint => '192.168.40.10';
|
|
|
|
@override
|
|
String get tcpPortLabel => 'Puerto';
|
|
|
|
@override
|
|
String get tcpPortHint => '5000';
|
|
|
|
@override
|
|
String get tcpStatus_notConnected => 'Ingrese la dirección final y conecte.';
|
|
|
|
@override
|
|
String tcpStatus_connectingTo(String endpoint) {
|
|
return 'Conectándose a $endpoint...';
|
|
}
|
|
|
|
@override
|
|
String get tcpErrorHostRequired => 'Se requiere la dirección IP.';
|
|
|
|
@override
|
|
String get tcpErrorPortInvalid => 'El puerto debe estar entre 1 y 65535.';
|
|
|
|
@override
|
|
String get tcpErrorUnsupported =>
|
|
'El protocolo de transporte TCP no está soportado en esta plataforma.';
|
|
|
|
@override
|
|
String get tcpErrorTimedOut => 'La conexión TCP ha caducado.';
|
|
|
|
@override
|
|
String tcpConnectionFailed(String error) {
|
|
return 'Error en la conexión TCP: $error';
|
|
}
|
|
|
|
@override
|
|
String get usbScreenTitle => 'Conecte mediante USB';
|
|
|
|
@override
|
|
String get usbScreenSubtitle =>
|
|
'Seleccione el dispositivo de serie detectado y conéctelo directamente a su nodo MeshCore.';
|
|
|
|
@override
|
|
String get usbScreenStatus => 'Seleccione un dispositivo USB';
|
|
|
|
@override
|
|
String get usbScreenNote =>
|
|
'La comunicación serial a través de USB está activa en dispositivos Android compatibles y en plataformas de escritorio.';
|
|
|
|
@override
|
|
String get usbScreenEmptyState =>
|
|
'No se encontraron dispositivos USB. Conecte uno y vuelva a intentar.';
|
|
|
|
@override
|
|
String get usbErrorPermissionDenied =>
|
|
'Se denegó el permiso de acceso a través de USB.';
|
|
|
|
@override
|
|
String get usbErrorDeviceMissing =>
|
|
'El dispositivo USB seleccionado ya no está disponible.';
|
|
|
|
@override
|
|
String get usbErrorInvalidPort => 'Seleccione un dispositivo USB válido.';
|
|
|
|
@override
|
|
String get usbErrorBusy =>
|
|
'Ya se ha iniciado una solicitud de conexión USB adicional.';
|
|
|
|
@override
|
|
String get usbErrorNotConnected => 'No hay ningún dispositivo USB conectado.';
|
|
|
|
@override
|
|
String get usbErrorOpenFailed =>
|
|
'No se pudo abrir el dispositivo USB seleccionado.';
|
|
|
|
@override
|
|
String get usbErrorConnectFailed =>
|
|
'No se pudo conectar con el dispositivo USB seleccionado.';
|
|
|
|
@override
|
|
String get usbErrorUnsupported =>
|
|
'La comunicación serial a través de USB no está soportada en esta plataforma.';
|
|
|
|
@override
|
|
String get usbErrorAlreadyActive => 'La conexión USB ya está activa.';
|
|
|
|
@override
|
|
String get usbErrorNoDeviceSelected =>
|
|
'No se ha seleccionado ningún dispositivo USB.';
|
|
|
|
@override
|
|
String get usbErrorPortClosed => 'La conexión USB no está activa.';
|
|
|
|
@override
|
|
String get usbErrorConnectTimedOut =>
|
|
'La conexión ha caducado. Asegúrese de que el dispositivo tenga el firmware USB Companion.';
|
|
|
|
@override
|
|
String get usbFallbackDeviceName => 'Dispositivo de serie web';
|
|
|
|
@override
|
|
String get usbStatus_notConnected => 'Seleccione un dispositivo USB';
|
|
|
|
@override
|
|
String get usbStatus_connecting => 'Conectándose al dispositivo USB...';
|
|
|
|
@override
|
|
String get usbStatus_searching => 'Buscando dispositivos USB...';
|
|
|
|
@override
|
|
String usbConnectionFailed(String error) {
|
|
return 'Error al conectar mediante USB: $error';
|
|
}
|
|
|
|
@override
|
|
String get scanner_scanning => 'Escaneando dispositivos...';
|
|
|
|
@override
|
|
String get scanner_connecting => 'Conectando...';
|
|
|
|
@override
|
|
String get scanner_disconnecting => 'Desconectando...';
|
|
|
|
@override
|
|
String get scanner_notConnected => 'No conectado';
|
|
|
|
@override
|
|
String scanner_connectedTo(String deviceName) {
|
|
return 'Conectado a $deviceName';
|
|
}
|
|
|
|
@override
|
|
String get scanner_searchingDevices => 'Buscando dispositivos MeshCore...';
|
|
|
|
@override
|
|
String get scanner_tapToScan =>
|
|
'Pulsa Escanear para encontrar dispositivos MeshCore';
|
|
|
|
@override
|
|
String scanner_connectionFailed(String error) {
|
|
return 'Error de conexión: $error';
|
|
}
|
|
|
|
@override
|
|
String get scanner_stop => 'Detener';
|
|
|
|
@override
|
|
String get scanner_scan => 'Escanear';
|
|
|
|
@override
|
|
String get scanner_bluetoothOff => 'Bluetooth está desactivado.';
|
|
|
|
@override
|
|
String get scanner_bluetoothOffMessage =>
|
|
'Por favor, active el Bluetooth para escanear dispositivos.';
|
|
|
|
@override
|
|
String get scanner_chromeRequired => 'Navegador Chrome requerido';
|
|
|
|
@override
|
|
String get scanner_chromeRequiredMessage =>
|
|
'Esta aplicación web requiere Google Chrome o un navegador basado en Chromium para el soporte de Bluetooth.';
|
|
|
|
@override
|
|
String get scanner_enableBluetooth => 'Habilitar Bluetooth';
|
|
|
|
@override
|
|
String get scanner_bluetoothWebUnsupported =>
|
|
'La funcionalidad Bluetooth no está disponible en el navegador. Conéctese mediante USB en su lugar.';
|
|
|
|
@override
|
|
String get device_quickSwitch => 'Cambiar rápidamente';
|
|
|
|
@override
|
|
String get device_meshcore => 'MeshCore';
|
|
|
|
@override
|
|
String get settings_title => 'Configuración';
|
|
|
|
@override
|
|
String get settings_deviceInfo => 'Información del dispositivo';
|
|
|
|
@override
|
|
String get settings_appSettings => 'Configuración de la App';
|
|
|
|
@override
|
|
String get settings_appSettingsSubtitle =>
|
|
'Notificaciones, mensajes y preferencias de mapa';
|
|
|
|
@override
|
|
String get settings_nodeSettings => 'Configuración del Nodo';
|
|
|
|
@override
|
|
String get settings_nodeName => 'Nombre del nodo';
|
|
|
|
@override
|
|
String get settings_nodeNameNotSet => 'No está configurado';
|
|
|
|
@override
|
|
String get settings_nodeNameHint => 'Introducir nombre de nodo';
|
|
|
|
@override
|
|
String get settings_nodeNameUpdated => 'Nombre actualizado';
|
|
|
|
@override
|
|
String get settings_radioSettings => 'Configuración de Radio';
|
|
|
|
@override
|
|
String get settings_radioSettingsSubtitle =>
|
|
'Frecuencia, potencia, factor de dispersión';
|
|
|
|
@override
|
|
String get settings_radioSettingsUpdated => 'Ajustes de radio actualizados';
|
|
|
|
@override
|
|
String get settings_regionSettings => 'Regions';
|
|
|
|
@override
|
|
String get settings_regionSettingsSubtitle => 'Manage stored regions';
|
|
|
|
@override
|
|
String get settings_regionManagement_screenTitle => 'Region Management';
|
|
|
|
@override
|
|
String get settings_regionNameHint => 'Enter region name';
|
|
|
|
@override
|
|
String get settings_regionAddRegion => 'Add region';
|
|
|
|
@override
|
|
String get settings_regionFetchRegions => 'Fetch regions from repeaters';
|
|
|
|
@override
|
|
String get settings_regionFetchRegionsFail => 'No regions were found';
|
|
|
|
@override
|
|
String get settings_regionFetchRegionsAlreadyExists =>
|
|
'This region has already been added';
|
|
|
|
@override
|
|
String get settings_regionName => 'Region Name';
|
|
|
|
@override
|
|
String get settings_regionDeleted => 'Region deleted';
|
|
|
|
@override
|
|
String get settings_deleteRegion => 'Delete Region';
|
|
|
|
@override
|
|
String settings_deleteRegionConfirm(String region) {
|
|
return 'Remove \"$region\" from region list?';
|
|
}
|
|
|
|
@override
|
|
String get settings_location => 'Ubicación';
|
|
|
|
@override
|
|
String get settings_locationSubtitle => 'Coordenadas GPS';
|
|
|
|
@override
|
|
String get settings_locationUpdated => 'Ubicación actualizada';
|
|
|
|
@override
|
|
String get settings_locationBothRequired =>
|
|
'Introduzca tanto la latitud como la longitud.';
|
|
|
|
@override
|
|
String get settings_locationInvalid => 'Latitud o longitud inválidos.';
|
|
|
|
@override
|
|
String get settings_locationGPSEnable => 'Habilitar GPS';
|
|
|
|
@override
|
|
String get settings_locationGPSEnableSubtitle =>
|
|
'Habilita la actualización automática de la ubicación mediante GPS.';
|
|
|
|
@override
|
|
String get settings_locationIntervalSec => 'Intervalo para GPS (Segundos)';
|
|
|
|
@override
|
|
String get settings_locationIntervalInvalid =>
|
|
'El intervalo debe ser de al menos 60 segundos y menor que 86400 segundos.';
|
|
|
|
@override
|
|
String get settings_latitude => 'Latitud';
|
|
|
|
@override
|
|
String get settings_longitude => 'Longitud';
|
|
|
|
@override
|
|
String get settings_contactSettings => 'Configuración de contacto';
|
|
|
|
@override
|
|
String get settings_contactSettingsSubtitle =>
|
|
'Configuración de cómo se agregan los contactos.';
|
|
|
|
@override
|
|
String get settings_privacyMode => 'Modo de privacidad';
|
|
|
|
@override
|
|
String get settings_privacyModeSubtitle =>
|
|
'Ocultar nombre/ubicación en anuncios';
|
|
|
|
@override
|
|
String get settings_privacyModeToggle =>
|
|
'Activar el modo de privacidad para ocultar tu nombre y ubicación en los anuncios.';
|
|
|
|
@override
|
|
String get settings_privacyModeEnabled => 'Modo de privacidad activado';
|
|
|
|
@override
|
|
String get settings_privacyModeDisabled => 'Modo de privacidad desactivado';
|
|
|
|
@override
|
|
String get settings_privacy => 'Configuración de privacidad';
|
|
|
|
@override
|
|
String get settings_privacySubtitle =>
|
|
'Controlar qué información se comparte.';
|
|
|
|
@override
|
|
String get settings_privacySettingsDescription =>
|
|
'Elige qué información comparte tu dispositivo con otros.';
|
|
|
|
@override
|
|
String get settings_denyAll => 'Denegar todo';
|
|
|
|
@override
|
|
String get settings_allowByContact => 'Permitir por banderas de contacto';
|
|
|
|
@override
|
|
String get settings_allowAll => 'Permitir todo';
|
|
|
|
@override
|
|
String get settings_telemetryBaseMode => 'Modo base de telemetría';
|
|
|
|
@override
|
|
String get settings_telemetryLocationMode =>
|
|
'Modo de ubicación de telemetría';
|
|
|
|
@override
|
|
String get settings_telemetryEnvironmentMode =>
|
|
'Modo de entorno de telemetría';
|
|
|
|
@override
|
|
String get settings_advertLocation => 'Ubicación de anuncio';
|
|
|
|
@override
|
|
String get settings_advertLocationSubtitle => 'Incluir ubicación en anuncio';
|
|
|
|
@override
|
|
String get settings_multiAck => 'Múltiples respuestas de confirmación';
|
|
|
|
@override
|
|
String get settings_telemetryModeUpdated => 'Modo de telemetría actualizado';
|
|
|
|
@override
|
|
String get settings_actions => 'Acciones';
|
|
|
|
@override
|
|
String get settings_deleteAllPaths => 'Eliminar todas las rutas';
|
|
|
|
@override
|
|
String get settings_deleteAllPathsSubtitle =>
|
|
'Borrar todos los datos de ruta de los contactos.';
|
|
|
|
@override
|
|
String get settings_sendAdvertisement => 'Enviar anuncio';
|
|
|
|
@override
|
|
String get settings_sendAdvertisementSubtitle =>
|
|
'Difundir la presencia ahora';
|
|
|
|
@override
|
|
String get settings_advertisementSent => 'Anuncio enviado';
|
|
|
|
@override
|
|
String get settings_syncTime => 'Sincronizar hora';
|
|
|
|
@override
|
|
String get settings_syncTimeSubtitle =>
|
|
'Establecer la hora del dispositivo con la del teléfono';
|
|
|
|
@override
|
|
String get settings_timeSynchronized => 'Hora sincronizada';
|
|
|
|
@override
|
|
String get settings_refreshContacts => 'Actualizar contactos';
|
|
|
|
@override
|
|
String get settings_refreshContactsSubtitle =>
|
|
'Recargar lista de contactos del dispositivo';
|
|
|
|
@override
|
|
String get settings_rebootDevice => 'Reiniciar dispositivo';
|
|
|
|
@override
|
|
String get settings_rebootDeviceSubtitle =>
|
|
'Reiniciar el dispositivo MeshCore';
|
|
|
|
@override
|
|
String get settings_rebootDeviceConfirm =>
|
|
'¿Está seguro de que desea reiniciar el dispositivo? Se desconectará.';
|
|
|
|
@override
|
|
String get settings_debug => 'Depurar';
|
|
|
|
@override
|
|
String get settings_companionDebugLog => 'Registro de depuración asociado';
|
|
|
|
@override
|
|
String get settings_companionDebugLogSubtitle =>
|
|
'Comandos, respuestas y datos brutos para protocolos BLE/TCP/USB';
|
|
|
|
@override
|
|
String get settings_appDebugLog => 'Registro de Depuración de la App';
|
|
|
|
@override
|
|
String get settings_appDebugLogSubtitle =>
|
|
'Mensajes de depuración de la aplicación';
|
|
|
|
@override
|
|
String get settings_about => 'Acerca de';
|
|
|
|
@override
|
|
String settings_aboutVersion(String version) {
|
|
return 'MeshCore Open v$version';
|
|
}
|
|
|
|
@override
|
|
String get settings_aboutLegalese => 'Proyecto MeshCore Open Source 2026';
|
|
|
|
@override
|
|
String get settings_aboutDescription =>
|
|
'Un cliente Flutter de código abierto para dispositivos MeshCore de malla LoRa.';
|
|
|
|
@override
|
|
String get settings_aboutOpenMeteoAttribution =>
|
|
'Datos de elevación LOS: Open-Meteo (CC BY 4.0)';
|
|
|
|
@override
|
|
String get settings_infoName => 'Nombre';
|
|
|
|
@override
|
|
String get settings_infoId => 'ID';
|
|
|
|
@override
|
|
String get settings_infoStatus => 'Estado';
|
|
|
|
@override
|
|
String get settings_infoBattery => 'Batería';
|
|
|
|
@override
|
|
String get settings_infoPublicKey => 'Clave pública';
|
|
|
|
@override
|
|
String get settings_infoContactsCount => 'Número de contactos';
|
|
|
|
@override
|
|
String get settings_infoChannelCount => 'Número de canales';
|
|
|
|
@override
|
|
String get settings_presets => 'Preajustes';
|
|
|
|
@override
|
|
String get settings_frequency => 'Frecuencia (MHz)';
|
|
|
|
@override
|
|
String get settings_frequencyHelper => '300,0 - 2500,0';
|
|
|
|
@override
|
|
String get settings_frequencyInvalid => 'Frecuencia inválida (300-2500 MHz)';
|
|
|
|
@override
|
|
String get settings_bandwidth => 'Ancho de banda';
|
|
|
|
@override
|
|
String get settings_spreadingFactor => 'Factor de propagación';
|
|
|
|
@override
|
|
String get settings_codingRate => 'Tasa de codificación';
|
|
|
|
@override
|
|
String get settings_txPower => 'Potencia TX (dBm)';
|
|
|
|
@override
|
|
String get settings_txPowerHelper => '0 - 22';
|
|
|
|
@override
|
|
String get settings_txPowerInvalid => 'Potencia de TX inválida (0-22 dBm)';
|
|
|
|
@override
|
|
String get settings_clientRepeat => 'Repetir sin conexión';
|
|
|
|
@override
|
|
String get settings_clientRepeatSubtitle =>
|
|
'Permita que este dispositivo repita los paquetes de red para otros usuarios.';
|
|
|
|
@override
|
|
String get settings_clientRepeatFreqWarning =>
|
|
'Para la comunicación fuera de la red, se requiere una frecuencia de 433, 869 o 918 MHz.';
|
|
|
|
@override
|
|
String settings_error(String message) {
|
|
return 'Error: $message';
|
|
}
|
|
|
|
@override
|
|
String get appSettings_title => 'Configuración de la App';
|
|
|
|
@override
|
|
String get appSettings_appearance => 'Apariencia';
|
|
|
|
@override
|
|
String get appSettings_theme => 'Tema';
|
|
|
|
@override
|
|
String get appSettings_themeSystem => 'Valor predeterminado del sistema';
|
|
|
|
@override
|
|
String get appSettings_themeLight => 'Claro';
|
|
|
|
@override
|
|
String get appSettings_themeDark => 'Oscuro';
|
|
|
|
@override
|
|
String get appSettings_language => 'Idioma';
|
|
|
|
@override
|
|
String get appSettings_languageSystem => 'Predeterminado del sistema';
|
|
|
|
@override
|
|
String get appSettings_languageEn => 'Inglés';
|
|
|
|
@override
|
|
String get appSettings_languageFr => 'Francés';
|
|
|
|
@override
|
|
String get appSettings_languageEs => 'Español';
|
|
|
|
@override
|
|
String get appSettings_languageDe => 'Alemán';
|
|
|
|
@override
|
|
String get appSettings_languagePl => 'Polaco';
|
|
|
|
@override
|
|
String get appSettings_languageSl => 'Esloveno';
|
|
|
|
@override
|
|
String get appSettings_languagePt => 'Portugués';
|
|
|
|
@override
|
|
String get appSettings_languageIt => 'Italiano';
|
|
|
|
@override
|
|
String get appSettings_languageZh => 'Chino';
|
|
|
|
@override
|
|
String get appSettings_languageSv => 'Sueco';
|
|
|
|
@override
|
|
String get appSettings_languageNl => 'Neerlandés';
|
|
|
|
@override
|
|
String get appSettings_languageSk => 'Eslovaco';
|
|
|
|
@override
|
|
String get appSettings_languageBg => 'Búlgaro';
|
|
|
|
@override
|
|
String get appSettings_languageRu => 'Ruso';
|
|
|
|
@override
|
|
String get appSettings_languageUk => 'Ucraniano';
|
|
|
|
@override
|
|
String get appSettings_enableMessageTracing =>
|
|
'Habilitar seguimiento de mensajes';
|
|
|
|
@override
|
|
String get appSettings_enableMessageTracingSubtitle =>
|
|
'Mostrar metadatos detallados de enrutamiento y tiempo para los mensajes';
|
|
|
|
@override
|
|
String get appSettings_notifications => 'Notificaciones';
|
|
|
|
@override
|
|
String get appSettings_enableNotifications => 'Habilitar notificaciones';
|
|
|
|
@override
|
|
String get appSettings_enableNotificationsSubtitle =>
|
|
'Recibir notificaciones para mensajes y anuncios';
|
|
|
|
@override
|
|
String get appSettings_notificationPermissionDenied =>
|
|
'Permiso de notificación denegado';
|
|
|
|
@override
|
|
String get appSettings_notificationsEnabled => 'Notificaciones activadas';
|
|
|
|
@override
|
|
String get appSettings_notificationsDisabled => 'Notificaciones desactivadas';
|
|
|
|
@override
|
|
String get appSettings_messageNotifications => 'Notificaciones de mensajes';
|
|
|
|
@override
|
|
String get appSettings_messageNotificationsSubtitle =>
|
|
'Mostrar notificación al recibir nuevos mensajes';
|
|
|
|
@override
|
|
String get appSettings_channelMessageNotifications =>
|
|
'Notificaciones de mensajes del canal';
|
|
|
|
@override
|
|
String get appSettings_channelMessageNotificationsSubtitle =>
|
|
'Mostrar notificación al recibir mensajes del canal';
|
|
|
|
@override
|
|
String get appSettings_advertisementNotifications =>
|
|
'Notificaciones de anuncios';
|
|
|
|
@override
|
|
String get appSettings_advertisementNotificationsSubtitle =>
|
|
'Mostrar notificación cuando se descubren nuevos nodos';
|
|
|
|
@override
|
|
String get appSettings_messaging => 'Mensajería';
|
|
|
|
@override
|
|
String get appSettings_clearPathOnMaxRetry =>
|
|
'Borrar ruta al máximo de reintentos';
|
|
|
|
@override
|
|
String get appSettings_clearPathOnMaxRetrySubtitle =>
|
|
'Restablecer la ruta de contacto después de 5 intentos de envío fallidos';
|
|
|
|
@override
|
|
String get appSettings_pathsWillBeCleared =>
|
|
'Las rutas se borrarán después de 5 intentos fallidos.';
|
|
|
|
@override
|
|
String get appSettings_pathsWillNotBeCleared =>
|
|
'Las rutas no se eliminarán automáticamente.';
|
|
|
|
@override
|
|
String get appSettings_autoRouteRotation => 'Rotación automática de rutas';
|
|
|
|
@override
|
|
String get appSettings_autoRouteRotationSubtitle =>
|
|
'Alternar entre las mejores rutas y el modo inundación';
|
|
|
|
@override
|
|
String get appSettings_autoRouteRotationEnabled =>
|
|
'Rotación de ruta automática habilitada';
|
|
|
|
@override
|
|
String get appSettings_autoRouteRotationDisabled =>
|
|
'Rotación de ruta automática desactivada';
|
|
|
|
@override
|
|
String get appSettings_maxRouteWeight => 'Peso máximo permitido para la ruta';
|
|
|
|
@override
|
|
String get appSettings_maxRouteWeightSubtitle =>
|
|
'Peso máximo que una ruta puede acumular gracias a entregas exitosas.';
|
|
|
|
@override
|
|
String get appSettings_initialRouteWeight => 'Peso inicial de la ruta';
|
|
|
|
@override
|
|
String get appSettings_initialRouteWeightSubtitle =>
|
|
'Peso inicial para rutas recién descubiertas';
|
|
|
|
@override
|
|
String get appSettings_routeWeightSuccessIncrement =>
|
|
'Incremento de peso para el éxito';
|
|
|
|
@override
|
|
String get appSettings_routeWeightSuccessIncrementSubtitle =>
|
|
'Peso añadido a una ruta después de una entrega exitosa.';
|
|
|
|
@override
|
|
String get appSettings_routeWeightFailureDecrement =>
|
|
'Reducción del peso asociado al fallo';
|
|
|
|
@override
|
|
String get appSettings_routeWeightFailureDecrementSubtitle =>
|
|
'Peso retirado de una ruta después de un intento de entrega fallido.';
|
|
|
|
@override
|
|
String get appSettings_maxMessageRetries =>
|
|
'Número máximo de reintentos de envío de mensajes';
|
|
|
|
@override
|
|
String get appSettings_maxMessageRetriesSubtitle =>
|
|
'Número de intentos de reintento antes de marcar un mensaje como fallido.';
|
|
|
|
@override
|
|
String get appSettings_battery => 'Batería';
|
|
|
|
@override
|
|
String get appSettings_batteryChemistry => 'Química de la batería';
|
|
|
|
@override
|
|
String appSettings_batteryChemistryPerDevice(String deviceName) {
|
|
return 'Configurar por dispositivo ($deviceName)';
|
|
}
|
|
|
|
@override
|
|
String get appSettings_batteryChemistryConnectFirst =>
|
|
'Conéctate a un dispositivo para elegirlo';
|
|
|
|
@override
|
|
String get appSettings_batteryNmc => '18650 NMC (3,0-4,2 V)';
|
|
|
|
@override
|
|
String get appSettings_batteryLifepo4 => 'LiFePO4 (2,6-3,65 V)';
|
|
|
|
@override
|
|
String get appSettings_batteryLipo => 'LiPo (3,0-4,2 V)';
|
|
|
|
@override
|
|
String get appSettings_mapDisplay => 'Visualización del mapa';
|
|
|
|
@override
|
|
String get appSettings_showRepeaters => 'Mostrar repetidores';
|
|
|
|
@override
|
|
String get appSettings_showRepeatersSubtitle =>
|
|
'Mostrar nodos de repetidor en el mapa';
|
|
|
|
@override
|
|
String get appSettings_showChatNodes => 'Mostrar nodos de chat';
|
|
|
|
@override
|
|
String get appSettings_showChatNodesSubtitle =>
|
|
'Mostrar nodos de chat en el mapa';
|
|
|
|
@override
|
|
String get appSettings_showOtherNodes => 'Mostrar otros nodos';
|
|
|
|
@override
|
|
String get appSettings_showOtherNodesSubtitle =>
|
|
'Mostrar otros tipos de nodo en el mapa';
|
|
|
|
@override
|
|
String get appSettings_timeFilter => 'Filtro de tiempo';
|
|
|
|
@override
|
|
String get appSettings_timeFilterShowAll => 'Mostrar todos los nodos';
|
|
|
|
@override
|
|
String appSettings_timeFilterShowLast(int hours) {
|
|
return 'Mostrar nodos de las últimas $hours horas';
|
|
}
|
|
|
|
@override
|
|
String get appSettings_mapTimeFilter => 'Filtro de tiempo del mapa';
|
|
|
|
@override
|
|
String get appSettings_showNodesDiscoveredWithin =>
|
|
'Mostrar nodos descubiertos dentro de:';
|
|
|
|
@override
|
|
String get appSettings_allTime => 'Todo el tiempo';
|
|
|
|
@override
|
|
String get appSettings_lastHour => 'Última hora';
|
|
|
|
@override
|
|
String get appSettings_last6Hours => 'Últimas 6 horas';
|
|
|
|
@override
|
|
String get appSettings_last24Hours => 'Últimas 24 horas';
|
|
|
|
@override
|
|
String get appSettings_lastWeek => 'La semana pasada';
|
|
|
|
@override
|
|
String get appSettings_offlineMapCache => 'Caché de mapa sin conexión';
|
|
|
|
@override
|
|
String get appSettings_unitsTitle => 'Unidades';
|
|
|
|
@override
|
|
String get appSettings_unitsMetric => 'Métrico (m/km)';
|
|
|
|
@override
|
|
String get appSettings_unitsImperial => 'Imperial (pies/millas)';
|
|
|
|
@override
|
|
String get appSettings_noAreaSelected => 'No se ha seleccionado ningún área';
|
|
|
|
@override
|
|
String appSettings_areaSelectedZoom(int minZoom, int maxZoom) {
|
|
return 'Área seleccionada (zoom $minZoom-$maxZoom)';
|
|
}
|
|
|
|
@override
|
|
String get appSettings_debugCard => 'Depurar';
|
|
|
|
@override
|
|
String get appSettings_appDebugLogging => 'Registro de Depuración de la App';
|
|
|
|
@override
|
|
String get appSettings_appDebugLoggingSubtitle =>
|
|
'Registrar mensajes de depuración de la app para solucionar problemas';
|
|
|
|
@override
|
|
String get appSettings_appDebugLoggingEnabled =>
|
|
'Registro de depuración de la aplicación habilitado';
|
|
|
|
@override
|
|
String get appSettings_appDebugLoggingDisabled =>
|
|
'El registro de depuración de la aplicación está desactivado';
|
|
|
|
@override
|
|
String get contacts_title => 'Contactos';
|
|
|
|
@override
|
|
String get contacts_noContacts => 'Aún no hay contactos.';
|
|
|
|
@override
|
|
String get contacts_contactsWillAppear =>
|
|
'Los contactos aparecerán cuando los dispositivos anuncien.';
|
|
|
|
@override
|
|
String get contacts_unread => 'No leído';
|
|
|
|
@override
|
|
String get contacts_searchContactsNoNumber => 'Buscar contactos...';
|
|
|
|
@override
|
|
String contacts_searchContacts(int number, String str) {
|
|
return 'Buscar $number$str contactos...';
|
|
}
|
|
|
|
@override
|
|
String contacts_searchFavorites(int number, String str) {
|
|
return 'Buscar $number$str favoritos...';
|
|
}
|
|
|
|
@override
|
|
String contacts_searchUsers(int number, String str) {
|
|
return 'Buscar $number$str usuarios...';
|
|
}
|
|
|
|
@override
|
|
String contacts_searchRepeaters(int number, String str) {
|
|
return 'Buscar $number$str repetidores...';
|
|
}
|
|
|
|
@override
|
|
String contacts_searchRoomServers(int number, String str) {
|
|
return 'Buscar $number$str servidores de sala...';
|
|
}
|
|
|
|
@override
|
|
String get contacts_noUnreadContacts => 'No hay contactos sin leer';
|
|
|
|
@override
|
|
String get contacts_noContactsFound =>
|
|
'No se encontraron contactos ni grupos.';
|
|
|
|
@override
|
|
String get contacts_deleteContact => 'Eliminar contacto';
|
|
|
|
@override
|
|
String contacts_removeConfirm(String contactName) {
|
|
return '¿Eliminar $contactName de los contactos?';
|
|
}
|
|
|
|
@override
|
|
String get contacts_manageRepeater => 'Gestionar repetidor';
|
|
|
|
@override
|
|
String get contacts_manageRoom => 'Gestionar servidor de sala';
|
|
|
|
@override
|
|
String get contacts_roomLogin => 'Inicio de sesión en sala';
|
|
|
|
@override
|
|
String get contacts_openChat => 'Abrir chat';
|
|
|
|
@override
|
|
String get contacts_editGroup => 'Editar grupo';
|
|
|
|
@override
|
|
String get contacts_deleteGroup => 'Eliminar grupo';
|
|
|
|
@override
|
|
String contacts_deleteGroupConfirm(String groupName) {
|
|
return 'Eliminar $groupName?';
|
|
}
|
|
|
|
@override
|
|
String get contacts_newGroup => 'Nuevo Grupo';
|
|
|
|
@override
|
|
String get contacts_moreOptions => 'Más opciones';
|
|
|
|
@override
|
|
String get contacts_searchOpen => 'Buscar contactos';
|
|
|
|
@override
|
|
String get contacts_searchClose => 'Cerrar búsqueda';
|
|
|
|
@override
|
|
String get contacts_groupName => 'Nombre del grupo';
|
|
|
|
@override
|
|
String get contacts_groupNameRequired => 'El nombre del grupo es obligatorio';
|
|
|
|
@override
|
|
String get contacts_groupNameReserved =>
|
|
'Este nombre de grupo está reservado';
|
|
|
|
@override
|
|
String contacts_groupAlreadyExists(String name) {
|
|
return 'El grupo \"$name\" ya existe';
|
|
}
|
|
|
|
@override
|
|
String get contacts_filterContacts => 'Filtrar contactos...';
|
|
|
|
@override
|
|
String get contacts_noContactsMatchFilter =>
|
|
'No hay contactos que coincidan con tu filtro';
|
|
|
|
@override
|
|
String get contacts_noMembers => 'No miembros';
|
|
|
|
@override
|
|
String get contacts_lastSeenNow => 'Última vez que se vio ahora';
|
|
|
|
@override
|
|
String contacts_lastSeenMinsAgo(int minutes) {
|
|
return '~ $minutes minutos';
|
|
}
|
|
|
|
@override
|
|
String get contacts_lastSeenHourAgo => '~ 1 hora';
|
|
|
|
@override
|
|
String contacts_lastSeenHoursAgo(int hours) {
|
|
return '~ $hours horas';
|
|
}
|
|
|
|
@override
|
|
String get contacts_lastSeenDayAgo => '~ 1 día';
|
|
|
|
@override
|
|
String contacts_lastSeenDaysAgo(int days) {
|
|
return '~ $days días';
|
|
}
|
|
|
|
@override
|
|
String get contact_info => 'Información de contacto';
|
|
|
|
@override
|
|
String get contact_settings => 'Configuración de contacto';
|
|
|
|
@override
|
|
String get contact_telemetry => 'Telemetría';
|
|
|
|
@override
|
|
String get contact_lastSeen => 'Visto por última vez';
|
|
|
|
@override
|
|
String get contact_clearChat => 'Borrar chat';
|
|
|
|
@override
|
|
String get contact_teleBase => 'Base de Telemetría';
|
|
|
|
@override
|
|
String get contact_teleBaseSubtitle =>
|
|
'Permitir el intercambio de nivel de batería y telemetría básica';
|
|
|
|
@override
|
|
String get contact_teleLoc => 'Ubicación de telemetría';
|
|
|
|
@override
|
|
String get contact_teleLocSubtitle =>
|
|
'Permitir el intercambio de datos de ubicación';
|
|
|
|
@override
|
|
String get contact_teleEnv => 'Entorno de Telemetría';
|
|
|
|
@override
|
|
String get contact_teleEnvSubtitle =>
|
|
'Permitir el intercambio de datos de sensores de entorno';
|
|
|
|
@override
|
|
String get channels_title => 'Canales';
|
|
|
|
@override
|
|
String get channels_noChannelsConfigured => 'No se han configurado canales';
|
|
|
|
@override
|
|
String get channels_addPublicChannel => 'Añadir Canal Público';
|
|
|
|
@override
|
|
String get channels_searchChannels => 'Buscar canales...';
|
|
|
|
@override
|
|
String get channels_noChannelsFound => 'No se encontraron canales';
|
|
|
|
@override
|
|
String channels_channelIndex(int index) {
|
|
return 'Canal $index';
|
|
}
|
|
|
|
@override
|
|
String get channels_public => 'Público';
|
|
|
|
@override
|
|
String channels_via(String path) {
|
|
return 'vía $path';
|
|
}
|
|
|
|
@override
|
|
String get channels_private => 'Privado';
|
|
|
|
@override
|
|
String get channels_editChannel => 'Editar canal';
|
|
|
|
@override
|
|
String get channels_muteChannel => 'Silenciar canal';
|
|
|
|
@override
|
|
String get channels_unmuteChannel => 'Activar canal';
|
|
|
|
@override
|
|
String get channels_deleteChannel => 'Eliminar canal';
|
|
|
|
@override
|
|
String channels_deleteChannelConfirm(String name) {
|
|
return 'Eliminar \"$name\"? Esto no se puede deshacer.';
|
|
}
|
|
|
|
@override
|
|
String channels_channelDeleteFailed(String name) {
|
|
return 'No se pudo eliminar el canal \"$name\"';
|
|
}
|
|
|
|
@override
|
|
String channels_channelDeleted(String name) {
|
|
return 'Canal \"$name\" eliminado';
|
|
}
|
|
|
|
@override
|
|
String get channels_addChannel => 'Añadir Canal';
|
|
|
|
@override
|
|
String get channels_channelIndexLabel => 'Índice de Canal';
|
|
|
|
@override
|
|
String get channels_channelName => 'Nombre del canal';
|
|
|
|
@override
|
|
String get channels_usePublicChannel => 'Usar Canal Público';
|
|
|
|
@override
|
|
String get channels_standardPublicPsk => 'PSK estándar público';
|
|
|
|
@override
|
|
String get channels_pskHex => 'PSK (Hex)';
|
|
|
|
@override
|
|
String get channels_generateRandomPsk => 'Generar PSK aleatorio';
|
|
|
|
@override
|
|
String get channels_enterChannelName =>
|
|
'Por favor, introduce un nombre de canal';
|
|
|
|
@override
|
|
String get channels_pskMustBe32Hex =>
|
|
'PSK debe ser de 32 caracteres hexadecimales.';
|
|
|
|
@override
|
|
String channels_channelAdded(String name) {
|
|
return 'Canal \"$name\" añadido';
|
|
}
|
|
|
|
@override
|
|
String channels_editChannelTitle(int index) {
|
|
return 'Editar Canal $index';
|
|
}
|
|
|
|
@override
|
|
String get channels_smazCompression => 'Compresión SMAZ';
|
|
|
|
@override
|
|
String get channels_cyr2latCompression => 'Compresión Cyr2Lat';
|
|
|
|
@override
|
|
String get channels_cyr2latCompressionDscr =>
|
|
'Reemplaza algunos caracteres cirílicos con caracteres latinos al enviar.';
|
|
|
|
@override
|
|
String get channels_cyr2latSettingsHeading => 'Configuración de Cyr2Lat';
|
|
|
|
@override
|
|
String get channels_cyr2latSettingsSubheading => 'Lista de sustituciones';
|
|
|
|
@override
|
|
String get channels_cyr2latSettingsDscr =>
|
|
'Editar la configuración JSON de sustitución de caracteres';
|
|
|
|
@override
|
|
String get channels_cyr2latSettingsDialogHint => 'Mapa JSON de sustituciones';
|
|
|
|
@override
|
|
String channels_cyr2latSettingsDialogWrongJSON(Object error) {
|
|
return 'JSON incorrecto: $error';
|
|
}
|
|
|
|
@override
|
|
String channels_channelUpdated(String name) {
|
|
return 'Canal \"$name\" actualizado';
|
|
}
|
|
|
|
@override
|
|
String get settings_cyr2latProfileAdd => 'Añadir perfil Cyr2Lat';
|
|
|
|
@override
|
|
String get settings_cyr2latProfileName => 'Nombre del perfil';
|
|
|
|
@override
|
|
String get settings_cyr2latProfileNameEmpty =>
|
|
'El nombre del perfil no puede estar vacío';
|
|
|
|
@override
|
|
String get settings_cyr2latProfileAdded => 'Perfil añadido correctamente';
|
|
|
|
@override
|
|
String get settings_cyr2latProfileUpdated =>
|
|
'Perfil actualizado correctamente';
|
|
|
|
@override
|
|
String get settings_cyr2latProfileEdit => 'Editar perfil Cyr2Lat';
|
|
|
|
@override
|
|
String get settings_cyr2latProfileDelete => 'Eliminar perfil Cyr2Lat';
|
|
|
|
@override
|
|
String get settings_cyr2latProfileDeleted => 'Perfil eliminado correctamente';
|
|
|
|
@override
|
|
String settings_cyr2latProfileDeleteDscr(String name) {
|
|
return '¿Está seguro de que desea eliminar el perfil \"$name\"?';
|
|
}
|
|
|
|
@override
|
|
String get channels_publicChannelAdded => 'Canal público añadido';
|
|
|
|
@override
|
|
String get channels_sortBy => 'Ordenar por';
|
|
|
|
@override
|
|
String get channels_sortManual => 'Manual';
|
|
|
|
@override
|
|
String get channels_sortAZ => 'De la A a la Z';
|
|
|
|
@override
|
|
String get channels_sortLatestMessages => 'Últimos mensajes';
|
|
|
|
@override
|
|
String get channels_sortUnread => 'Sin leer';
|
|
|
|
@override
|
|
String get channels_createPrivateChannel => 'Crear un Canal Privado';
|
|
|
|
@override
|
|
String get channels_createPrivateChannelDesc =>
|
|
'Cifrado con una clave secreta.';
|
|
|
|
@override
|
|
String get channels_joinPrivateChannel => 'Únete a un Canal Privado';
|
|
|
|
@override
|
|
String get channels_joinPrivateChannelDesc =>
|
|
'Introducir manualmente una clave secreta.';
|
|
|
|
@override
|
|
String get channels_joinPublicChannel => 'Únete al Canal Público';
|
|
|
|
@override
|
|
String get channels_joinPublicChannelDesc =>
|
|
'Cualquiera puede unirse a este canal.';
|
|
|
|
@override
|
|
String get channels_joinHashtagChannel => 'Únete a un Canal con Hashtag';
|
|
|
|
@override
|
|
String get channels_joinHashtagChannelDesc =>
|
|
'Cualquiera puede unirse a los canales de hashtag.';
|
|
|
|
@override
|
|
String get channels_scanQrCode => 'Escanear un Código QR';
|
|
|
|
@override
|
|
String get channels_scanQrCodeComingSoon => 'Próximamente';
|
|
|
|
@override
|
|
String get channels_enterHashtag => 'Introducir hashtag';
|
|
|
|
@override
|
|
String get channels_hashtagHint => 'ej. #equipo';
|
|
|
|
@override
|
|
String channels_regionSetTo(String region) {
|
|
return 'Region: $region';
|
|
}
|
|
|
|
@override
|
|
String get channels_regionNotSet => 'Region: none';
|
|
|
|
@override
|
|
String get channels_regionSelect_Title => 'Select a region';
|
|
|
|
@override
|
|
String get channels_clearRegion => 'Clear region';
|
|
|
|
@override
|
|
String get chat_noMessages => 'Aún no hay mensajes';
|
|
|
|
@override
|
|
String get chat_sendMessage => 'Enviar mensaje';
|
|
|
|
@override
|
|
String chat_sendMessageTo(String contactName) {
|
|
return 'Enviar un mensaje a $contactName';
|
|
}
|
|
|
|
@override
|
|
String get chat_sendMessageToStart => 'Enviar un mensaje para comenzar';
|
|
|
|
@override
|
|
String get chat_originalMessageNotFound => 'Mensaje original no encontrado';
|
|
|
|
@override
|
|
String chat_replyingTo(String name) {
|
|
return 'Responder a $name';
|
|
}
|
|
|
|
@override
|
|
String chat_replyTo(String name) {
|
|
return 'Responder a $name';
|
|
}
|
|
|
|
@override
|
|
String get chat_location => 'Ubicación';
|
|
|
|
@override
|
|
String get chat_typeMessage => 'Escribe un mensaje...';
|
|
|
|
@override
|
|
String chat_messageTooLong(int maxBytes) {
|
|
return 'Mensaje demasiado largo (máximo $maxBytes bytes).';
|
|
}
|
|
|
|
@override
|
|
String get chat_messageCopied => 'Mensaje copiado';
|
|
|
|
@override
|
|
String get chat_messageDeleted => 'Mensaje borrado';
|
|
|
|
@override
|
|
String get chat_retryingMessage => 'Reintentando…';
|
|
|
|
@override
|
|
String chat_retryCount(int current, int max) {
|
|
return 'Reintentar $current/$max';
|
|
}
|
|
|
|
@override
|
|
String get chat_sendGif => 'Enviar GIF';
|
|
|
|
@override
|
|
String get chat_reply => 'Responder';
|
|
|
|
@override
|
|
String get chat_addReaction => 'Añadir Reacción';
|
|
|
|
@override
|
|
String get chat_me => 'Yo';
|
|
|
|
@override
|
|
String get emojiCategorySmileys => 'Emoticones';
|
|
|
|
@override
|
|
String get emojiCategoryGestures => 'Gestos';
|
|
|
|
@override
|
|
String get emojiCategoryHearts => 'Corazones';
|
|
|
|
@override
|
|
String get emojiCategoryObjects => 'Objetos';
|
|
|
|
@override
|
|
String get gifPicker_title => 'Elegir un GIF';
|
|
|
|
@override
|
|
String get gifPicker_searchHint => 'Buscar GIFs...';
|
|
|
|
@override
|
|
String get gifPicker_poweredBy => 'Con tecnología de GIPHY';
|
|
|
|
@override
|
|
String get gifPicker_noGifsFound => 'No se encontraron GIFs';
|
|
|
|
@override
|
|
String get gifPicker_failedLoad => 'No se pudo cargar los GIFs';
|
|
|
|
@override
|
|
String get gifPicker_failedSearch => 'No se encontraron GIFs';
|
|
|
|
@override
|
|
String get gifPicker_noInternet => 'No hay conexión a internet';
|
|
|
|
@override
|
|
String get debugLog_appTitle => 'Registro de Depuración de la App';
|
|
|
|
@override
|
|
String get debugLog_bleTitle => 'Registro de Depuración BLE';
|
|
|
|
@override
|
|
String get debugLog_copyLog => 'Copiar registro';
|
|
|
|
@override
|
|
String get debugLog_clearLog => 'Borrar registro';
|
|
|
|
@override
|
|
String get debugLog_copied => 'Registro de depuración copiado';
|
|
|
|
@override
|
|
String get debugLog_bleCopied => 'Registro BLE copiado';
|
|
|
|
@override
|
|
String get debugLog_noEntries => 'Aún no hay registros de depuración.';
|
|
|
|
@override
|
|
String get debugLog_enableInSettings =>
|
|
'Habilitar el registro de depuración de la aplicación en la configuración';
|
|
|
|
@override
|
|
String get debugLog_frames => 'Marcos';
|
|
|
|
@override
|
|
String get debugLog_rawLogRx => 'Registro bruto RX';
|
|
|
|
@override
|
|
String get debugLog_noBleActivity => 'Aún no hay actividad BLE';
|
|
|
|
@override
|
|
String debugFrame_length(int count) {
|
|
return 'Longitud del Marco: $count bytes';
|
|
}
|
|
|
|
@override
|
|
String debugFrame_command(String value) {
|
|
return 'Comando: 0x$value';
|
|
}
|
|
|
|
@override
|
|
String get debugFrame_textMessageHeader => 'Mensaje de Texto:';
|
|
|
|
@override
|
|
String debugFrame_destinationPubKey(String pubKey) {
|
|
return '- Destino PubKey: $pubKey';
|
|
}
|
|
|
|
@override
|
|
String debugFrame_timestamp(int timestamp) {
|
|
return '- Marca de tiempo: $timestamp';
|
|
}
|
|
|
|
@override
|
|
String debugFrame_flags(String value) {
|
|
return '- Banderas: 0x$value';
|
|
}
|
|
|
|
@override
|
|
String debugFrame_textType(int type, String label) {
|
|
return '- Tipo de texto: $type ($label)';
|
|
}
|
|
|
|
@override
|
|
String get debugFrame_textTypeCli => 'CLI';
|
|
|
|
@override
|
|
String get debugFrame_textTypePlain => 'Plano';
|
|
|
|
@override
|
|
String debugFrame_text(String text) {
|
|
return '- Texto: \"$text\"';
|
|
}
|
|
|
|
@override
|
|
String get debugFrame_hexDump => 'Volcado hexadecimal:';
|
|
|
|
@override
|
|
String chat_hopsCount(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: 'saltos',
|
|
one: 'salto',
|
|
);
|
|
return '$count $_temp0';
|
|
}
|
|
|
|
@override
|
|
String get chat_removePath => 'Eliminar ruta';
|
|
|
|
@override
|
|
String get chat_noPathHistoryYet =>
|
|
'Aún no hay historial de rutas.\nEnvía un mensaje para descubrir rutas.';
|
|
|
|
@override
|
|
String get chat_pathCleared =>
|
|
'Ruta borrada. El siguiente mensaje redescubrirá la ruta.';
|
|
|
|
@override
|
|
String get chat_fullPath => 'Ruta completa';
|
|
|
|
@override
|
|
String get routing_title => 'Enrutamiento';
|
|
|
|
@override
|
|
String get routing_modeAuto => 'Automático';
|
|
|
|
@override
|
|
String get routing_modeFlood => 'Inundación';
|
|
|
|
@override
|
|
String get routing_modeManual => 'Manual';
|
|
|
|
@override
|
|
String get routing_modeAutoHint =>
|
|
'Selecciona automáticamente la mejor ruta conocida y, si no hay ninguna, usa el modo de inundación.';
|
|
|
|
@override
|
|
String get routing_modeFloodHint =>
|
|
'Transmite por todos los repetidores. Es la opción más fiable, pero usa más tiempo de aire.';
|
|
|
|
@override
|
|
String get routing_modeManualHint =>
|
|
'Siempre sigue exactamente la ruta que has definido.';
|
|
|
|
@override
|
|
String get routing_currentRoute => 'Ruta actual';
|
|
|
|
@override
|
|
String get routing_directNoHops => 'Directo — sin saltos de repetidor';
|
|
|
|
@override
|
|
String get routing_noPathYet =>
|
|
'Aún no hay una ruta. El siguiente mensaje se enviará por inundación hasta que se descubra una ruta.';
|
|
|
|
@override
|
|
String get routing_floodBroadcast => 'Transmisión por todos los repetidores';
|
|
|
|
@override
|
|
String get routing_editPath => 'Editar ruta';
|
|
|
|
@override
|
|
String get routing_forgetPath => 'Olvidar ruta';
|
|
|
|
@override
|
|
String get routing_knownPaths => 'Rutas conocidas';
|
|
|
|
@override
|
|
String get routing_knownPathsHint => 'Toca una ruta para cambiar a ella.';
|
|
|
|
@override
|
|
String get routing_inUse => 'En uso';
|
|
|
|
@override
|
|
String get routing_qualityStrong => 'Primer salto fuerte';
|
|
|
|
@override
|
|
String get routing_qualityGood => 'Primer salto bueno';
|
|
|
|
@override
|
|
String get routing_qualityFair => 'Primer salto aceptable';
|
|
|
|
@override
|
|
String get routing_qualityWorked => 'Ha entregado';
|
|
|
|
@override
|
|
String get routing_qualityFlood => 'Escuchado por inundación';
|
|
|
|
@override
|
|
String get routing_qualityUntested => 'Sin probar';
|
|
|
|
@override
|
|
String routing_lastWorked(String when) {
|
|
return 'funcionó $when';
|
|
}
|
|
|
|
@override
|
|
String get routing_neverWorked => 'nunca confirmado';
|
|
|
|
@override
|
|
String routing_deliveryCounts(int successes, int failures) {
|
|
return '$successes entregados, $failures fallidos';
|
|
}
|
|
|
|
@override
|
|
String get routing_floodDelivery => 'Entrega por inundación';
|
|
|
|
@override
|
|
String get pathEditor_title => 'Crear ruta';
|
|
|
|
@override
|
|
String pathEditor_hopCounter(int count) {
|
|
return '$count de 64 saltos';
|
|
}
|
|
|
|
@override
|
|
String get pathEditor_noHops =>
|
|
'Aún no se han añadido saltos. Toca los repetidores de abajo para añadirlos en orden, o guarda la ruta sin saltos para enviarla directamente.';
|
|
|
|
@override
|
|
String get pathEditor_addHops => 'Añadir los saltos en orden';
|
|
|
|
@override
|
|
String get pathEditor_searchRepeaters => 'Buscar repetidores';
|
|
|
|
@override
|
|
String get pathEditor_advancedHex =>
|
|
'Avanzado: ruta hexadecimal sin procesar';
|
|
|
|
@override
|
|
String get pathEditor_hexLabel => 'Prefijos hexadecimales';
|
|
|
|
@override
|
|
String get pathEditor_hexHelper =>
|
|
'Dos caracteres hexadecimales por salto, separados por comas.';
|
|
|
|
@override
|
|
String pathEditor_invalidTokens(String tokens) {
|
|
return 'Inválido: $tokens';
|
|
}
|
|
|
|
@override
|
|
String get pathEditor_tooManyHops => 'Máximo 64 saltos';
|
|
|
|
@override
|
|
String get pathEditor_usePath => 'Usar esta ruta';
|
|
|
|
@override
|
|
String get pathEditor_removeHop => 'Eliminar salto';
|
|
|
|
@override
|
|
String get pathEditor_unknownHop => 'Repetidor desconocido';
|
|
|
|
@override
|
|
String get chat_pathSavedLocally =>
|
|
'Guardado localmente. Conéctate para sincronizar.';
|
|
|
|
@override
|
|
String get chat_pathDeviceConfirmed => 'Dispositivo confirmado.';
|
|
|
|
@override
|
|
String get chat_pathDeviceNotConfirmed => 'Dispositivo aún no confirmado.';
|
|
|
|
@override
|
|
String get chat_type => 'Tipo';
|
|
|
|
@override
|
|
String get chat_path => 'Ruta';
|
|
|
|
@override
|
|
String get chat_publicKey => 'Clave pública';
|
|
|
|
@override
|
|
String get chat_compressOutgoingMessages => 'Comprimir mensajes salientes';
|
|
|
|
@override
|
|
String get chat_floodForced => 'Inundación (forzada)';
|
|
|
|
@override
|
|
String get chat_directForced => 'Directo (forzado)';
|
|
|
|
@override
|
|
String chat_hopsForced(int count) {
|
|
return '$count saltos (forzados)';
|
|
}
|
|
|
|
@override
|
|
String get chat_floodAuto => 'Inundación (automática)';
|
|
|
|
@override
|
|
String get chat_direct => 'Directo';
|
|
|
|
@override
|
|
String get chat_poiShared => 'Punto de interés compartido';
|
|
|
|
@override
|
|
String chat_unread(int count) {
|
|
return 'Sin leer: $count';
|
|
}
|
|
|
|
@override
|
|
String get chat_markAsUnread => 'Marcar como no leído';
|
|
|
|
@override
|
|
String get chat_newMessages => 'Nuevos mensajes';
|
|
|
|
@override
|
|
String get chat_openLink => '¿Abrir enlace?';
|
|
|
|
@override
|
|
String get chat_openLinkConfirmation =>
|
|
'¿Quieres abrir este enlace en tu navegador?';
|
|
|
|
@override
|
|
String get chat_open => 'Abrir';
|
|
|
|
@override
|
|
String chat_couldNotOpenLink(String url) {
|
|
return 'No se pudo abrir el enlace: $url';
|
|
}
|
|
|
|
@override
|
|
String get chat_invalidLink => 'Formato de enlace no válido';
|
|
|
|
@override
|
|
String get map_title => 'Mapa de nodos';
|
|
|
|
@override
|
|
String get map_searchHint => 'Buscar por nombre o ID del nodo';
|
|
|
|
@override
|
|
String get map_activity => 'Actividad';
|
|
|
|
@override
|
|
String get map_online => 'En línea';
|
|
|
|
@override
|
|
String get map_recent => 'Reciente';
|
|
|
|
@override
|
|
String get map_stale => 'Antiguo; pasado de fecha';
|
|
|
|
@override
|
|
String get map_visible => 'Visible';
|
|
|
|
@override
|
|
String get map_hidden => 'Oculto';
|
|
|
|
@override
|
|
String get map_centerOnNode => 'Enfocar en el nodo';
|
|
|
|
@override
|
|
String get map_details => 'Detalles';
|
|
|
|
@override
|
|
String get map_noGps => 'Sin GPS';
|
|
|
|
@override
|
|
String get map_noResults => 'No se encontraron nodos coincidentes.';
|
|
|
|
@override
|
|
String get map_lineOfSight => 'Línea de visión';
|
|
|
|
@override
|
|
String get map_losScreenTitle => 'Línea de visión';
|
|
|
|
@override
|
|
String get map_noNodesWithLocation => 'No hay nodos con datos de ubicación';
|
|
|
|
@override
|
|
String get map_nodesNeedGps =>
|
|
'Los nodos necesitan compartir sus coordenadas GPS\npara aparecer en el mapa';
|
|
|
|
@override
|
|
String map_nodesCount(int count) {
|
|
return 'Nodos: $count';
|
|
}
|
|
|
|
@override
|
|
String map_pinsCount(int count) {
|
|
return 'Pines: $count';
|
|
}
|
|
|
|
@override
|
|
String get map_chat => 'Chat';
|
|
|
|
@override
|
|
String get map_repeater => 'Repetidor';
|
|
|
|
@override
|
|
String get map_room => 'Sala';
|
|
|
|
@override
|
|
String get map_sensor => 'Sensor';
|
|
|
|
@override
|
|
String get map_pinDm => 'Pin (DM)';
|
|
|
|
@override
|
|
String get map_pinPrivate => 'Pin (privado)';
|
|
|
|
@override
|
|
String get map_pinPublic => 'Pin (público)';
|
|
|
|
@override
|
|
String get map_lastSeen => 'Última vez visto';
|
|
|
|
@override
|
|
String get map_disconnectConfirm =>
|
|
'¿Está seguro de que desea desconectarse de este dispositivo?';
|
|
|
|
@override
|
|
String get map_from => 'De';
|
|
|
|
@override
|
|
String get map_source => 'Fuente';
|
|
|
|
@override
|
|
String get map_flags => 'Banderas';
|
|
|
|
@override
|
|
String get map_type => 'Type';
|
|
|
|
@override
|
|
String get map_path => 'Path';
|
|
|
|
@override
|
|
String get map_location => 'Location';
|
|
|
|
@override
|
|
String get map_estLocation => 'Est. Location';
|
|
|
|
@override
|
|
String get map_publicKey => 'Public Key';
|
|
|
|
@override
|
|
String get map_publicKeyPrefixHint => 'e.g. ab12';
|
|
|
|
@override
|
|
String get map_shareMarkerHere => 'Compartir marcador aquí';
|
|
|
|
@override
|
|
String get map_setAsMyLocation => 'Establecer mi ubicación';
|
|
|
|
@override
|
|
String get map_pinLabel => 'Etiqueta del pin';
|
|
|
|
@override
|
|
String get map_label => 'Etiqueta';
|
|
|
|
@override
|
|
String get map_pointOfInterest => 'Punto de interés';
|
|
|
|
@override
|
|
String get map_sendToContact => 'Enviar a contacto';
|
|
|
|
@override
|
|
String get map_sendToChannel => 'Enviar a canal';
|
|
|
|
@override
|
|
String get map_noChannelsAvailable => 'No hay canales disponibles';
|
|
|
|
@override
|
|
String get map_publicLocationShare => 'Compartir ubicación pública';
|
|
|
|
@override
|
|
String map_publicLocationShareConfirm(String channelLabel) {
|
|
return 'Estás a punto de compartir una ubicación en $channelLabel. Este canal es público y cualquiera con la PSK puede verla.';
|
|
}
|
|
|
|
@override
|
|
String get map_connectToShareMarkers =>
|
|
'Conéctate a un dispositivo para compartir marcadores';
|
|
|
|
@override
|
|
String get map_filterNodes => 'Filtrar nodos';
|
|
|
|
@override
|
|
String get map_nodeTypes => 'Tipos de nodo';
|
|
|
|
@override
|
|
String get map_chatNodes => 'Nodos de chat';
|
|
|
|
@override
|
|
String get map_repeaters => 'Repetidores';
|
|
|
|
@override
|
|
String get map_otherNodes => 'Otros nodos';
|
|
|
|
@override
|
|
String get map_showOverlaps => 'Superposiciones de tecla repetidora';
|
|
|
|
@override
|
|
String get map_keyPrefix => 'Prefijo de clave';
|
|
|
|
@override
|
|
String get map_filterByKeyPrefix => 'Filtrar por prefijo clave';
|
|
|
|
@override
|
|
String get map_publicKeyPrefix => 'Prefijo de clave pública';
|
|
|
|
@override
|
|
String get map_markers => 'Marcadores';
|
|
|
|
@override
|
|
String get map_showSharedMarkers => 'Mostrar marcadores compartidos';
|
|
|
|
@override
|
|
String get map_showGuessedLocations =>
|
|
'Mostrar las ubicaciones estimadas de los nodos.';
|
|
|
|
@override
|
|
String get map_showDiscoveryContacts => 'Mostrar contactos de descubrimiento';
|
|
|
|
@override
|
|
String get map_guessedLocation => 'Ubicación estimada';
|
|
|
|
@override
|
|
String get map_lastSeenTime => 'Hora de última vez visto';
|
|
|
|
@override
|
|
String get map_sharedPin => 'Pin compartido';
|
|
|
|
@override
|
|
String get map_sharedAt => 'Compartido';
|
|
|
|
@override
|
|
String get map_joinRoom => 'Unirse a la sala';
|
|
|
|
@override
|
|
String get map_manageRepeater => 'Gestionar repetidor';
|
|
|
|
@override
|
|
String get map_tapToAdd => 'Toque los nodos para añadirlos a la ruta.';
|
|
|
|
@override
|
|
String get map_runTrace => 'Ejecutar traza de ruta';
|
|
|
|
@override
|
|
String get map_runTraceWithReturnPath => 'Volver por la misma ruta.';
|
|
|
|
@override
|
|
String get map_removeLast => 'Eliminar último';
|
|
|
|
@override
|
|
String get map_pathTraceCancelled => 'Traza de ruta cancelada.';
|
|
|
|
@override
|
|
String get mapCache_title => 'Caché de mapa sin conexión';
|
|
|
|
@override
|
|
String get mapCache_selectAreaFirst =>
|
|
'Selecciona primero un área para almacenar en caché';
|
|
|
|
@override
|
|
String get mapCache_noTilesToDownload =>
|
|
'No hay teselas para descargar para esta área.';
|
|
|
|
@override
|
|
String get mapCache_downloadTilesTitle => 'Descargar teselas';
|
|
|
|
@override
|
|
String mapCache_downloadTilesPrompt(int count) {
|
|
return '¿Descargar $count teselas para uso sin conexión?';
|
|
}
|
|
|
|
@override
|
|
String get mapCache_downloadAction => 'Descargar';
|
|
|
|
@override
|
|
String mapCache_cachedTiles(int count) {
|
|
return 'Teselas almacenadas: $count';
|
|
}
|
|
|
|
@override
|
|
String mapCache_cachedTilesWithFailed(int downloaded, int failed) {
|
|
return 'Teselas almacenadas: $downloaded ($failed fallidas)';
|
|
}
|
|
|
|
@override
|
|
String get mapCache_clearOfflineCacheTitle => 'Borrar caché sin conexión';
|
|
|
|
@override
|
|
String get mapCache_clearOfflineCachePrompt =>
|
|
'¿Eliminar todas las teselas del mapa almacenadas en caché?';
|
|
|
|
@override
|
|
String get mapCache_offlineCacheCleared => 'Caché sin conexión borrada';
|
|
|
|
@override
|
|
String get mapCache_noAreaSelected => 'No se ha seleccionado ningún área';
|
|
|
|
@override
|
|
String get mapCache_cacheArea => 'Área de caché';
|
|
|
|
@override
|
|
String get mapCache_useCurrentView => 'Usar vista actual';
|
|
|
|
@override
|
|
String get mapCache_zoomRange => 'Rango de zoom';
|
|
|
|
@override
|
|
String mapCache_estimatedTiles(int count) {
|
|
return 'Teselas estimadas: $count';
|
|
}
|
|
|
|
@override
|
|
String mapCache_downloadedTiles(int completed, int total) {
|
|
return 'Descargados $completed / $total';
|
|
}
|
|
|
|
@override
|
|
String get mapCache_downloadTilesButton => 'Descargar teselas';
|
|
|
|
@override
|
|
String get mapCache_clearCacheButton => 'Borrar caché';
|
|
|
|
@override
|
|
String mapCache_failedDownloads(int count) {
|
|
return 'Descargas fallidas: $count';
|
|
}
|
|
|
|
@override
|
|
String mapCache_boundsLabel(
|
|
String north,
|
|
String south,
|
|
String east,
|
|
String west,
|
|
) {
|
|
return 'N $north, S $south, E $east, W $west';
|
|
}
|
|
|
|
@override
|
|
String get time_justNow => 'Justo ahora';
|
|
|
|
@override
|
|
String time_minutesAgo(int minutes) {
|
|
return 'hace $minutes min.';
|
|
}
|
|
|
|
@override
|
|
String time_hoursAgo(int hours) {
|
|
return 'hace $hours h';
|
|
}
|
|
|
|
@override
|
|
String time_daysAgo(int days) {
|
|
return 'hace $days días';
|
|
}
|
|
|
|
@override
|
|
String get time_hour => 'hora';
|
|
|
|
@override
|
|
String get time_hours => 'horas';
|
|
|
|
@override
|
|
String get time_day => 'día';
|
|
|
|
@override
|
|
String get time_days => 'días';
|
|
|
|
@override
|
|
String get time_week => 'semana';
|
|
|
|
@override
|
|
String get time_weeks => 'semanas';
|
|
|
|
@override
|
|
String get time_month => 'mes';
|
|
|
|
@override
|
|
String get time_months => 'meses';
|
|
|
|
@override
|
|
String get time_minutes => 'minutos';
|
|
|
|
@override
|
|
String get time_allTime => 'Todo el tiempo';
|
|
|
|
@override
|
|
String get dialog_disconnect => 'Desconectar';
|
|
|
|
@override
|
|
String get dialog_disconnectConfirm =>
|
|
'¿Está seguro de que desea desconectarse de este dispositivo?';
|
|
|
|
@override
|
|
String get login_repeaterLogin => 'Inicio de sesión del repetidor';
|
|
|
|
@override
|
|
String get login_roomLogin => 'Inicio de sesión en la sala';
|
|
|
|
@override
|
|
String get login_password => 'Contraseña';
|
|
|
|
@override
|
|
String get login_enterPassword => 'Introduce la contraseña';
|
|
|
|
@override
|
|
String get login_savePassword => 'Guardar contraseña';
|
|
|
|
@override
|
|
String get login_savePasswordSubtitle =>
|
|
'La contraseña se almacenará de forma segura en este dispositivo.';
|
|
|
|
@override
|
|
String get login_repeaterDescription =>
|
|
'Introduce la contraseña del repetidor para acceder como invitado o administrador.';
|
|
|
|
@override
|
|
String get login_roomDescription =>
|
|
'Introduce la contraseña de la sala para acceder como invitado o administrador.';
|
|
|
|
@override
|
|
String get login_routing => 'Enrutamiento';
|
|
|
|
@override
|
|
String get login_routingMode => 'Modo de enrutamiento';
|
|
|
|
@override
|
|
String get login_autoUseSavedPath => 'Auto (usar la ruta guardada)';
|
|
|
|
@override
|
|
String get login_forceFloodMode => 'Forzar modo inundación';
|
|
|
|
@override
|
|
String get login_managePaths => 'Gestionar rutas';
|
|
|
|
@override
|
|
String get login_login => 'Iniciar sesión';
|
|
|
|
@override
|
|
String login_attempt(int current, int max) {
|
|
return 'Intento $current/$max';
|
|
}
|
|
|
|
@override
|
|
String login_failed(String error) {
|
|
return 'Error de inicio de sesión: $error';
|
|
}
|
|
|
|
@override
|
|
String get login_failedMessage =>
|
|
'El inicio de sesión ha fallado. La contraseña es incorrecta o el repetidor no está disponible.';
|
|
|
|
@override
|
|
String get common_reload => 'Recargar';
|
|
|
|
@override
|
|
String get common_clear => 'Borrar';
|
|
|
|
@override
|
|
String get path_currentPathLabel => 'Ruta actual';
|
|
|
|
@override
|
|
String get path_noRepeatersFound =>
|
|
'No se encontraron repetidores ni servidores de sala.';
|
|
|
|
@override
|
|
String get repeater_management => 'Gestión de repetidores';
|
|
|
|
@override
|
|
String get room_management => 'Administración del servidor de sala';
|
|
|
|
@override
|
|
String get repeater_guest => 'Información sobre repetidores';
|
|
|
|
@override
|
|
String get room_guest => 'Información del servidor';
|
|
|
|
@override
|
|
String get repeater_managementTools => 'Herramientas de gestión';
|
|
|
|
@override
|
|
String get repeater_guestTools => 'Herramientas para invitados';
|
|
|
|
@override
|
|
String get repeater_status => 'Estado';
|
|
|
|
@override
|
|
String get repeater_statusSubtitle =>
|
|
'Ver el estado, las estadísticas y los vecinos del repetidor';
|
|
|
|
@override
|
|
String get repeater_telemetry => 'Telemetría';
|
|
|
|
@override
|
|
String get repeater_telemetrySubtitle =>
|
|
'Ver la telemetría de los sensores y las estadísticas del sistema';
|
|
|
|
@override
|
|
String get repeater_cli => 'CLI';
|
|
|
|
@override
|
|
String get repeater_cliSubtitle => 'Enviar comandos al repetidor';
|
|
|
|
@override
|
|
String get repeater_neighbors => 'Vecinos';
|
|
|
|
@override
|
|
String get repeater_neighborsSubtitle => 'Ver vecinos de salto cero.';
|
|
|
|
@override
|
|
String get repeater_settings => 'Configuración';
|
|
|
|
@override
|
|
String get repeater_settingsSubtitle => 'Configurar parámetros del repetidor';
|
|
|
|
@override
|
|
String get repeater_clockSyncAfterLogin =>
|
|
'Sincronización del reloj después de iniciar sesión';
|
|
|
|
@override
|
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
|
'Enviar automáticamente la función de \"sincronización de reloj\" después de un inicio de sesión exitoso.';
|
|
|
|
@override
|
|
String get repeater_statusTitle => 'Estado del Repetidor';
|
|
|
|
@override
|
|
String get repeater_routingMode => 'Modo de enrutamiento';
|
|
|
|
@override
|
|
String get repeater_refresh => 'Actualizar';
|
|
|
|
@override
|
|
String get repeater_statusRequestTimeout =>
|
|
'Se agotó el tiempo de espera de la solicitud de estado.';
|
|
|
|
@override
|
|
String repeater_errorLoadingStatus(String error) {
|
|
return 'Error al cargar el estado: $error';
|
|
}
|
|
|
|
@override
|
|
String get repeater_systemInformation => 'Información del sistema';
|
|
|
|
@override
|
|
String get repeater_battery => 'Batería';
|
|
|
|
@override
|
|
String get repeater_clockAtLogin => 'Reloj (al inicio de sesión)';
|
|
|
|
@override
|
|
String get repeater_uptime => 'Tiempo de actividad';
|
|
|
|
@override
|
|
String get repeater_queueLength => 'Longitud de la cola';
|
|
|
|
@override
|
|
String get repeater_debugFlags => 'Banderas de depuración';
|
|
|
|
@override
|
|
String get repeater_radioStatistics => 'Estadísticas de radio';
|
|
|
|
@override
|
|
String get repeater_lastRssi => 'Último RSSI';
|
|
|
|
@override
|
|
String get repeater_lastSnr => 'Último SNR';
|
|
|
|
@override
|
|
String get repeater_noiseFloor => 'Nivel de ruido';
|
|
|
|
@override
|
|
String get repeater_txAirtime => 'Tiempo de aire TX';
|
|
|
|
@override
|
|
String get repeater_rxAirtime => 'Tiempo de aire RX';
|
|
|
|
@override
|
|
String get repeater_chanUtil => 'Utilización del canal';
|
|
|
|
@override
|
|
String get repeater_packetStatistics => 'Estadísticas de paquetes';
|
|
|
|
@override
|
|
String get repeater_sent => 'Enviados';
|
|
|
|
@override
|
|
String get repeater_received => 'Recibidos';
|
|
|
|
@override
|
|
String get repeater_duplicates => 'Duplicados';
|
|
|
|
@override
|
|
String repeater_daysHoursMinsSecs(
|
|
int days,
|
|
int hours,
|
|
int minutes,
|
|
int seconds,
|
|
) {
|
|
return '$days días ${hours}h $minutes min $seconds s';
|
|
}
|
|
|
|
@override
|
|
String repeater_packetTxTotal(int total, String flood, String direct) {
|
|
return 'Total: $total, Inundación: $flood, Directo: $direct';
|
|
}
|
|
|
|
@override
|
|
String repeater_packetRxTotal(int total, String flood, String direct) {
|
|
return 'Total: $total, Inundación: $flood, Directo: $direct';
|
|
}
|
|
|
|
@override
|
|
String repeater_duplicatesFloodDirect(String flood, String direct) {
|
|
return 'Inundación: $flood, Directo: $direct';
|
|
}
|
|
|
|
@override
|
|
String repeater_duplicatesTotal(int total) {
|
|
return 'Total: $total';
|
|
}
|
|
|
|
@override
|
|
String get repeater_settingsTitle => 'Ajustes del repetidor';
|
|
|
|
@override
|
|
String get repeater_basicSettings => 'Ajustes básicos';
|
|
|
|
@override
|
|
String get repeater_repeaterName => 'Nombre del repetidor';
|
|
|
|
@override
|
|
String get repeater_repeaterNameHelper =>
|
|
'Nombre visible para este repetidor';
|
|
|
|
@override
|
|
String get repeater_adminPassword => 'Contraseña de administrador';
|
|
|
|
@override
|
|
String get repeater_adminPasswordHelper => 'Contraseña de acceso completo';
|
|
|
|
@override
|
|
String get repeater_guestPassword => 'Contraseña de invitado';
|
|
|
|
@override
|
|
String get repeater_guestPasswordHelper =>
|
|
'Contraseña de acceso de solo lectura';
|
|
|
|
@override
|
|
String get repeater_radioSettings => 'Ajustes de radio';
|
|
|
|
@override
|
|
String get repeater_frequencyMhz => 'Frecuencia (MHz)';
|
|
|
|
@override
|
|
String get repeater_frequencyHelper => '300-2500 MHz';
|
|
|
|
@override
|
|
String get repeater_txPower => 'Potencia TX';
|
|
|
|
@override
|
|
String get repeater_txPowerHelper => '1-30 dBm';
|
|
|
|
@override
|
|
String get repeater_bandwidth => 'Ancho de banda';
|
|
|
|
@override
|
|
String get repeater_spreadingFactor => 'Factor de propagación';
|
|
|
|
@override
|
|
String get repeater_codingRate => 'Tasa de codificación';
|
|
|
|
@override
|
|
String get repeater_locationSettings => 'Ajustes de ubicación';
|
|
|
|
@override
|
|
String get repeater_latitude => 'Latitud';
|
|
|
|
@override
|
|
String get repeater_latitudeHelper =>
|
|
'Grados decimales (por ejemplo, 37.7749)';
|
|
|
|
@override
|
|
String get repeater_longitude => 'Longitud';
|
|
|
|
@override
|
|
String get repeater_longitudeHelper =>
|
|
'Grados decimales (por ejemplo, -122.4194)';
|
|
|
|
@override
|
|
String get repeater_features => 'Funciones';
|
|
|
|
@override
|
|
String get repeater_packetForwarding => 'Reenvío de paquetes';
|
|
|
|
@override
|
|
String get repeater_packetForwardingSubtitle =>
|
|
'Permitir que el repetidor reenvíe paquetes';
|
|
|
|
@override
|
|
String get repeater_guestAccess => 'Acceso de invitado';
|
|
|
|
@override
|
|
String get repeater_guestAccessSubtitle =>
|
|
'Permitir acceso de invitado de solo lectura';
|
|
|
|
@override
|
|
String get repeater_privacyMode => 'Modo de privacidad';
|
|
|
|
@override
|
|
String get repeater_privacyModeSubtitle =>
|
|
'Ocultar nombre/ubicación en anuncios';
|
|
|
|
@override
|
|
String get repeater_advertisementSettings => 'Ajustes de anuncios';
|
|
|
|
@override
|
|
String get repeater_localAdvertInterval => 'Intervalo de anuncio local';
|
|
|
|
@override
|
|
String repeater_localAdvertIntervalMinutes(int minutes) {
|
|
return '$minutes minutos';
|
|
}
|
|
|
|
@override
|
|
String get repeater_floodAdvertInterval =>
|
|
'Intervalo de anuncio por inundación';
|
|
|
|
@override
|
|
String repeater_floodAdvertIntervalHours(int hours) {
|
|
return '$hours horas';
|
|
}
|
|
|
|
@override
|
|
String get repeater_encryptedAdvertInterval => 'Intervalo de anuncio cifrado';
|
|
|
|
@override
|
|
String get repeater_dangerZone => 'Zona de peligro';
|
|
|
|
@override
|
|
String get repeater_rebootRepeater => 'Reiniciar repetidor';
|
|
|
|
@override
|
|
String get repeater_rebootRepeaterSubtitle =>
|
|
'Reiniciar el dispositivo repetidor';
|
|
|
|
@override
|
|
String get repeater_rebootRepeaterConfirm =>
|
|
'¿Está seguro de que desea reiniciar este repetidor?';
|
|
|
|
@override
|
|
String get repeater_regenerateIdentityKey => 'Regenerar clave de identidad';
|
|
|
|
@override
|
|
String get repeater_regenerateIdentityKeySubtitle =>
|
|
'Generar una nueva pareja de claves pública/privada';
|
|
|
|
@override
|
|
String get repeater_regenerateIdentityKeyConfirm =>
|
|
'Esto generará una nueva identidad para el repetidor. ¿Continuar?';
|
|
|
|
@override
|
|
String get repeater_eraseFileSystem => 'Borrar sistema de archivos';
|
|
|
|
@override
|
|
String get repeater_eraseFileSystemSubtitle =>
|
|
'Formatear el sistema de archivos del repetidor';
|
|
|
|
@override
|
|
String get repeater_eraseFileSystemConfirm =>
|
|
'ADVERTENCIA: Esto borrará todos los datos del repetidor. ¡Esto no se puede deshacer!';
|
|
|
|
@override
|
|
String get repeater_eraseSerialOnly =>
|
|
'Borrar solo está disponible a través de la consola serie.';
|
|
|
|
@override
|
|
String repeater_commandSent(String command) {
|
|
return 'Comando enviado: $command';
|
|
}
|
|
|
|
@override
|
|
String repeater_errorSendingCommand(String error) {
|
|
return 'Error al enviar el comando: $error';
|
|
}
|
|
|
|
@override
|
|
String get repeater_confirm => 'Confirmar';
|
|
|
|
@override
|
|
String get repeater_settingsSaved => 'Ajustes guardados correctamente';
|
|
|
|
@override
|
|
String get repeater_rxGain => 'Ganancia RX';
|
|
|
|
@override
|
|
String get repeater_rxGainHelper =>
|
|
'Mayor sensibilidad, mayor consumo de corriente (solo para SX1262/SX1268)';
|
|
|
|
@override
|
|
String get repeater_refreshRxGain =>
|
|
'Mejora el rendimiento de RX con la nueva versión.';
|
|
|
|
@override
|
|
String get repeater_multiAcks => 'ACK múltiples';
|
|
|
|
@override
|
|
String get repeater_multiAcksSubtitle =>
|
|
'Reconocer mensajes a través de múltiples rutas para una mejor entrega.';
|
|
|
|
@override
|
|
String get repeater_refreshMultiAcks => 'Actualizar ACK múltiples';
|
|
|
|
@override
|
|
String get repeater_networkHealth => 'Salud de la red';
|
|
|
|
@override
|
|
String get repeater_loopDetect => 'Detección de bucles';
|
|
|
|
@override
|
|
String get repeater_loopDetectHelper =>
|
|
'Crea paquetes de \"flujo\" que parezcan bucles de enrutamiento.';
|
|
|
|
@override
|
|
String get repeater_loopDetectOff => 'Desactivado';
|
|
|
|
@override
|
|
String get repeater_loopDetectMinimal => 'Mínimo';
|
|
|
|
@override
|
|
String get repeater_loopDetectModerate => 'Moderado';
|
|
|
|
@override
|
|
String get repeater_loopDetectStrict => 'Estricto';
|
|
|
|
@override
|
|
String get repeater_dutyCycle => 'Ciclo de trabajo';
|
|
|
|
@override
|
|
String get repeater_dutyCycleHelper => 'Porcentaje máximo de tiempo de aire';
|
|
|
|
@override
|
|
String repeater_dutyCyclePercent(int percent) {
|
|
return '$percent%';
|
|
}
|
|
|
|
@override
|
|
String get repeater_ownerInfo => 'Información del propietario';
|
|
|
|
@override
|
|
String get repeater_ownerInfoHelper =>
|
|
'Metadatos públicos para este repetidor';
|
|
|
|
@override
|
|
String get repeater_refreshOwnerInfo =>
|
|
'Actualizar información del propietario';
|
|
|
|
@override
|
|
String get repeater_floodMax => 'Máximo de saltos por inundación';
|
|
|
|
@override
|
|
String get repeater_floodMaxHelper =>
|
|
'Número máximo de paquetes de inundación que un nodo puede enviar (0-64)';
|
|
|
|
@override
|
|
String get repeater_advancedSettings => 'Ajustes avanzados';
|
|
|
|
@override
|
|
String get repeater_advancedSettingsSubtitle =>
|
|
'Controles de ajuste para operadores experimentados';
|
|
|
|
@override
|
|
String get repeater_pathHashMode => 'Modo de hash de ruta';
|
|
|
|
@override
|
|
String get repeater_pathHashModeHelper =>
|
|
'Bytes utilizados para codificar el ID de este repetidor en las etiquetas de ruta/detección de bucles. 0=1 byte (256 IDs, hasta 64 saltos), 1=2 bytes (65.000 IDs, hasta 32 saltos), 2=3 bytes (16 millones de IDs, hasta 21 saltos). Las versiones 1.13 y anteriores de firmware eliminan rutas de múltiples bytes; solo se detectan una vez que la red está activa en la versión 1.14 o posterior.';
|
|
|
|
@override
|
|
String get repeater_keySettings => 'Change Identity Keys';
|
|
|
|
@override
|
|
String get repeater_keySettingsSubtitle =>
|
|
'Change the public/private keypair';
|
|
|
|
@override
|
|
String get repeater_prvKey => 'Private key';
|
|
|
|
@override
|
|
String get repeater_prvKeyHelper =>
|
|
'A new private key for the repeater, a 128-character hex string.';
|
|
|
|
@override
|
|
String get repeater_generatePrvKey => 'Generate a random keypair';
|
|
|
|
@override
|
|
String get repeater_stopGeneratingPrvKey => 'Interrupt search for keypair';
|
|
|
|
@override
|
|
String get repeater_pubKey => 'Public key';
|
|
|
|
@override
|
|
String get repeater_pubKeyHelper =>
|
|
'This is the public key that goes with the generated private key. You can\'t set this directly.';
|
|
|
|
@override
|
|
String get repeater_pubKeyPrefix => 'Desired prefix';
|
|
|
|
@override
|
|
String repeater_pubKeyPrefixHelper(int tries) {
|
|
return 'Find a public key that starts with these hex digits. Expected tries needed: $tries.';
|
|
}
|
|
|
|
@override
|
|
String get repeater_txDelay => 'Retraso TX por inundación';
|
|
|
|
@override
|
|
String get repeater_txDelayHelper =>
|
|
'Ajuste de retransmisión para el tráfico de inundación, como un multiplicador del tiempo de transmisión del paquete (0-2, valor predeterminado 0.5). Un valor más alto significa menos colisiones, pero una entrega más lenta.';
|
|
|
|
@override
|
|
String get repeater_directTxDelay => 'Retraso TX directo';
|
|
|
|
@override
|
|
String get repeater_directTxDelayHelper =>
|
|
'Reenvío de espacios para el tráfico directo (no masivo), como un multiplicador del tiempo de transmisión del paquete (0-2, valor predeterminado 0.3).';
|
|
|
|
@override
|
|
String get repeater_intThresh => 'Límite de interferencia';
|
|
|
|
@override
|
|
String get repeater_intThreshHelper =>
|
|
'Se establece un umbral para la calibración del nivel de ruido de la radio, de modo que rechaza las interferencias que superen este nivel. 0 deshabilita: solo aumente este valor si observa errores en una banda de frecuencia con mucho ruido.';
|
|
|
|
@override
|
|
String get repeater_agcResetInterval => 'Intervalo de reinicio de AGC';
|
|
|
|
@override
|
|
String get repeater_agcResetIntervalHelper =>
|
|
'¿Con qué frecuencia se debe restablecer el control automático de ganancia del radio para recuperarse de un estado de ganancia bloqueada? Se puede restablecer cada pocos segundos o cada 4 segundos. Desactiva la función de restablecimiento periódico.';
|
|
|
|
@override
|
|
String get repeater_actionsTitle => 'Acciones';
|
|
|
|
@override
|
|
String get repeater_sendAdvert => 'Enviar anuncio por inundación';
|
|
|
|
@override
|
|
String get repeater_sendAdvertSubtitle =>
|
|
'Transmitir un anuncio por inundación a través de la red.';
|
|
|
|
@override
|
|
String get repeater_sendAdvertZeroHop => 'Enviar anuncio sin saltos';
|
|
|
|
@override
|
|
String get repeater_sendAdvertZeroHopSubtitle =>
|
|
'Transmite un anuncio de un solo salto (sin retransmisiones).';
|
|
|
|
@override
|
|
String get repeater_clockSync => 'Sincronizar reloj ahora';
|
|
|
|
@override
|
|
String get repeater_clockSyncSubtitle =>
|
|
'Envía la hora de tu teléfono al repetidor.';
|
|
|
|
@override
|
|
String repeater_actionSucceeded(String action) {
|
|
return '$action completado correctamente';
|
|
}
|
|
|
|
@override
|
|
String repeater_actionFailed(String action, String error) {
|
|
return 'Error en $action: $error';
|
|
}
|
|
|
|
@override
|
|
String get repeater_settingsSavedRebootNeeded =>
|
|
'Configuración guardada — reinicie el repetidor para aplicar los cambios.';
|
|
|
|
@override
|
|
String repeater_settingsPartialFailure(String failures) {
|
|
return 'Algunas configuraciones no se pudieron aplicar: $failures';
|
|
}
|
|
|
|
@override
|
|
String repeater_errorSavingSettings(String error) {
|
|
return 'Error al guardar la configuración: $error';
|
|
}
|
|
|
|
@override
|
|
String get repeater_refreshBasicSettings => 'Actualizar Configuración Básica';
|
|
|
|
@override
|
|
String get repeater_refreshRadioSettings => 'Actualizar Ajustes de Radio';
|
|
|
|
@override
|
|
String get repeater_refreshTxPower => 'Actualizar TX de energía';
|
|
|
|
@override
|
|
String get repeater_refreshPacketForwarding =>
|
|
'Actualizar Enrutamiento de Paquetes';
|
|
|
|
@override
|
|
String get repeater_refreshGuestAccess => 'Actualizar Acceso Invitados';
|
|
|
|
@override
|
|
String get repeater_refreshPrivacyMode => 'Actualizar Modo Privacidad';
|
|
|
|
@override
|
|
String repeater_refreshed(String label) {
|
|
return '$label actualizado';
|
|
}
|
|
|
|
@override
|
|
String repeater_errorRefreshing(String label) {
|
|
return 'Error al refrescar $label';
|
|
}
|
|
|
|
@override
|
|
String get repeater_cliTitle => 'Repetidor CLI';
|
|
|
|
@override
|
|
String get repeater_debugNextCommand => 'Siguiente Comando de Depuración';
|
|
|
|
@override
|
|
String get repeater_commandHelp => 'Ayuda';
|
|
|
|
@override
|
|
String get repeater_clearHistory => 'Borrar historial';
|
|
|
|
@override
|
|
String get repeater_noCommandsSent => 'Aún no se han enviado comandos.';
|
|
|
|
@override
|
|
String get repeater_typeCommandOrUseQuick =>
|
|
'Escriba un comando a continuación o use comandos rápidos';
|
|
|
|
@override
|
|
String get repeater_enterCommandHint => 'Escribir comando...';
|
|
|
|
@override
|
|
String get repeater_previousCommand => 'Comando anterior';
|
|
|
|
@override
|
|
String get repeater_nextCommand => 'Siguiente comando';
|
|
|
|
@override
|
|
String get repeater_enterCommandFirst => 'Escriba un comando primero';
|
|
|
|
@override
|
|
String get repeater_cliCommandFrameTitle => 'Marco de Comando CLI';
|
|
|
|
@override
|
|
String repeater_cliCommandError(String error) {
|
|
return 'Error: $error';
|
|
}
|
|
|
|
@override
|
|
String get repeater_cliQuickGetName => 'Obtener Nombre';
|
|
|
|
@override
|
|
String get repeater_cliQuickGetRadio => 'Obtener Radio';
|
|
|
|
@override
|
|
String get repeater_cliQuickGetTx => 'Obtener TX';
|
|
|
|
@override
|
|
String get repeater_cliQuickNeighbors => 'Vecinos';
|
|
|
|
@override
|
|
String get repeater_cliQuickVersion => 'Versión';
|
|
|
|
@override
|
|
String get repeater_cliQuickAdvertise => 'Anunciar';
|
|
|
|
@override
|
|
String get repeater_cliQuickClock => 'Reloj';
|
|
|
|
@override
|
|
String get repeater_cliQuickClockSync => 'Sincronización del reloj';
|
|
|
|
@override
|
|
String get repeater_cliQuickDiscovery => 'Descubrir Vecinos';
|
|
|
|
@override
|
|
String get repeater_cliHelpAdvert => 'Envía un paquete de publicidad';
|
|
|
|
@override
|
|
String get repeater_cliHelpReboot =>
|
|
'Reinicia el dispositivo. (ten en cuenta, es normal que aparezca \'Timeout\')';
|
|
|
|
@override
|
|
String get repeater_cliHelpClock =>
|
|
'Muestra la hora actual según el reloj del dispositivo.';
|
|
|
|
@override
|
|
String get repeater_cliHelpPassword =>
|
|
'Establece una nueva contraseña de administrador para el dispositivo.';
|
|
|
|
@override
|
|
String get repeater_cliHelpVersion =>
|
|
'Muestra la versión del dispositivo y la fecha de compilación del firmware.';
|
|
|
|
@override
|
|
String get repeater_cliHelpClearStats =>
|
|
'Reinicia varios contadores de estadísticas a cero.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetAf => 'Establece el factor de tiempo de aire.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetTx =>
|
|
'Establece la potencia de transmisión LoRa en dBm (reboot para aplicar).';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetRepeat =>
|
|
'Habilita o deshabilita el rol del repetidor para este nodo.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetAllowReadOnly =>
|
|
'(Servidor de la sala) Si está \"activado\", entonces el inicio de sesión con una contraseña en blanco estará permitido, pero no se podrá publicar en la sala. (solo lectura).';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetFloodMax =>
|
|
'Establece el número máximo de saltos de paquetes de inundación entrantes (si es >= máximo, el paquete no se enruta).';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetIntThresh =>
|
|
'Establece el Umbral de Interferencia (en dB). El valor predeterminado es 14. Establecerlo en 0 desactiva la detección de interferencias del canal.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetAgcResetInterval =>
|
|
'Establece el intervalo para restablecer el Control Automático de Ganancia. Establecer en 0 para desactivarlo.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetMultiAcks =>
|
|
'Habilita o deshabilita la función de \'ACKs dobles\'.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetAdvertInterval =>
|
|
'Establece el intervalo del temporizador en minutos para enviar un paquete de anuncio local (sin salto). Establecer en 0 para desactivarlo.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetFloodAdvertInterval =>
|
|
'Establece el intervalo del temporizador en horas para enviar un paquete de anuncio masivo. Establecer en 0 para desactivarlo.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetGuestPassword =>
|
|
'Establece/actualiza la contraseña del invitado. (para repetidores, los inicios de sesión de invitado pueden enviar la solicitud \"Obtener Estadísticas\")';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetName => 'Establece el nombre del anuncio.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetLat =>
|
|
'Establece la latitud del mapa de publicidad. (grados decimales)';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetLon =>
|
|
'Establece la longitud del mapa de la publicidad. (grados decimales)';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetRadio =>
|
|
'Establece parámetros de radio completamente nuevos y los guarda en las preferencias. Requiere un comando \"reboot\" para aplicarlos.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetRxDelay =>
|
|
'Configura (experimental) la base para aplicar un ligero retraso a los paquetes recibidos, según la fuerza de la señal/puntuación. Establece en 0 para desactivar.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetTxDelay =>
|
|
'Establece un factor multiplicado con el tiempo de aire para un paquete de modo de inundación y con un sistema de ranura aleatorio, para retrasar su reenvío (para disminuir la probabilidad de colisiones).';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetDirectTxDelay =>
|
|
'Igual que txdelay, pero para aplicar un retraso aleatorio a la transferencia de paquetes en modo directo.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetBridgeEnabled =>
|
|
'Habilitar/Deshabilitar puente.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetBridgeDelay =>
|
|
'Establecer retraso antes de retransmitir paquetes.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetBridgeSource =>
|
|
'Elige si el puente retransmitirá paquetes recibidos o paquetes transmitidos.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetBridgeBaud =>
|
|
'Establecer la velocidad de baudios del enlace serial para los puentes rs232.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetBridgeSecret =>
|
|
'Establecer secreto de puente para puentes espnow.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetAdcMultiplier =>
|
|
'Establece un factor personalizado para ajustar el voltaje de la batería reportado (solo soportado en selectas placas).';
|
|
|
|
@override
|
|
String get repeater_cliHelpTempRadio =>
|
|
'Establece parámetros de radio temporales para el número dado de minutos, volviendo a los parámetros de radio originales posteriormente. (no guarda en preferencias).';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetPerm =>
|
|
'Modifica el ACL. Elimina la entrada coincidente (por prefijo de pubkey) si \"permissions\" es cero. Añade una nueva entrada si el pubkey-hex tiene longitud completa y no está actualmente en el ACL. Actualiza la entrada mediante el prefijo de pubkey coincidente. Los bits de permiso varían según el rol del firmware, pero los dos bits inferiores son: 0 (Invitado), 1 (Solo lectura), 2 (Lectura/escritura), 3 (Administrador).';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetBridgeType =>
|
|
'Obtiene tipo de puente ninguno, rs232, espnow';
|
|
|
|
@override
|
|
String get repeater_cliHelpLogStart =>
|
|
'Inicia el registro de paquetes en el sistema de archivos.';
|
|
|
|
@override
|
|
String get repeater_cliHelpLogStop =>
|
|
'Detener el registro de paquetes al sistema de archivos.';
|
|
|
|
@override
|
|
String get repeater_cliHelpLogErase =>
|
|
'Elimina los registros del paquete del sistema de archivos.';
|
|
|
|
@override
|
|
String get repeater_cliHelpNeighbors =>
|
|
'Muestra una lista de otros nodos repetidores escuchados a través de anuncios de un solo salto. Cada línea es id-prefijo-hex:marca de tiempo:times-snr-4';
|
|
|
|
@override
|
|
String get repeater_cliHelpNeighborRemove =>
|
|
'Elimina la primera entrada coincidente (por prefijo de pubkey (hex)) de la lista de vecinos.';
|
|
|
|
@override
|
|
String get repeater_cliHelpRegion =>
|
|
'(solo serie) Lista todas las regiones definidas y los permisos de inundación actuales.';
|
|
|
|
@override
|
|
String get repeater_cliHelpRegionLoad =>
|
|
'NOTA: este es un invocación multi-comando especial. Cada comando subsiguiente es un nombre de región (indentado con espacios para indicar la jerarquía padre, con un espacio mínimo). Terminado enviando una línea en blanco/comando.';
|
|
|
|
@override
|
|
String get repeater_cliHelpRegionGet =>
|
|
'Busca la región con el prefijo de nombre dado (o \"\" para el ámbito global). Responde con \"-> nombre-región (nombre-padre) \'F\'\"';
|
|
|
|
@override
|
|
String get repeater_cliHelpRegionPut =>
|
|
'Agrega o actualiza una definición de región con el nombre dado.';
|
|
|
|
@override
|
|
String get repeater_cliHelpRegionRemove =>
|
|
'Elimina una definición de región con el nombre dado. (debe coincidir exactamente y no tener regiones hijas)';
|
|
|
|
@override
|
|
String get repeater_cliHelpRegionAllowf =>
|
|
'Establece el permiso de \'F\'lujo para la región dada. (\'\' para el ámbito global/legado)';
|
|
|
|
@override
|
|
String get repeater_cliHelpRegionDenyf =>
|
|
'Elimina el permiso de \'F\'lood para la región especificada. (NOTA: en esta etapa NO se recomienda utilizarlo en el ámbito global/legado!!)';
|
|
|
|
@override
|
|
String get repeater_cliHelpRegionHome =>
|
|
'Responde con la región \'home\' actual. (Aún no se ha aplicado en ninguna parte, reservado para el futuro).';
|
|
|
|
@override
|
|
String get repeater_cliHelpRegionHomeSet => 'Establece la región \'hogar\'.';
|
|
|
|
@override
|
|
String get repeater_cliHelpRegionSave =>
|
|
'Persiste la lista/mapa de regiones al almacenamiento.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGps =>
|
|
'Muestra el estado del GPS. Cuando el GPS está apagado, responde solo con \"apagado\", si está encendido, responde con \"encendido\", estado, fijación, número de satélites.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGpsOnOff => 'Activa o desactiva el modo GPS.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGpsSync =>
|
|
'Sincroniza la hora del nodo con el reloj GPS.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGpsSetLoc =>
|
|
'Establece la posición del nodo a las coordenadas GPS y guarda las preferencias.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGpsAdvert =>
|
|
'Da la configuración de la publicidad del nodo de ubicación:\n- ninguno: no incluir la ubicación en las publicidad\n- compartir: compartir la ubicación GPS (del SensorManager)\n- preferencias: publicidad la ubicación almacenada en preferencias';
|
|
|
|
@override
|
|
String get repeater_cliHelpGpsAdvertSet =>
|
|
'Configura la configuración de la publicidad de la ubicación.';
|
|
|
|
@override
|
|
String get repeater_commandsListTitle => 'Lista de comandos';
|
|
|
|
@override
|
|
String get repeater_commandsListNote =>
|
|
'NOTA: para los diversos comandos \"set...\", también existe un comando \"get...\".';
|
|
|
|
@override
|
|
String get repeater_general => 'General';
|
|
|
|
@override
|
|
String get repeater_settingsCategory => 'Configuración';
|
|
|
|
@override
|
|
String get repeater_bridge => 'Puente';
|
|
|
|
@override
|
|
String get repeater_logging => 'Registrando';
|
|
|
|
@override
|
|
String get repeater_neighborsRepeaterOnly => 'Vecinos (solo repetidor)';
|
|
|
|
@override
|
|
String get repeater_regionManagementRepeaterOnly =>
|
|
'Gestión de Regiones (solo Repetidor)';
|
|
|
|
@override
|
|
String get repeater_regionNote =>
|
|
'Se han introducido los comandos de región para gestionar las definiciones y permisos de la región.';
|
|
|
|
@override
|
|
String get repeater_gpsManagement => 'Gestión de GPS';
|
|
|
|
@override
|
|
String get repeater_gpsNote =>
|
|
'Se ha introducido un comando GPS para gestionar temas relacionados con la ubicación.';
|
|
|
|
@override
|
|
String get repeater_getCategory => 'Obtener valores';
|
|
|
|
@override
|
|
String get repeater_powerMgmt => 'Gestión de la energía';
|
|
|
|
@override
|
|
String get repeater_sensors => 'Sensores';
|
|
|
|
@override
|
|
String get repeater_cliHelpPowerOff =>
|
|
'Apaga el dispositivo. (no se espera respuesta)';
|
|
|
|
@override
|
|
String get repeater_cliHelpClkReboot =>
|
|
'Restablece el reloj a una fecha conocida y reinicia el dispositivo.';
|
|
|
|
@override
|
|
String get repeater_cliHelpAdvertZeroHop =>
|
|
'Envía un anuncio que no requiere saltos (solo para los vecinos inmediatos).';
|
|
|
|
@override
|
|
String get repeater_cliHelpStartOta =>
|
|
'Inicia una actualización de firmware por aire en las placas compatibles.';
|
|
|
|
@override
|
|
String get repeater_cliHelpTime =>
|
|
'Establece la hora del dispositivo en los segundos correspondientes a la época Unix. La hora no puede retroceder.';
|
|
|
|
@override
|
|
String get repeater_cliHelpBoard =>
|
|
'Muestra el fabricante de la placa base / identificador de hardware.';
|
|
|
|
@override
|
|
String get repeater_cliHelpDiscoverNeighbors =>
|
|
'Envía una solicitud de descubrimiento de nodos a los vecinos cercanos. (Solo para repetidores)';
|
|
|
|
@override
|
|
String get repeater_cliHelpPowersaving =>
|
|
'Indica si el modo de ahorro de energía está activado o desactivado.';
|
|
|
|
@override
|
|
String get repeater_cliHelpPowersavingOnOff =>
|
|
'Activa o desactiva el modo de ahorro de energía (si está disponible).';
|
|
|
|
@override
|
|
String get repeater_cliHelpErase =>
|
|
'(Solo para dispositivos) Formatea el sistema de archivos del dispositivo. Elimina todas las configuraciones y contactos.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetDutyCycle =>
|
|
'Establece el ciclo de transmisión máximo permitido como un porcentaje (1-100). Ajusta internamente el factor de tiempo de aire.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetPrvKey =>
|
|
'(Solo para series) Reemplaza la clave privada de identificación del dispositivo. Se requiere reiniciar para aplicar. Genera una nueva clave pública.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetRadioRxGain =>
|
|
'(Solo para SX126x) Activa/desactiva el amplificador de la RX para mejorar la sensibilidad a corrientes más altas.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetOwnerInfo =>
|
|
'Define la cadena de información de contacto del propietario que se incluye en los anuncios. Utilice \'|\' para indicar nuevas líneas.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetPathHashMode =>
|
|
'Establece el modo de hash de la ruta. 0 = antiguo, 1 = estándar, 2 = estricto. Afecta la forma en que se comparan las rutas.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetLoopDetect =>
|
|
'Establece la sensibilidad para la detección de bucles de enrutamiento: apagado, mínimo, moderado o estricto.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetFreq =>
|
|
'(Solo para la configuración de frecuencia) Establece rápidamente la frecuencia deseada. Se requiere reiniciar. Se recomienda utilizar la opción \"configurar radio\" para obtener todos los parámetros de la radio.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSetBridgeChannel =>
|
|
'(Solo para el puente ESPNow) Establece el canal de WiFi (1-14) que utiliza el puente.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetName =>
|
|
'Muestra el nombre del nodo configurado.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetRole =>
|
|
'Muestra el rol del firmware (Repetidor, Servidor de habitación, etc.).';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetPublicKey =>
|
|
'Muestra la clave pública del dispositivo.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetPrvKey =>
|
|
'(Solo para uso en serie) Muestra la clave privada del dispositivo. Trátala como una información confidencial.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetRepeat =>
|
|
'Indica si el enrutamiento de paquetes (función de repetidor) está activado o desactivado.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetTx => 'Muestra la potencia actual en dBm.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetFreq =>
|
|
'Muestra la frecuencia de radio configurada en MHz.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetRadio =>
|
|
'Muestra todos los parámetros de radio: frecuencia, ancho de banda, factor de dispersión, tasa de codificación.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetRadioRxGain =>
|
|
'(Solo para SX126x) Muestra el estado de ganancia amplificada del receptor.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetAf => 'Muestra el factor de tiempo actual.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetDutyCycle =>
|
|
'Muestra el ciclo de trabajo actual permitido como un porcentaje.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetIntThresh =>
|
|
'Muestra el umbral de interferencia del canal en dB.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetAgcResetInterval =>
|
|
'Muestra el intervalo de reinicio del AGC en segundos.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetMultiAcks =>
|
|
'Indica si el modo de confirmación doble está activado (1) o desactivado (0).';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetAllowReadOnly =>
|
|
'Indica si se permite el acceso de solo lectura para los usuarios invitados.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetAdvertInterval =>
|
|
'Muestra el intervalo de publicidad local en minutos.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetFloodAdvertInterval =>
|
|
'Muestra el intervalo de publicidad para la emisión de la señal de inundación, expresado en horas.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetGuestPassword =>
|
|
'Muestra la contraseña de invitado configurada.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetLat => 'Muestra la latitud configurada.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetLon => 'Muestra la longitud configurada.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetRxDelay => 'Muestra el valor base de rxdelay.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetTxDelay =>
|
|
'Muestra el factor de retardo en modo de inundación.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetDirectTxDelay =>
|
|
'Muestra el factor de retardo en modo directo.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetFloodMax =>
|
|
'Muestra el número máximo de saltos por inundación.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetOwnerInfo =>
|
|
'Muestra la cadena de información de contacto del propietario.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetPathHashMode =>
|
|
'Muestra el modo de hash de ruta (0/1/2).';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetLoopDetect =>
|
|
'Muestra la sensibilidad en la detección de bucles.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetAcl =>
|
|
'(Solo para series) Enumera las entradas de control de acceso en un repetidor.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetBridgeEnabled =>
|
|
'Indica si el puente está habilitado.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetBridgeDelay =>
|
|
'Muestra el retardo del puente en milisegundos.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetBridgeSource =>
|
|
'Indica si el puente está enviando o recibiendo paquetes RX o TX.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetBridgeBaud =>
|
|
'(Solo puente RS232) Muestra la velocidad de transmisión del puente.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetBridgeChannel =>
|
|
'(Solo para el puente ESPNow) Muestra el canal WiFi del puente.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetBridgeSecret =>
|
|
'(Solo para el puente ESPNow) Muestra el secreto compartido por el puente.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetBootloaderVer =>
|
|
'(Solo NRF52) Muestra la versión del cargador.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetAdcMultiplier =>
|
|
'Muestra el multiplicador del ADC (escalado de voltaje de la batería).';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetPwrMgtSupport =>
|
|
'Indica si el sistema cuenta con funciones de gestión de energía.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetPwrMgtSource =>
|
|
'Indica la fuente de energía actual: externa o batería.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetPwrMgtBootReason =>
|
|
'Muestra las razones más recientes de reinicio y apagado.';
|
|
|
|
@override
|
|
String get repeater_cliHelpGetPwrMgtBootMv =>
|
|
'Muestra el voltaje de la batería al encender el sistema en milivoltios (mV).';
|
|
|
|
@override
|
|
String get repeater_cliHelpSensorGet =>
|
|
'Lee una configuración de sensor personalizada mediante una tecla.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSensorSet =>
|
|
'Crea una configuración personalizada para un sensor.';
|
|
|
|
@override
|
|
String get repeater_cliHelpSensorList =>
|
|
'Muestra todas las configuraciones de sensores personalizadas, paginadas a partir de un índice de inicio opcional.';
|
|
|
|
@override
|
|
String get repeater_cliHelpRegionDefault =>
|
|
'Muestra el ámbito predeterminado actual.';
|
|
|
|
@override
|
|
String get repeater_cliHelpRegionDefaultSet =>
|
|
'Establece el ámbito regional predeterminado. Utilice \"<null>\" para restablecer a la configuración predeterminada.';
|
|
|
|
@override
|
|
String get repeater_cliHelpRegionListAllowed =>
|
|
'Enumera las regiones que permiten el paso de vehículos debido a inundaciones.';
|
|
|
|
@override
|
|
String get repeater_cliHelpRegionListDenied =>
|
|
'Enumera las regiones que prohíben el tráfico debido a las inundaciones.';
|
|
|
|
@override
|
|
String get repeater_cliHelpStatsPackets =>
|
|
'(Solo para series) Muestra estadísticas a nivel de paquetes.';
|
|
|
|
@override
|
|
String get repeater_cliHelpStatsRadio =>
|
|
'(Solo para transmisiones en serie) Muestra estadísticas de radio.';
|
|
|
|
@override
|
|
String get repeater_cliHelpStatsCore =>
|
|
'(Solo para series) Muestra estadísticas clave del firmware.';
|
|
|
|
@override
|
|
String get telemetry_receivedData => 'Datos de Telemetría Recibidos';
|
|
|
|
@override
|
|
String get telemetry_requestTimeout => 'Solicitud de telemetría ha expirado.';
|
|
|
|
@override
|
|
String telemetry_errorLoading(String error) {
|
|
return 'Error al cargar la telemetría: $error';
|
|
}
|
|
|
|
@override
|
|
String get telemetry_noData => 'No hay datos de telemetría disponibles.';
|
|
|
|
@override
|
|
String telemetry_channelTitle(int channel) {
|
|
return 'Canal $channel';
|
|
}
|
|
|
|
@override
|
|
String get telemetry_batteryLabel => 'Batería';
|
|
|
|
@override
|
|
String get telemetry_voltageLabel => 'Voltaje';
|
|
|
|
@override
|
|
String get telemetry_mcuTemperatureLabel => 'Temperatura del MCU';
|
|
|
|
@override
|
|
String get telemetry_temperatureLabel => 'Temperatura';
|
|
|
|
@override
|
|
String get telemetry_currentLabel => 'Corriente';
|
|
|
|
@override
|
|
String telemetry_batteryValue(int percent, String volts) {
|
|
return '$percent% / ${volts}V';
|
|
}
|
|
|
|
@override
|
|
String telemetry_voltageValue(String volts) {
|
|
return '${volts}V';
|
|
}
|
|
|
|
@override
|
|
String telemetry_currentValue(String amps) {
|
|
return '${amps}A';
|
|
}
|
|
|
|
@override
|
|
String telemetry_temperatureValue(String celsius, String fahrenheit) {
|
|
return '$celsius°C / $fahrenheit°F';
|
|
}
|
|
|
|
@override
|
|
String get telemetry_digitalInputLabel => 'Entrada digital';
|
|
|
|
@override
|
|
String get telemetry_digitalOutputLabel => 'Salida digital';
|
|
|
|
@override
|
|
String get telemetry_analogInputLabel => 'Entrada analógica';
|
|
|
|
@override
|
|
String get telemetry_analogOutputLabel => 'Salida analógica';
|
|
|
|
@override
|
|
String get telemetry_genericLabel => 'Sensor genérico';
|
|
|
|
@override
|
|
String get telemetry_luminosityLabel => 'Luminosidad';
|
|
|
|
@override
|
|
String get telemetry_presenceLabel => 'Presencia';
|
|
|
|
@override
|
|
String get telemetry_humidityLabel => 'Humedad';
|
|
|
|
@override
|
|
String get telemetry_accelerometerLabel => 'Acelerómetro';
|
|
|
|
@override
|
|
String get telemetry_pressureLabel => 'Presión';
|
|
|
|
@override
|
|
String get telemetry_altitudeLabel => 'Altitud';
|
|
|
|
@override
|
|
String get telemetry_frequencyLabel => 'Frecuencia';
|
|
|
|
@override
|
|
String get telemetry_percentageLabel => 'Porcentaje';
|
|
|
|
@override
|
|
String get telemetry_concentrationLabel => 'Concentración';
|
|
|
|
@override
|
|
String get telemetry_powerLabel => 'Potencia';
|
|
|
|
@override
|
|
String get telemetry_distanceLabel => 'Distancia';
|
|
|
|
@override
|
|
String get telemetry_energyLabel => 'Energía';
|
|
|
|
@override
|
|
String get telemetry_directionLabel => 'Dirección';
|
|
|
|
@override
|
|
String get telemetry_timeLabel => 'Hora';
|
|
|
|
@override
|
|
String get telemetry_gyrometerLabel => 'Giroscopio';
|
|
|
|
@override
|
|
String get telemetry_colourLabel => 'Color';
|
|
|
|
@override
|
|
String get telemetry_gpsLabel => 'GPS';
|
|
|
|
@override
|
|
String get telemetry_switchLabel => 'Interruptor';
|
|
|
|
@override
|
|
String get telemetry_polylineLabel => 'Polilínea';
|
|
|
|
@override
|
|
String telemetry_altitudeValue(String meters) {
|
|
return '$meters m';
|
|
}
|
|
|
|
@override
|
|
String telemetry_frequencyValue(String hertz) {
|
|
return '$hertz Hz';
|
|
}
|
|
|
|
@override
|
|
String telemetry_pressureValue(String hpa) {
|
|
return '$hpa hPa';
|
|
}
|
|
|
|
@override
|
|
String telemetry_luminosityValue(String lux) {
|
|
return '$lux lx';
|
|
}
|
|
|
|
@override
|
|
String telemetry_powerValue(String watts) {
|
|
return '$watts W';
|
|
}
|
|
|
|
@override
|
|
String telemetry_distanceValue(String meters) {
|
|
return '$meters m';
|
|
}
|
|
|
|
@override
|
|
String telemetry_energyValue(String kilowattHours) {
|
|
return '$kilowattHours kWh';
|
|
}
|
|
|
|
@override
|
|
String telemetry_directionValue(String degrees) {
|
|
return '$degrees°';
|
|
}
|
|
|
|
@override
|
|
String telemetry_concentrationValue(String ppm) {
|
|
return '$ppm ppm';
|
|
}
|
|
|
|
@override
|
|
String telemetry_percentageValue(String percent) {
|
|
return '$percent%';
|
|
}
|
|
|
|
@override
|
|
String telemetry_analogValue(String value) {
|
|
return '$value';
|
|
}
|
|
|
|
@override
|
|
String get telemetry_autoFetchQuantity => 'Número de solicitudes';
|
|
|
|
@override
|
|
String get telemetry_error => 'No se pudieron obtener los datos';
|
|
|
|
@override
|
|
String get neighbors_receivedData => 'Recibidas Datos de Vecinos';
|
|
|
|
@override
|
|
String get neighbors_requestTimedOut =>
|
|
'Los vecinos solicitan que se desconecte.';
|
|
|
|
@override
|
|
String neighbors_errorLoading(String error) {
|
|
return 'Error al cargar vecinos: $error';
|
|
}
|
|
|
|
@override
|
|
String get neighbors_repeatersNeighbors => 'Repetidores Vecinos';
|
|
|
|
@override
|
|
String get neighbors_noData => 'No hay datos de vecinos disponibles.';
|
|
|
|
@override
|
|
String neighbors_unknownContact(String pubkey) {
|
|
return 'Clave pública desconocida $pubkey';
|
|
}
|
|
|
|
@override
|
|
String neighbors_heardAgo(String time) {
|
|
return 'Escuchado hace $time';
|
|
}
|
|
|
|
@override
|
|
String get channelPath_title => 'Ruta del paquete';
|
|
|
|
@override
|
|
String get channelPath_viewMap => 'Ver mapa';
|
|
|
|
@override
|
|
String get channelPath_otherObservedPaths => 'Otras rutas observadas';
|
|
|
|
@override
|
|
String get channelPath_repeaterHops => 'Saltos del repetidor';
|
|
|
|
@override
|
|
String get channelPath_noHopDetails =>
|
|
'Los detalles del paquete no están disponibles.';
|
|
|
|
@override
|
|
String get channelPath_messageDetails => 'Detalles del mensaje';
|
|
|
|
@override
|
|
String get channelPath_senderLabel => 'Remitente';
|
|
|
|
@override
|
|
String get channelPath_timeLabel => 'Hora';
|
|
|
|
@override
|
|
String get channelPath_repeatsLabel => 'Repetir';
|
|
|
|
@override
|
|
String channelPath_pathLabel(int index) {
|
|
return 'Ruta $index';
|
|
}
|
|
|
|
@override
|
|
String get channelPath_observedLabel => 'Observado';
|
|
|
|
@override
|
|
String channelPath_observedPathTitle(int index, String hops) {
|
|
return 'Ruta observada $index • $hops';
|
|
}
|
|
|
|
@override
|
|
String get channelPath_noLocationData => 'No datos de ubicación';
|
|
|
|
@override
|
|
String channelPath_timeWithDate(int day, int month, String time) {
|
|
return '$day/$month a las $time';
|
|
}
|
|
|
|
@override
|
|
String channelPath_timeOnly(String time) {
|
|
return '$time';
|
|
}
|
|
|
|
@override
|
|
String get channelPath_unknownPath => 'Desconocido';
|
|
|
|
@override
|
|
String get channelPath_floodPath => 'Inundación';
|
|
|
|
@override
|
|
String get channelPath_directPath => 'Guardar';
|
|
|
|
@override
|
|
String channelPath_observedZeroOf(int total) {
|
|
return '0 de $total saltos';
|
|
}
|
|
|
|
@override
|
|
String channelPath_observedSomeOf(int observed, int total) {
|
|
return '$observed de $total saltos';
|
|
}
|
|
|
|
@override
|
|
String get channelPath_mapTitle => 'Mapa de Rutas';
|
|
|
|
@override
|
|
String get channelPath_noRepeaterLocations =>
|
|
'No hay ubicaciones disponibles para el repetidor en esta ruta.';
|
|
|
|
@override
|
|
String channelPath_primaryPath(int index) {
|
|
return 'Ruta $index (Principal)';
|
|
}
|
|
|
|
@override
|
|
String get channelPath_pathLabelTitle => 'Ruta';
|
|
|
|
@override
|
|
String get channelPath_observedPathHeader => 'Ruta Observada';
|
|
|
|
@override
|
|
String channelPath_selectedPathLabel(String label, String prefixes) {
|
|
return '$label • $prefixes';
|
|
}
|
|
|
|
@override
|
|
String get channelPath_noHopDetailsAvailable =>
|
|
'No hay detalles de salto disponibles para este paquete.';
|
|
|
|
@override
|
|
String get channelPath_unknownRepeater => 'Repetidor Desconocido';
|
|
|
|
@override
|
|
String get community_title => 'Comunidad';
|
|
|
|
@override
|
|
String get community_create => 'Crear Comunidad';
|
|
|
|
@override
|
|
String get community_createDesc =>
|
|
'Crear una nueva comunidad y compartir a través de código QR.';
|
|
|
|
@override
|
|
String get community_join => 'Únete';
|
|
|
|
@override
|
|
String get community_joinTitle => 'Únete a la comunidad';
|
|
|
|
@override
|
|
String community_joinConfirmation(String name) {
|
|
return '¿Quieres unirte a la comunidad \"$name\"?';
|
|
}
|
|
|
|
@override
|
|
String get community_scanQr => 'Escanear Código QR de la Comunidad';
|
|
|
|
@override
|
|
String get community_scanInstructions =>
|
|
'Apunte la cámara a un código QR de la comunidad';
|
|
|
|
@override
|
|
String get community_showQr => 'Mostrar Código QR';
|
|
|
|
@override
|
|
String get community_publicChannel => 'Comunidad Pública';
|
|
|
|
@override
|
|
String get community_hashtagChannel => 'Hashtag de la Comunidad';
|
|
|
|
@override
|
|
String get community_name => 'Nombre de la comunidad';
|
|
|
|
@override
|
|
String get community_enterName => 'Introducir nombre de comunidad';
|
|
|
|
@override
|
|
String community_created(String name) {
|
|
return 'Comunidad \"$name\" creada';
|
|
}
|
|
|
|
@override
|
|
String community_joined(String name) {
|
|
return 'Se unió a la comunidad \"$name\"';
|
|
}
|
|
|
|
@override
|
|
String get community_qrTitle => 'Compartir Comunidad';
|
|
|
|
@override
|
|
String community_qrInstructions(String name) {
|
|
return 'Escanear este código QR para unirte a $name';
|
|
}
|
|
|
|
@override
|
|
String get community_hashtagPrivacyHint =>
|
|
'Los canales de hashtag de la comunidad solo son accesibles para los miembros de la comunidad';
|
|
|
|
@override
|
|
String get community_invalidQrCode => 'Código QR de comunidad no válido';
|
|
|
|
@override
|
|
String get community_alreadyMember => 'Ya eres Miembro';
|
|
|
|
@override
|
|
String community_alreadyMemberMessage(String name) {
|
|
return 'Ya eres miembro de \"$name\".';
|
|
}
|
|
|
|
@override
|
|
String get community_addPublicChannel =>
|
|
'Añadir Canal Público de la Comunidad';
|
|
|
|
@override
|
|
String get community_addPublicChannelHint =>
|
|
'Añade automáticamente el canal público para esta comunidad.';
|
|
|
|
@override
|
|
String get community_noCommunities => 'Aún no se han unido comunidades.';
|
|
|
|
@override
|
|
String get community_scanOrCreate =>
|
|
'Escanear un código QR o crear una comunidad para comenzar';
|
|
|
|
@override
|
|
String get community_manageCommunities => 'Gestionar Comunidades';
|
|
|
|
@override
|
|
String get community_delete => 'Salir de la Comunidad';
|
|
|
|
@override
|
|
String community_deleteConfirm(String name) {
|
|
return '¿Salir de \"$name\"?';
|
|
}
|
|
|
|
@override
|
|
String community_deleteChannelsWarning(int count) {
|
|
return 'Esto también eliminará $count canal(es) y sus mensajes.';
|
|
}
|
|
|
|
@override
|
|
String community_deleted(String name) {
|
|
return 'Has salido de la comunidad \"$name\"';
|
|
}
|
|
|
|
@override
|
|
String get community_regenerateSecret => 'Regenerar Contraseña Secreta';
|
|
|
|
@override
|
|
String community_regenerateSecretConfirm(String name) {
|
|
return 'Regenerar la clave secreta para \"$name\"? Todos los miembros deberán escanear el nuevo código QR para seguir comunicándose.';
|
|
}
|
|
|
|
@override
|
|
String get community_regenerate => 'Regenerar';
|
|
|
|
@override
|
|
String community_secretRegenerated(String name) {
|
|
return 'Código secreto regenerado para \"$name\"';
|
|
}
|
|
|
|
@override
|
|
String get community_updateSecret => 'Actualizar Contraseña';
|
|
|
|
@override
|
|
String community_secretUpdated(String name) {
|
|
return 'Confidencialidad actualizada para \"$name\"';
|
|
}
|
|
|
|
@override
|
|
String community_scanToUpdateSecret(String name) {
|
|
return 'Escanear el nuevo código QR para actualizar el secreto de \"$name\"';
|
|
}
|
|
|
|
@override
|
|
String get community_addHashtagChannel => 'Añadir Hashtag de la Comunidad';
|
|
|
|
@override
|
|
String get community_addHashtagChannelDesc =>
|
|
'Añadir un canal con hashtag para esta comunidad';
|
|
|
|
@override
|
|
String get community_selectCommunity => 'Seleccionar Comunidad';
|
|
|
|
@override
|
|
String get community_regularHashtag => 'Etiqueta de Hashtag Regular';
|
|
|
|
@override
|
|
String get community_regularHashtagDesc =>
|
|
'Hashtag público (cualquiera puede unirse)';
|
|
|
|
@override
|
|
String get community_communityHashtag => 'Hashtag de la Comunidad';
|
|
|
|
@override
|
|
String get community_communityHashtagDesc =>
|
|
'Exclusivo para miembros de la comunidad';
|
|
|
|
@override
|
|
String community_forCommunity(String name) {
|
|
return 'Para $name';
|
|
}
|
|
|
|
@override
|
|
String get listFilter_tooltip => 'Filtrar y ordenar';
|
|
|
|
@override
|
|
String get listFilter_sortBy => 'Ordenar por';
|
|
|
|
@override
|
|
String get listFilter_latestMessages => 'Últimos mensajes';
|
|
|
|
@override
|
|
String get listFilter_heardRecently => 'Escuchado recientemente';
|
|
|
|
@override
|
|
String get listFilter_az => 'De la A a la Z';
|
|
|
|
@override
|
|
String get listFilter_filters => 'Filtros';
|
|
|
|
@override
|
|
String get listFilter_all => 'Todas';
|
|
|
|
@override
|
|
String get listFilter_favorites => 'Favoritos';
|
|
|
|
@override
|
|
String get listFilter_addToFavorites => 'Añadir a favoritos';
|
|
|
|
@override
|
|
String get listFilter_removeFromFavorites => 'Eliminar de las favoritas';
|
|
|
|
@override
|
|
String get listFilter_users => 'Usuarios';
|
|
|
|
@override
|
|
String get listFilter_repeaters => 'Repetidores';
|
|
|
|
@override
|
|
String get listFilter_roomServers => 'Servidores de la sala';
|
|
|
|
@override
|
|
String get listFilter_unreadOnly => 'Solo sin leer';
|
|
|
|
@override
|
|
String get listFilter_newGroup => 'Nuevo grupo';
|
|
|
|
@override
|
|
String get pathTrace_you => 'Tú';
|
|
|
|
@override
|
|
String get pathTrace_failed => 'El trazado de ruta falló.';
|
|
|
|
@override
|
|
String get pathTrace_notAvailable => 'El trazado de ruta no está disponible.';
|
|
|
|
@override
|
|
String get pathTrace_refreshTooltip => 'Actualizar trazado de ruta';
|
|
|
|
@override
|
|
String get pathTrace_someHopsNoLocation =>
|
|
'Uno o más de los saltos carecen de una ubicación';
|
|
|
|
@override
|
|
String get pathTrace_clearTooltip => 'Borrar ruta';
|
|
|
|
@override
|
|
String get losSelectStartEnd =>
|
|
'Seleccione los nodos de inicio y fin para LOS.';
|
|
|
|
@override
|
|
String losRunFailed(String error) {
|
|
return 'Error en la comprobación de la línea de visión: $error';
|
|
}
|
|
|
|
@override
|
|
String get losClearAllPoints => 'Borrar todos los puntos';
|
|
|
|
@override
|
|
String get losRunToViewElevationProfile =>
|
|
'Ejecute LOS para ver el perfil de elevación';
|
|
|
|
@override
|
|
String get losMenuTitle => 'Menú LOS';
|
|
|
|
@override
|
|
String get losMenuSubtitle =>
|
|
'Toque nodos o mantenga presionado el mapa para puntos personalizados';
|
|
|
|
@override
|
|
String get losShowDisplayNodes => 'Mostrar nodos de visualización';
|
|
|
|
@override
|
|
String get losCustomPoints => 'Puntos personalizados';
|
|
|
|
@override
|
|
String losCustomPointLabel(int index) {
|
|
return 'Personalizado $index';
|
|
}
|
|
|
|
@override
|
|
String get losPointA => 'Punto A';
|
|
|
|
@override
|
|
String get losPointB => 'Punto B';
|
|
|
|
@override
|
|
String losAntennaA(String value, String unit) {
|
|
return 'Antena A: $value $unit';
|
|
}
|
|
|
|
@override
|
|
String losAntennaB(String value, String unit) {
|
|
return 'Antena B: $value $unit';
|
|
}
|
|
|
|
@override
|
|
String get losRun => 'Ejecutar LOS';
|
|
|
|
@override
|
|
String get losNoElevationData => 'Sin datos de elevación';
|
|
|
|
@override
|
|
String losProfileClear(
|
|
String distance,
|
|
String distanceUnit,
|
|
String clearance,
|
|
String heightUnit,
|
|
) {
|
|
return '$distance $distanceUnit, despejar LOS, autorización mínima $clearance $heightUnit';
|
|
}
|
|
|
|
@override
|
|
String losProfileBlocked(
|
|
String distance,
|
|
String distanceUnit,
|
|
String obstruction,
|
|
String heightUnit,
|
|
) {
|
|
return '$distance $distanceUnit, bloqueado por $obstruction $heightUnit';
|
|
}
|
|
|
|
@override
|
|
String get losStatusChecking => 'LOS: comprobando...';
|
|
|
|
@override
|
|
String get losStatusNoData => 'LOS: sin datos';
|
|
|
|
@override
|
|
String losStatusSummary(int clear, int total, int blocked, int unknown) {
|
|
return 'LOS: $clear/$total claro, $blocked bloqueado, $unknown desconocido';
|
|
}
|
|
|
|
@override
|
|
String get losErrorElevationUnavailable =>
|
|
'Datos de elevación no disponibles para una o más muestras.';
|
|
|
|
@override
|
|
String get losErrorInvalidInput =>
|
|
'Datos de puntos/elevación no válidos para el cálculo de LOS.';
|
|
|
|
@override
|
|
String get losRenameCustomPoint =>
|
|
'Cambiar el nombre del punto personalizado';
|
|
|
|
@override
|
|
String get losPointName => 'Nombre del punto';
|
|
|
|
@override
|
|
String get losShowPanelTooltip => 'Mostrar panel LOS';
|
|
|
|
@override
|
|
String get losHidePanelTooltip => 'Ocultar panel LOS';
|
|
|
|
@override
|
|
String get losElevationAttribution =>
|
|
'Datos de elevación: Open-Meteo (CC BY 4.0)';
|
|
|
|
@override
|
|
String get losLegendRadioHorizon => 'Horizonte radioeléctrico';
|
|
|
|
@override
|
|
String get losLegendLosBeam => 'Línea de visión';
|
|
|
|
@override
|
|
String get losLegendTerrain => 'Terreno';
|
|
|
|
@override
|
|
String get losBlockedSpotsTitle => 'Espacios ocupados';
|
|
|
|
@override
|
|
String get losBlockedSpotsHint =>
|
|
'Seleccione un punto bloqueado para resaltarlo en el mapa.';
|
|
|
|
@override
|
|
String losBlockedSpotChip(
|
|
String distance,
|
|
String distanceUnit,
|
|
String obstruction,
|
|
String heightUnit,
|
|
) {
|
|
return '$distance $distanceUnit • $obstruction $heightUnit';
|
|
}
|
|
|
|
@override
|
|
String get losSelectedObstructionTitle => 'Obstrucción seleccionada';
|
|
|
|
@override
|
|
String losSelectedObstructionDetails(
|
|
String obstruction,
|
|
String heightUnit,
|
|
String distanceFromA,
|
|
String distanceUnit,
|
|
String distanceFromB,
|
|
) {
|
|
return 'Bloqueado por $obstruction a una altura de $heightUnit, a $distanceFromA metros de A y a $distanceFromB metros de B ($distanceUnit).';
|
|
}
|
|
|
|
@override
|
|
String get losFrequencyLabel => 'Frecuencia';
|
|
|
|
@override
|
|
String get losFrequencyInfoTooltip => 'Ver detalles del cálculo';
|
|
|
|
@override
|
|
String get losFrequencyDialogTitle => 'Cálculo del horizonte radioeléctrico';
|
|
|
|
@override
|
|
String losFrequencyDialogDescription(
|
|
double baselineK,
|
|
double baselineFreq,
|
|
double frequencyMHz,
|
|
double kFactor,
|
|
) {
|
|
return 'A partir de k=$baselineK en $baselineFreq MHz, el cálculo ajusta el factor k para la banda actual de $frequencyMHz MHz, que define el límite curvo del horizonte de radio.';
|
|
}
|
|
|
|
@override
|
|
String get contacts_pathTrace => 'Traza de ruta';
|
|
|
|
@override
|
|
String get contacts_ping => 'Ping';
|
|
|
|
@override
|
|
String get contacts_repeaterPathTrace => 'Traza de ruta al repetidor';
|
|
|
|
@override
|
|
String get contacts_repeaterPing => 'Hacer ping al repetidor';
|
|
|
|
@override
|
|
String get contacts_roomPathTrace => 'Traza de ruta al servidor de sala';
|
|
|
|
@override
|
|
String get contacts_roomPing => 'Hacer ping al servidor de sala';
|
|
|
|
@override
|
|
String get contacts_chatTraceRoute => 'Ruta de trazado';
|
|
|
|
@override
|
|
String contacts_pathTraceTo(String name) {
|
|
return 'Traza de ruta a $name';
|
|
}
|
|
|
|
@override
|
|
String get contacts_clipboardEmpty => 'El portapapeles está vacío.';
|
|
|
|
@override
|
|
String get contacts_invalidAdvertFormat => 'Formato de anuncio no válido';
|
|
|
|
@override
|
|
String get contacts_contactImported => 'El contacto ha sido importado.';
|
|
|
|
@override
|
|
String get contacts_contactImportFailed =>
|
|
'Contacto no se importó correctamente.';
|
|
|
|
@override
|
|
String get contacts_zeroHopAdvert => 'Anuncio de un solo salto';
|
|
|
|
@override
|
|
String get contacts_floodAdvert => 'Anuncio de inundación';
|
|
|
|
@override
|
|
String get contacts_copyAdvertToClipboard => 'Copiar anuncio al portapapeles';
|
|
|
|
@override
|
|
String get contacts_addContactFromClipboard =>
|
|
'Agregar contacto desde el portapapeles';
|
|
|
|
@override
|
|
String get contacts_ShareContact => 'Copiar contacto al portapapeles';
|
|
|
|
@override
|
|
String get contacts_ShareContactZeroHop =>
|
|
'Compartir contacto por anuncio de un solo salto';
|
|
|
|
@override
|
|
String get contacts_zeroHopContactAdvertSent =>
|
|
'Contacto enviado por anuncio.';
|
|
|
|
@override
|
|
String get contacts_zeroHopContactAdvertFailed =>
|
|
'No se pudo enviar el contacto.';
|
|
|
|
@override
|
|
String get contacts_contactAdvertCopied => 'Anuncio copiado al portapapeles.';
|
|
|
|
@override
|
|
String get contacts_contactAdvertCopyFailed =>
|
|
'No se pudo copiar el anuncio al portapapeles.';
|
|
|
|
@override
|
|
String get notification_activityTitle => 'Actividad de MeshCore';
|
|
|
|
@override
|
|
String notification_messagesCount(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: 'mensajes',
|
|
one: 'mensaje',
|
|
);
|
|
return '$count $_temp0';
|
|
}
|
|
|
|
@override
|
|
String notification_channelMessagesCount(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: 'mensajes de canal',
|
|
one: 'mensaje de canal',
|
|
);
|
|
return '$count $_temp0';
|
|
}
|
|
|
|
@override
|
|
String notification_newNodesCount(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: 'nuevos nodos',
|
|
one: 'nuevo nodo',
|
|
);
|
|
return '$count $_temp0';
|
|
}
|
|
|
|
@override
|
|
String notification_newTypeDiscovered(String contactType) {
|
|
return 'Nuevo $contactType descubierto';
|
|
}
|
|
|
|
@override
|
|
String get notification_receivedNewMessage => 'Nuevo mensaje recibido';
|
|
|
|
@override
|
|
String get settings_gpxExportRepeaters =>
|
|
'Exportar repetidores / servidores de sala a GPX';
|
|
|
|
@override
|
|
String get settings_gpxExportRepeatersSubtitle =>
|
|
'Exporta repetidores o servidores de sala con una ubicación a un archivo GPX.';
|
|
|
|
@override
|
|
String get settings_gpxExportContacts => 'Exportar compañeros a GPX';
|
|
|
|
@override
|
|
String get settings_gpxExportContactsSubtitle =>
|
|
'Exporta compañeros con una ubicación a un archivo GPX.';
|
|
|
|
@override
|
|
String get settings_gpxExportAll => 'Exportar todos los contactos a GPX';
|
|
|
|
@override
|
|
String get settings_gpxExportAllSubtitle =>
|
|
'Exporta todos los contactos con una ubicación a un archivo GPX.';
|
|
|
|
@override
|
|
String get settings_gpxExportSuccess => 'Archivo GPX exportado con éxito.';
|
|
|
|
@override
|
|
String get settings_gpxExportNoContacts => 'No hay contactos para exportar.';
|
|
|
|
@override
|
|
String get settings_gpxExportNotAvailable =>
|
|
'No compatible con tu dispositivo o sistema operativo';
|
|
|
|
@override
|
|
String get settings_gpxExportError => 'Hubo un error al exportar.';
|
|
|
|
@override
|
|
String get settings_gpxExportRepeatersRoom =>
|
|
'Ubicaciones de repetidores y servidores de sala';
|
|
|
|
@override
|
|
String get settings_gpxExportChat => 'Ubicaciones de compañeros';
|
|
|
|
@override
|
|
String get settings_gpxExportAllContacts =>
|
|
'Todas las ubicaciones de contactos';
|
|
|
|
@override
|
|
String get settings_gpxExportShareText =>
|
|
'Datos del mapa exportados desde meshcore-open';
|
|
|
|
@override
|
|
String get settings_gpxExportShareSubject =>
|
|
'Exportación GPX de datos de mapa de meshcore-open';
|
|
|
|
@override
|
|
String get snrIndicator_nearByRepeaters => 'Repetidores cercanos';
|
|
|
|
@override
|
|
String get snrIndicator_lastSeen => 'Visto por última vez';
|
|
|
|
@override
|
|
String get contactsSettings_title => 'Configuración de contactos';
|
|
|
|
@override
|
|
String get contactsSettings_autoAddTitle => 'Detección automática';
|
|
|
|
@override
|
|
String get contactsSettings_otherTitle =>
|
|
'Otras configuraciones relacionadas con el contacto';
|
|
|
|
@override
|
|
String get contactsSettings_autoAddUsersTitle =>
|
|
'Agregar usuarios automáticamente';
|
|
|
|
@override
|
|
String get contactsSettings_autoAddUsersSubtitle =>
|
|
'Permitir que el compañero agregue automáticamente a los usuarios descubiertos.';
|
|
|
|
@override
|
|
String get contactsSettings_autoAddRepeatersTitle =>
|
|
'Agregar repetidores automáticamente';
|
|
|
|
@override
|
|
String get contactsSettings_autoAddRepeatersSubtitle =>
|
|
'Permitir que el compañero agregue automáticamente los repetidores descubiertos.';
|
|
|
|
@override
|
|
String get contactsSettings_autoAddRoomServersTitle =>
|
|
'Agregar automáticamente servidores de sala';
|
|
|
|
@override
|
|
String get contactsSettings_autoAddRoomServersSubtitle =>
|
|
'Permitir que el compañero agregue automáticamente los servidores de salas descubiertos.';
|
|
|
|
@override
|
|
String get contactsSettings_autoAddSensorsTitle =>
|
|
'Agregar sensores automáticamente';
|
|
|
|
@override
|
|
String get contactsSettings_autoAddSensorsSubtitle =>
|
|
'Permitir que el compañero agregue automáticamente los sensores descubiertos.';
|
|
|
|
@override
|
|
String get contactsSettings_overwriteOldestTitle =>
|
|
'Sobreescribir el más antiguo';
|
|
|
|
@override
|
|
String get contactsSettings_overwriteOldestSubtitle =>
|
|
'Cuando la lista de contactos esté llena, se reemplazará el contacto no favorito más antiguo.';
|
|
|
|
@override
|
|
String get discoveredContacts_Title => 'Contactos descubiertos';
|
|
|
|
@override
|
|
String get discoveredContacts_noMatching =>
|
|
'No se encontraron contactos coincidentes';
|
|
|
|
@override
|
|
String get discoveredContacts_searchHint => 'Buscar contactos descubiertos';
|
|
|
|
@override
|
|
String get discoveredContacts_contactAdded => 'Contacto agregado';
|
|
|
|
@override
|
|
String get discoveredContacts_addContact => 'Agregar contacto';
|
|
|
|
@override
|
|
String get discoveredContacts_copyContact =>
|
|
'Copiar contacto al portapapeles';
|
|
|
|
@override
|
|
String get discoveredContacts_deleteContact => 'Eliminar contacto';
|
|
|
|
@override
|
|
String get discoveredContacts_deleteContactAll =>
|
|
'Eliminar Todos los Contactos Descubiertos';
|
|
|
|
@override
|
|
String get discoveredContacts_deleteContactAllContent =>
|
|
'¿Está seguro de que desea eliminar todos los contactos descubiertos!';
|
|
|
|
@override
|
|
String get chat_sendCooldown =>
|
|
'Por favor, espere un momento antes de reenviar.';
|
|
|
|
@override
|
|
String get appSettings_jumpToOldestUnread =>
|
|
'Salta a los mensajes más antiguos sin leer';
|
|
|
|
@override
|
|
String get appSettings_jumpToOldestUnreadSubtitle =>
|
|
'Cuando abras una conversación con mensajes sin leer, desplázate hacia el primer mensaje sin leer en lugar del más reciente.';
|
|
|
|
@override
|
|
String get appSettings_languageHu => 'Húngaro';
|
|
|
|
@override
|
|
String get appSettings_languageJa => 'Japonés';
|
|
|
|
@override
|
|
String get appSettings_languageKo => 'Coreano';
|
|
|
|
@override
|
|
String get radioStats_tooltip => 'Estadísticas de radio y malla';
|
|
|
|
@override
|
|
String get radioStats_screenTitle => 'Estadísticas de radio';
|
|
|
|
@override
|
|
String get radioStats_notConnected =>
|
|
'Conéctese a un dispositivo para visualizar estadísticas de radio.';
|
|
|
|
@override
|
|
String get radioStats_firmwareTooOld =>
|
|
'Las estadísticas de radio requieren un firmware compatible v8 o posterior.';
|
|
|
|
@override
|
|
String get radioStats_waiting => 'Esperando datos…';
|
|
|
|
@override
|
|
String radioStats_noiseFloor(int noiseDbm) {
|
|
return 'Nivel de ruido: $noiseDbm dBm';
|
|
}
|
|
|
|
@override
|
|
String radioStats_lastRssi(int rssiDbm) {
|
|
return 'Último RSSI: $rssiDbm dBm';
|
|
}
|
|
|
|
@override
|
|
String radioStats_lastSnr(String snr) {
|
|
return 'Último SNR: $snr dB';
|
|
}
|
|
|
|
@override
|
|
String radioStats_txAir(int seconds) {
|
|
return 'Tiempo de emisión en Texas (total): $seconds s';
|
|
}
|
|
|
|
@override
|
|
String radioStats_rxAir(int seconds) {
|
|
return 'Tiempo de transmisión de RX (total): $seconds s';
|
|
}
|
|
|
|
@override
|
|
String get radioStats_chartCaption =>
|
|
'Nivel de ruido (dBm) en muestras recientes.';
|
|
|
|
@override
|
|
String radioStats_stripNoise(int noiseDbm) {
|
|
return 'Nivel de ruido: $noiseDbm dBm';
|
|
}
|
|
|
|
@override
|
|
String get radioStats_stripWaiting => 'Obteniendo estadísticas de la radio…';
|
|
|
|
@override
|
|
String get radioStats_settingsTile => 'Estadísticas de radio';
|
|
|
|
@override
|
|
String get radioStats_settingsSubtitle =>
|
|
'Nivel de ruido, RSSI, SNR y tiempo de transmisión';
|
|
|
|
@override
|
|
String get translation_title => 'Traducción';
|
|
|
|
@override
|
|
String get translation_enableTitle => 'Habilitar la traducción';
|
|
|
|
@override
|
|
String get translation_enableSubtitle =>
|
|
'Traducir los mensajes entrantes y permitir la traducción previa al envío.';
|
|
|
|
@override
|
|
String get translation_composerTitle => 'Traducir antes de enviar';
|
|
|
|
@override
|
|
String get translation_composerSubtitle =>
|
|
'Controla el estado predeterminado del icono de traducción del compositor.';
|
|
|
|
@override
|
|
String get translation_autoIncomingTitle =>
|
|
'Traducir mensajes automáticamente';
|
|
|
|
@override
|
|
String get translation_autoIncomingSubtitle =>
|
|
'Traduce mensajes para notificaciones y para chats o canales automáticamente.';
|
|
|
|
@override
|
|
String get translation_translateMessage => 'Traducir mensaje';
|
|
|
|
@override
|
|
String get translation_targetLanguage => 'Idioma de destino';
|
|
|
|
@override
|
|
String get translation_useAppLanguage =>
|
|
'Utilizar el idioma de la aplicación';
|
|
|
|
@override
|
|
String get translation_downloadedModelLabel => 'Modelo descargado';
|
|
|
|
@override
|
|
String get translation_presetModelLabel =>
|
|
'Modelo predefinido de Hugging Face';
|
|
|
|
@override
|
|
String get translation_manualUrlLabel => 'URL del modelo manual';
|
|
|
|
@override
|
|
String get translation_downloadModel => 'Descargar el modelo';
|
|
|
|
@override
|
|
String get translation_downloading => 'Descargando...';
|
|
|
|
@override
|
|
String get translation_working => 'Trabajando...';
|
|
|
|
@override
|
|
String get translation_stop => '¡Detente!';
|
|
|
|
@override
|
|
String get translation_mergingChunks =>
|
|
'Combinando los fragmentos descargados en el archivo final...';
|
|
|
|
@override
|
|
String get translation_downloadedModels => 'Modelos descargados';
|
|
|
|
@override
|
|
String get translation_deleteModel => 'Eliminar modelo';
|
|
|
|
@override
|
|
String get translation_modelDownloaded => 'Modelo de traducción descargado.';
|
|
|
|
@override
|
|
String get translation_downloadStopped => 'La descarga se ha detenido.';
|
|
|
|
@override
|
|
String translation_downloadFailed(String error) {
|
|
return 'No se pudo descargar: $error';
|
|
}
|
|
|
|
@override
|
|
String get translation_enterUrlFirst =>
|
|
'Primero, introduzca la URL del modelo.';
|
|
|
|
@override
|
|
String get scanner_linuxPairingShowPin => 'Mostrar código PIN';
|
|
|
|
@override
|
|
String get scanner_linuxPairingHidePin => 'Ocultar PIN';
|
|
|
|
@override
|
|
String get scanner_linuxPairingPinTitle =>
|
|
'PIN para emparejar dispositivos Bluetooth';
|
|
|
|
@override
|
|
String scanner_linuxPairingPinPrompt(String deviceName) {
|
|
return 'Introduzca el código PIN para $deviceName (deje en blanco si no hay ninguno).';
|
|
}
|
|
|
|
@override
|
|
String get translation_messageTranslation => 'Traducción del mensaje';
|
|
|
|
@override
|
|
String get translation_translateBeforeSending => 'Traducir antes de enviar';
|
|
|
|
@override
|
|
String get translation_composerEnabledHint =>
|
|
'Los mensajes serán traducidos antes de ser enviados.';
|
|
|
|
@override
|
|
String get translation_composerDisabledHint =>
|
|
'Envía mensajes utilizando el lenguaje escrito original.';
|
|
|
|
@override
|
|
String translation_translateTo(String language) {
|
|
return 'Traducir a $language';
|
|
}
|
|
|
|
@override
|
|
String get translation_translationOptions => 'Opciones de traducción';
|
|
|
|
@override
|
|
String get translation_systemLanguage => 'Idioma del sistema';
|
|
|
|
@override
|
|
String get background_serviceTitle => 'MeshCore en ejecución';
|
|
|
|
@override
|
|
String get background_serviceText => 'Manteniendo BLE conectado';
|
|
|
|
@override
|
|
String appSettings_translationModelDeleted(String name) {
|
|
return 'Eliminado $name';
|
|
}
|
|
|
|
@override
|
|
String appSettings_translationModelDeleteFailed(String error) {
|
|
return 'No se pudo eliminar: $error';
|
|
}
|
|
|
|
@override
|
|
String channels_channelUpdateFailed(String error) {
|
|
return 'No se pudo actualizar el canal: $error';
|
|
}
|
|
|
|
@override
|
|
String get contact_typeChat => 'Chat';
|
|
|
|
@override
|
|
String get contact_typeRepeater => 'Repetidor';
|
|
|
|
@override
|
|
String get contact_typeRoom => 'Sala';
|
|
|
|
@override
|
|
String get contact_typeSensor => 'Sensor';
|
|
|
|
@override
|
|
String get contact_typeUnknown => 'Desconocido';
|
|
|
|
@override
|
|
String get map_zoomIn => 'Acercar';
|
|
|
|
@override
|
|
String get map_zoomOut => 'Alejar';
|
|
|
|
@override
|
|
String get map_centerMap => 'Centrar mapa';
|
|
|
|
@override
|
|
String get chrome_bluetoothRequiresChromium =>
|
|
'Web Bluetooth requiere un navegador Chromium.';
|
|
|
|
@override
|
|
String channels_communityShortId(String id) {
|
|
return 'ID: $id...';
|
|
}
|
|
|
|
@override
|
|
String get pathTrace_legendGpsConfirmed => 'Confirmado mediante GPS';
|
|
|
|
@override
|
|
String get pathTrace_legendInferred => 'Posición estimada';
|
|
|
|
@override
|
|
String get pathMap_viewSingle => 'Individual';
|
|
|
|
@override
|
|
String get pathMap_viewCombined => 'Combinado';
|
|
|
|
@override
|
|
String get pathMap_play => 'Reproducir';
|
|
|
|
@override
|
|
String get pathMap_pause => 'Pausa';
|
|
|
|
@override
|
|
String get pathMap_replay => 'Repetir';
|
|
|
|
@override
|
|
String get pathMap_stepBack => 'Salto anterior';
|
|
|
|
@override
|
|
String get pathMap_stepForward => 'Siguiente salto';
|
|
|
|
@override
|
|
String get pathMap_animationOn => 'Mostrar animación del paquete';
|
|
|
|
@override
|
|
String get pathMap_animationOff => 'Ocultar la animación del paquete';
|
|
|
|
@override
|
|
String pathMap_hopOf(int current, int total) {
|
|
return 'Saltar $current de $total';
|
|
}
|
|
|
|
@override
|
|
String pathMap_observedPaths(int count) {
|
|
return 'Rutas observadas: $count';
|
|
}
|
|
|
|
@override
|
|
String get pathMap_primary => 'Principal';
|
|
|
|
@override
|
|
String pathMap_alternate(int index) {
|
|
return 'Alternativo $index';
|
|
}
|
|
|
|
@override
|
|
String pathMap_hopCount(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: '$count saltos',
|
|
one: '1 salto',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String pathMap_gpsCount(int confirmed, int total) {
|
|
return '$confirmed/$total GPS';
|
|
}
|
|
|
|
@override
|
|
String get pathMap_legendShared => 'Segmento compartido';
|
|
|
|
@override
|
|
String get pathMap_legendEstimated => 'Segmento estimado';
|
|
|
|
@override
|
|
String pathMap_sharedNodeCount(int count) {
|
|
return 'Utilizado en $count rutas.';
|
|
}
|
|
|
|
@override
|
|
String pathMap_partialAnimation(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: '$count saltos no tienen ubicación — la ruta mostrada es parcial',
|
|
one: '1 salto no tiene ubicación — la ruta mostrada es parcial',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String get pathMap_showAllPaths => 'Mostrar todas';
|
|
|
|
@override
|
|
String get pathMap_hidePath => 'Ocultar ruta';
|
|
|
|
@override
|
|
String get pathMap_showPath => 'Mostrar ruta';
|
|
|
|
@override
|
|
String get pathMap_collapsePanel => 'Cerrar panel';
|
|
|
|
@override
|
|
String get pathMap_expandPanel => 'Ampliar panel';
|
|
|
|
@override
|
|
String get pathMap_noLocation => 'Sin ubicación';
|
|
|
|
@override
|
|
String get pathMap_followPacket => 'Seguir paquete';
|
|
|
|
@override
|
|
String get pathMap_unfollowPacket => 'Dejar de seguir el paquete';
|
|
}
|