mirror of
https://github.com/screentinker/screentinker.git
synced 2026-05-15 07:32:23 -06:00
- List view: tags, item/display pluralization, empty state, load errors - Detail view: draft banner, inline rename/description, items list - Drag-reorder + up/down buttons, duration editor - Add-item modal with content/widgets tabs and search - 671 keys total, parity 100% across en/es/fr/de/pt Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
690 lines
37 KiB
JavaScript
690 lines
37 KiB
JavaScript
// Spanish translations. Reviewed for UI register (informal tú).
|
|
// Native review still recommended before publicizing as fully supported.
|
|
export default {
|
|
// 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.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_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.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_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.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.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.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',
|
|
'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: <strong>{name}</strong> ({size} MB)<br>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}.<br>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',
|
|
|
|
// 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.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.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.adding': 'Agregando...',
|
|
'playlist.added': 'Agregado',
|
|
};
|