// Spanish translations. Reviewed for UI register (informal tú). // Native review still recommended before publicizing as fully supported. export default { 'nav.members': 'Miembros', 'common.close': 'Cerrar', 'switcher.manage_members': 'Gestionar miembros', 'switcher.rename': 'Renombrar espacio de trabajo', 'wall.rename': 'Renombrar muro', 'wall.remove_from_wall': 'Quitar del muro', 'dashboard.select_for_wall': 'Seleccionar para el videomuro', 'team.unavailable_desc': 'Esta función no está disponible mientras se rediseña para funcionar con los Espacios de trabajo. Los datos de los equipos existentes se conservan.', 'team.unavailable_title': 'Equipos está en rediseño', 'settings.help_tip': 'Tu perfil, contraseña y verificación en dos pasos, además de tokens de API para integraciones y herramientas para exportar o importar tus datos.', 'activity.help_tip': 'Registro de qué cambió y quién lo cambió: inicios de sesión, subidas de contenido, comandos a dispositivos y alertas. Útil para averiguar por qué una pantalla cambió lo que mostraba.', 'playlist.help_tip': 'Una lista de reproducción es el orden que una pantalla repite en bucle. Añade contenidos, define cuánto dura cada uno y asigna la lista a una pantalla o a un grupo. Una pantalla reproduce una sola lista salvo que una programación la anule.', // #zone-orphan dashboard warnings 'device.pl_item.orphan_zone': 'Zona de otro diseño — reasignar', 'device.pl_item.orphan_zone_tip': 'La zona de este elemento no pertenece al diseño actual del dispositivo. Se sigue reproduciendo (recuperado en la zona más grande), pero reasígnalo a una zona de este diseño.', 'dashboard.device_orphan_tip_one': '{n} elemento asignado a una zona que no está en el diseño de este dispositivo — abre el dispositivo para reasignar', 'dashboard.device_orphan_tip_other': '{n} elementos asignados a una zona que no está en el diseño de este dispositivo — abre el dispositivo para reasignar', // Nav 'nav.displays': 'Pantallas', 'nav.content': 'Contenido', 'nav.playlists': 'Listas de reproducción', 'nav.layouts': 'Diseños', 'nav.widgets': 'Widgets', 'nav.schedule': 'Horario', 'nav.walls': 'Muros de video', 'nav.reports': 'Informes', 'nav.kiosk': 'Kiosco', 'nav.designer': 'Diseñador', 'nav.activity': 'Actividad', 'nav.teams': 'Equipos', 'nav.help': 'Ayuda', 'nav.settings': 'Configuración', 'nav.subscription': 'Suscripción', 'nav.admin': 'Administrador', // Common 'common.save': 'Guardar', 'common.cancel': 'Cancelar', 'common.delete': 'Eliminar', 'common.edit': 'Editar', 'common.done': 'Listo', 'common.loading': 'Cargando...', 'common.checking': 'Verificando...', 'common.connected': 'Conectado', 'common.disconnected': 'Desconectado', 'common.never': 'Nunca', 'common.just_now': 'Ahora mismo', 'common.minutes_ago': 'hace {n}m', 'common.hours_ago': 'hace {n}h', 'common.days_ago': 'hace {n}d', 'common.unknown': 'Desconocido', // Auth 'auth.sign_in': 'Iniciar sesión', 'auth.sign_out': 'Cerrar sesión', 'auth.create_account': 'Crear cuenta', 'auth.create_admin_account': 'Crear cuenta de administrador', 'auth.email': 'Correo electrónico', 'auth.password': 'Contraseña', 'auth.name': 'Nombre', 'auth.placeholder_email': 'tu@ejemplo.com', 'auth.placeholder_password': '••••••••', 'auth.placeholder_name': 'Tu nombre', 'auth.placeholder_register_password': 'Mínimo 6 caracteres', 'auth.subtitle_setup': 'Crea tu cuenta de administrador para comenzar', 'auth.subtitle_signin': 'Inicia sesión para gestionar tus pantallas', 'auth.trial_notice': 'Las cuentas nuevas reciben 14 días de prueba Pro gratis', 'auth.divider_or': 'O', 'auth.signin_google': 'Iniciar sesión con Google', 'auth.signin_microsoft': 'Iniciar sesión con Microsoft', 'auth.back_to_signin': 'Volver a iniciar sesión', 'auth.support_access': 'Acceso de soporte', 'auth.support_token_placeholder': 'Pega el token de soporte', 'auth.support_authenticate': 'Autenticar con token de soporte', 'auth.terms': 'Términos del servicio', 'auth.privacy': 'Política de privacidad', 'auth.error_email_password_required': 'Se requieren correo y contraseña', 'auth.error_password_min_6': 'La contraseña debe tener al menos 6 caracteres', 'auth.error_login_failed': 'Error al iniciar sesión', 'auth.error_registration_failed': 'Error al registrarse', 'auth.error_paste_support_token': 'Pega un token de soporte', 'auth.error_support_failed': 'Error en el inicio de sesión de soporte', 'auth.error_google_failed': 'Error al iniciar sesión con Google', 'auth.error_microsoft_failed': 'Error al iniciar sesión con Microsoft', // Dashboard 'dashboard.title': 'Pantallas', 'dashboard.subtitle': 'Administra tus pantallas remotas', 'dashboard.help_tip': 'Tus dispositivos vinculados. Verde = en línea, rojo = desconectado. Haz clic en uno para gestionar su lista de reproducción, ver telemetría o usar el control remoto.', 'dashboard.add': 'Agregar pantalla', 'dashboard.create_group': '+ Grupo', 'dashboard.search': 'Buscar pantallas...', 'dashboard.all_status': 'Todos los estados', 'dashboard.online': 'En línea', 'dashboard.offline': 'Desconectado', 'dashboard.awaiting_pairing': 'Esperando vinculación', 'dashboard.no_preview': 'Vista previa no disponible', 'dashboard.total_displays': 'Pantallas totales', 'dashboard.ungrouped': 'Sin grupo', 'dashboard.no_displays': 'Aún no hay pantallas', 'dashboard.no_displays_desc': 'Instala la aplicación de ScreenTinker en tu TV y vincúlala con el botón de arriba.', 'dashboard.failed_to_load': 'Error al cargar las pantallas', 'dashboard.unknown_playlist': 'Lista desconocida', 'dashboard.mixed_playlists': 'Listas variadas', 'dashboard.playlist_label': 'Lista: {name}', 'dashboard.devices_count_one': '{n} dispositivo', 'dashboard.devices_count_other': '{n} dispositivos', 'dashboard.online_count': '{n} en línea', 'dashboard.set_playlist_placeholder': 'Asignar lista...', 'dashboard.send_command_placeholder': 'Enviar comando...', 'dashboard.manage': 'Gestionar', 'dashboard.manage_tooltip': 'Agregar/quitar dispositivos', 'dashboard.delete_group_tooltip': 'Eliminar grupo', 'dashboard.no_devices_in_group': 'No hay dispositivos en este grupo. Haz clic en Gestionar para agregar.', 'dashboard.manage_group_subtitle': 'Marca los dispositivos para agregarlos a este grupo', 'dashboard.draft_suffix': '(borrador)', 'dashboard.cmd.screen_on': 'Encender pantalla', 'dashboard.cmd.screen_off': 'Apagar pantalla', 'dashboard.cmd.restart_app': 'Reiniciar app', 'dashboard.cmd.check_update': 'Buscar actualización', 'dashboard.cmd.reboot': 'Reiniciar', 'dashboard.cmd.shutdown': 'Apagar', 'dashboard.prompt_group_name': 'Nombre del grupo:', 'dashboard.error_pairing_code': 'Ingresa un código de vinculación válido de 6 dígitos', 'dashboard.confirm_add_to_group': '{name} ya está en: {groups}\n\n¿Agregarlo también a "{target}"?', 'dashboard.confirm_assign_playlist': '¿Asignar la lista "{playlist}" a todos los dispositivos de "{group}"?', 'dashboard.confirm_destructive_command': '¿{cmd} todos los {n} dispositivos de "{group}"?\n\nEsto no se puede deshacer.', 'dashboard.confirm_delete_group': '¿Eliminar este grupo? Los dispositivos no se verán afectados.', 'dashboard.toast.display_paired': '¡Pantalla vinculada con éxito!', 'dashboard.toast.group_created': 'Grupo creado', 'dashboard.toast.group_deleted': 'Grupo eliminado', 'dashboard.toast.already_in_group': '{name} ya está en {group}', 'dashboard.toast.moved_device': 'Se movió {name} a {group}', 'dashboard.toast.removed_device_one': 'Se quitó {name} de 1 grupo', 'dashboard.toast.removed_device_other': 'Se quitó {name} de {n} grupos', 'dashboard.toast.playlist_assigned_one': 'Lista asignada a 1 dispositivo', 'dashboard.toast.playlist_assigned_other': 'Lista asignada a {n} dispositivos', 'dashboard.toast.command_sent': '{cmd} enviado a {sent}/{total} dispositivos', 'dashboard.toast.command_sent_with_offline': '{cmd} enviado a {sent}/{total} dispositivos ({offline} desconectados)', // Content library 'content.title': 'Biblioteca de contenido', 'content.subtitle': 'Sube y administra tus archivos multimedia', 'content.help_tip': 'Sube videos e imágenes aquí. Selecciona varios archivos para subir en lote. Usa URL remota para transmitir desde fuentes externas. Haz clic en una miniatura para previsualizar.', 'content.drop': 'Arrastra archivos aquí o haz clic para subir', 'content.upload_hint': 'Soporta MP4, WebM, AVI, MKV, JPEG, PNG, GIF, WebP', 'content.upload_progress': 'Subiendo...', 'content.upload_progress_named': 'Subiendo {name}...', 'content.upload_progress_count': 'Subiendo {count} archivos...', 'content.upload_progress_named_pct': 'Subiendo {name}... {pct}%', 'content.remote_url': 'URL remota', 'content.remote_desc': 'Transmite directamente desde una URL. Ahorra ancho de banda local.', 'content.remote_url_placeholder': 'https://ejemplo.com/video.mp4', 'content.remote_name_placeholder': 'Nombre para mostrar (opcional)', 'content.remote_add_btn': 'Agregar URL remota', 'content.youtube': 'YouTube', 'content.youtube_desc': 'Inserta un video de YouTube en tus pantallas.', 'content.youtube_url_placeholder': 'https://youtube.com/watch?v=...', 'content.youtube_name_placeholder': 'Nombre para mostrar (opcional)', 'content.youtube_add_btn': 'Agregar video de YouTube', 'content.search_placeholder': 'Buscar contenido...', 'content.filter_type_all': 'Todos los tipos', 'content.filter_type_video': 'Videos', 'content.filter_type_image': 'Imágenes', 'content.filter_type_youtube': 'YouTube', 'content.filter_type_web': 'Web / remoto', 'content.sort_newest': 'Más recientes primero', 'content.sort_oldest': 'Más antiguos primero', 'content.sort_name': 'Nombre A–Z', 'content.sort_size': 'Más grandes primero', 'content.result_count': '{count} resultado(s)', 'content.batch_selected': '{count} seleccionado(s)', 'content.batch_select_all': 'Seleccionar todo', 'content.batch_select_none': 'Deseleccionar todo', 'content.batch_move_placeholder': 'Mover a…', 'content.batch_delete': 'Eliminar ({count})', 'content.batch_delete_confirm': 'Haz clic otra vez para eliminar {count}', 'content.toast.batch_moved': '{count} elemento(s) movido(s)', 'content.toast.batch_deleted': '{count} elemento(s) eliminado(s)', 'content.new_folder_btn': '+ Nueva carpeta', 'content.breadcrumb_root': 'Todo el contenido', 'content.rename_btn': 'Renombrar', 'content.delete_folder_btn': 'Eliminar carpeta', 'content.prompt_folder_name': 'Nombre de la carpeta:', 'content.prompt_rename_folder': 'Renombrar carpeta:', 'content.confirm_delete_folder': '¿Eliminar esta carpeta? El contenido volverá al nivel raíz. Las subcarpetas también se eliminarán.', 'content.empty_folder_title': 'Esta carpeta está vacía', 'content.empty_folder_desc': 'Arrastra contenido aquí o usa la acción Mover.', 'content.no_content': 'Aún no hay contenido', 'content.no_content_desc': 'Sube videos e imágenes para comenzar.', 'content.failed_to_load': 'Error al cargar el contenido', 'content.type_youtube': 'YouTube', 'content.type_remote': 'URL remota', 'content.type_remote_short': 'Remota', 'content.type_video': 'Video', 'content.type_image': 'Imagen', 'content.btn_edit': 'Editar', 'content.btn_delete': 'Eliminar', 'content.btn_confirm_delete': '¿Confirmar eliminación?', 'content.btn_deleting': 'Eliminando...', 'content.edit_modal_title': 'Editar contenido', 'content.label_filename': 'Nombre del archivo / Mostrar como', 'content.label_remote_url_field': 'URL remota', 'content.label_mime_type': 'Tipo MIME', 'content.label_folder': 'Carpeta', 'content.label_unstable_connection': 'Conexión inestable (limitar a 720p)', 'content.unstable_connection_hint': 'Fuerza un tope de 720p en YouTube para que el WiFi débil o inestable almacene menos en búfer. Déjalo desactivado para calidad completa.', 'content.label_captions_enabled': 'Activar subtítulos', 'content.label_captions_lang': 'Idioma de subtítulos', 'content.captions_hint': 'Activa los subtítulos de YouTube en el idioma elegido en todas las pantallas. Depende de que el video tenga subtítulos.', 'content.label_subtitle_file': 'Archivo de subtítulos (.vtt)', 'content.label_subtitle_lang': 'Idioma del subtítulo', 'content.subtitle_current': 'Hay una pista de subtítulos adjunta. Elige un archivo nuevo para reemplazarla.', 'content.subtitle_remove': 'Quitar el subtítulo actual', 'content.subtitle_hint': 'Sube un archivo WebVTT (.vtt) para mostrar subtítulos en este video en todas las pantallas.', 'content.label_replace_file': 'Reemplazar archivo', 'content.replace_file_hint': 'Déjalo vacío para mantener el archivo actual', 'content.folder_root_option': '— Raíz —', 'content.save_changes': 'Guardar cambios', 'content.mime.video_mp4': 'Video (MP4)', 'content.mime.video_webm': 'Video (WebM)', 'content.mime.image_jpeg': 'Imagen (JPEG)', 'content.mime.image_png': 'Imagen (PNG)', 'content.mime.image_gif': 'Imagen (GIF)', 'content.mime.image_webp': 'Imagen (WebP)', 'content.error_enter_url': 'Ingresa una URL', 'content.error_enter_youtube_url': 'Ingresa una URL de YouTube', 'content.error_update_failed': 'Error al actualizar', 'content.toast.remote_added': 'Contenido remoto agregado', 'content.toast.youtube_added': 'Video de YouTube agregado', 'content.toast.deleted': 'Contenido eliminado', 'content.toast.updated': 'Contenido actualizado', 'content.toast.uploaded_named': '{name} se subió correctamente', 'content.toast.uploaded_count': '{count} archivos se subieron correctamente', 'content.toast.upload_failed_named': 'Error al subir {name}: {error}', 'content.toast.folder_created_named': 'Carpeta "{name}" creada', 'content.toast.folder_renamed': 'Carpeta renombrada', 'content.toast.folder_deleted': 'Carpeta eliminada', 'content.toast.moved': 'Movido', 'content.toast.moved_to_root': 'Movido a la raíz', // Device detail 'device.back': 'Volver a Pantallas', 'device.owner_label': 'Propietario: {owner}', 'device.rename': 'Renombrar', 'device.preview_btn': 'Vista previa', 'device.screenshot_btn': 'Captura', 'device.remove': 'Eliminar', 'device.click_to_confirm': 'Haz clic de nuevo para confirmar', 'device.prompt_new_name': 'Ingresa el nuevo nombre:', 'device.confirm_discard_draft': '¿Descartar todos los cambios no publicados y volver a la última versión publicada?', 'device.failed_load': 'Error al cargar el dispositivo', 'device.no_screenshot': 'No hay captura disponible. Haz clic en "Captura" para tomar una.', 'device.no_content_assigned': 'Sin contenido asignado', 'device.now_playing_id': 'Reproduciendo: {id}', 'device.playlist_count_one': '1 elemento en la lista', 'device.playlist_count_other': '{n} elementos en la lista', 'device.tab.now_playing': 'Reproducción actual', 'device.tab.now_playing_tip': 'Captura en vivo de lo que se muestra ahora en este dispositivo.', 'device.tab.playlist': 'Lista', 'device.tab.playlist_tip': 'Contenido asignado a este dispositivo. Arrastra para reordenar. Agrega medios, widgets o páginas de kiosco.', 'device.tab.info': 'Información del dispositivo', 'device.tab.info_tip': 'Telemetría de hardware, orientación, notas y controles del dispositivo.', 'device.tab.remote': 'Control remoto', 'device.tab.remote_tip': 'Visualiza la pantalla del dispositivo en tiempo real y envía pulsaciones. Funciona en la APK de Android y el reproductor web.', 'device.draft.banner_title': 'Cambios sin publicar', 'device.draft.devices_showing_published': 'Los dispositivos siguen mostrando la última versión publicada.', 'device.draft.never_published': 'Esta lista nunca se ha publicado. Los dispositivos no mostrarán nada hasta que la publiques.', 'device.draft.discard': 'Descartar', 'device.draft.publish': 'Publicar', 'device.draft.publishing': 'Publicando...', 'device.layout.label': 'Diseño de pantalla', 'device.layout.fullscreen_default': 'Pantalla completa (predeterminado)', 'device.layout.zones_count': '{name} ({n} zonas)', 'device.layout.template_zones_count': '[Plantilla] {name} ({n} zonas)', 'device.layout.apply': 'Aplicar', 'device.playlist.label': 'Lista', 'device.playlist.no_playlist': 'Sin lista', 'device.playlist.copy_to_btn': 'Copiar a...', 'device.playlist.add_content_btn': 'Agregar contenido', 'device.playlist.empty_title': 'Sin contenido asignado', 'device.playlist.empty_desc': 'Agrega contenido de tu biblioteca a la lista de esta pantalla.', 'device.playlist_picker.with_count': '{name} — {n} elementos', 'device.playlist_picker.with_auto': '{name} (auto) — {n} elementos', 'device.info.status': 'Estado', 'device.info.ip_address': 'Dirección IP', 'device.info.battery': 'Batería', 'device.info.storage': 'Almacenamiento', 'device.info.size_free': '{size} libres', 'device.info.player_type': 'Tipo de reproductor', 'device.info.web_player': 'Reproductor web', 'device.info.wifi': 'WiFi', 'device.info.uptime': 'Tiempo activo', 'device.info.android_version': 'Versión de Android', 'device.info.app_version': 'Versión de la app', 'device.info.settings_pin': 'PIN de ajustes', 'device.info.settings_pin_hint': 'Menú de ajustes del dispositivo (2× Atrás)', 'device.info.screen_resolution': 'Resolución de pantalla', 'device.info.ram': 'RAM', 'device.info.cpu_usage': 'Uso de CPU', 'device.timeline.title': 'Línea de tiempo (últimas 24 horas)', 'device.timeline.h24_ago': 'hace 24h', 'device.timeline.now': 'Ahora', 'device.timeline.online': 'En línea', 'device.timeline.offline': 'Desconectado', 'device.timeline.no_data': 'Sin datos', 'device.timeline.uptime_pct_tracked': '{pct}% activo ({n}min registrados)', 'device.timeline.uptime_pct_no_data': '{pct}% activo (sin datos)', 'device.form.orientation_label': 'Orientación / Rotación', 'device.form.orientation.landscape': 'Horizontal (0°)', 'device.form.orientation.portrait': 'Vertical (90° SR)', 'device.form.orientation.landscape_flipped': 'Horizontal invertido (180°)', 'device.form.orientation.portrait_flipped': 'Vertical invertido (270° SR)', 'device.form.default_content_label': 'Contenido predeterminado', 'device.form.default_content_none': 'Ninguno (mostrar "Esperando...")', 'device.form.notes_label': 'Notas', 'device.form.notes_placeholder': 'Ubicación, detalles de instalación, etc.', 'device.form.save_settings': 'Guardar configuración', 'device.ctl.reboot_device': 'Reiniciar dispositivo', 'device.ctl.screen_off': 'Apagar pantalla', 'device.ctl.screen_on': 'Encender pantalla', 'device.ctl.launch_player': 'Iniciar reproductor', 'device.ctl.force_update': 'Forzar actualización', 'device.ctl.shutdown': 'Apagar', 'device.remote.start_prompt': 'Haz clic en "Iniciar control remoto" para comenzar', 'device.remote.start': 'Iniciar control remoto', 'device.remote.stop': 'Detener control remoto', 'device.remote.vol_up': 'Vol +', 'device.remote.vol_down': 'Vol -', 'device.remote.home': 'Inicio', 'device.remote.back': 'Atrás', 'device.remote.recents': 'Recientes', 'device.remote.power': 'Encendido', 'device.remote.ok': 'OK', 'device.remote.settings': 'Ajustes', 'device.remote.scrn_off': 'Pant. off', 'device.remote.scrn_on': 'Pant. on', 'device.remote.enable_system_view': 'Habilitar vista de sistema', 'device.remote.system_view_tooltip': 'Solicita al usuario del dispositivo permitir captura de pantalla completa - habilita ver pantalla de inicio, ajustes y otras apps', 'device.remote.system_view_hint': 'Requiere aprobación única en el dispositivo', 'device.remote.waiting_for_approval': 'Esperando aprobación del dispositivo...', 'device.remote.system_view_enabled': 'Vista de sistema habilitada', 'device.remote.unlocked_hint': 'Navegación y controles del sistema desbloqueados', 'device.pl_item.widget_with_type': 'Widget ({type})', 'device.pl_item.youtube': 'YouTube', 'device.pl_item.video': 'Video', 'device.pl_item.image': 'Imagen', 'device.pl_item.zone_label': 'Zona: {id}', 'device.pl_item.no_zone': 'Sin zona', 'device.pl_item.mute': 'Silenciar', 'device.pl_item.unmute': 'Activar audio', 'device.pl_item.remove': 'Eliminar', 'device.copy.no_other_devices': 'No hay otros dispositivos a los que copiar', 'device.copy.prompt': '¿A qué dispositivo copiar la lista?\n\n{list}\n\nIngresa el número:', 'device.copy.invalid_selection': 'Selección no válida', 'device.copy.toast': 'Se copiaron {n} elementos a {device}', 'device.assign.empty_all': 'Aún no hay contenido, widgets ni páginas de kiosco. ¡Crea algo primero!', 'device.assign.modal_title': 'Agregar a la lista', 'device.assign.zone_label': 'Zona', 'device.assign.zone_default': 'Predeterminada (pantalla completa)', 'device.assign.duration_label': 'Duración (segundos, para imágenes/widgets)', 'device.assign.tab.media': 'Medios ({n})', 'device.assign.tab.widgets': 'Widgets ({n})', 'device.assign.tab.kiosk': 'Kiosco ({n})', 'device.assign.no_media': 'Aún no se ha subido ningún medio', 'device.assign.no_widgets': 'Aún no hay widgets creados.', 'device.assign.no_kiosk': 'Aún no hay páginas de kiosco.', 'device.assign.create_one': 'Crea uno', 'device.assign.add_selected': 'Agregar selección', 'device.assign.select_first': 'Primero selecciona algo', 'device.assign.kiosk_widget_name': 'Kiosco: {name}', 'device.toast.screenshot_requested': 'Captura solicitada', 'device.toast.renamed': 'Pantalla renombrada', 'device.toast.removing': 'Eliminando...', 'device.toast.removed': 'Pantalla eliminada', 'device.toast.settings_saved': 'Configuración guardada', 'device.toast.published': 'Lista publicada — dispositivos actualizados', 'device.toast.draft_discarded': 'Cambios del borrador descartados', 'device.toast.playlist_changed': 'Lista cambiada', 'device.toast.layout_applied': 'Diseño aplicado', 'device.toast.switched_to_fullscreen': 'Cambiado a pantalla completa', 'device.toast.added_to_playlist': 'Agregado a la lista', 'device.toast.unmuted': 'Audio activado', 'device.toast.muted': 'Silenciado', 'device.toast.zone_updated': 'Zona actualizada', 'device.toast.removed_from_playlist': 'Contenido eliminado de la lista', 'device.toast.playlist_reordered': 'Lista reordenada', 'device.toast.reboot_sent': 'Comando de reinicio enviado', 'device.toast.shutdown_sent': 'Comando de apagado enviado', 'device.toast.screen_off_sent': 'Comando para apagar pantalla enviado', 'device.toast.screen_on_sent': 'Comando para encender pantalla enviado', 'device.toast.launch_sent': 'Comando de inicio enviado', 'device.toast.update_triggered': 'Verificación de actualización iniciada', 'device.toast.remote_started': 'Sesión de control remoto iniciada', // Settings 'settings.title': 'Configuración', 'settings.subtitle': 'Configuración del servidor e información de instalación', 'settings.account': 'Cuenta', // Tokens de API 'apitoken.title': 'Tokens de API', 'apitoken.desc': 'Tokens de acceso personal para la API pública, limitados a este espacio de trabajo. Trátalos como contraseñas: cualquiera que tenga el token puede actuar como tú aquí.', 'apitoken.docs_link': '¿Nuevo en la API? Consulta la documentación completa →', 'apitoken.portal_url_label': 'URL del portal de agencia', 'apitoken.invite_label': 'Invitación para copiar — envíala a la agencia:', 'apitoken.invite_text': 'Ve a {url} y pega esta clave de acceso: {key}', 'apitoken.copy_invite': 'Copiar invitación', 'apitoken.name_placeholder': 'p. ej. Integración de agencia', 'apitoken.scope_read': 'Solo lectura', 'apitoken.scope_write': 'Lectura y escritura', 'apitoken.scope_full': 'Completo (incl. comandos de dispositivo)', 'apitoken.scope_agency': 'Agencia (subir solo a listas elegidas)', 'apitoken.agency_playlists_label': 'Listas a las que este token de agencia puede publicar', 'apitoken.agency_playlists_hint': 'El token solo puede subir y añadir elementos con fechas a estas listas. Las adiciones quedan como borrador para que las publiques.', 'apitoken.agency_needs_playlists': 'Selecciona al menos una lista para un token de agencia.', 'apitoken.agency_no_playlists': 'Crea una lista primero: un token de agencia debe apuntar a una.', 'apitoken.targets_label': 'Designadas:', 'apitoken.edit_targets': 'Editar listas', 'apitoken.zoned_playlist_reason': 'Asignada a una zona — las agencias necesitan una lista de pantalla completa', 'apitoken.targets_updated': 'Designaciones actualizadas', 'apitoken.auto_publish_label': 'Publicación automática (omitir mi aprobación)', 'apitoken.auto_publish_hint': 'Desactivado (predeterminado): las adiciones esperan como borradores para que las publiques. Activado: se publican de inmediato, solo para agencias de plena confianza.', 'apitoken.auto_publish_on': 'publicación automática activada', 'apitoken.agency_folder_label': 'Carpeta de subida', 'apitoken.agency_folder_hint': 'Dónde se guardan las subidas de esta agencia. Deja en automático para crear una carpeta con el nombre del token; la agencia puede usar subcarpetas de ella, pero nada más.', 'apitoken.agency_folder_auto': 'Crear una automáticamente (Agency — )', 'apitoken.folder_label': 'Carpeta:', 'apitoken.folder_root': 'Raíz de la biblioteca', 'apitoken.edit_folder': 'Carpeta', 'apitoken.folder_updated': 'Carpeta de subida actualizada', 'apitoken.create': 'Crear token', 'apitoken.none': 'Aún no hay tokens.', 'apitoken.col_token': 'Token', 'apitoken.col_name': 'Nombre', 'apitoken.col_scope': 'Alcance', 'apitoken.col_created': 'Creado', 'apitoken.col_last_used': 'Último uso', 'apitoken.never': 'Nunca', 'apitoken.revoke': 'Revocar', 'apitoken.revoked': 'Revocado', 'apitoken.secret_title': 'Copia tu token ahora', 'apitoken.secret_warning': 'Esta es la única vez que se muestra el token completo. Guárdalo en un lugar seguro: no podrás volver a verlo.', 'apitoken.copy': 'Copiar', 'apitoken.copied': 'Copiado al portapapeles', 'apitoken.created_toast': 'Token creado', 'apitoken.revoked_toast': 'Token revocado', 'apitoken.revoke_confirm': '¿Revocar este token? Cualquier integración que lo use dejará de funcionar de inmediato.', 'settings.save_profile': 'Guardar perfil', 'settings.change_password': 'Cambiar contraseña', 'settings.password_min_8': 'Debe tener al menos 8 caracteres.', 'settings.current_password': 'Contraseña actual', 'settings.new_password': 'Contraseña nueva', 'settings.confirm_new_password': 'Confirmar contraseña nueva', 'settings.sso_note': 'Inicias sesión con {provider}. Gestiona tu contraseña ahí.', 'settings.license': 'Licencia', 'settings.license_mit': 'Licencia MIT - todas las funciones incluidas.', 'settings.platform_admin_link': 'Las herramientas de administración están en la', 'settings.platform_admin_page_suffix': '.', 'settings.user_management': 'Gestión de usuarios', 'settings.loading_users': 'Cargando usuarios...', 'settings.white_label': 'Marca blanca / Branding', 'settings.white_label_desc': 'Personaliza la apariencia del panel y el reproductor para tus clientes.', 'settings.brand_name': 'Nombre de la marca', 'settings.logo_url': 'URL del logotipo', 'settings.primary_color': 'Color principal', 'settings.bg_color': 'Color de fondo', 'settings.custom_domain': 'Dominio personalizado', 'settings.favicon_url': 'URL del favicon', 'settings.custom_css': 'CSS personalizado (opcional)', 'settings.hide_branding': 'Ocultar la marca "ScreenTinker"', 'settings.save_branding': 'Guardar branding', 'settings.preview': 'Previsualizar', 'settings.white_label_enterprise_only': 'El branding personalizado está disponible en el plan Enterprise', 'settings.view_plans': 'Ver planes', 'settings.server_info': 'Información del servidor', 'settings.server_url': 'URL del servidor', 'settings.api_endpoint': 'Endpoint de la API', 'settings.server_url_hint': 'Usa esta URL al configurar la app de Android', 'settings.setup_guide': 'Guía de instalación', 'settings.setup_step_1': 'Instala el APK de ScreenTinker en tu TV mediante sideloading', 'settings.setup_step_2_prefix': 'Abre la app e ingresa esta URL del servidor:', 'settings.setup_step_3': 'La app mostrará un código de vinculación de 6 dígitos', 'settings.setup_step_4': 'Haz clic en "Agregar pantalla" en el panel e ingresa el código', 'settings.setup_step_5': 'Sube contenido en la Biblioteca de contenido', 'settings.setup_step_6': 'Asigna contenido a la lista de la pantalla', 'settings.your_data': 'Tus datos', 'settings.your_data_desc': 'Exporta o importa tus dispositivos, contenido, diseños, horarios y toda la configuración. Úsalo para migrar entre instancias en la nube y autoalojadas.', 'settings.export_my_data': 'Exportar mis datos', 'settings.include_media_zip': 'Incluir archivos multimedia (ZIP)', 'settings.import_data': 'Importar datos', 'settings.language': 'Idioma', 'settings.about': 'Acerca de', 'settings.about_tagline': 'Sistema de gestión de señalización digital.', 'settings.third_party_licenses': 'Licencias de terceros', 'settings.import.reading_file': 'Leyendo archivo...', 'settings.import.zip_detected': 'Exportación ZIP detectada: {name} ({size} MB)
Contiene datos + archivos multimedia.', 'settings.import.confirm': 'Confirmar importación', 'settings.import.invalid_file': 'Archivo no válido. Debe ser un JSON o ZIP de exportación de ScreenTinker.', 'settings.import.summary_devices': '{n} dispositivos', 'settings.import.summary_content': '{n} elementos de contenido', 'settings.import.summary_widgets': '{n} widgets', 'settings.import.summary_layouts': '{n} diseños', 'settings.import.summary_schedules': '{n} horarios', 'settings.import.summary_walls': '{n} muros de video', 'settings.import.summary_kiosk': '{n} páginas de kiosco', 'settings.import.found_summary': 'Encontrado: {summary}.
De: {email} (exportado {date})', 'settings.import.empty_export': 'exportación vacía', 'settings.import.uploading_zip': 'Subiendo e importando... Esto puede tardar para archivos grandes.', 'settings.import.importing': 'Importando...', 'settings.import.complete': 'Importación completa: {imported}.', 'settings.import.pairing_codes_title': 'Códigos de vinculación:', 'settings.import.pairing_codes_hint': 'Ingresa estos códigos en cada dispositivo para volver a vincularlos. Las asignaciones y horarios se conservarán.', 'settings.import.failed': 'Error al importar', 'settings.import.failed_with_error': 'Error al importar: {error}', 'settings.import.read_failed': 'Error al leer el archivo: {error}', 'settings.toast.support_token_generated': 'Token de soporte generado (válido {hours}h)', 'settings.toast.import_success': 'Datos importados correctamente', 'settings.toast.name_required': 'El nombre no puede estar vacío', 'settings.toast.profile_saved': 'Perfil guardado', 'settings.toast.current_password_required': 'Ingresa tu contraseña actual', 'settings.toast.new_password_min_8': 'La nueva contraseña debe tener al menos 8 caracteres', 'settings.toast.passwords_dont_match': 'Las nuevas contraseñas no coinciden', 'settings.toast.password_changed': 'Contraseña cambiada', 'settings.toast.branding_saved': 'Branding guardado', 'settings.toast.preview_applied': 'Previsualización aplicada (recarga para restablecer)', 'settings.toast.plan_updated': 'Plan actualizado', 'settings.toast.user_removed': 'Usuario eliminado', 'settings.user.col_user': 'Usuario', 'settings.user.col_auth': 'Auth', 'settings.user.col_role': 'Rol', 'settings.user.col_plan': 'Plan', 'settings.user.col_actions': 'Acciones', 'settings.user.remove': 'Eliminar', 'settings.user.you': 'Tú', 'settings.user.confirm': '¿Confirmar?', 'settings.user.count_one': '1 usuario registrado', 'settings.user.count_other': '{n} usuarios registrados', 'settings.user.reset_password': 'Restablecer contraseña', 'settings.user.prompt_reset_password': 'Ingresa una nueva contraseña para {email} (mínimo 8 caracteres):', 'settings.toast.password_reset_for_user': 'Contraseña restablecida', // Widgets 'widget.title': 'Widgets', 'widget.subtitle': 'Agrega contenido dinámico a tus diseños', 'widget.help_tip': 'Elementos de contenido dinámico: relojes en vivo, clima, tickers RSS, texto, páginas web y feeds sociales. Crea un widget y asígnalo a la lista de un dispositivo.', 'widget.new_widget': 'Nuevo widget', 'widget.configure': 'Configurar widget', 'widget.preview': 'Previsualizar', 'widget.preview_title': 'Previsualización', 'widget.webpage_blocked_note': 'Si esta área está en blanco, el sitio bloquea la inserción y tampoco se mostrará en el dispositivo. Prueba con una página que permita la inserción.', 'widget.close': 'Cerrar', 'widget.edit_x': 'Editar {type}', 'widget.new_x': 'Nuevo {type}', 'widget.empty_title': 'Aún no hay widgets', 'widget.empty_desc': 'Crea un widget para agregar contenido dinámico a tus diseños.', 'widget.this_widget': 'este widget', 'widget.confirm_delete': '¿Eliminar "{name}"? Esto no se puede deshacer.', 'widget.toast.saved': 'Widget guardado', 'widget.toast.deleted': 'Widget eliminado', 'widget.toast.preview_failed': 'Falló la previsualización', 'widget.type.clock.name': 'Reloj', 'widget.type.clock.desc': 'Reloj digital con fecha', 'widget.type.weather.name': 'Clima', 'widget.type.weather.desc': 'Condiciones meteorológicas actuales', 'widget.type.rss.name': 'Ticker de noticias', 'widget.type.rss.desc': 'Feed RSS con desplazamiento', 'widget.type.text.name': 'Texto/HTML', 'widget.type.text.desc': 'Texto o HTML personalizado', 'widget.type.webpage.name': 'Página web', 'widget.type.webpage.desc': 'Incrustar una página web', 'widget.type.social.name': 'Feed social', 'widget.type.social.desc': 'Feed de redes sociales', 'widget.type.directory_board.name': 'Directorio', 'widget.type.directory_board.desc': 'Directorio de inquilinos/salas con desplazamiento para vestíbulos', 'widget.type.directory_search.name': 'Búsqueda de directorio', 'widget.type.directory_search.desc': 'Búsqueda interactiva de un panel de directorio', // directory-search widget 'widget.dirsearch.source_label': 'Panel de directorio', 'widget.dirsearch.source_hint': 'Lee las entradas en vivo del panel seleccionado; no se copia nada.', 'widget.dirsearch.source_empty': 'Cree primero un panel de directorio: este widget busca en un panel existente.', 'widget.dirsearch.title_label': 'Título', 'widget.dirsearch.title_placeholder': 'Buscar un inquilino', 'widget.dirsearch.logo_label': 'Logotipo (opcional)', 'widget.dirsearch.placeholder_label': 'Texto del cuadro de búsqueda', 'widget.dirsearch.placeholder_hint': 'Escriba un nombre, oficina o departamento…', 'widget.dirsearch.theme': 'Tema', 'widget.dirsearch.keyboard_label': 'Mostrar teclado en pantalla', 'widget.dirsearch.no_matches': 'Sin coincidencias', 'widget.dirsearch.hint': 'Empiece a escribir para buscar en el directorio…', 'widget.field.name': 'Nombre del widget', 'widget.field.format': 'Formato', 'widget.field.format_12h': '12 horas', 'widget.field.format_24h': '24 horas', 'widget.field.timezone': 'Zona horaria', 'widget.field.font_size': 'Tamaño de fuente', 'widget.field.font_size_px': 'Tamaño de fuente (px)', 'widget.field.color': 'Color', 'widget.field.background': 'Fondo', 'widget.field.location': 'Ubicación', 'widget.field.location_placeholder': 'Ciudad, Estado', 'widget.field.units': 'Unidades', 'widget.field.units_imperial': 'Imperial (°F)', 'widget.field.units_metric': 'Métrico (°C)', 'widget.field.feed_url': 'URL del feed', 'widget.field.scroll_speed_seconds': 'Velocidad de desplazamiento (segundos)', 'widget.field.max_items': 'Máx. elementos', 'widget.field.html_content': 'Contenido HTML', 'widget.field.css_optional': 'CSS (opcional)', 'widget.field.url': 'URL', 'widget.field.zoom_pct': 'Zoom (%)', 'widget.field.refresh_interval': 'Intervalo de actualización (segundos, 0 = nunca)', 'widget.field.platform': 'Plataforma', 'widget.field.platform_twitter': 'Twitter/X', 'widget.field.platform_instagram': 'Instagram', 'widget.field.query': 'Consulta', 'widget.field.query_placeholder': '@usuario o #hashtag', 'widget.picker.default_title': 'Seleccionar imagen', 'widget.picker.select_logo': 'Seleccionar logotipo', 'widget.picker.select_bg_images': 'Seleccionar imágenes de fondo', 'widget.picker.search': 'Buscar imágenes...', 'widget.picker.no_matches': 'Sin coincidencias.', 'widget.picker.no_images': 'No hay imágenes en tu biblioteca. Sube imágenes primero desde la Biblioteca de contenido.', 'widget.picker.selected_count': '{n} seleccionadas', 'widget.dir.title_label': 'Título', 'widget.dir.title_placeholder': 'Almacén Lincoln', 'widget.dir.logo_label': 'Logotipo (opcional)', 'widget.dir.footer_text_label': 'Texto del pie', 'widget.dir.footer_placeholder': 'Consultas de arrendamiento: Contacto...', 'widget.dir.bg_images_label': 'Imágenes de fondo (opcional)', 'widget.dir.bg_images_hint': 'Las imágenes se alternan cada 15 segundos al 30% de opacidad. Agrega varias para rotación.', 'widget.dir.add_bg_image': '+ Agregar imagen de fondo', 'widget.dir.theme': 'Tema', 'widget.dir.theme_dark': 'Oscuro', 'widget.dir.theme_light': 'Claro', 'widget.dir.scroll_speed': 'Velocidad de desplazamiento', 'widget.dir.speed_slow': 'Lenta', 'widget.dir.speed_medium': 'Media', 'widget.dir.speed_fast': 'Rápida', 'widget.dir.columns': 'Columnas', 'widget.dir.columns_auto': 'Auto', 'widget.dir.categories': 'Categorías', 'widget.dir.add_category': '+ Agregar categoría', 'widget.dir.add_entry': '+ Agregar entrada', 'widget.dir.empty_categories': 'Agrega tu primer piso o departamento para empezar', 'widget.dir.no_entries': 'Aún no hay entradas', 'widget.dir.entry': 'entrada', 'widget.dir.entries': 'entradas', 'widget.dir.collapse': 'Contraer', 'widget.dir.expand': 'Expandir', 'widget.dir.move_up': 'Subir', 'widget.dir.move_down': 'Bajar', 'widget.dir.delete_category': 'Eliminar categoría', 'widget.dir.delete_entry': 'Eliminar entrada', 'widget.dir.unnamed': '(sin nombre)', 'widget.dir.confirm_delete_category': '¿Eliminar la categoría "{name}" y todas sus entradas?', 'widget.dir.category_name_placeholder': 'p. ej. Primer piso', 'widget.dir.entry_id_placeholder': '101', 'widget.dir.entry_name_placeholder': 'Nombre del inquilino', 'widget.dir.entry_subtitle_placeholder': 'Detalles (opcional)', 'widget.dir.available': 'Disponible', 'widget.dir.change': 'Cambiar', 'widget.dir.choose_logo': 'Elegir logotipo', 'widget.dir.remove_logo': 'Quitar', 'widget.dir.no_bg_images': 'No se han seleccionado imágenes de fondo', 'widget.dir.remove_bg': 'Quitar', // Designer 'designer.title': 'Diseñador de contenido', 'designer.subtitle': 'Crea contenido dinámico para señalización', 'designer.help_tip': 'Crea señalización personalizada con elementos en vivo: relojes, clima, tickers RSS, cuentas regresivas, códigos QR. Publica como widget o exporta como PNG.', 'designer.load_design': 'Cargar diseño', 'designer.export_png': 'Exportar PNG', 'designer.publish': 'Publicar en biblioteca', 'designer.preview_hint': 'Haz clic en los elementos para seleccionar. Arrastra para reposicionar. La vista previa se actualiza en tiempo real.', 'designer.add_element': 'Agregar elemento', 'designer.background': 'Fondo', 'designer.bg_image': 'Imagen', 'designer.properties': 'Propiedades', 'designer.layers': 'Capas', 'designer.no_elements': 'Aún no hay elementos', 'designer.save_design_file': 'Guardar archivo de diseño', 'designer.qr_label': 'CÓDIGO QR', 'designer.loading_news': 'Cargando noticias...', 'designer.no_items': 'Sin elementos', 'designer.feed_unavailable': 'Feed no disponible', 'designer.countdown_now': '¡AHORA!', 'designer.widget_name': 'Diseño {date}', 'designer.el.text': 'Texto', 'designer.el.heading': 'Título', 'designer.el.image': 'Imagen', 'designer.el.video': 'Video', 'designer.el.clock': 'Reloj', 'designer.el.date': 'Fecha', 'designer.el.weather': 'Clima', 'designer.el.ticker': 'Ticker', 'designer.el.shape': 'Forma', 'designer.el.qr': 'Código QR', 'designer.el.countdown': 'Cuenta regresiva', 'designer.el.webpage': 'Página web', 'designer.bg.black': 'Negro', 'designer.bg.dark_blue': 'Azul oscuro', 'designer.bg.dark_gradient': 'Gradiente oscuro', 'designer.bg.blue_gradient': 'Gradiente azul', 'designer.bg.sunset': 'Atardecer', 'designer.bg.ocean': 'Océano', 'designer.bg.forest': 'Bosque', 'designer.bg.dark_red': 'Rojo oscuro', 'designer.bg.white': 'Blanco', 'designer.default.text': 'Tu texto aquí', 'designer.default.heading': 'TÍTULO', 'designer.default.coming_soon': 'Próximamente', 'designer.prompt.video_url': 'URL del video (MP4):', 'designer.prompt.weather_location': 'Ciudad, Estado:', 'designer.prompt.rss_url': 'URL del feed RSS:', 'designer.prompt.qr_url': 'URL del código QR:', 'designer.prompt.countdown_date': 'Fecha objetivo (AAAA-MM-DD):', 'designer.prompt.webpage_url': 'URL de la página web:', 'designer.prop.text': 'Texto', 'designer.prop.size': 'Tamaño', 'designer.prop.font': 'Fuente', 'designer.prop.color': 'Color', 'designer.prop.bold': 'Negrita', 'designer.prop.shadow': 'Sombra', 'designer.prop.format': 'Formato', 'designer.prop.show_seconds': 'Mostrar segundos', 'designer.prop.muted': 'Silenciado', 'designer.prop.loop': 'Bucle', 'designer.prop.opacity': 'Opacidad', 'designer.prop.shape': 'Forma', 'designer.prop.location': 'Ubicación', 'designer.prop.feed_url': 'URL del feed', 'designer.prop.speed': 'Velocidad (segundos)', 'designer.prop.text_color': 'Color del texto', 'designer.prop.bg_color': 'Color de fondo', 'designer.prop.target_date': 'Fecha objetivo', 'designer.prop.label': 'Etiqueta', 'designer.toast.published': '¡Publicado como widget! Asígnalo a una zona de diseño.', 'designer.toast.publish_failed': 'Falló la publicación', 'designer.toast.export_failed': 'Falló la exportación: {error}', 'designer.toast.loaded': 'Diseño cargado', 'designer.toast.invalid_file': 'Archivo de diseño no válido', // Playlists 'playlist.title': 'Listas de reproducción', 'playlist.subtitle': 'Crea y gestiona listas de contenido', 'playlist.show_auto_generated': 'Mostrar autogeneradas', 'playlist.new_playlist_btn': '+ Nueva lista', 'playlist.new_playlist': 'Nueva lista', 'playlist.empty_title': 'Aún no hay listas', 'playlist.empty_desc': 'Crea tu primera lista para organizar contenido para tus pantallas.', 'playlist.all_auto_generated': 'Todas las listas son autogeneradas. Activa "Mostrar autogeneradas" para verlas.', 'playlist.tag_auto': 'auto', 'playlist.tag_draft': 'borrador', 'playlist.item_count_one': '1 elemento', 'playlist.item_count_other': '{n} elementos', 'playlist.created_at': 'Creado {date}', 'playlist.display_count_one': '1 pantalla', 'playlist.display_count_other': '{n} pantallas', 'playlist.assigned_to_one': 'Asignada a 1 pantalla', 'playlist.assigned_to_other': 'Asignada a {n} pantallas', 'playlist.load_failed': 'Error al cargar las listas: {error}', 'playlist.back_to_playlists': 'Volver a listas', 'playlist.name_placeholder': 'Nombre de la lista', 'playlist.desc_placeholder': 'Descripción (opcional)', 'playlist.create_btn': 'Crear', 'playlist.add_desc_placeholder': 'Agregar una descripción...', 'playlist.click_to_rename': 'Clic para renombrar', 'playlist.click_to_edit_desc': 'Clic para editar descripción', 'playlist.add_content': '+ Agregar contenido', 'playlist.delete_playlist': 'Eliminar lista', 'playlist.back': 'Atrás', 'playlist.items_empty': 'Esta lista está vacía', 'playlist.items_empty_hint': 'Haz clic en "Agregar contenido" para añadir elementos.', 'playlist.duration': 'Duración', 'playlist.sec': 'seg', 'playlist.move_up': 'Subir', 'playlist.move_down': 'Bajar', 'playlist.remove_item': 'Quitar elemento', 'playlist.item_widget': 'Widget', 'playlist.unknown_type': 'Tipo desconocido', 'playlist.confirm_delete': '¿Eliminar "{name}"? Esto no se puede deshacer.', 'playlist.confirm_discard_draft': '¿Descartar todos los cambios no publicados y volver a la última versión publicada?', 'playlist.draft.banner_title': 'Cambios sin publicar', 'playlist.draft.devices_showing_published': 'Los dispositivos siguen mostrando la última versión publicada.', 'playlist.draft.never_published': 'Esta lista nunca se ha publicado. Los dispositivos no mostrarán nada hasta que la publiques.', 'playlist.draft.discard_changes': 'Descartar cambios', 'playlist.draft.publish': 'Publicar', 'playlist.draft.publishing': 'Publicando...', 'playlist.toast.created': 'Lista creada', 'playlist.toast.deleted': 'Lista eliminada', 'playlist.toast.published': 'Lista publicada — dispositivos actualizados', 'playlist.toast.draft_discarded': 'Cambios del borrador descartados', 'playlist.toast.item_removed': 'Elemento eliminado', 'playlist.add_modal_title': 'Agregar contenido a la lista', 'playlist.tab_content': 'Contenido', 'playlist.tab_widgets': 'Widgets', 'playlist.search_placeholder': 'Buscar...', 'playlist.close': 'Cerrar', 'playlist.no_content_found': 'No se encontró contenido', 'playlist.no_widgets_found': 'No se encontraron widgets', 'playlist.add_btn': 'Agregar', 'playlist.replace_item': 'Reemplazar contenido', 'playlist.duplicate_item': 'Duplicar elemento', 'playlist.replace_modal_title': 'Reemplazar contenido', 'playlist.replace_btn': 'Reemplazar', 'playlist.replacing': 'Reemplazando…', 'playlist.toast.item_duplicated': 'Elemento duplicado', 'playlist.toast.item_replaced': 'Contenido reemplazado', 'playlist.adding': 'Agregando...', 'playlist.added': 'Agregado', // Per-item schedule editor (#74/#75) 'itemsched.title': 'Programación', 'itemsched.hint': 'Los elementos sin programación siempre se reproducen. Agrega bloques para limitar cuándo aparece este elemento — se evalúa en la hora local de cada pantalla.', 'itemsched.none': 'Sin programación — este elemento siempre se reproduce.', 'itemsched.block': 'Bloque {n}', 'itemsched.remove_block': 'Eliminar bloque', 'itemsched.from': 'Desde', 'itemsched.to': 'Hasta', 'itemsched.end_of_day': 'fin del día', 'itemsched.starts': 'Empieza', 'itemsched.ends': 'Termina', 'itemsched.dates_hint': '(fechas opcionales, inclusivas)', 'itemsched.add_block': '+ Agregar bloque de programación', 'itemsched.cancel': 'Cancelar', 'itemsched.save': 'Guardar programación', 'itemsched.toast.saved': 'Programación guardada — publica la lista de reproducción para enviarla a los dispositivos', 'itemsched.toast.cleared': 'Programación borrada — publica para actualizar los dispositivos', 'itemsched.every_day': 'Todos los días', 'itemsched.mon_fri': 'Lun-Vie', 'itemsched.sat_sun': 'Sáb-Dom', 'itemsched.dow_short': 'Dom,Lun,Mar,Mié,Jue,Vie,Sáb', 'itemsched.err.days': 'Cada bloque de programación necesita al menos un día activo', 'itemsched.err.start': 'La hora de inicio debe ser HH:MM', 'itemsched.err.end': 'La hora de fin debe ser HH:MM (o fin del día)', 'itemsched.err.start_date': 'La fecha de inicio debe ser AAAA-MM-DD', 'itemsched.err.end_date': 'La fecha de fin debe ser AAAA-MM-DD', 'device.clock.label': 'Reloj del dispositivo', 'device.clock.reported': '{time} reportado', 'device.clock.skew': '⚠ reloj desfasado en {amount} — las programaciones pueden activarse a la hora local incorrecta', // Onboarding 'onboarding.back': 'Atrás', 'onboarding.next': 'Siguiente', 'onboarding.skip': 'Omitir asistente', 'onboarding.go_to_dashboard': 'Ir al panel', 'onboarding.pair_display': 'Vincular pantalla', 'onboarding.step.welcome.title': '¡Bienvenido a ScreenTinker!', 'onboarding.step.welcome.intro': 'Vamos a configurarlo todo en menos de 5 minutos.', 'onboarding.step.welcome.guide_through': 'Este asistente te guiará a través de:', 'onboarding.step.welcome.bullet_download': 'Descargar la app del reproductor', 'onboarding.step.welcome.bullet_pair': 'Vincular tu primera pantalla', 'onboarding.step.welcome.bullet_upload': 'Subir y asignar contenido', 'onboarding.step.player.title': 'Paso 1: Obtén la app del reproductor', 'onboarding.step.player.intro': 'Instala el reproductor en tu dispositivo de pantalla.', 'onboarding.step.player.android_label': 'APK Android', 'onboarding.step.player.android_desc': 'Cajas TV, tabletas, Fire TV', 'onboarding.step.player.web_label': 'Reproductor web', 'onboarding.step.player.web_desc': 'Cualquier navegador, Pi, ChromeOS', 'onboarding.step.player.url_hint': 'Abre la app en tu pantalla e ingresa esta URL del servidor:', 'onboarding.step.pair.title': 'Paso 2: Vincula tu pantalla', 'onboarding.step.pair.intro': 'Ingresa el código de 6 dígitos mostrado en tu pantalla.', 'onboarding.step.pair.name_placeholder': 'Nombre (p. ej., TV Vestíbulo)', 'onboarding.step.upload.title': 'Paso 3: Sube contenido', 'onboarding.step.upload.intro': 'Sube un video o imagen para mostrar.', 'onboarding.step.upload.click_to_select': 'Haz clic para seleccionar un archivo', 'onboarding.step.upload.formats': 'MP4, WebM, JPEG, PNG, GIF', 'onboarding.step.upload.uploading': 'Subiendo...', 'onboarding.step.done.title': '¡Todo listo!', 'onboarding.step.done.intro': '¡Tu pantalla está vinculada y el contenido se está reproduciendo!', 'onboarding.step.done.whats_next': '¿Qué sigue?', 'onboarding.step.done.next_content': 'Agrega más contenido en la Biblioteca de contenido', 'onboarding.step.done.next_layouts': 'Crea diseños multizona en Diseños', 'onboarding.step.done.next_schedule': 'Configura un horario en el calendario de Horario', 'onboarding.step.done.next_widgets': 'Agrega widgets en vivo (reloj, clima, ticker) en Widgets', 'onboarding.step.done.next_kiosk': 'Crea pantallas interactivas en Kiosco', 'onboarding.step.done.next_designer': 'Diseña contenido personalizado en el Diseñador', 'onboarding.toast.invalid_code': 'Ingresa un código válido de 6 dígitos', 'onboarding.toast.pairing': 'Vinculando...', 'onboarding.toast.pair_failed': 'Falló la vinculación', 'onboarding.toast.pair_failed_with_error': 'Falló la vinculación: {error}', 'onboarding.toast.paired': '¡Pantalla vinculada!', 'onboarding.toast.uploaded_assigning': '¡Subido! Asignando a la pantalla...', 'onboarding.toast.content_assigned': '¡Contenido subido y asignado!', 'onboarding.toast.upload_failed': 'Falló la subida', 'onboarding.toast.error_with_error': 'Error: {error}', // Admin 'admin.title': 'Administración de plataforma', 'admin.subtitle': 'Controles de superadmin - solo tú puedes ver esto', 'admin.access_denied': 'Acceso denegado', 'admin.access_denied_desc': 'Se requiere acceso de administrador de plataforma.', 'admin.all_users': 'Todos los usuarios', 'admin.plans': 'Planes de suscripción', 'admin.col.accounts': 'Cuentas', 'admin.col.screens': 'Pantallas', 'admin.plan_hidden': 'oculto', 'admin.plan_orphaned': 'Cuentas en un plan que ya no existe', 'admin.system': 'Sistema', 'admin.col.user': 'Usuario', 'admin.col.auth': 'Auth', 'admin.col.last_login': 'Último inicio', 'admin.col.role': 'Rol', 'admin.col.plan': 'Plan', 'admin.col.actions': 'Acciones', 'admin.col.devices': 'Dispositivos', 'admin.col.storage': 'Almacenamiento', 'admin.col.monthly': 'Mensual', 'admin.col.yearly': 'Anual', 'admin.role.user': 'Usuario', 'admin.role.admin': 'Admin', 'admin.role.superadmin': 'Superadmin', 'admin.remove': 'Eliminar', 'admin.owner': 'Propietario', 'admin.confirm': '¿Confirmar?', 'admin.total_users': '{n} usuarios totales', 'admin.unlimited': 'Ilimitado', 'admin.free': 'Gratis', 'admin.version': 'Versión', 'admin.frontend_hash': 'Hash del frontend', 'admin.download_db_backup': 'Descargar respaldo de BD', 'admin.server_status': 'Estado del servidor', 'admin.toast.role_updated': 'Rol actualizado', 'admin.toast.plan_updated': 'Plan actualizado', 'admin.toast.user_removed': 'Usuario eliminado', 'admin.reset_password': 'Restablecer contraseña', 'admin.prompt_reset_password': 'Ingresa una nueva contraseña para {email} (mínimo 8 caracteres):', 'admin.toast.password_min_8': 'La contraseña debe tener al menos 8 caracteres', 'admin.toast.password_reset': 'Contraseña restablecida', // Schedule 'schedule.title': 'Horario', 'schedule.subtitle': 'Calendario de programación de contenido', 'schedule.help_tip': 'Calendario semanal. Arrastra sobre una franja horaria para crear una programación, arrastra un bloque para moverlo, arrastra su borde inferior para cambiar cuándo termina, o haz clic derecho para más opciones. La prioridad más alta gana, y la programación propia de una pantalla anula la de su grupo.', 'schedule.prev_week': '< Anterior', 'schedule.next_week': 'Siguiente >', 'schedule.add_schedule': 'Agregar horario', 'schedule.edit_schedule': 'Editar horario', 'schedule.apply_to': 'Aplicar a', 'schedule.target_device': 'Dispositivo', 'schedule.target_group': 'Grupo', 'schedule.group_devices_count': '{n} dispositivos', 'schedule.no_groups_msg': 'Aún no hay grupos creados. Créalos en la página Pantallas.', 'schedule.zone_note': 'Nota: Los horarios por zona dependen del diseño. Asegúrate de que todos los dispositivos del grupo usan el mismo diseño.', 'schedule.playlist_override': 'Sobrescribir lista', 'schedule.no_playlist_override': '— Sin sobrescribir lista —', 'schedule.draft_suffix': '(borrador)', 'schedule.layout_override': 'Sobrescribir diseño', 'schedule.no_layout_override': '— Sin sobrescribir diseño —', 'schedule.content_label': 'Contenido', 'schedule.content_hint': '(elemento único, opcional)', 'schedule.content_none': '— Ninguno —', 'schedule.title_label': 'Título (opcional)', 'schedule.title_placeholder': 'p. ej., Lista mañana', 'schedule.start_time': 'Hora de inicio', 'schedule.end_time': 'Hora de fin', 'schedule.repeat': 'Repetir', 'schedule.repeat_none': 'No repetir', 'schedule.repeat_daily': 'Diario', 'schedule.repeat_weekdays': 'Días laborables', 'schedule.repeat_weekends': 'Fines de semana', 'schedule.repeat_weekly': 'Semanal', 'schedule.priority': 'Prioridad', 'schedule.color': 'Color', 'schedule.scheduled_label': 'Programado', 'schedule.tooltip_group_prefix': 'Grupo: ', 'schedule.tooltip_priority': 'Prioridad: {n}', 'schedule.day.sun': 'Dom', 'schedule.day.mon': 'Lun', 'schedule.day.tue': 'Mar', 'schedule.day.wed': 'Mié', 'schedule.day.thu': 'Jue', 'schedule.day.fri': 'Vie', 'schedule.day.sat': 'Sáb', 'schedule.hour_12am': '12am', 'schedule.hour_am': 'am', 'schedule.hour_12pm': '12pm', 'schedule.hour_pm': 'pm', 'schedule.toast.no_groups': 'No hay grupos disponibles. Crea uno primero.', 'schedule.toast.saved': 'Horario guardado', // Reports 'report.title': 'Informes', 'report.subtitle': 'Análisis de reproducción y disponibilidad de dispositivos', 'report.help_tip': 'Análisis de reproducción. Ve qué se reprodujo, cuándo y en qué dispositivo. Filtra por rango de fechas y dispositivo. Exporta a CSV para verificación.', 'report.export_csv': 'Exportar CSV', 'report.device': 'Dispositivo', 'report.all_devices': 'Todos los dispositivos', 'report.start_date': 'Fecha de inicio', 'report.end_date': 'Fecha de fin', 'report.load_report': 'Cargar informe', 'report.select_range': 'Selecciona un rango de fechas y haz clic en Cargar informe', 'report.error': 'Error', 'report.total_plays': 'Reproducciones totales', 'report.total_hours': 'Horas totales', 'report.unique_content': 'Contenido único', 'report.active_devices': 'Dispositivos activos', 'report.avg_duration': 'Duración media', 'report.plays_per_day': 'Reproducciones por día', 'report.plays_by_hour': 'Reproducciones por hora', 'report.top_content': 'Contenido más reproducido', 'report.by_device': 'Por dispositivo', 'report.no_data': 'Sin datos', 'report.col.content': 'Contenido', 'report.col.device': 'Dispositivo', 'report.col.plays': 'Reproducciones', 'report.col.total_hours': 'Horas totales', 'report.col.completion': 'Finalización', // Kiosk 'kiosk.title': 'Páginas de kiosco', 'kiosk.subtitle': 'Crea interfaces táctiles interactivas', 'kiosk.help_tip': 'Crea interfaces táctiles interactivas. Agrega botones con iconos y acciones. Incluye pantalla inactiva tras inactividad. Asígnalas a dispositivos como widget.', 'kiosk.new_page': 'Nueva página de kiosco', 'kiosk.prompt_name': 'Nombre de la página de kiosco:', 'kiosk.empty_title': 'Aún no hay páginas', 'kiosk.empty_desc': 'Crea una interfaz táctil interactiva para tus pantallas.', 'kiosk.label': 'Página de kiosco', 'kiosk.preview': 'Previsualizar', 'kiosk.confirm_delete': '¿Eliminar la página "{name}"? Esto no se puede deshacer.', 'kiosk.toast.deleted': 'Página eliminada', 'kiosk.toast.delete_failed': 'Error al eliminar', 'kiosk.toast.saved': 'Página guardada', 'kiosk.not_found': 'Página no encontrada', 'kiosk.back': 'Volver a páginas', 'kiosk.page_settings': 'Ajustes de la página', 'kiosk.title_label': 'Título', 'kiosk.subtitle_label': 'Subtítulo', 'kiosk.logo_url': 'URL del logotipo', 'kiosk.footer_text': 'Texto del pie', 'kiosk.idle_title': 'Título pantalla inactiva', 'kiosk.idle_default': 'Toca para comenzar', 'kiosk.idle_timeout': 'Tiempo de inactividad (segundos)', 'kiosk.style': 'Estilo', 'kiosk.background': 'Fondo', 'kiosk.text_color': 'Color del texto', 'kiosk.columns': 'Columnas', 'kiosk.button_color': 'Color del botón', 'kiosk.button_hover': 'Color hover del botón', 'kiosk.buttons': 'Botones', 'kiosk.add_btn': '+ Agregar', 'kiosk.icon_placeholder': 'Emoji', 'kiosk.label_placeholder': 'Etiqueta', 'kiosk.sublabel_placeholder': 'Sub-etiqueta', 'kiosk.action_none': 'Sin acción', 'kiosk.action_url': 'Abrir URL', 'kiosk.action_page': 'Ir a página', 'kiosk.url_placeholder': 'URL o página', 'kiosk.no_buttons': 'Aún no hay botones', 'kiosk.new_button': 'Nuevo botón', // Layout editor 'layout.title': 'Diseños', 'layout.subtitle': 'Diseños de pantalla y plantillas', 'layout.help_tip': 'Crea diseños de pantalla multi-zona. Usa plantillas o crea uno propio. Arrastra zonas para posicionar, cambia tamaño con la esquina. Asigna diseños a dispositivos desde la pestaña Lista.', 'layout.new_layout': 'Nuevo diseño', 'layout.templates': 'Plantillas', 'layout.my_layouts': 'Mis diseños', 'layout.empty_custom': 'Aún no hay diseños personalizados', 'layout.prompt_name': 'Nombre del diseño:', 'layout.default_zone_name': 'Principal', 'layout.template_label': 'Plantilla', 'layout.use_template': 'Usar plantilla', 'layout.zone_count_one': '1 zona', 'layout.zone_count_other': '{n} zonas', 'layout.confirm_delete': '¿Eliminar el diseño "{name}"? Esto no se puede deshacer.', 'layout.toast.deleted': 'Diseño eliminado', 'layout.toast.delete_failed': 'Error al eliminar el diseño', 'layout.toast.saved': 'Diseño guardado', 'layout.not_found': 'Diseño no encontrado', 'layout.back': 'Volver a diseños', 'layout.add_zone': 'Agregar zona', 'layout.zones': 'Zonas', 'layout.properties': 'Propiedades', 'layout.delete_zone': 'Eliminar zona', 'layout.zone_n': 'Zona {n}', 'layout.prop.name': 'Nombre', 'layout.prop.x': 'X (%)', 'layout.prop.y': 'Y (%)', 'layout.prop.width': 'Ancho (%)', 'layout.prop.height': 'Alto (%)', 'layout.prop.type': 'Tipo', 'layout.type_content': 'Contenido', 'layout.type_widget': 'Widget', // Video walls 'wall.title': 'Muros de video', 'wall.subtitle': 'Combina varias pantallas en una sola grande', 'wall.help_tip': 'Combina varias pantallas en una sola grande. Configura el tamaño de la cuadrícula, arrastra dispositivos a posiciones, ajusta la compensación de bisel. Asigna contenido para reproducir en todos los dispositivos.', 'wall.new_wall': 'Nuevo muro de video', 'wall.prompt_name': 'Nombre del muro de video:', 'wall.empty_title': 'Aún no hay muros', 'wall.empty_desc': 'Crea un muro para combinar varias pantallas.', 'wall.grid_summary': 'Cuadrícula {cols}x{rows} • {n} dispositivos', 'wall.not_found': 'Muro no encontrado', 'wall.back': 'Volver a muros', 'wall.delete_wall': 'Eliminar muro', 'wall.grid_config': 'Configuración de cuadrícula', 'wall.columns': 'Columnas', 'wall.rows': 'Filas', 'wall.h_bezel': 'Bisel H (px)', 'wall.v_bezel': 'Bisel V (px)', 'wall.update': 'Actualizar', 'wall.content': 'Contenido', 'wall.no_content': 'Sin contenido', 'wall.set_content': 'Establecer contenido', 'wall.available_displays': 'Pantallas disponibles', 'wall.all_assigned': 'Todos los dispositivos asignados', 'wall.drop_here': 'Soltar aquí', 'wall.toast.placed': '{name} colocado en [{col},{row}]', 'wall.toast.grid_updated': 'Cuadrícula actualizada', 'wall.toast.content_updated': 'Contenido actualizado', 'wall.toast.deleted': 'Muro eliminado', // Billing 'billing.title': 'Suscripción', 'billing.subtitle': 'Administra tu plan y facturación', 'billing.current_plan': 'Plan actual', 'billing.self_hosted': 'Autoalojado', 'billing.trial_days_left': 'Prueba - {n} días restantes', 'billing.trial_ends': 'Tu prueba {plan} termina en {n} días', 'billing.trial_after': 'Después de la prueba, pasarás al plan Gratis (1 dispositivo). Actualiza ahora para conservar tus dispositivos y funciones.', 'billing.devices': 'Dispositivos', 'billing.devices_lc': 'dispositivos', 'billing.storage': 'Almacenamiento', 'billing.storage_lc': 'almacenamiento', 'billing.features': 'Funciones', 'billing.feat.remote_control': 'Control remoto', 'billing.feat.remote_urls': 'URLs remotas', 'billing.feat.priority_support': 'Soporte prioritario', 'billing.available_plans': 'Planes disponibles', 'billing.current': 'Actual', 'billing.unlimited': 'Ilimitado', 'billing.free': 'Gratis', 'billing.per_month': '/mes', 'billing.yearly_save': 'o ${price}/año (ahorra {pct}%)', 'billing.monthly': 'Mensual', 'billing.yearly': 'Anual', 'billing.manage_subscription': 'Gestionar suscripción', 'billing.self_hosted_note': 'Modo autoalojado: los planes pueden ser asignados por administradores sin facturación.', 'billing.failed_to_load': 'Error al cargar', 'billing.toast.checkout_failed': 'Error al iniciar el pago: {error}', 'billing.toast.portal_failed': 'Error al abrir el portal de facturación: {error}', 'billing.toast.payment_success': '¡Pago exitoso! Tu plan ha sido actualizado.', // Teams 'team.title': 'Equipos', 'team.subtitle': 'Gestiona equipos y acceso compartido', 'team.help_tip': 'Crea equipos para compartir dispositivos con otros usuarios. Los propietarios gestionan el equipo, los editores pueden cambiar contenido/listas, los espectadores solo monitorean.', 'team.new_team': 'Nuevo equipo', 'team.prompt_name': 'Nombre del equipo:', 'team.empty_title': 'Aún no hay equipos', 'team.empty_desc': 'Crea un equipo para compartir dispositivos con otros usuarios.', 'team.your_role': 'Tu rol: {role}', 'team.member_count_one': '1 miembro', 'team.member_count_other': '{n} miembros', 'team.not_found': 'Equipo no encontrado', 'team.back': 'Volver a equipos', 'team.delete_team': 'Eliminar equipo', 'team.members_count': 'Miembros ({n})', 'team.invite': '+ Invitar', 'team.role_viewer': 'Espectador', 'team.role_editor': 'Editor', 'team.role_owner': 'Propietario', 'team.remove': 'Eliminar', 'team.remove_from_team': 'Quitar del equipo', 'team.no_members': 'Sin miembros', 'team.shared_devices': 'Dispositivos compartidos ({n})', 'team.add_device': '+ Agregar dispositivo...', 'team.no_devices': 'No hay dispositivos compartidos con este equipo', 'team.prompt_email': 'Email para invitar:', 'team.prompt_role': 'Rol (viewer, editor o owner):', 'team.toast.invalid_role': 'Rol no válido', 'team.toast.invitation_sent': 'Invitación enviada', 'team.toast.role_updated': 'Rol actualizado', 'team.toast.member_removed': 'Miembro eliminado', 'team.toast.device_added': 'Dispositivo agregado al equipo', 'team.toast.device_removed': 'Dispositivo quitado del equipo', 'team.toast.deleted': 'Equipo eliminado', // Activity 'activity.title': 'Registro de actividad', 'activity.subtitle': 'Historial de auditoría de todas las acciones', 'activity.load_more': 'Cargar más', 'activity.empty_title': 'Aún no hay actividad', 'activity.empty_desc': 'Las acciones aparecerán aquí a medida que uses el sistema.', 'activity.system': 'Sistema', 'activity.verb_created': 'creó', 'activity.verb_updated': 'actualizó', 'activity.verb_deleted': 'eliminó', 'activity.action_paired_device': 'vinculó un dispositivo', 'activity.action_added_remote_content': 'agregó contenido remoto', 'activity.noun_content': 'contenido', 'activity.noun_device': 'dispositivo', 'activity.noun_playlist_assignment': 'asignación de lista', 'activity.noun_assignment': 'asignación', 'activity.noun_layout': 'diseño', 'activity.noun_widget': 'widget', 'activity.noun_schedule': 'horario', 'activity.noun_video_wall': 'muro de video', 'activity.alert_device_offline': 'alerta: dispositivo desconectado', // Help 'help.title': 'Centro de ayuda', 'help.subtitle': 'Guías rápidas y preguntas frecuentes', 'help.faq': 'Preguntas frecuentes', 'help.shortcuts': 'Atajos de teclado', 'help.shortcut_esc': 'Reiniciar reproductor web (en la página del reproductor)', 'help.shortcut_f': 'Alternar pantalla completa (reproductor web)', // Add Display modal 'add_display.title': 'Agregar pantalla', 'add_display.intro': 'Ingresa el código de vinculación de 6 dígitos mostrado en la pantalla.', 'add_display.pairing_code': 'Código de vinculación', 'add_display.display_name': 'Nombre (opcional)', 'add_display.name_placeholder': 'p. ej., TV Vestíbulo', 'add_display.need_player': '¿Necesitas la app del reproductor? Instala una para obtener un código:', 'add_display.android_apk': 'APK Android', 'add_display.web_player': 'Reproductor web', 'add_display.raspberry_pi': 'Raspberry Pi', 'add_display.windows': 'Windows', 'add_display.pair_btn': 'Vincular pantalla', 'add_display.server_url_label': 'URL del servidor', 'add_display.server_url_hint': 'Usa esta URL al configurar la app de Android', 'add_display.smart_tv_prefix': 'Smart TVs (LG/Samsung): abre el navegador integrado y ve a', };