1
0
mirror of https://github.com/hrfee/jfa-go.git synced 2024-11-12 21:30:10 +00:00

Compare commits

...

10 Commits

Author SHA1 Message Date
07de4e5015
build: include systemd service 2021-12-29 23:29:34 +00:00
57e6469564
site: add direct links to unstable builds
Links to build types and architectures are now included in the unstable
download section.
2021-12-29 22:33:07 +00:00
roand0617
cd2c37057d Translated using Weblate (Spanish)
Currently translated at 100.0% (109 of 109 strings)

Translation: jfa-go/Setup
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/setup/es/
2021-12-28 00:56:15 +01:00
roand0617
a35ca762e3 Translated using Weblate (Spanish)
Currently translated at 100.0% (6 of 6 strings)

Translation: jfa-go/Telegram/Matrix/Discord bots
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/chat-bots/es/
2021-12-26 01:56:16 +01:00
roand0617
fd10b2600f Translated using Weblate (Spanish)
Currently translated at 100.0% (10 of 10 strings)

Translation: jfa-go/Password Reset Links
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/password-reset-links/es/
2021-12-26 01:56:16 +01:00
roand0617
1384091d95 Translated using Weblate (Spanish)
Currently translated at 100.0% (51 of 51 strings)

Translation: jfa-go/Emails
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/emails/es/
2021-12-26 01:56:16 +01:00
roand0617
ca29ea2d46 translation from Weblate (Spanish)
Currently translated at 100.0% (174 of 174 strings)

Translation: jfa-go/Admin Page
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/admin/es/
2021-12-26 01:56:16 +01:00
roand0617
d8c9ae4ff6 Translated using Weblate (Spanish)
Currently translated at 100.0% (21 of 21 strings)

Translation: jfa-go/Common Strings
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/common-strings/es/
2021-12-26 01:56:15 +01:00
roand0617
4403ea8e18 translation from Weblate (Spanish)
Currently translated at 100.0% (37 of 37 strings)

Translation: jfa-go/Account Creation Form
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/form/es/
2021-12-26 01:56:15 +01:00
Richard de Boer
528829ffda translation from Weblate (Dutch)
Currently translated at 100.0% (37 of 37 strings)

Translation: jfa-go/Account Creation Form
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/form/nl/
2021-12-26 01:56:15 +01:00
14 changed files with 158 additions and 89 deletions

View File

@ -18,6 +18,7 @@ before:
- cp -r html data/ - cp -r html data/
- cp -r lang data/ - cp -r lang data/
- cp LICENSE data/ - cp LICENSE data/
- cp jfa-go.service data/
- python3 scripts/enumerate_config.py -i config/config-base.json -o data/config-base.json - python3 scripts/enumerate_config.py -i config/config-base.json -o data/config-base.json
- python3 scripts/generate_ini.py -i config/config-base.json -o data/config-default.ini - python3 scripts/generate_ini.py -i config/config-base.json -o data/config-default.ini
- python3 scripts/compile_mjml.py -o data/ - python3 scripts/compile_mjml.py -o data/

View File

@ -451,6 +451,11 @@ p.top {
white-space: nowrap; white-space: nowrap;
} }
.dropdown-display.above {
top: auto;
bottom: 115%;
}
pre { pre {
white-space: pre-wrap; /* css-3 */ white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */

View File

@ -13,7 +13,7 @@
"inviteNumberOfUses": "Números de usos", "inviteNumberOfUses": "Números de usos",
"inviteDuration": "Duración de invitación", "inviteDuration": "Duración de invitación",
"warning": "Advertencia", "warning": "Advertencia",
"inviteInfiniteUsesWarning": "Las invitaciones con usos infinitos pueden usarse abusivamente", "inviteInfiniteUsesWarning": "Las invitaciones con usos infinitos se pueden usar de forma abusiva",
"inviteSendToEmail": "Enviar a", "inviteSendToEmail": "Enviar a",
"login": "Acceso", "login": "Acceso",
"logout": "Cerrar sesión", "logout": "Cerrar sesión",
@ -37,10 +37,10 @@
"user": "Usuario", "user": "Usuario",
"expiry": "Expiración", "expiry": "Expiración",
"userExpiry": "Caducidad del usuario", "userExpiry": "Caducidad del usuario",
"userExpiryDescription": "Una cantidad específica de tiempo después de cada registro, jfa-go eliminará/deshabilitará la cuenta. Puede cambiar este comportamiento en la configuración.", "userExpiryDescription": "Una cantidad de tiempo específica después de cada registro, jfa-go eliminará / deshabilitará la cuenta. Puede cambiar este comportamiento en la configuración.",
"aboutProgram": "Acerca de", "aboutProgram": "Acerca de",
"version": "Versión", "version": "Versión",
"commitNoun": "Cometer", "commitNoun": "Revisión",
"newUser": "Nuevo usuario", "newUser": "Nuevo usuario",
"profile": "Perfil", "profile": "Perfil",
"unknown": "Desconocido", "unknown": "Desconocido",
@ -49,24 +49,24 @@
"subject": "Asunto del email", "subject": "Asunto del email",
"message": "Mensaje", "message": "Mensaje",
"variables": "Variables", "variables": "Variables",
"preview": "Previsualizar", "preview": "Vista previa",
"reset": "Reiniciar", "reset": "Reiniciar",
"edit": "Editar", "edit": "Editar",
"extendExpiry": "Extender el vencimiento", "extendExpiry": "Extender el vencimiento",
"customizeMessages": "Personalizar emails", "customizeMessages": "Personalizar mensajes",
"customizeMessagesDescription": "Si no desea utilizar las plantillas de correo electrónico de jfa-go, puede crear las suyas propias con Markdown.", "customizeMessagesDescription": "Si no desea utilizar las plantillas de mensajes de jfa-go, puede crear las suyas con Markdown.",
"markdownSupported": "Se admite Markdown.", "markdownSupported": "Se admite Markdown.",
"modifySettings": "Modificar configuración", "modifySettings": "Modificar configuración",
"modifySettingsDescription": "Aplique la configuración de un perfil existente u obténgalos directamente de un usuario.", "modifySettingsDescription": "Aplique la configuración de un perfil existente u obténgalos directamente de un usuario.",
"applyHomescreenLayout": "Aplicar el diseño de la pantalla de inicio", "applyHomescreenLayout": "Aplicar el diseño de la pantalla de inicio",
"sendDeleteNotificationEmail": "Enviar notificación a correo", "sendDeleteNotificationEmail": "Enviar mensaje de notificación",
"sendDeleteNotifiationExample": "Tu cuenta ha sido eliminada.", "sendDeleteNotifiationExample": "Tu cuenta ha sido eliminada.",
"settingsRestart": "Reiniciar", "settingsRestart": "Reiniciar",
"settingsRestarting": "Reiniciando…", "settingsRestarting": "Reiniciando…",
"settingsRestartRequired": "Reinicio necesario", "settingsRestartRequired": "Reinicio necesario",
"settingsRestartRequiredDescription": "Es necesario reiniciar para aplicar algunas configuraciones que cambió. ¿Reiniciar ahora o más tarde?", "settingsRestartRequiredDescription": "Es necesario reiniciar para aplicar algunas configuraciones que cambió. ¿Reiniciar ahora o más tarde?",
"settingsApplyRestartLater": "Aplicar, reiniciar más tarde", "settingsApplyRestartLater": "Aplicar, reiniciar más tarde",
"settingsApplyRestartNow": "Aplicar, reiniciar más tarde", "settingsApplyRestartNow": "Aplicar y reiniciar",
"settingsApplied": "Se aplicó la configuración.", "settingsApplied": "Se aplicó la configuración.",
"settingsRefreshPage": "Actualiza la página en unos segundos.", "settingsRefreshPage": "Actualiza la página en unos segundos.",
"settingsRequiredOrRestartMessage": "Nota: {n} indica un campo obligatorio, {n} indica que los cambios requieren un reinicio.", "settingsRequiredOrRestartMessage": "Nota: {n} indica un campo obligatorio, {n} indica que los cambios requieren un reinicio.",
@ -75,12 +75,12 @@
"ombiUserDefaultsDescription": "Cree un usuario Ombi y configúrelo, luego selecciónelo a continuación. Sus configuraciones/permisos se almacenarán y aplicarán a los nuevos usuarios de Ombi creados por jfa-go cuando se seleccione este perfil.", "ombiUserDefaultsDescription": "Cree un usuario Ombi y configúrelo, luego selecciónelo a continuación. Sus configuraciones/permisos se almacenarán y aplicarán a los nuevos usuarios de Ombi creados por jfa-go cuando se seleccione este perfil.",
"userProfiles": "Perfiles de usuario", "userProfiles": "Perfiles de usuario",
"userProfilesDescription": "Los perfiles se aplican a los usuarios cuando crean una cuenta. Un perfil incluye los derechos de acceso a la biblioteca y el diseño de la pantalla de inicio.", "userProfilesDescription": "Los perfiles se aplican a los usuarios cuando crean una cuenta. Un perfil incluye los derechos de acceso a la biblioteca y el diseño de la pantalla de inicio.",
"userProfilesIsDefault": "Defecto", "userProfilesIsDefault": "Por defecto",
"userProfilesLibraries": "Bibliotecas", "userProfilesLibraries": "Bibliotecas",
"addProfile": "Agregar perfil", "addProfile": "Agregar Perfil",
"addProfileDescription": "Cree un usuario de Jellyfin y configúrelo, luego selecciónelo a continuación. Cuando este perfil se aplica a una invitación, se crearán nuevos usuarios con la configuración.", "addProfileDescription": "Cree un usuario de Jellyfin y configúrelo, luego selecciónelo a continuación. Cuando este perfil se aplica a una invitación, se crearán nuevos usuarios con la configuración.",
"addProfileNameOf": "Nombre de perfil", "addProfileNameOf": "Nombre de perfil",
"addProfileStoreHomescreenLayout": "Diseño de la pantalla de inicio de la tienda", "addProfileStoreHomescreenLayout": "Guardar el diseño de la pantalla de inicio",
"inviteNoUsersCreated": "¡Ninguno todavía!", "inviteNoUsersCreated": "¡Ninguno todavía!",
"inviteUsersCreated": "Usuarios creados", "inviteUsersCreated": "Usuarios creados",
"inviteNoProfile": "Sin perfil", "inviteNoProfile": "Sin perfil",
@ -93,24 +93,24 @@
"notifyUserCreation": "Sobre la creación de usuarios", "notifyUserCreation": "Sobre la creación de usuarios",
"conditionals": "Condicionales", "conditionals": "Condicionales",
"donate": "Donar", "donate": "Donar",
"add": "Añadir", "add": "Agregar",
"templates": "Plantillas", "templates": "Plantillas",
"contactThrough": "Contactar a través de:", "contactThrough": "Contactar a través de:",
"select": "Seleccionar", "select": "Seleccionar",
"sendPIN": "Pídale al usuario que envíe el PIN a continuación al bot.", "sendPIN": "Pídale al usuario que envíe el PIN a continuación al bot.",
"searchDiscordUser": "Comienza a escribir el nombre de usuario de Discord para encontrar a la usuario.", "searchDiscordUser": "Comienza a escribir el nombre de usuario de Discord para encontrar al usuario.",
"findDiscordUser": "Encontrar usuario de Discord", "findDiscordUser": "Encontrar usuario de Discord",
"linkMatrixDescription": "Ingrese el nombre de usuario y la contraseña del usuario para usar como bot. Una vez enviada, la aplicación se reiniciará.", "linkMatrixDescription": "Ingrese el nombre de usuario y la contraseña del usuario para usar como bot. Una vez enviada, la aplicación se reiniciará.",
"matrixHomeServer": "Dirección del servidor de inicio", "matrixHomeServer": "Dirección del servidor de inicio",
"saveAsTemplate": "Guardar plantilla", "saveAsTemplate": "Guardar como plantilla",
"deleteTemplate": "Eliminar plantilla", "deleteTemplate": "Eliminar plantilla",
"templateEnterName": "Ingrese un nombre para guardar esta plantilla.", "templateEnterName": "Ingrese un nombre para guardar esta plantilla.",
"setExpiry": "Establecer vencimiento", "setExpiry": "Establecer vencimiento",
"sendPWR": "Enviar restablecimiento de contraseña", "sendPWR": "Enviar restablecimiento de contraseña",
"sendPWRSuccess": "Se envió el enlace para restablecer la contraseña.", "sendPWRSuccess": "Se envió el enlace para restablecer la contraseña.",
"sendPWRSuccessManual": "Si el usuario no lo ha recibido, presione copiar para obtener un enlace y enviárselo manualmente.", "sendPWRSuccessManual": "Si el usuario no lo ha recibido, presione copiar para generar el enlace y enviárselo manualmente.",
"sendPWRValidFor": "El enlace es válido por 30m.", "sendPWRValidFor": "El enlace es válido por 30m.",
"sendPWRManual": "El usuario {n} no tiene ningún método de contacto, presione copiar para obtener un enlace para enviarle.", "sendPWRManual": "El usuario {n} no tiene ningún método de contacto, presione copiar para generar el enlace para enviarle.",
"ombiProfile": "Perfil de usuario de Ombi" "ombiProfile": "Perfil de usuario de Ombi"
}, },
"notifications": { "notifications": {
@ -125,7 +125,7 @@
"errorConnection": "No se pudo conectar a jfa-go.", "errorConnection": "No se pudo conectar a jfa-go.",
"error401Unauthorized": "No autorizado. Intente actualizar la página.", "error401Unauthorized": "No autorizado. Intente actualizar la página.",
"errorSettingsAppliedNoHomescreenLayout": "Se aplicó la configuración, pero es posible que no se haya aplicado el diseño de la pantalla de inicio.", "errorSettingsAppliedNoHomescreenLayout": "Se aplicó la configuración, pero es posible que no se haya aplicado el diseño de la pantalla de inicio.",
"errorHomescreenAppliedNoSettings": "Se aplicó el diseño de la pantalla de inicio, pero es posible que no se haya aplicado la configuración.", "errorHomescreenAppliedNoSettings": "Se aplicó el diseño de la pantalla de inicio, pero es posible que la aplicación de la configuración haya fallado.",
"errorSettingsFailed": "La aplicación falló.", "errorSettingsFailed": "La aplicación falló.",
"errorLoginBlank": "El nombre de usuario y/o la contraseña se dejaron en blanco.", "errorLoginBlank": "El nombre de usuario y/o la contraseña se dejaron en blanco.",
"errorUnknown": "Error desconocido.", "errorUnknown": "Error desconocido.",
@ -139,22 +139,22 @@
"errorSaveSettings": "No se pudo guardar la configuración.", "errorSaveSettings": "No se pudo guardar la configuración.",
"errorLoadSettings": "No se pudo cargar la configuración.", "errorLoadSettings": "No se pudo cargar la configuración.",
"errorSetOmbiDefaults": "No se pudieron almacenar los valores predeterminados de ombi.", "errorSetOmbiDefaults": "No se pudieron almacenar los valores predeterminados de ombi.",
"errorLoadOmbiUsers": "No se pudieron cargar los usuarios de ombi.", "errorLoadOmbiUsers": "No se pudieron cargar los usuarios de Ombi.",
"errorChangedEmailAddress": "No se pudo cambiar la dirección de correo electrónico de {n}.", "errorChangedEmailAddress": "No se pudo cambiar la dirección de correo electrónico de {n}.",
"errorFailureCheckLogs": "Fallido (ver consola / registros)", "errorFailureCheckLogs": "Fallido (ver consola/registros)",
"errorPartialFailureCheckLogs": "Fallo parcial (ver consola / registros)", "errorPartialFailureCheckLogs": "Fallo parcial (ver consola/registros)",
"errorUserCreated": "No se pudo crear el usuario {n}.", "errorUserCreated": "No se pudo crear el usuario {n}.",
"errorSendWelcomeEmail": "No se pudo enviar el mensaje de bienvenida (verifique la consola / registros)", "errorSendWelcomeEmail": "No se pudo enviar el mensaje de bienvenida (verifique la consola/registros)",
"errorApplyUpdate": "No se pudo aplicar la actualización, intente manualmente.", "errorApplyUpdate": "No se pudo aplicar la actualización, intente manualmente.",
"errorCheckUpdate": "No se pudo comprobar la actualización.", "errorCheckUpdate": "No se pudo comprobar la actualización.",
"updateAvailable": "Hay una nueva actualización disponible, verifique la configuración.", "updateAvailable": "Hay una nueva actualización disponible, verifique la configuración.",
"noUpdatesAvailable": "No hay nuevas actualizaciones disponibles.", "noUpdatesAvailable": "No hay nuevas actualizaciones disponibles.",
"updateAppliedRefresh": "Actualización aplicada, actualice.", "updateAppliedRefresh": "Actualización aplicada, por favor actualice.",
"accountConnected": "Cuenta conectada.", "accountConnected": "Cuenta vinculada.",
"savedAnnouncement": "Anuncio guardado.", "savedAnnouncement": "Anuncio guardado.",
"telegramVerified": "Cuenta de Telegram verificada.", "telegramVerified": "Cuenta de Telegram verificada.",
"setOmbiProfile": "Perfil de ombi almacenado.", "setOmbiProfile": "Perfil de Ombi guardado.",
"errorSetOmbiProfile": "No se pudo almacenar el perfil de ombi." "errorSetOmbiProfile": "No se pudo guardar el perfil de Ombi."
}, },
"quantityStrings": { "quantityStrings": {
"modifySettingsFor": { "modifySettingsFor": {
@ -166,8 +166,8 @@
"plural": "Eliminar {n} usuarios" "plural": "Eliminar {n} usuarios"
}, },
"disableUsers": { "disableUsers": {
"singular": "Deshabilitar {n} usuario", "singular": "Desactivar {n} usuario",
"plural": "Inhabilitar {n} usuarios" "plural": "Desactivar {n} usuarios"
}, },
"reEnableUsers": { "reEnableUsers": {
"singular": "Reactivar {n} usuario", "singular": "Reactivar {n} usuario",
@ -182,32 +182,32 @@
"plural": "Borrar usuarios" "plural": "Borrar usuarios"
}, },
"deletedUser": { "deletedUser": {
"singular": "Usuario eliminado {n}.", "singular": "{n} usuario eliminado.",
"plural": "Usuarios eliminados {n}." "plural": "{n} usuarios eliminados."
}, },
"disabledUser": { "disabledUser": {
"singular": "Usuario deshabilitado {n}.", "singular": "{n} usuario desactivado.",
"plural": "Usuarios deshabilitados {n}." "plural": "{n} usuarios desactivados."
}, },
"enabledUser": { "enabledUser": {
"singular": "Usuario {n} habilitado.", "singular": "{n} usuario activado.",
"plural": "Usuarios {n} habilitados." "plural": "{n} usuarios activados."
}, },
"announceTo": { "announceTo": {
"singular": "Anunciar al usuario {n}", "singular": "Anunciar a {n} usuario",
"plural": "Anunciar a los usuarios {n}" "plural": "Anunciar a {n} usuarios"
}, },
"appliedSettings": { "appliedSettings": {
"singular": "Se aplicó la configuración al usuario {n}.", "singular": "Se aplicó la configuración a {n} usuario.",
"plural": "Se aplicó la configuración a los usuarios {n}." "plural": "Se aplicó la configuración a {n} usuarios."
}, },
"extendExpiry": { "extendExpiry": {
"singular": "Extender la expiración para el usuario {n}", "singular": "Extender la expiración para {n} usuario",
"plural": "Extender la expiración para los usuarios {n}" "plural": "Extender la expiración para {n} usuarios"
}, },
"extendedExpiry": { "extendedExpiry": {
"singular": "Caducidad extendida para el usuario {n}.", "singular": "Caducidad extendida para {n} usuario.",
"plural": "Caducidad extendida para los usuarios {n}." "plural": "Caducidad extendida para {n} usuarios."
} }
} }
} }

View File

@ -13,13 +13,13 @@
"error": "Error", "error": "Error",
"copy": "Copiar", "copy": "Copiar",
"copied": "Copiado", "copied": "Copiado",
"time24h": "24 horas", "time24h": "Formato de 24 horas",
"time12h": "12 horas", "time12h": "Formato de 12 horas",
"theme": "Tema", "theme": "Tema",
"send": "Enviar", "send": "Enviar",
"contactDiscord": "Contacta a través de Discord", "contactDiscord": "Contactar por Discord",
"contactEmail": "Contacta a través de email", "contactEmail": "Contactar por correo electrónico",
"contactTelegram": "Contacta a través de Telegram", "contactTelegram": "Contactar por Telegram",
"linkMatrix": "Enlace Matrix", "linkMatrix": "Enlace Matrix",
"linkDiscord": "Enlace Discord", "linkDiscord": "Enlace Discord",
"linkTelegram": "Enlace Telegram" "linkTelegram": "Enlace Telegram"

View File

@ -9,7 +9,7 @@
}, },
"userCreated": { "userCreated": {
"name": "Creación de usuarios", "name": "Creación de usuarios",
"title": "Noticia: Usuario creado", "title": "Aviso: Usuario creado",
"aUserWasCreated": "Se creó un usuario con el código {code}.", "aUserWasCreated": "Se creó un usuario con el código {code}.",
"time": "Hora", "time": "Hora",
"notificationNotice": "Nota: Los mensajes de notificación se pueden alternar en el panel de administración." "notificationNotice": "Nota: Los mensajes de notificación se pueden alternar en el panel de administración."
@ -25,9 +25,9 @@
"name": "Restablecimiento de contraseña", "name": "Restablecimiento de contraseña",
"title": "Solicitud de restablecimiento de contraseña - Jellyfin", "title": "Solicitud de restablecimiento de contraseña - Jellyfin",
"someoneHasRequestedReset": "Alguien ha solicitado recientemente un restablecimiento de contraseña en Jellyfin.", "someoneHasRequestedReset": "Alguien ha solicitado recientemente un restablecimiento de contraseña en Jellyfin.",
"ifItWasYou": "Si era usted, ingrese el pin a continuación en el mensaje.", "ifItWasYou": "Si era usted, ingrese el PIN a continuación en el mensaje.",
"ifItWasYouLink": "Si fue usted, haga clic en el enlace de abajo.", "ifItWasYouLink": "Si fue usted, haga clic en el enlace de abajo.",
"codeExpiry": "El código vencerá el {date}, a las {time} UTC, que es en {expiresInMinutes}.", "codeExpiry": "El código vencerá el {date}, a las {time} UTC, que es en {expiresInMinutes}.",
"pin": "PIN" "pin": "PIN"
}, },
"userDeleted": { "userDeleted": {
@ -36,23 +36,23 @@
"yourAccountWasDeleted": "Su cuenta de Jellyfin fue eliminada." "yourAccountWasDeleted": "Su cuenta de Jellyfin fue eliminada."
}, },
"userDisabled": { "userDisabled": {
"name": "Usuario deshabilitado", "name": "Usuario desactivado",
"title": "Su cuenta ha sido deshabilitada - Jellyfin", "title": "Su cuenta ha sido desactivada - Jellyfin",
"yourAccountWasDisabled": "Su cuenta fue inhabilitada." "yourAccountWasDisabled": "Su cuenta fue desactivada."
}, },
"userEnabled": { "userEnabled": {
"name": "Usuario habilitado", "name": "Usuario activado",
"title": "Su cuenta ha sido reactivada - Jellyfin", "title": "Su cuenta ha sido reactivada - Jellyfin",
"yourAccountWasEnabled": "Su cuenta se volvió a habilitar." "yourAccountWasEnabled": "Su cuenta fue reactivada."
}, },
"inviteEmail": { "inviteEmail": {
"name": "Correo electrónico", "name": "Invitar por correo electrónico",
"title": "Invitar - Jellyfin", "title": "Invitación - Jellyfin",
"hello": "Hola", "hello": "Hola",
"youHaveBeenInvited": "Has sido invitado a Jellyfin.", "youHaveBeenInvited": "Has sido invitado a Jellyfin.",
"toJoin": "Para unirse, siga el enlace a continuación.", "toJoin": "Para unirse, siga el enlace a continuación.",
"inviteExpiry": "Esta invitación vencerá el {date} a las {time}, que es en {expiresInMinutes}, así que regístrese cuanto antes.", "inviteExpiry": "Esta invitación vencerá el {date} a las {time}, que es en {expiresInMinutes}, así que regístrese cuanto antes.",
"linkButton": "Configurar tu cuenta" "linkButton": "Configura tu cuenta"
}, },
"welcomeEmail": { "welcomeEmail": {
"name": "Bienvenido", "name": "Bienvenido",
@ -66,12 +66,12 @@
"name": "Email de confirmación", "name": "Email de confirmación",
"title": "Confirma tu correo electrónico - Jellyfin", "title": "Confirma tu correo electrónico - Jellyfin",
"clickBelow": "Haga clic en el enlace de abajo para confirmar su dirección de correo electrónico y comenzar a usar Jellyfin.", "clickBelow": "Haga clic en el enlace de abajo para confirmar su dirección de correo electrónico y comenzar a usar Jellyfin.",
"confirmEmail": "Confirmar correo electrónico" "confirmEmail": "Confirma el correo electrónico"
}, },
"userExpired": { "userExpired": {
"name": "Caducidad del usuario", "name": "Caducidad del usuario",
"title": "Tu cuenta ha caducado - Jellyfin", "title": "Tu cuenta ha caducado - Jellyfin",
"yourAccountHasExpired": "Tu cuenta ha expirado.", "yourAccountHasExpired": "Tu cuenta ha expirado.",
"contactTheAdmin": "Comuníquese con el administrador para obtener más información." "contactTheAdmin": "Póngase en contacto con el administrador para obtener más información."
} }
} }

View File

@ -3,19 +3,19 @@
"name": "Español (ES)" "name": "Español (ES)"
}, },
"strings": { "strings": {
"pageTitle": "Crear cuenta en Jellyfin", "pageTitle": "Crear cuenta de Jellyfin",
"createAccountHeader": "Crear una cuenta", "createAccountHeader": "Crear una cuenta",
"accountDetails": "Detalles", "accountDetails": "Detalles",
"emailAddress": "Correo electrónico", "emailAddress": "Correo electrónico",
"username": "Nombre de usuario", "username": "Nombre de usuario",
"password": "Contraseña", "password": "Contraseña",
"reEnterPassword": "Rescriba su contraseña", "reEnterPassword": "Confirme la contraseña",
"reEnterPasswordInvalid": "Las contraseñas no son coincidentes.", "reEnterPasswordInvalid": "Las contraseñas no son similares.",
"createAccountButton": "Crear una cuenta", "createAccountButton": "Crear una cuenta",
"passwordRequirementsHeader": "Requisitos de contraseña", "passwordRequirementsHeader": "Requisitos de contraseña",
"successHeader": "¡Éxito!", "successHeader": "¡Éxito!",
"confirmationRequired": "Se requiere confirmación por correo electrónico", "confirmationRequired": "Se requiere confirmación por correo electrónico",
"confirmationRequiredMessage": "Revise la bandeja de entrada de su correo electrónico para verificar su dirección.", "confirmationRequiredMessage": "Por favor, revise la bandeja de entrada de su correo electrónico para verificar su dirección.",
"yourAccountIsValidUntil": "Su cuenta será válida hasta el {date}.", "yourAccountIsValidUntil": "Su cuenta será válida hasta el {date}.",
"sendPINDiscord": "Escribe {command} en {server_channel} en Discord, luego envía el PIN a continuación a través de DM al bot.", "sendPINDiscord": "Escribe {command} en {server_channel} en Discord, luego envía el PIN a continuación a través de DM al bot.",
"sendPIN": "Envíe el PIN a continuación al bot, luego regrese aquí para vincular su cuenta.", "sendPIN": "Envíe el PIN a continuación al bot, luego regrese aquí para vincular su cuenta.",
@ -23,13 +23,14 @@
}, },
"notifications": { "notifications": {
"errorUserExists": "El usuario ya existe.", "errorUserExists": "El usuario ya existe.",
"errorInvalidCode": "Código de invitación no es válido.", "errorInvalidCode": "Código de invitación no válido.",
"errorDiscordVerification": "Se requiere verificación de Discord.", "errorDiscordVerification": "Se requiere verificación de Discord.",
"errorUnknown": "Error desconocido.", "errorUnknown": "Error desconocido.",
"verified": "Cuenta verificada.", "verified": "Cuenta verificada.",
"errorTelegramVerification": "Se requiere verificación de Telegram.", "errorTelegramVerification": "Se requiere verificación de Telegram.",
"errorInvalidPIN": "PIN inválido.", "errorInvalidPIN": "PIN inválido.",
"errorMatrixVerification": "Se requiere verificación de Matrix." "errorMatrixVerification": "Se requiere verificación de Matrix.",
"errorNoEmail": "Correo electrónico requerido."
}, },
"validationStrings": { "validationStrings": {
"length": { "length": {
@ -37,11 +38,11 @@
"plural": "Debe tener al menos {n} caracteres" "plural": "Debe tener al menos {n} caracteres"
}, },
"uppercase": { "uppercase": {
"singular": "Debe tener al menos {n} caracteres en mayúscula", "singular": "Debe tener al menos {n} carácter en mayúscula",
"plural": "Debe tener al menos {n} caracteres en mayúscula" "plural": "Debe tener al menos {n} caracteres en mayúscula"
}, },
"lowercase": { "lowercase": {
"singular": "Debe tener al menos {n} caracteres en minúscula", "singular": "Debe tener al menos {n} carácter en minúscula",
"plural": "Debe tener al menos {n} caracteres en minúscula" "plural": "Debe tener al menos {n} caracteres en minúscula"
}, },
"number": { "number": {

View File

@ -52,6 +52,7 @@
"errorDiscordVerification": "Discord-verificatie vereist.", "errorDiscordVerification": "Discord-verificatie vereist.",
"errorUnknown": "Onbekende fout.", "errorUnknown": "Onbekende fout.",
"errorMatrixVerification": "Matrix-verificatie vereist.", "errorMatrixVerification": "Matrix-verificatie vereist.",
"verified": "Account geverifieerd." "verified": "Account geverifieerd.",
"errorNoEmail": "E-mail vereist."
} }
} }

View File

@ -3,11 +3,11 @@
"name": "Español (ES)" "name": "Español (ES)"
}, },
"strings": { "strings": {
"passwordReset": "Cambiar contraseña", "passwordReset": "Restablecimiento de contraseña",
"resetFailed": "Error al cambiar contraseña", "resetFailed": "Error al restablecer la contraseña",
"tryAgain": "Por favor intente nuevamente.", "tryAgain": "Por favor, intente de nuevo.",
"youCanLogin": "Ahora puedes logearte con el codigo como contraseña.", "youCanLogin": "Ahora puede iniciar sesión con el siguiente código como contraseña.",
"changeYourPassword": "Recuerda cambiar tu contraseña luego de iniciar sesión.", "changeYourPassword": "Asegúrese de cambiar su contraseña después de iniciar sesión.",
"youCanLoginOmbi": "Ahora puede iniciar sesión en Jellyfin & Ombi con el siguiente código como contraseña.", "youCanLoginOmbi": "Ahora puede iniciar sesión en Jellyfin & Ombi con el siguiente código como contraseña.",
"reset": "Reiniciar", "reset": "Reiniciar",
"enterYourPassword": "Ingrese su nueva contraseña abajo.", "enterYourPassword": "Ingrese su nueva contraseña abajo.",

View File

@ -16,14 +16,14 @@
"emailSubject": "Asunto", "emailSubject": "Asunto",
"URL": "URL", "URL": "URL",
"apiKey": "Llave de autorización (API)", "apiKey": "Llave de autorización (API)",
"errorInvalidUserPass": "Usuario/contraseña inválida.", "errorInvalidUserPass": "Usuario/contraseña inválido.",
"errorNotAdmin": "El usuario no tiene permitido administrar el servidor.", "errorNotAdmin": "El usuario no tiene permitido administrar el servidor.",
"errorUserDisabled": "El usuario puede estar deshabilitado.", "errorUserDisabled": "El usuario puede estar desactivado.",
"error404": "404, verifique la URL interna." "error404": "404, verifique la URL interna."
}, },
"startPage": { "startPage": {
"welcome": "¡Bienvenido!", "welcome": "¡Bienvenido!",
"pressStart": "Deberá hacer algunas cosas para configurar jfa-go. Presione comenzar para continuar.", "pressStart": "Tendrás que hacer algunas cosas para configurar jfa-go. Pulsa el botón de inicio para continuar.",
"httpsNotice": "Asegúrese de acceder a esta página a través de HTTPS o bien desde una red privada.", "httpsNotice": "Asegúrese de acceder a esta página a través de HTTPS o bien desde una red privada.",
"start": "Empezar" "start": "Empezar"
}, },
@ -41,8 +41,8 @@
}, },
"general": { "general": {
"title": "General", "title": "General",
"listenAddress": "Dirección de recibidor (Listen Address)", "listenAddress": "Dirección de escucha (Listen Address)",
"urlBase": "Base de URL", "urlBase": "URL Base",
"urlBaseNotice": "Solo es necesario si se usa un proxy inverso en un subdominio (por ejemplo, 'jellyf.in/accounts').", "urlBaseNotice": "Solo es necesario si se usa un proxy inverso en un subdominio (por ejemplo, 'jellyf.in/accounts').",
"lightTheme": "Claro", "lightTheme": "Claro",
"darkTheme": "Oscuro", "darkTheme": "Oscuro",
@ -55,7 +55,7 @@
"updates": { "updates": {
"title": "Actualizaciones", "title": "Actualizaciones",
"description": "Habilite para recibir notificaciones cuando haya nuevas actualizaciones disponibles. jfa-go comprobará {n} cada 30 minutos. No se recopilan IP ni información de identificación personal.", "description": "Habilite para recibir notificaciones cuando haya nuevas actualizaciones disponibles. jfa-go comprobará {n} cada 30 minutos. No se recopilan IP ni información de identificación personal.",
"updateChannel": "Actualizar canal", "updateChannel": "Canal de actualización",
"stable": "Estable", "stable": "Estable",
"unstable": "Inestable" "unstable": "Inestable"
}, },
@ -79,7 +79,7 @@
"testConnection": "Probar conexión" "testConnection": "Probar conexión"
}, },
"ombi": { "ombi": {
"title": "Ombi.", "title": "Ombi",
"description": "Al conectarse a Ombi, se creará una cuenta de Jellyfin y Ombi cuando un usuario se una a través de jfa-go. Una vez finalizada la configuración, vaya a Configuración para establecer un perfil predeterminado para los nuevos usuarios de ombi.", "description": "Al conectarse a Ombi, se creará una cuenta de Jellyfin y Ombi cuando un usuario se una a través de jfa-go. Una vez finalizada la configuración, vaya a Configuración para establecer un perfil predeterminado para los nuevos usuarios de ombi.",
"apiKeyNotice": "Encuentra esto en la primera pestaña de la configuración de Ombi." "apiKeyNotice": "Encuentra esto en la primera pestaña de la configuración de Ombi."
}, },

View File

@ -4,9 +4,9 @@
}, },
"strings": { "strings": {
"startMessage": "¡Hola!\nIntroduce tu código PIN de Jellyfin para verificar tu cuenta.", "startMessage": "¡Hola!\nIntroduce tu código PIN de Jellyfin para verificar tu cuenta.",
"matrixStartMessage": "Hola,\nIntroduce el PIN de abajo para logarte en la página de Jellyfin y verificar tu cuenta.", "matrixStartMessage": "Hola\nIngrese el PIN a continuación en la página de registro de Jellyfin para verificar su cuenta.",
"invalidPIN": "El PIN es inváido, inténtalo de nuevo.", "invalidPIN": "Ese PIN no es válido, inténtalo de nuevo.",
"pinSuccess": "Ok! Ya puedes volver a la página de login.", "pinSuccess": "¡Éxito! Ahora puedes volver a la página de registro.",
"languageMessage": "Nota: Ver los idiomas disponibles con {command}, y ajusta el idioma con {command} <language code>." "languageMessage": "Nota: Revisa los idiomas disponibles con {command}, y establece el idioma con {command} <language code>."
} }
} }

View File

@ -11,3 +11,7 @@ body {
background: #AA5CC3; background: #AA5CC3;
background: linear-gradient(90deg, #AA5CC3 0%, #00A4DC 100%) !important; background: linear-gradient(90deg, #AA5CC3 0%, #00A4DC 100%) !important;
} }
.text-center {
text-align: center;
}

View File

@ -94,7 +94,7 @@ sudo apt-get install jfa-go-tray
</div> </div>
<p class="row col flex center supra">downloads</p> <p class="row col flex center supra">downloads</p>
<p class="row col flex center support">instructions can be found&nbsp<a target="_blank" href="https://github.com/hrfee/jfa-go#install">here</a></p> <p class="row col flex center support">instructions can be found&nbsp<a target="_blank" href="https://github.com/hrfee/jfa-go#install">here</a></p>
<p class="row col flex center support">note: tray icon builds on linux require extra dependencies, see the github README for more info.</p> <p class="row col flex center text-center support">note: tray icon builds should only be used on systems with a Desktop Interface, and require extra dependencies on linux, see the github README for more info.</p>
<div class="row col flex center"> <div class="row col flex center">
<span class="button ~neutral !high mr-1 mt-1" id="download-stable">Stable</span> <span class="button ~neutral !high mr-1 mt-1" id="download-stable">Stable</span>
<span class="button ~neutral mt-1 mr-1" id="download-unstable">Unstable</span> <span class="button ~neutral mt-1 mr-1" id="download-unstable">Unstable</span>
@ -112,7 +112,6 @@ sudo apt-get install jfa-go-tray
<div class="mt-1 unfocused" id="sect-unstable"> <div class="mt-1 unfocused" id="sect-unstable">
<p class="row center">These are built on every commit, so may include incomplete/broken features. Take care.</p> <p class="row center">These are built on every commit, so may include incomplete/broken features. Take care.</p>
<div class="row col flex center"> <div class="row col flex center">
<a class="button ~info mr-half mb-half lang-link" target="_blank" href="https://dl.jfa-go.com/view/hrfee/jfa-go">windows/mac/linux</a>
<a class="button ~info mr-half mb-half lang-link" id="download-docker-unstable">docker</a> <a class="button ~info mr-half mb-half lang-link" id="download-docker-unstable">docker</a>
<a class="button ~info mr-half mb-half lang-link" id="download-deb-unstable">debian/ubuntu</a> <a class="button ~info mr-half mb-half lang-link" id="download-deb-unstable">debian/ubuntu</a>
<a class="button ~info mr-half mb-half lang-link" target="_blank" href="https://aur.archlinux.org/packages/jfa-go-git">arch (aur git)</a> <a class="button ~info mr-half mb-half lang-link" target="_blank" href="https://aur.archlinux.org/packages/jfa-go-git">arch (aur git)</a>

View File

@ -1,5 +1,6 @@
import { Modal } from "../../ts/modules/modal.js"; import { Modal } from "../../ts/modules/modal.js";
import { whichAnimationEvent } from "../../ts/modules/common.js"; import { whichAnimationEvent } from "../../ts/modules/common.js";
import { loadBuilds } from "./repo.js";
interface window extends Window { interface window extends Window {
animationEvent: string; animationEvent: string;
@ -18,7 +19,7 @@ const debUnstableButton = document.getElementById("download-deb-unstable") as HT
debUnstableButton.onclick = debModal.toggle; debUnstableButton.onclick = debModal.toggle;
const stableSect = document.getElementById("sect-stable"); const stableSect = document.getElementById("sect-stable");
const unstableSect = document.getElementById("sect-unstable"); export const unstableSect = document.getElementById("sect-unstable");
const stableButton = document.getElementById("download-stable") as HTMLSpanElement; const stableButton = document.getElementById("download-stable") as HTMLSpanElement;
const unstableButton = document.getElementById("download-unstable") as HTMLSpanElement; const unstableButton = document.getElementById("download-unstable") as HTMLSpanElement;
@ -51,4 +52,4 @@ const dockerUnstableButton = document.getElementById("download-docker-unstable")
dockerButton.onclick = dockerModal.toggle; dockerButton.onclick = dockerModal.toggle;
dockerUnstableButton.onclick = dockerModal.toggle; dockerUnstableButton.onclick = dockerModal.toggle;
loadBuilds();

57
site/ts/repo.ts Normal file
View File

@ -0,0 +1,57 @@
import { _get, _post, _delete } from "../../ts/modules/common.js";
import { unstableSect } from "./main.js";
const urlBase = "https://builds.hrfee.pw/repo/hrfee/jfa-go/latest/file/";
const categories = {
"Windows (Tray)": {
"x64": "Windows"
},
"Linux (Tray)": {
"x64": "TrayIcon_Linux_x86_64.zip"
},
"Linux": {
"x64": "Linux_x86_64.zip",
"ARM (32-bit)": "Linux_arm.zip",
"ARM (64-bit)": "Linux_arm64.zip"
},
"macOS": {
"x64": "macOS_x86_64",
"ARM": "macOS_arm64"
}
};
export const loadBuilds = () => {
for (let buildName in categories) {
if (Object.keys(categories[buildName]).length == 1) {
const button = document.createElement("a") as HTMLAnchorElement;
button.classList.add("button", "~info", "mr-half", "mb-half", "lang-link");
button.target = "_blank";
button.textContent = buildName.toLowerCase();
button.href = urlBase + categories[buildName][Object.keys(categories[buildName])[0]];
unstableSect.querySelector(".row.col.flex.center").appendChild(button);
} else {
const dropdown = document.createElement("span") as HTMLSpanElement;
dropdown.tabIndex = 0;
dropdown.classList.add("dropdown");
let innerHTML = `
<span class="button ~info mr-half mb-half lang-link">
${buildName.toLowerCase()}
<span class="ml-half chev"></span>
</span>
<div class="dropdown-display above">
<div class="card ~info !low">
`;
for (let arch in categories[buildName]) {
innerHTML += `
<a href="${urlBase + categories[buildName][arch]}" target="_blank" class="button input ~neutral field mb-half lang-link">${arch}</a>
`;
}
innerHTML += `
</div>
</div>
`;
dropdown.innerHTML = innerHTML;
unstableSect.querySelector(".row.col.flex.center").appendChild(dropdown);
}
}
};