mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-22 06:25:41 +00:00
i18n(orbit): translations for fr / nl / zh / nb / ru / es
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -178,6 +178,7 @@ export const esTranslation = {
|
||||
},
|
||||
albumDetail: {
|
||||
back: 'Volver',
|
||||
orbitDoubleClickHint: 'Doble clic para añadir esta canción a la cola Orbit',
|
||||
playAll: 'Reproducir Todo',
|
||||
shareAlbum: 'Compartir álbum',
|
||||
enqueue: 'Agregar a la Cola',
|
||||
@@ -1433,4 +1434,175 @@ export const esTranslation = {
|
||||
liveSearch: 'Live',
|
||||
randomAlbumsLabel: 'Álbumes aleatorios',
|
||||
},
|
||||
orbit: {
|
||||
triggerLabel: 'Psy Orbit',
|
||||
triggerTooltip: 'Iniciar o unirse a una sesión de escucha compartida',
|
||||
launchCreate: 'Crear una sesión',
|
||||
launchJoin: 'Unirse a una sesión',
|
||||
launchHelp: '¿Cómo funciona esto?',
|
||||
launchHelpSoon: 'Próximamente',
|
||||
joinModalTitle: 'Unirse a una sesión Orbit',
|
||||
joinModalSub: 'Pega el enlace de invitación que te envió tu anfitrión.',
|
||||
joinModalLinkLabel: 'Enlace de invitación',
|
||||
joinModalLinkPlaceholder: 'psysonic2://orbit/…',
|
||||
joinModalLinkHelper: 'Funciona con cualquier enlace Orbit válido. Debe apuntar al servidor al que estás conectado actualmente.',
|
||||
joinModalPasteTooltip: 'Pegar desde el portapapeles',
|
||||
joinModalSubmit: 'Unirse',
|
||||
joinModalBusy: 'Uniéndose…',
|
||||
joinErrEmpty: 'Pega un enlace de invitación.',
|
||||
joinErrInvalid: 'Eso no parece un enlace de invitación Orbit.',
|
||||
closeAria: 'Cerrar',
|
||||
heroTitlePrefix: 'Escucha junto con',
|
||||
heroTitleBrand: 'Psy Orbit',
|
||||
heroSub: 'Inicia una sesión — otros usuarios en {{server}} escucharán contigo y podrán sugerir canciones.',
|
||||
fallbackServer: 'este servidor',
|
||||
tipLan: 'Actualmente estás conectado mediante una dirección de red local. Los invitados fuera de tu red no pueden unirse — cambia a una dirección de servidor pública en los ajustes antes de empezar.',
|
||||
tipRemote: 'Para que los invitados fuera de tu red doméstica puedan unirse, la dirección de tu servidor debe ser accesible públicamente. Si tu servidor es solo interno, cambia antes de empezar.',
|
||||
labelName: 'Nombre de la sesión',
|
||||
namePlaceholder: 'Velvet Orbit',
|
||||
reshuffleTooltip: 'Nueva sugerencia',
|
||||
reshuffleAria: 'Sugerir un nuevo nombre',
|
||||
helperName: 'Cómo aparecerá la sesión a tus invitados — déjalo o escribe el tuyo.',
|
||||
labelMax: 'Invitados máx.',
|
||||
helperMax: 'Tú no cuentas — esto solo limita a los invitados entrantes.',
|
||||
labelLink: 'Enlace de invitación',
|
||||
tooltipCopied: 'Copiado',
|
||||
tooltipCopy: 'Copiar',
|
||||
ariaCopyLink: 'Copiar enlace de invitación',
|
||||
helperLink: 'Envía este enlace a tus invitados. Pueden pegarlo en cualquier parte de Psysonic con Ctrl+V.',
|
||||
labelClearQueue: 'Vaciar mi cola primero',
|
||||
helperClearQueue: 'Empieza la sesión con una cola vacía. Desactivado: las canciones ya en cola se mantienen y se comparten con los invitados.',
|
||||
btnCancel: 'Cancelar',
|
||||
btnStarting: 'Iniciando…',
|
||||
btnStart: 'Iniciar Orbit',
|
||||
btnCopyAndStart: 'Copiar enlace e iniciar',
|
||||
errNameRequired: 'Por favor, dale un nombre a tu sesión.',
|
||||
errStartFailed: 'No se pudo iniciar.',
|
||||
hostLabel: 'Anfitrión: {{name}}',
|
||||
participantsTooltip: 'Participantes',
|
||||
settingsTooltip: 'Ajustes de sesión',
|
||||
shareTooltip: 'Compartir enlace de invitación',
|
||||
shuffleLabel: 'Próximo mezclado en',
|
||||
catchUpLabel: 'alcanzar',
|
||||
catchUpTooltip: 'Saltar a la posición actual del anfitrión',
|
||||
hostAway: 'Anfitrión desconectado',
|
||||
hostOnline: 'Anfitrión en línea',
|
||||
endTooltip: 'Terminar sesión',
|
||||
leaveTooltip: 'Salir de la sesión',
|
||||
helpTooltip: 'Cómo funciona Orbit',
|
||||
helpTitle: 'Cómo funciona Orbit',
|
||||
helpIntro: 'Orbit convierte Psysonic en una sala de escucha compartida. Un anfitrión elige la música; los invitados escuchan en sincronía y pueden sugerir canciones.',
|
||||
helpHostOnly: '(anfitrión)',
|
||||
helpSec1Title: '¿Qué es Orbit?',
|
||||
helpSec1Body: 'Un modo de "escuchar juntos" — el anfitrión maneja la reproducción, los invitados se conectan. Todo pasa por playlists en tu propio servidor Navidrome; sin infraestructura externa.',
|
||||
helpSec2Title: 'Anfitrión e invitados',
|
||||
helpSec2Body: 'El anfitrión controla la reproducción (play / pause / skip / seek) y decide cuándo termina la sesión. Los invitados siguen la reproducción, pueden sugerir canciones y salir o volver a unirse en cualquier momento. Solo el anfitrión puede expulsar o banear permanentemente a un participante.',
|
||||
helpSec2WarnHead: 'Importante: cuentas separadas.',
|
||||
helpSec2WarnBody: 'Cada participante necesita su propia cuenta Navidrome. Si anfitrión e invitado inician sesión con el mismo usuario, sus envíos chocan y el anfitrión nunca ve las sugerencias del invitado.',
|
||||
helpSec3Title: 'Iniciar e invitar',
|
||||
helpSec3Body: 'Haz clic en el botón "Psy Orbit" → Crear una sesión → el modal muestra un enlace de invitación listo para copiar y te permite opcionalmente vaciar tu cola actual. Comparte el enlace como prefieras. Mientras una sesión está activa, el botón de compartir en la barra superior copia el enlace en cualquier momento.',
|
||||
helpSec4Title: 'Unirse',
|
||||
helpSec4Body: 'Pega el enlace de invitación en cualquier parte de Psysonic con Ctrl+V / Cmd+V — el aviso para unirse aparece automáticamente. Alternativa: "Psy Orbit" → Unirse a una sesión → pega en el campo. Si el enlace apunta a un servidor donde tienes una cuenta, Psysonic cambia automáticamente. Si tienes más de una cuenta en ese servidor, un pequeño selector pregunta cuál usar.',
|
||||
helpSec5Title: 'Sugerir canciones',
|
||||
helpSec5Body: 'En cualquier lista: doble clic en una fila, o clic derecho → "Añadir a la sesión Orbit". Un clic simple muestra una pista en lugar de tirar todo el álbum a la cola compartida — es intencional. Las acciones masivas explícitas como "Reproducir todo" o "Reproducir álbum" piden confirmación primero y luego añaden (nunca reemplazan).',
|
||||
helpSec6Title: 'La cola compartida',
|
||||
helpSec6Body: 'La cola muestra las próximas canciones del anfitrión — visible para todos. Las adiciones masivas siempre se añaden al final, para que las sugerencias de los invitados no se pierdan. El mezclado automático reordena la cola periódicamente (configurable: 1 / 5 / 10 / 15 / 30 min). Si tu reproducción se desvía del anfitrión, el botón "Alcanzar" en la barra te devuelve a la posición en vivo del anfitrión.',
|
||||
helpSec7Title: 'Aprobaciones',
|
||||
helpSec7Body: 'Por defecto, las sugerencias de los invitados necesitan aprobación manual — aparecen en una barra de "Aprobaciones" en la parte superior del panel con botones aceptar / rechazar. La aprobación automática puede activarse en los ajustes de sesión para que todo entre directamente.',
|
||||
helpSec8Title: 'Participantes y ajustes',
|
||||
helpSec8Body: 'Abre el icono de ajustes en la barra de sesión para la frecuencia de mezclado, la aprobación automática y el atajo "Mezclar ahora". Haz clic en el número de participantes para ver quién está conectado — expulsar (puede volver a unirse por el enlace) o banear (bloqueado para la sesión). Los invitados también ven la lista de participantes, pero solo de lectura.',
|
||||
helpSec9Title: 'Terminar la sesión',
|
||||
helpSec9Body: 'X del anfitrión → diálogo de confirmación → la sesión se cierra para todos y las playlists del servidor se limpian automáticamente. X del invitado → el invitado sale, la sesión sigue. Si el anfitrión queda en silencio 5 minutos, el invitado sale automáticamente con un aviso; las reconexiones cortas en esa ventana son invisibles.',
|
||||
participantsInviteLabel: 'Enlace de invitación',
|
||||
participantsCountLabel: '{{count}} en sesión',
|
||||
participantsHost: 'anfitrión',
|
||||
participantsEmpty: 'Aún no hay invitados',
|
||||
participantsKickTooltip: 'Quitar de la sesión',
|
||||
participantsKickAria: 'Quitar a {{user}}',
|
||||
participantsRemoveTooltip: 'Quitar de la sesión',
|
||||
participantsRemoveAria: 'Quitar a {{user}} de esta sesión',
|
||||
participantsBanTooltip: 'Banear permanentemente',
|
||||
participantsBanAria: 'Banear permanentemente a {{user}}',
|
||||
confirmRemoveTitle: '¿Quitar de la sesión?',
|
||||
confirmRemoveBody: '{{user}} será expulsado de la sesión, pero puede volver a unirse por tu enlace de invitación.',
|
||||
confirmRemoveConfirm: 'Quitar',
|
||||
confirmBanTitle: '¿Banear permanentemente?',
|
||||
confirmBanBody: '{{user}} será expulsado y bloqueado para volver a unirse a esta sesión. No se puede deshacer durante la sesión.',
|
||||
confirmBanConfirm: 'Banear',
|
||||
confirmCancel: 'Cancelar',
|
||||
confirmJoinTitle: '¿Unirse a la sesión Orbit?',
|
||||
confirmJoinBody: '{{host}} te ha invitado a "{{name}}". ¿Unirse a la sesión?',
|
||||
confirmJoinConfirm: 'Unirse',
|
||||
confirmLeaveTitle: '¿Salir de la sesión?',
|
||||
confirmLeaveBody: '¿Salir de "{{name}}"? Puedes volver a unirte en cualquier momento por el enlace de invitación de {{host}}.',
|
||||
confirmLeaveConfirm: 'Salir',
|
||||
confirmEndTitle: '¿Terminar la sesión para todos?',
|
||||
confirmEndBody: '"{{name}}" se cerrará para todos los participantes. Las playlists de la sesión se limpian automáticamente.',
|
||||
confirmEndConfirm: 'Terminar sesión',
|
||||
invalidLinkTitle: 'El enlace de invitación ya no es válido',
|
||||
invalidLinkBody: 'Esta sesión Orbit ya no existe o ya ha terminado. Pide al anfitrión un nuevo enlace de invitación.',
|
||||
settingsTitle: 'Ajustes de sesión',
|
||||
settingAutoApprove: 'Aprobar sugerencias automáticamente',
|
||||
settingAutoApproveHint: 'Las sugerencias de los invitados entran instantáneamente en tu cola. Desactivado: se quedan en la lista de sesión para revisión posterior.',
|
||||
settingAutoShuffle: 'Mezclado automático',
|
||||
settingAutoShuffleHint: 'Mezclado Fisher-Yates periódico de la cola próxima. Desactivado: el orden solo cambia cuando lo reorganizas.',
|
||||
settingShuffleInterval: 'Remezclar cada',
|
||||
settingShuffleIntervalHint: 'Con qué frecuencia se remezcla la cola próxima durante la sesión.',
|
||||
settingShuffleIntervalValue_one: '{{count}} min',
|
||||
settingShuffleIntervalValue_other: '{{count}} min',
|
||||
settingShuffleNow: 'Mezclar ahora',
|
||||
toastSuggested: '{{user}} sugirió "{{title}}"',
|
||||
toastSuggestedMany: '{{count}} nuevas sugerencias en la cola',
|
||||
toastShuffled: 'Cola mezclada',
|
||||
toastJoined: 'Te has unido a la sesión',
|
||||
toastLoginFirst: 'Inicia sesión antes de unirte a una sesión',
|
||||
toastSwitchServer: 'Cambia primero a {{url}}, luego pega de nuevo',
|
||||
toastNoAccountForServer: 'No tienes acceso a {{url}}. Pide al anfitrión una invitación.',
|
||||
toastSwitchFailed: 'No se pudo cambiar a {{url}}',
|
||||
accountPickerTitle: '¿Qué cuenta?',
|
||||
accountPickerSub: 'Tienes más de una cuenta para {{url}}. Elige con cuál unirte a la sesión.',
|
||||
toastJoinFail: 'No se pudo unir a la sesión',
|
||||
joinErrNotFound: 'Sesión no encontrada',
|
||||
joinErrEnded: 'La sesión ha terminado',
|
||||
joinErrFull: 'La sesión está llena',
|
||||
joinErrKicked: 'No puedes volver a unirte a esta sesión',
|
||||
joinErrNoUser: 'Sin servidor activo',
|
||||
joinErrServerError: 'No se pudo unir',
|
||||
ctxAddToSession: 'Añadir a la sesión Orbit',
|
||||
ctxSuggestedToast: 'Sugerido a la sesión',
|
||||
ctxSuggestFailed: 'No se pudo sugerir — no unido',
|
||||
ctxAddToSessionHost: 'Añadir a la sesión Orbit',
|
||||
ctxAddedHostToast: 'Añadido a la sesión',
|
||||
ctxAddHostFailed: 'No se pudo añadir a la sesión',
|
||||
bulkConfirmTitle: '¿Añadir todo esto a la cola Orbit?',
|
||||
bulkConfirmBody: 'Esto lanzaría {{count}} canciones a la cola compartida de una vez. Es mucho para tus invitados. ¿Continuar?',
|
||||
bulkConfirmYes: 'Añadir todas',
|
||||
bulkConfirmNo: 'Cancelar',
|
||||
guestLive: 'En vivo',
|
||||
guestPlaying: 'Reproduciendo ahora',
|
||||
guestPaused: 'En pausa',
|
||||
guestLoading: 'Cargando…',
|
||||
guestSuggestions: 'Sugerencias',
|
||||
guestUpNext: 'A continuación',
|
||||
guestUpNextEmpty: 'Nada en cola. Abre el menú contextual de una canción y elige "Añadir a la sesión Orbit" para sugerir una.',
|
||||
guestPendingTitle: 'Esperando al anfitrión',
|
||||
guestPendingHint: 'Sugerido — aparecerá en la cola cuando el anfitrión lo acepte.',
|
||||
approvalTitle: 'Pendiente de aprobación',
|
||||
approvalFrom: 'Sugerido por {{user}}',
|
||||
approvalAccept: 'Aceptar',
|
||||
approvalDecline: 'Rechazar',
|
||||
guestUpNextMore: '+ {{count}} más en la cola del anfitrión',
|
||||
guestSubmitter: 'de {{user}}',
|
||||
guestEmpty: 'Aún no hay sugerencias. Abre el menú contextual de una canción y elige "Añadir a la sesión Orbit".',
|
||||
guestFooter: 'El anfitrión controla la reproducción — no puedes cambiar la lista.',
|
||||
exitKickedTitle: 'Has sido baneado de la sesión',
|
||||
exitRemovedTitle: 'Has sido quitado de la sesión',
|
||||
exitEndedTitle: 'El anfitrión ha terminado la sesión',
|
||||
exitHostTimeoutTitle: 'Anfitrión en silencio',
|
||||
exitHostTimeoutBody: '{{host}} no ha enviado una actualización durante un rato, así que "{{name}}" se cerró en tu lado. Puedes volver a unirte en cualquier momento con el enlace de invitación.',
|
||||
exitKickedBody: '{{host}} te ha baneado de "{{name}}". No puedes volver a unirte.',
|
||||
exitRemovedBody: '{{host}} te ha quitado de "{{name}}". Puedes volver a unirte en cualquier momento por el enlace.',
|
||||
exitEndedBody: '"{{name}}" ha terminado. Espero que te hayas divertido.',
|
||||
exitOk: 'OK',
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user