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:
Psychotoxical
2026-04-24 19:35:57 +02:00
parent b4bb40802d
commit b0c153ec48
6 changed files with 1034 additions and 0 deletions
+172
View File
@@ -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',
},
};