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

Compare commits

...

35 Commits

Author SHA1 Message Date
dependabot[bot]
a23fee1ecc
Merge 6ede094034 into 9339992693 2024-07-21 01:21:09 -03:00
9339992693
Merge branch 'main' of github.com:hrfee/jfa-go 2024-07-14 00:32:25 +01:00
214d16cf0e
goreleaser: increment version
no actual changes.
2024-07-14 00:30:01 +01:00
a085e91cc6
Merge pull request #347 from jeppevinkel/patch-1
Fix referral url when subdomain contains `account`
2024-07-13 23:33:46 +01:00
272c38e0c5
user: url split on pathname only 2024-07-13 14:22:05 +01:00
jeppevinkel
6052329c0b
Fix deprecated georeleaser flag
Updated the `--skip-publish` flag to the new `--skip=publish` format.
2024-07-10 09:07:21 +02:00
jeppevinkel
acfdcdbc63
Fix referral url when subdomain contains account
This fix should work to grab the base url more consistently when the sub domain includes `account` in the name.
2024-07-10 01:22:12 +02:00
SimplyJanDE
a7529c7498 Translated using Weblate (German)
Currently translated at 93.6% (117 of 125 strings)

Translation: jfa-go/Setup
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/setup/de/
2024-07-05 02:47:06 +02:00
gentertain
c85a7843d0 translation from Weblate (German)
Currently translated at 73.9% (196 of 265 strings)

Translation: jfa-go/Admin Page
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/admin/de/
2024-07-05 02:47:06 +02:00
Sophia Walker
186bf30eca translation from Weblate (Chinese (Simplified))
Currently translated at 100.0% (265 of 265 strings)

Translation: jfa-go/Admin Page
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/admin/zh_Hans/
2024-07-05 02:47:06 +02:00
Sophia Walker
45e74f6e33 translation from Weblate (Chinese (Simplified))
Currently translated at 100.0% (68 of 68 strings)

Translation: jfa-go/Account Creation Form
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/form/zh_Hans/
2024-07-05 02:47:06 +02:00
FLAV1N
59654b72e6 translation from Weblate (Indonesian)
Currently translated at 40.7% (108 of 265 strings)

Translation: jfa-go/Admin Page
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/admin/id/
2024-07-05 02:47:06 +02:00
alison2033
d5531ed73e Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (12 of 12 strings)

Translation: jfa-go/Telegram/Matrix/Discord bots
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/chat-bots/pt_BR/
2024-07-05 02:47:06 +02:00
alison2033
ae208a87e0 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (51 of 51 strings)

Translation: jfa-go/Common Strings
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/common-strings/pt_BR/
2024-07-05 02:47:06 +02:00
alison2033
0a56f7ceed Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (125 of 125 strings)

Translation: jfa-go/Setup
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/setup/pt_BR/
2024-07-05 02:47:06 +02:00
alison2033
9678e5cc1a translation from Weblate (Portuguese (Brazil))
Currently translated at 100.0% (68 of 68 strings)

Translation: jfa-go/Account Creation Form
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/form/pt_BR/
2024-07-05 02:47:06 +02:00
alison2033
e4b335f4f6 translation from Weblate (Portuguese (Brazil))
Currently translated at 100.0% (265 of 265 strings)

Translation: jfa-go/Admin Page
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/admin/pt_BR/
2024-07-05 02:47:06 +02:00
alison2033
b5ae5f94fd translation from Weblate (Portuguese (Brazil))
Currently translated at 100.0% (68 of 68 strings)

Translation: jfa-go/Account Creation Form
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/form/pt_BR/
2024-07-05 02:47:06 +02:00
alison2033
867aad7896 translation from Weblate (Portuguese (Brazil))
Currently translated at 68.3% (181 of 265 strings)

Translation: jfa-go/Admin Page
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/admin/pt_BR/
2024-07-05 02:47:06 +02:00
alison2033
97f42b2f37 Translated using Weblate (Portuguese (Brazil))
Currently translated at 86.4% (108 of 125 strings)

Translation: jfa-go/Setup
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/setup/pt_BR/
2024-07-05 02:47:06 +02:00
alison2033
59fbfdc8f3 translation from Weblate (Portuguese (Brazil))
Currently translated at 100.0% (68 of 68 strings)

Translation: jfa-go/Account Creation Form
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/form/pt_BR/
2024-07-05 02:47:06 +02:00
johndu30160
c8b89f412b Translated using Weblate (French)
Currently translated at 100.0% (12 of 12 strings)

Translation: jfa-go/Telegram/Matrix/Discord bots
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/chat-bots/fr/
2024-07-05 02:47:06 +02:00
johndu30160
f4038f00ed Translated using Weblate (French)
Currently translated at 99.2% (124 of 125 strings)

Translation: jfa-go/Setup
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/setup/fr/
2024-07-05 02:47:06 +02:00
johndu30160
8091d4cba6 Translated using Weblate (French)
Currently translated at 100.0% (51 of 51 strings)

Translation: jfa-go/Common Strings
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/common-strings/fr/
2024-07-05 02:47:06 +02:00
johndu30160
189b1055e1 translation from Weblate (French)
Currently translated at 100.0% (68 of 68 strings)

Translation: jfa-go/Account Creation Form
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/form/fr/
2024-07-05 02:47:06 +02:00
johndu30160
2c00f7e5e6 translation from Weblate (French)
Currently translated at 100.0% (265 of 265 strings)

Translation: jfa-go/Admin Page
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/admin/fr/
2024-07-05 02:47:06 +02:00
matsob0123
c2f592272d translation from Weblate (Polish)
Currently translated at 17.7% (47 of 265 strings)

Translation: jfa-go/Admin Page
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/admin/pl/
2024-07-05 02:47:06 +02:00
greyluked
3fedc42a4a translation from Weblate (Spanish)
Currently translated at 67.5% (179 of 265 strings)

Translation: jfa-go/Admin Page
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/admin/es/
2024-07-05 02:47:06 +02:00
greyluked
3c5826ae2f Translated using Weblate (Spanish)
Currently translated at 100.0% (51 of 51 strings)

Translation: jfa-go/Common Strings
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/common-strings/es/
2024-07-05 02:47:06 +02:00
greyluked
45d90f7459 translation from Weblate (Spanish)
Currently translated at 95.5% (65 of 68 strings)

Translation: jfa-go/Account Creation Form
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/form/es/
2024-07-05 02:47:06 +02:00
greyluked
d40acc855a Translated using Weblate (Spanish)
Currently translated at 100.0% (125 of 125 strings)

Translation: jfa-go/Setup
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/setup/es/
2024-07-05 02:47:06 +02:00
Richard de Boer
8ee5377910 translation from Weblate (Dutch)
Currently translated at 100.0% (68 of 68 strings)

Translation: jfa-go/Account Creation Form
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/form/nl/
2024-07-05 02:47:06 +02:00
Richard de Boer
78c07aad3e translation from Weblate (Dutch)
Currently translated at 100.0% (265 of 265 strings)

Translation: jfa-go/Admin Page
Translate-URL: https://weblate.jfa-go.com/projects/jfa-go/admin/nl/
2024-07-05 02:47:06 +02:00
9df2a82b6d
router: correctly use local FS for custom HTML 2024-05-26 18:08:48 +01:00
dependabot[bot]
6ede094034
build(deps): bump semver from 5.7.1 to 5.7.2
Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-12 06:47:26 +00:00
27 changed files with 540 additions and 92 deletions

View File

@ -85,7 +85,7 @@ steps:
commands:
- curl -sL https://git.io/goreleaser > goreleaser
- chmod +x goreleaser
- ./scripts/version.sh ./goreleaser --snapshot --skip-publish --clean
- ./scripts/version.sh ./goreleaser --snapshot --skip=publish --clean
- wget https://builds.hrfee.pw/upload.py
- pip3 install requests
- bash -c 'sftp -i /id_rsa2 -o StrictHostKeyChecking=no root@161.97.102.153:/mnt/redoc <<< $"put docs/swagger.json jfa-go.json"'
@ -164,7 +164,7 @@ steps:
commands:
- curl -sL https://git.io/goreleaser > goreleaser
- chmod +x goreleaser
- ./scripts/version.sh ./goreleaser --snapshot --skip-publish --clean
- ./scripts/version.sh ./goreleaser --snapshot --skip=publish --clean
trigger:
event:

View File

@ -1,3 +1,5 @@
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json
version: 2
project_name: jfa-go
release:
github:

View File

@ -3,7 +3,7 @@
"name": "Deutsch (DE)"
},
"strings": {
"invites": "Invites",
"invites": "Einladungen",
"accounts": "Konten",
"settings": "Einstellungen",
"inviteDays": "Tage",
@ -94,7 +94,7 @@
"accessJFA": "jfa-go Zugriff",
"sendPWRValidFor": "Der Link ist 30m gültig.",
"logs": "Logdaten",
"setExpiry": "Ablauf setzen",
"setExpiry": "Ablaufdatum setzen",
"sendPWRSuccess": "Link zur Passwortrücksetzung versandt.",
"sendPWRSuccessManual": "Falls der Benutzer ihn nicht erhalten hat, klicke \"Kopieren\" und sende ihm den Link manuell.",
"sendPWR": "Sende Passwortrücksetzung",
@ -116,7 +116,27 @@
"before": "vor",
"unlink": "Account trennen",
"sortingBy": "Sortieren nach",
"activity": "Aktivität"
"activity": "Aktivität",
"settingsMaybeUnderAdvanced": "Tipp: Du könntest finden, wonach Du suchst, indem Du die erweiterten Einstellungen aktivierst.",
"enableReferralsProfileDescription": "Gib Benutzern, die mit diesem Profil erstellt wurden, einen persönlichen Empfehlungslink, ähnlich einer Einladung, den sie an Freunde und Familie senden können. Erstelle eine Einladung mit den gewünschten Einstellungen und wähle sie dann hier aus. Jede Empfehlung basiert dann auf dieser Einladung. Du kannst die Einladung nach Abschluss löschen.",
"removeExpiry": "Ablaufdatum entfernen",
"enterExpiry": "Ablaufdatum eingeben",
"keepSearchingDescription": "Die Suche umfasst nur bereits geladene Aktivitäten. Klicke unten um alle Aktivitäten zu durchsuchen.",
"useInviteExpiry": "Ablaufdatum des Profils/der Einladung setzen",
"useInviteExpiryNote": "Standardmässig laufen Einladungen nach 90 Tagen ab, können jedoch vom Benutzer erneuert werden. Aktiviere diese Option, damit die Empfehlung nach der festgelegten Zeit deaktiviert wird.",
"settingsHiddenDependency": "Zutreffende Einstellungen sind ausgeblendet, da sie vom Wert einer anderen Einstellung abhängen:",
"deleted": "Gelöscht",
"disabled": "Deaktiviert",
"keepSearching": "Weiter suchen",
"enableReferralsDescription": "Gib Benutzern einen persönlichen Empfehlungslink, ähnlich einer Einladung, den sie an Freunde und Familie senden können. Dieser kann aus einer Empfehlungsvorlage im Profil oder aus einer bestehenden Einladung stammen.",
"settingsDependsOn": "{setting}: abhängig von {dependency}",
"settingsAdvancedMode": "{setting}: Erweiterte Einstellungen müssen aktiviert sein",
"invite": "Einladung",
"userLabelDescription": "Label welches auf Benutzer angewendet wird, die mit dieser Einladung erstellt wurden.",
"enableReferrals": "Empfehlungen aktivieren",
"disableReferrals": "Empfehlungen deaktivieren",
"userLabel": "Benutzer Label",
"noResultsFound": "Keine Resultate gefunden"
},
"notifications": {
"changedEmailAddress": "E-Mail-Adresse von {n} geändert.",

View File

@ -116,7 +116,27 @@
"after": "Después",
"before": "Antes",
"unlink": "Desvincular cuenta",
"clickToRemoveFilter": "Haga clic para eliminar el filtro."
"clickToRemoveFilter": "Haga clic para eliminar el filtro.",
"removeExpiry": "Eliminar caducidad",
"enterExpiry": "Introduzca una caducidad",
"useInviteExpiry": "Establecer caducidad desde el perfil/invitación",
"noResultsFound": "Ningún resultado encontrado",
"settingsDependsOn": "{setting}: Depende de {dependency}",
"activity": "Actividad",
"disabled": "Desactivado",
"deleted": "Eliminado",
"keepSearching": "Seguir buscando",
"keepSearchingDescription": "Solo se ha buscado en las actividades cargadas actualmente. Clique a continuación si quiere buscar en todas las actividades.",
"settingsAdvancedMode": "{setting}: Los ajustes avanzados deben estar habilitados",
"settingsMaybeUnderAdvanced": "Consejo: Puede que encuentre lo que busca si habilita los Ajustes avanzados.",
"invite": "Invitar",
"userLabel": "Etiqueta de usuario",
"userLabelDescription": "Etiqueta que aplicar a usuarios creados con esta invitación.",
"enableReferrals": "Habilitar referencias",
"disableReferrals": "Deshabilitar referencias",
"enableReferralsDescription": "Proporciona a los usuarios un enlace personal de referencia, parecido a una invitación, para que lo compartan con amigos y familiares. Puede conseguirse a través de una plantilla de referencia en un perfil, o a través de una invitación existente.",
"enableReferralsProfileDescription": "Proporciona a los usuarios creados con este perfil un enlace personal de referencia, parecido a una invitación, para que lo compartan con amigos y familiares. Cree una invitación con los ajustes deseados y selecciónela aquí. Cada referencia se basará en esta invitación. Puede eliminar la invitación una vez completado.",
"useInviteExpiryNote": "Por defecto las invitaciones caducan a los 90 días, pero pueden ser renovadas por el usuario. Habilite que la referencia sea desactivada cuando pase el tiempo establecido."
},
"notifications": {
"changedEmailAddress": "Se cambió la dirección de correo electrónico de {n}.",

View File

@ -125,7 +125,78 @@
"userLabel": "Étiquette",
"userLabelDescription": "Étiquette à appliquer aux utilisateurs créés avec cette invitation.",
"disableReferrals": "Désactiver Parrainage",
"enableReferralsProfileDescription": "Donnez aux utilisateurs créés avec ce profil un lien de parrainage personnel semblable à une invitation, à envoyer à vos amis/famille. Créez une invitation avec les paramètres souhaités, puis sélectionnez-la ici. Chaque référence sera alors basée sur cette invitation. Vous pouvez supprimer l'invitation une fois terminée."
"enableReferralsProfileDescription": "Donnez aux utilisateurs créés avec ce profil un lien de parrainage personnel semblable à une invitation, à envoyer à vos amis/famille. Créez une invitation avec les paramètres souhaités, puis sélectionnez-la ici. Chaque référence sera alors basée sur cette invitation. Vous pouvez supprimer l'invitation une fois terminée.",
"loginNotAdmin": "Vous n'êtes pas administrateur ?",
"removeExpiry": "Supprimer l'expiration",
"enterExpiry": "Entrez une date d'expiration",
"useInviteExpiry": "Définir l'expiration du profil/invitation",
"sortDirection": "Ordre de trie",
"referrer": "Référence",
"accountLinked": "{contactMethod} lié : {user}",
"accountUnlinked": "{contactMethod} supprimé : {user}",
"accountResetPassword": "{user} réinitialise son mot de passe",
"expirationBasedOn": "Date donnée basée sur le 1er utilisateur.",
"accountDeleted": "Compte supprimé : {user}",
"accountChangedPassword": "{user} a changé son mot de passe",
"accountCreated": "Compte créé : {user}",
"accountDisabled": "Compte désactivé : {user}",
"accountReEnabled": "Compte réactivé : {user}",
"accountExpired": "Compte expiré : {user}",
"accountWillExpire": "Le compte expirera le {date}.",
"backups": "Sauvegardes",
"backupsDescription": "Des sauvegardes de la base de données peuvent être effectuées, restaurées ou téléchargées à partir d'ici.",
"backupsCopy": "Lors de l'application d'une sauvegarde, une copie du dossier \"db\" d'origine sera créée à côté, en cas de problème.",
"backupDownloadRestore": "Télécharger/Restaurer",
"backupUpload": "Télécharger et restaurer la sauvegarde",
"backupDownload": "Télécharger la sauvegarde",
"backupRestore": "Restaurer la sauvegarde",
"backupNow": "Sauvegarder maintenant",
"backupCreated": "Sauvegarde créée",
"backupCanDownload": "Vous pouvez également cliquer ci-dessous pour télécharger la sauvegarde.",
"wikiPage": "Wiki page",
"activity": "Activité",
"deleted": "Supprimé",
"disabled": "Désactivé",
"keepSearching": "Continuer la recherche",
"keepSearchingDescription": "Seules les activités actuellement chargées ont été recherchées. Cliquez ci-dessous si vous souhaitez rechercher toutes les activités.",
"settingsHiddenDependency": "Les paramètres correspondants sont masqués car ils dépendent de la valeur d'un autre paramètre :",
"settingsDependsOn": "{setting} : dépend de {dependency}",
"settingsMaybeUnderAdvanced": "Astuce : Vous trouverez peut-être ce que vous cherchez en activant les paramètres avancés.",
"settingsAdvancedMode": "{setting} : les paramètres avancés doivent être activés",
"actorDescription": "La chose qui a provoqué cette action. \"user\"/\"admin\"/\"service\" ou un nom d'utilisateur.",
"activityID": "ID d'activité",
"byUser": "Par Utilisateur",
"inviteExpired": "Invitation expirée : {invite}",
"byJfaGo": "Par jfa-go",
"accountDisabledFilter": "Compte désactivé",
"inviteCreated": "Invitation créée : {invite}",
"inviteDeleted": "Invitation supprimée : {invite}",
"fromInvite": "À partir de l'invitation",
"accountDeletionFilter": "Suppression de compte",
"userDeleted": "L'utilisateur a été supprimé.",
"userDisabled": "L'utilisateur a été désactivé",
"accountCreationFilter": "Création de compte",
"title": "Titre",
"usersMentioned": "Utilisateur mentionné",
"actor": "Acteur",
"byAdmin": "Par Administrateur",
"passwordResetFilter": "Réinitialisation du mot de passe",
"loadMore": "Charger plus",
"accountEnabledFilter": "Compte activé",
"inviteCreatedFilter": "Invitation crée",
"inviteDeletedFilter": "Invitation supprimée/expirée",
"noMoreResults": "Plus de résultats.",
"totalRecords": "{n} Nombre total d'enregistrements",
"passwordChangeFilter": "Mot de passe changé",
"loadedRecords": "{n} Chargé",
"shownRecords": "{n} affiché",
"contactUnlinkedFilter": "Contact sans lien",
"contactLinkedFilter": "Contact lié",
"loadAll": "Tout charger",
"noResultsFound": "Aucun résultat trouvé",
"useInviteExpiryNote": "Par défaut, les invitations expirent après 90 jours mais peuvent être renouvelées par l'utilisateur. Activez la désactivation de la référence après le délai défini.",
"backupsFormatNote": "Seuls les fichiers de sauvegarde au format standard seront affichés ici. Pour en utiliser un autre, veuillez charger la sauvegarde manuellement.",
"backupCanBeFound": "La sauvegarde peut être trouvée sur le serveur à {filepath}."
},
"notifications": {
"changedEmailAddress": "Adresse e-mail modifiée de {n}.",
@ -165,7 +236,13 @@
"setOmbiProfile": "Profil ombi enregistré.",
"errorSetOmbiProfile": "Echec de la sauvegarde du profil ombi.",
"errorNoReferralTemplate": "Le profil ne contient pas de modèle de référence, ajoutez-en un dans les paramètres.",
"referralsEnabled": "Parrainage activer."
"referralsEnabled": "Parrainage activer.",
"errorLoadActivities": "Échec du chargement des activités.",
"pathCopied": "Chemin complet copié dans le presse-papiers.",
"activityDeleted": "Activité supprimée.",
"errorInviteNoLongerExists": "L'invitation n'existe plus.",
"errorInviteNotFound": "Invitation introuvable.",
"errorInvalidDate": "La date n'est pas valide."
},
"quantityStrings": {
"modifySettingsFor": {

View File

@ -74,7 +74,9 @@
"select": "Pilih",
"search": "Cari",
"download": "Unduh",
"inviteMonths": "Bulan"
"inviteMonths": "Bulan",
"inviteDuration": "Durasi undangan",
"activity": "Aktivitas"
},
"notifications": {
"changedEmailAddress": "Alamat email {n} diubah.",

View File

@ -176,7 +176,26 @@
"noMoreResults": "Niet meer resultaten.",
"totalRecords": "{n} documenten totaal",
"loadedRecords": "{n} geladen",
"shownRecords": "{n} getoond"
"shownRecords": "{n} getoond",
"useInviteExpiry": "Neem verloop over van profiel/uitnodiging",
"backups": "Backups",
"removeExpiry": "Verwijder verloop",
"enterExpiry": "Voer verloop in",
"accountWillExpire": "Account verloopt op {date}.",
"expirationBasedOn": "Datum gebaseerd op 1e gebruiker.",
"backupsFormatNote": "Alleen backupbestanden met het standaard naamformaat worden hier getoond. Upload handmatig om een ander bestand te gebruiken.",
"backupDownloadRestore": "Downloaden / Terugzetten",
"backupUpload": "Upload backup & zet terug",
"backupDownload": "Download backup",
"backupRestore": "Backup terugzetten",
"backupNow": "Nu backup maken",
"backupCreated": "Backup gemaakt",
"backupCanBeFound": "De backup kan op de server gevonden worden onder {filepath}.",
"backupCanDownload": "Of klik hieronder om de backup te downloaden.",
"wikiPage": "Wiki pagina",
"useInviteExpiryNote": "Standaard verlopen uitnodigingen na 90 dagen, maar kunnen ze vernieuwd worden door de gebruiker. Schakel in om de verwijzing uit te schakelen na de ingestelde tijd.",
"backupsDescription": "Hier kunnen backups van de database gemaakt, teruggezet, of gedownload worden.",
"backupsCopy": "Bij het toepassen van een backup wordt er een kopie van de originele \"db\" folder naast gemaakt, voor het geval er iets misgaat."
},
"notifications": {
"changedEmailAddress": "E-mailadres van {n} gewijzigd.",
@ -220,7 +239,9 @@
"activityDeleted": "Activiteit verwijderd.",
"errorInviteNoLongerExists": "Uitnodiging bestaat niet meer.",
"errorInviteNotFound": "Uitnodiging niet gevonden.",
"errorLoadActivities": "Laden van activiteiten mislukt."
"errorLoadActivities": "Laden van activiteiten mislukt.",
"pathCopied": "Volledig pad gekopieerd naar klembord.",
"errorInvalidDate": "Ongeldige datum."
},
"quantityStrings": {
"modifySettingsFor": {

View File

@ -101,7 +101,8 @@
"deleteTemplate": "Usuń szablon",
"templateEnterName": "Wprowadź nazwę aby zapisać szablon.",
"accessJFA": "",
"accessJFASettings": ""
"accessJFASettings": "",
"invite": "Zaproś"
},
"notifications": {
"changedEmailAddress": "Zmieniono adres email {n}.",

View File

@ -83,7 +83,7 @@
"conditionals": "Condicionais",
"donate": "Doar",
"contactThrough": "Contato através:",
"sendPIN": "Peça que o usuário envie o PIN abaixo para o bot.",
"sendPIN": "Peça ao usuário para enviar o PIN abaixo para o bot.",
"searchDiscordUser": "Digite o nome de usuário do Discord.",
"findDiscordUser": "Encontrar usuário Discord",
"linkMatrixDescription": "Digite o nome de usuário e a senha para usar como bot. Depois de enviado, o aplicativo será reiniciado.",
@ -102,7 +102,100 @@
"sendPWRSuccess": "Link de redefinição de senha enviado.",
"sendPWRSuccessManual": "Se o usuário não o recebeu, pressione copiar para obter um link para enviar manualmente a ele.",
"sendPWRValidFor": "O link é válido por 30m.",
"accessJFASettings": "Não pode ser alterado porque \"Só Administrador\" ou \"Permitir todos\" foi definido em Configurações> Geral."
"accessJFASettings": "Não pode ser alterado porque \"Só Administrador\" ou \"Permitir todos\" foi definido em Configurações> Geral.",
"after": "Depois",
"removeExpiry": "Remover expiração",
"enableReferrals": "Habilitar referências",
"disableReferrals": "Desativar referências",
"invite": "Convite",
"before": "Antes",
"unlink": "Desvincular conta",
"enterExpiry": "Insira um vencimento",
"useInviteExpiry": "Definir expiração do perfil/convite",
"useInviteExpiryNote": "Por padrão, os convites expiram após 90 dias, mas podem ser renovados pelo usuário. Habilite para que o encaminhamento seja desabilitado após o tempo definido.",
"noResultsFound": "Nenhum resultado encontrado",
"activity": "Atividade",
"userLabel": "Rótulo de usuário",
"userLabelDescription": "Rótulo a ser aplicado aos usuários criados com este convite.",
"deleted": "Excluído",
"disabled": "Desabilitado",
"keepSearching": "Continue procurando",
"keepSearchingDescription": "Apenas as atividades atualmente carregadas foram pesquisadas. Clique abaixo se desejar pesquisar todas as atividades.",
"enableReferralsDescription": "Forneça aos usuários um link de indicação pessoal semelhante a um convite, para enviar a amigos/familiares. Pode ser proveniente de um modelo de indicação em um perfil ou de um convite existente.",
"enableReferralsProfileDescription": "Forneça aos usuários criados com este perfil um link de indicação pessoal semelhante a um convite, para enviar a amigos/familiares. Crie um convite com as configurações desejadas e selecione-o aqui. Cada indicação será então baseada neste convite. Você pode excluir o convite depois de concluído.",
"fromInvite": "Do convite",
"inviteDeletedFilter": "Convite excluído/expirado",
"accountDisabled": "Conta desativada: {user}",
"backupsDescription": "Cópias de segurança do banco de dados podem ser feitos, restaurados ou baixados aqui.",
"backupsFormatNote": "Somente arquivos de Cópias de segurança com formato de nome padrão serão mostrados aqui. Para usar qualquer outro, carregue o backup manualmente.",
"backupCanDownload": "Como alternativa, clique abaixo para baixar Cópia de segurança.",
"inviteCreated": "Convite criado: {invite}",
"buildTime": "Hora de construir",
"inviteDeleted": "Convite excluído: {invite}",
"inviteExpired": "O convite expirou: {invite}",
"byAdmin": "Por administrador",
"byUser": "Por usuário",
"byJfaGo": "Por jfa-go",
"actor": "Ator",
"actorDescription": "O que causou essa ação. \"user\"/\"admin\"/\"daemon\" ou um nome de usuário.",
"accountCreationFilter": "Criação de conta",
"accountDeletionFilter": "Exclusão de conta",
"accountDisabledFilter": "conta desativada",
"accountEnabledFilter": "Conta ativada",
"contactLinkedFilter": "Contato Linkedin",
"contactUnlinkedFilter": "Contato não vinculado",
"passwordResetFilter": "Redefinição de senha",
"inviteCreatedFilter": "Convite criado",
"loginNotAdmin": "Você não é administrador?",
"loadedRecords": "{n} Carregado",
"shownRecords": "{n} Exibido",
"searchOptions": "Opções de busca",
"matchText": "Corresponder Texto",
"jellyfinID": "ID do Jellyfin",
"sortingBy": "Classificando por",
"sortDirection": "Classificar direção",
"settingsHiddenDependency": "As configurações correspondentes ficam ocultas porque dependem do valor de outra configuração:",
"settingsDependsOn": "{setting}: depende de {dependency}",
"settingsAdvancedMode": "{setting}: as configurações avançadas devem estar habilitadas",
"settingsMaybeUnderAdvanced": "Dica: você pode encontrar o que procura ativando Configurações avançadas.",
"accountResetPassword": "{user} redefiniu a senha",
"accountCreated": "Conta criada: {user}",
"accountDeleted": "Conta excluída: {user}",
"accountExpired": "A conta expirou: {user}",
"accountWillExpire": "A conta expirará em {data}.",
"expirationBasedOn": "Data fornecida com base no primeiro usuário.",
"userDeleted": "O usuário foi excluído.",
"userDisabled": "O usuário foi desativado",
"activityID": "ID da atividade",
"accountChangedPassword": "{user} alterou a senha",
"title": "Título",
"accountReEnabled": "Conta reativada: {user}",
"referrer": "Indicador",
"usersMentioned": "Usuário mencionado",
"passwordChangeFilter": "Senha alterada",
"loadAll": "Carregar tudo",
"loadMore": "Carregar mais",
"noMoreResults": "Não há mais resultados.",
"totalRecords": "{n} Total de registros",
"filters": "Filtros",
"clickToRemoveFilter": "Clique para remover este filtro.",
"clearSearch": "Limpar pesquisa",
"actions": "Ações",
"userPageLogin": "Página do usuário: Entrar",
"userPagePage": "Página do usuário: página",
"builtBy": "Criado por",
"backups": "Cópias de segurança",
"backupDownloadRestore": "Baixar / Restaurar",
"backupsCopy": "Ao aplicar uma Cópias de segurança, será feita uma cópia da pasta \"db\" original ao lado dele, caso algo dê errado.",
"backupUpload": "Carregar e restaurar Cópias de segurança",
"backupDownload": "Baixar cópia de segurança",
"backupRestore": "Restaurar cópia de segurança",
"backupNow": "Faça cópia de segurança agora",
"backupCreated": "Cópia de segurança criada",
"backupCanBeFound": "A Cópia de segurança pode ser encontrado no servidor em {filepath}.",
"wikiPage": "Página Wiki",
"accountLinked": "{contactMethod} vinculado: {user}",
"accountUnlinked": "{contactMethod} removido: {user}"
},
"notifications": {
"changedEmailAddress": "Endereço de e-mail alterado de {n}.",
@ -140,7 +233,15 @@
"accountConnected": "Conta conectada.",
"savedAnnouncement": "Anúncio salvo.",
"setOmbiProfile": "Perfil ombi armazenado.",
"errorSetOmbiProfile": "Falha ao armazenar o perfil ombi."
"errorSetOmbiProfile": "Falha ao armazenar o perfil ombi.",
"errorNoReferralTemplate": "O perfil não contém modelo de referência. Adicione um nas configurações.",
"pathCopied": "Caminho completo copiado para a área de transferência.",
"referralsEnabled": "Referências habilitadas.",
"activityDeleted": "Atividade excluída.",
"errorInviteNoLongerExists": "O convite não existe mais.",
"errorInviteNotFound": "Convite não encontrado.",
"errorLoadActivities": "Falha ao carregar atividades.",
"errorInvalidDate": "A data é inválida."
},
"quantityStrings": {
"modifySettingsFor": {
@ -198,6 +299,10 @@
"setExpiry": {
"singular": "Definir expiração para {a} usuário",
"plural": "Definir expiração para {a} usuários"
},
"enableReferralsFor": {
"plural": "Ativar referências para {n} usuários",
"singular": "Ativar referências para {n} usuário"
}
}
}

View File

@ -176,7 +176,26 @@
"noMoreResults": "没有更多结果了。",
"totalRecords": "{n} 总记录数",
"loadedRecords": "已加载{n}",
"shownRecords": "已显示{n}"
"shownRecords": "已显示{n}",
"removeExpiry": "用户过期删除时间",
"useInviteExpiryNote": "在默认情况下邀请会在90天之后过期但是用户可以手动续期该邀请。启动该设置手动设置有效期后会关闭推荐设置。",
"accountWillExpire": "账户将在{date}后过期。",
"expirationBasedOn": "根据第一个用户给出的日期。",
"backupsFormatNote": "此处仅显示具有标准名称格式的备份文件。如要使用其他名称的备份,请手动上传。",
"backupCanDownload": "或者,单击下面的按钮下载备份。",
"enterExpiry": "输入自定义过期时间",
"useInviteExpiry": "设置个人资料/邀请的有效期",
"backups": "备份设置",
"backupsDescription": "可以从这里制作、恢复或下载数据库的备份。",
"backupsCopy": "当在使用备份文件恢复时程序将创建原始“db”文件夹的副本以防出现问题。",
"backupDownloadRestore": "下载/恢复",
"backupUpload": "上传和恢复备份",
"backupRestore": "恢复备份",
"backupDownload": "下载备份",
"backupNow": "立即备份",
"backupCreated": "备份已创建",
"backupCanBeFound": "该备份可以在服务器上的 {filepath} 处找到。",
"wikiPage": "帮助文档"
},
"notifications": {
"changedEmailAddress": "更改了 {n} 的电子邮件地址。",
@ -220,7 +239,9 @@
"referralsEnabled": "已启用推荐。",
"errorInviteNoLongerExists": "邀请已不存在。",
"errorInviteNotFound": "未找到邀请。",
"errorLoadActivities": "无法加载活动。"
"errorLoadActivities": "无法加载活动。",
"pathCopied": "完整路径已复制到剪贴板。",
"errorInvalidDate": "日期无效。"
},
"quantityStrings": {
"modifySettingsFor": {

View File

@ -36,7 +36,12 @@
"add": "Agregar",
"edit": "Editar",
"delete": "Eliminar",
"inviteRemainingUses": "Usos restantes"
"inviteRemainingUses": "Usos restantes",
"contactMethods": "Métodos de contacto",
"accountStatus": "Estado de la cuenta",
"notSet": "No establecido",
"myAccount": "Mi cuenta",
"referrals": "Referencias"
},
"notifications": {
"errorLoginBlank": "El nombre de usuario y/o la contraseña se dejaron en blanco.",
@ -45,5 +50,18 @@
"error401Unauthorized": "No autorizado. Intente actualizar la página.",
"errorSaveSettings": "No se pudo guardar la configuración."
},
"quantityStrings": {}
"quantityStrings": {
"year": {
"plural": "{n} años",
"singular": "{n} año"
},
"month": {
"singular": "{n} mes",
"plural": "{n} meses"
},
"day": {
"singular": "{n} día",
"plural": "{n} días"
}
}
}

View File

@ -5,7 +5,7 @@
"strings": {
"username": "Nom d'utilisateur",
"password": "Mot de passe",
"emailAddress": "Adresse Email",
"emailAddress": "Adresse mail",
"name": "Nom",
"submit": "Soumettre",
"send": "Envoyer",
@ -29,9 +29,9 @@
"logout": "Se déconnecter",
"admin": "Administrateur",
"enabled": "Activé",
"disabled": "Désactiver",
"disabled": "Désactivé",
"reEnable": "Ré-activé",
"disable": "Désactivé",
"disable": "Désactiver",
"expiry": "Expiration",
"add": "Ajouter",
"edit": "Éditer",

View File

@ -7,7 +7,7 @@
"password": "Senha",
"emailAddress": "Endereço de e-mail",
"name": "Nome",
"submit": "Enviar",
"submit": "Envie",
"send": "Enviar",
"success": "Sucesso",
"continue": "Continuar",
@ -36,7 +36,12 @@
"add": "Adicionar",
"edit": "Editar",
"delete": "Deletar",
"inviteRemainingUses": "Uso restantes"
"inviteRemainingUses": "Uso restantes",
"referrals": "Referências",
"contactMethods": "Métodos de contato",
"accountStatus": "Estado da conta",
"notSet": "Não configurado",
"myAccount": "Minha conta"
},
"notifications": {
"errorLoginBlank": "O nome de usuário e/ou senha foram deixados em branco.",
@ -45,5 +50,18 @@
"error401Unauthorized": "Não autorizado. Tente atualizar a página.",
"errorSaveSettings": "Não foi possível salvar as configurações."
},
"quantityStrings": {}
"quantityStrings": {
"day": {
"plural": "{n} Dias",
"singular": "{n} Dia"
},
"year": {
"singular": "{n} Ano",
"plural": "{n} anos"
},
"month": {
"singular": "{n} Mês",
"plural": "{n} meses"
}
}
}

View File

@ -17,9 +17,30 @@
"confirmationRequired": "Se requiere confirmación por correo electrónico",
"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}.",
"sendPINDiscord": "Escribe {command} en {server_channel} en Discord, luego envía el PIN a través de DM al bot.",
"sendPINDiscord": "Escriba {command} en {server_channel} en Discord, luego envíe el PIN a través de DM al bot.",
"sendPIN": "Envíe el PIN a continuación al bot, luego regrese aquí para vincular su cuenta.",
"matrixEnterUser": "Ingrese su ID de usuario, presione enviar y se le enviará un PIN. Ingrese aquí para continuar."
"matrixEnterUser": "Ingrese su ID de usuario, presione enviar y se le enviará un PIN. Ingrese aquí para continuar.",
"oldPassword": "Contraseña anterior",
"newPassword": "Nueva contraseña",
"addContactMethod": "Añadir método de contacto",
"editContactMethod": "Editar método de contacto",
"resetPassword": "Restablecer contraseña",
"joinTheServer": "Unirse al servidor:",
"resetPasswordThroughJellyfin": "Para restablecer la contraseña, visite {jfLink} y presione el botón \"Contraseña olvidada\".",
"userPageSuccessMessage": "Puede ver y modificar los detalles de su cuenta más tarde desde la página de {myAccount}.",
"resetPasswordThroughLink": "Para restablecer la contraseña, introduzca su nombre de usuario, dirección de correo electrónico o el nombre de usuario de un método de contacto vinculado, y presione enviar. Recibirá un enlace para restablecer la contraseña.",
"resetSent": "Restablecimiento enviado.",
"changePassword": "Cambiar contraseña",
"copyReferral": "Copiar enlace",
"invitedBy": "Invitación recibida de parte del usuario {user}.",
"referralsDescription": "Invite a amigos y familiares a Jellyfin con este enlace. Vuelva aquí para conseguir uno nuevo si este caduca.",
"resetPasswordThroughLinkStart": "Para restablecer su contraseña, introduzca uno de los siguientes a continuación:",
"resetPasswordThroughLinkEnd": "Y presione enviar. Se le mandará un enlace para restablecer su contraseña.",
"resetPasswordUsername": "Su nombre de usuario de Jellyfin",
"resetPasswordEmail": "Su dirección de correo electrónico",
"resetPasswordContactMethod": "El nombre de usuario de cualquier método de contacto vinculado a su cuenta",
"resetSentDescription": "Si una cuenta con el nombre de usuario o método de contacto suministrados existe, se habrá enviado un enlace de restablecimiento de contraseña a través de todos los métodos de contacto disponibles. El código caducará a los 30 minutos.",
"referralsWithExpiryDescription": "Invite a amigos y familia a Jellyfin con este enlace. El enlace se desactivará cuando caduque."
},
"notifications": {
"errorUserExists": "El usuario ya existe.",
@ -35,7 +56,9 @@
"errorPassword": "Requisitos para la contraseña.",
"errorNoMatch": "Las contraseñas no coinciden.",
"errorAccountLinked": "La cuenta ya está en uso.",
"errorEmailLinked": "El correo electrónico ya está en uso."
"errorEmailLinked": "El correo electrónico ya está en uso.",
"errorOldPassword": "Contraseña anterior incorrecta.",
"passwordChanged": "Contraseña cambiada."
},
"validationStrings": {
"length": {

View File

@ -7,7 +7,7 @@
"pageTitle": "Créer un compte Jellyfin",
"createAccountHeader": "Création du compte",
"accountDetails": "Détails",
"emailAddress": "Email",
"emailAddress": "Mail",
"username": "Nom d'utilisateur",
"password": "Mot de passe",
"reEnterPassword": "Confirmez mot de passe",
@ -38,7 +38,13 @@
"resetPassword": "Réinitialisation mot de passe",
"referralsDescription": "Invitez vos amis et votre famille à Jellyfin avec ce lien. Revenez ici pour en obtenir un nouveau s'il expire.",
"copyReferral": "Copier le lien",
"invitedBy": "Vous avez été invité par l'utilisateur {user}."
"invitedBy": "Vous avez été invité par l'utilisateur {user}.",
"resetPasswordUsername": "Votre username Jellyfin",
"resetPasswordEmail": "Votre adresse email",
"resetPasswordThroughLinkStart": "Pour réinitialiser votre mot de passe, saisissez l'une des informations suivantes :",
"resetPasswordContactMethod": "Le nom d'utilisateur de toute méthode de contact liée à votre compte",
"resetPasswordThroughLinkEnd": "Appuyez ensuite sur Soumettre. Un lien vous sera envoyé pour réinitialiser votre mot de passe.",
"referralsWithExpiryDescription": "Invitez vos amis et votre famille à Jellyfin avec ce lien. Le lien sera désactivé une fois expiré."
},
"validationStrings": {
"length": {

View File

@ -37,7 +37,13 @@
"resetSent": "Reset-link verstuurd.",
"referralsDescription": "Nodig vrienden en familie uit met deze link. Kom hier terug voor een nieuwe als hij verloopt.",
"copyReferral": "Kopieer link",
"invitedBy": "Je bent uitgenodigd door gebruiker {user}."
"invitedBy": "Je bent uitgenodigd door gebruiker {user}.",
"resetPasswordThroughLinkStart": "Voer één van onderstaande velden in om je wachtwoord te resetten:",
"resetPasswordUsername": "Je Jellyfin gebruikersnaam",
"referralsWithExpiryDescription": "Nodig vrienden en familie uit voor Jellyfin met deze link. De link wordt uitgeschakeld zodra hij verloopt.",
"resetPasswordEmail": "Je e-mailadres",
"resetPasswordThroughLinkEnd": "Druk daarna op versturen. Er wordt dan een link verstuurd om je wachtwoord te resetten.",
"resetPasswordContactMethod": "De gebruikersnaam van een contactmethode die aan je account gekoppeld is"
},
"validationStrings": {
"length": {

View File

@ -3,7 +3,7 @@
"name": "Português (BR)"
},
"strings": {
"pageTitle": "Criar Conta Jellyfin",
"pageTitle": "Crie uma conta Jellyfin",
"createAccountHeader": "Criar Conta",
"accountDetails": "Detalhes",
"emailAddress": "E-mail",
@ -17,9 +17,33 @@
"confirmationRequired": "Confirmação por e-mail",
"confirmationRequiredMessage": "Verifique sua caixa de email para finalizar o cadastro.",
"yourAccountIsValidUntil": "Sua conta é válida até {date}.",
"sendPIN": "Envie o PIN abaixo para o bot e volte aqui para vincular sua conta.",
"sendPIN": "Envie o PIN abaixo para o bot e depois volte aqui para vincular sua conta.",
"sendPINDiscord": "Digite {command} em {server_channel} no Discord e envie o PIN abaixo.",
"matrixEnterUser": "Digite sua ID de usuário, pressione enviar e um PIN será enviado. E digite aqui para continuar."
"matrixEnterUser": "Digite sua ID de usuário, pressione enviar e um PIN será enviado. E digite aqui para continuar.",
"resetPasswordUsername": "Seu nome de usuário Jellyfin",
"resetPasswordThroughLinkEnd": "Em seguida, pressione enviar. Um link será enviado para redefinir sua senha.",
"resetPasswordEmail": "Seu endereço de email",
"resetPasswordContactMethod": "O nome de usuário de qualquer método de contato vinculado à sua conta",
"resetSentDescription": "Se existir uma conta com o nome de usuário/método de contato fornecido, um link de redefinição de senha será enviado por todos os métodos de contato disponíveis. O código expirará em 30 minutos.",
"oldPassword": "Senha Antiga",
"newPassword": "Nova Senha",
"welcomeUser": "Bem-vindo, {usuário}!",
"changePassword": "Alterar a senha",
"addContactMethod": "Adicionar Método de Contato",
"editContactMethod": "Editar Método de Contato",
"joinTheServer": "Junte-se ao servidor:",
"customMessagePlaceholderContent": "Clique no botão de edição da página do usuário nas configurações para personalizar este cartão ou mostre um na tela de login e não se preocupe, o usuário não poderá ver isso.",
"customMessagePlaceholderHeader": "Personalize este cartão",
"userPageSuccessMessage": "Você poderá ver e alterar os detalhes da sua conta posteriormente na página {minha conta}.",
"resetPassword": "Redefinir senha",
"resetPasswordThroughJellyfin": "Para redefinir sua senha, visite {jfLink} e pressione o botão \"Esqueci minha senha\".",
"resetPasswordThroughLink": "Para redefinir sua senha, insira seu nome de usuário, endereço de e-mail ou um nome de usuário de método de contato vinculado e envie. Um link será enviado para redefinir sua senha.",
"resetSent": "Redefinir enviado.",
"referralsDescription": "Convide amigos e familiares para Jellyfin com este link. Volte aqui para comprar um novo se ele expirar.",
"copyReferral": "Copiar link",
"invitedBy": "Você foi convidado pelo usuário {user}.",
"resetPasswordThroughLinkStart": "Para redefinir sua senha, digite um dos seguintes itens abaixo:",
"referralsWithExpiryDescription": "Convide amigos e familiares para Jellyfin com este link. O link será desativado quando expirar."
},
"notifications": {
"errorUserExists": "Esse usuário já existe.",
@ -36,7 +60,9 @@
"errorPassword": "Verifique os requisitos de senha.",
"errorNoMatch": "As senhas não coincidem.",
"errorEmailLinked": "Este E-mail já está sendo utilizado.",
"errorAccountLinked": "Esta conta já está sendo utilizada."
"errorAccountLinked": "Esta conta já está sendo utilizada.",
"errorOldPassword": "Senha antiga incorreta.",
"passwordChanged": "Senha alterada."
},
"validationStrings": {
"length": {

View File

@ -37,7 +37,13 @@
"customMessagePlaceholderHeader": "自定义此卡",
"referralsDescription": "使用此链接邀请朋友和家人加入Jellyfin。如果链接过期请回到这里获取一个新的。",
"copyReferral": "复制链接",
"invitedBy": "您是由用户{user}邀请的。"
"invitedBy": "您是由用户{user}邀请的。",
"resetPasswordThroughLinkEnd": "按下提交按钮后,将会发送一个链接用以重置您的密码。",
"resetPasswordUsername": "你的Jellyfin用户名",
"resetPasswordThroughLinkStart": "要重置密码,请输入以下任一信息:",
"resetPasswordEmail": "你的邮箱地址",
"resetPasswordContactMethod": "与您的账户相关联的任何联系方式的用户名",
"referralsWithExpiryDescription": "使用此链接邀请亲朋好友加入 Jellyfin。过期后链接将失效。"
},
"notifications": {
"errorUserExists": "用户已经存在。",

View File

@ -22,7 +22,8 @@
"error404": "404, prüfe die interne URL.",
"errorConnectionRefused": "Verbindung abgelehnt.",
"error": "Fehler",
"errorUnknown": "Unbekannter Fehler, prüfe die Logs."
"errorUnknown": "Unbekannter Fehler, prüfe die Logs.",
"errorProxy": "Proxy Konfiguration ungültig."
},
"startPage": {
"welcome": "Willkommen!",
@ -63,7 +64,8 @@
"adminOnly": "Nur Admin-Benutzer (empfohlen)",
"emailNotice": "Deine E-Mail-Adresse kann verwendet werden, um Benachrichtigungen zu erhalten.",
"allowAll": "Erlaube allen Jellyfin-Nutzern sich anzumelden",
"allowAllDescription": "Nicht empfohlen. Nach der Einrichtung solltest du einzelnen Benutzern erlauben, sich anzumelden."
"allowAllDescription": "Nicht empfohlen. Nach der Einrichtung solltest du einzelnen Benutzern erlauben, sich anzumelden.",
"authorizeManualUserPageNotice": "Dadurch wird die Funktion \"Benutzerseite\" deaktiviert."
},
"jellyfinEmby": {
"title": "Jellyfin/Emby",
@ -148,5 +150,11 @@
"messages": {
"title": "Mitteilungen",
"description": "jfa-go kann Passwortrücksetzungen und verschiedene Benachrichtigungen per E-Mail, Discord, Telegram und/oder Matrix verschicken. E-Mail kannst du unten einrichten, die Anderen später in den Einstellungen. Anweisungen findest du im {n}. Falls nicht benötigt, kannst du diese Funktionen hier deaktivieren."
},
"proxy": {
"description": "Lass jfa-go alle Verbindungen über einen HTTP/SOCKS5-Proxy herstellen. Die Verbindung zu Jellyfin wird über diesen Proxy getestet.",
"title": "Proxy",
"protocol": "Protokoll",
"address": "Adresse (inkl. Port)"
}
}

View File

@ -3,7 +3,7 @@
"name": "Español (ES)"
},
"strings": {
"pageTitle": "instalación - jfa-go",
"pageTitle": "Instalación - jfa-go",
"next": "Siguiente",
"back": "Volver",
"optional": "Opcional",
@ -22,7 +22,8 @@
"error404": "404, verifique la URL interna.",
"errorConnectionRefused": "Conexión rechazada.",
"errorUnknown": "Error desconocido, verifique los registros de la aplicación.",
"error": "Error"
"error": "Error",
"errorProxy": "Configuración de proxy no válida."
},
"startPage": {
"welcome": "¡Bienvenido!",
@ -32,12 +33,12 @@
},
"endPage": {
"finished": "¡Terminado!",
"restartMessage": "Puede configurar los bots de Discord/Telegram/Matrix, personalizar sus mensajes y más en Configuración. Haga clic a continuación para reiniciar, luego actualice la página.",
"refreshPage": "Actualizar"
"restartMessage": "Funciones como bots de Discord/Telegram/Matrix, mensajes Markdown personalizados y una página de \"Mi cuenta\" accesible por el usuario pueden encontrarse en Ajustes, así que asegúrese de echarle un vistazo. Haga clic a continuación para reiniciar, y luego actualice la página.",
"refreshPage": "Recargar"
},
"language": {
"title": "Lenguaje",
"description": "Las traducciones de la comunidad están disponibles para la mayor parte de jfa-go. Puede elegir los idiomas predeterminados a continuación, pero los usuarios aún pueden cambiarlo si lo desean. Si quieres ayudar a traducir, regístrate en {n} para empezar a contribuir!",
"title": "Idioma",
"description": "Las traducciones de la comunidad están disponibles para la mayor parte de jfa-go. Puede elegir los idiomas predeterminados a continuación, pero los usuarios aún pueden cambiarlo si lo desean. Si quieres ayudar a traducir, ¡regístrate en {n} para empezar a contribuir!",
"defaultAdminLang": "Idioma de administrador predeterminado",
"defaultFormLang": "Idioma de creación de cuenta predeterminado",
"defaultEmailLang": "Idioma de correo electrónico predeterminado"
@ -70,7 +71,8 @@
"adminOnly": "Solo usuarios administradores (recomendado)",
"emailNotice": "Su dirección de correo electrónico se puede utilizar para recibir notificaciones.",
"allowAll": "Permitir el acceso a todos los usuarios de Jellyfin",
"allowAllDescription": "No se recomienda, debe permitir que los usuarios individuales se conecten una vez configurados."
"allowAllDescription": "No se recomienda, debe permitir que los usuarios individuales se conecten una vez configurados.",
"authorizeManualUserPageNotice": "Utilizar esto deshabilitará la función de \"Página de usuario\"."
},
"jellyfinEmby": {
"title": "Jellyfin/Emby",
@ -115,14 +117,15 @@
},
"passwordResets": {
"title": "Restablecimiento de contraseña",
"description": "Cuando un usuario intenta restablecer su contraseña, Jellyfin crea un archivo llamado 'passwordreset - *. Json' que contiene un PIN. jfa-go lee el archivo y envía el PIN al usuario.",
"description": "Cuando un usuario intenta restablecer su contraseña, Jellyfin crea un archivo llamado 'passwordreset -*.json' que contiene un PIN. jfa-go lee el archivo y envía el PIN al usuario. Si activó la función de \"Página de usuario\", también se puede realizar un restablecimiento desde ahí, proporcionando un nombre de usuario, correo electrónico, o método de contacto.",
"pathToJellyfin": "Ruta al directorio de configuración de Jellyfin",
"pathToJellyfinNotice": "Si no sabe dónde está, intente restablecer su contraseña en Jellyfin. Aparecerá una ventana emergente con '<ruta a jellyfin>/passwordreset-. Json'.",
"pathToJellyfinNotice": "Si no sabe dónde está, intente restablecer su contraseña en Jellyfin. Aparecerá una ventana emergente con '<ruta a jellyfin>/passwordreset-*.json'. Esto no es necesario si solo quiere usar el restablecimiento de contraseña de autoservicio a través de la \"Página de usuario\".",
"resetLinks": "Envía un enlace en lugar de un PIN",
"resetLinksNotice": "Si la integración de Ombi está habilitada, utilícela para sincronizar los restablecimientos de contraseña de Jellyfin con Ombi.",
"resetLinksLanguage": "Enlace de restablecimiento predeterminado",
"setPassword": "Establecer contraseña a través del enlace",
"setPasswordNotice": "Habilitar esto significa que el usuario no tiene que cambiar su contraseña del PIN después del restablecimiento. También se aplicará la validación de la contraseña."
"setPasswordNotice": "Habilitar esto significa que el usuario no tiene que cambiar su contraseña del PIN después del restablecimiento. También se aplicará la validación de la contraseña.",
"resetLinksRequiredForUserPage": "Obligatorio para restablecimiento de contraseña de autoservicio en la Página de usuario."
},
"passwordValidation": {
"title": "Validación de contraseña",
@ -148,5 +151,17 @@
"messages": {
"description": "jfa-go puede enviar restablecimientos de contraseña y varios mensajes a través de correo electrónico, Discord, Telegram y/o Matrix. Puede configurar el correo electrónico a continuación y los demás se pueden configurar en Configuración más adelante. Las instrucciones se pueden encontrar en el {n}. Si no lo necesita, puede desactivar estas funciones aquí.",
"title": "Mensajes"
},
"userPage": {
"title": "Página de usuario",
"customizeMessages": "Clique en el botón de editar al lado de \"Página de usuario\" en ajustes para establecerlos más tarde.",
"description": "La página de usuario (mostrada como \"Mi cuenta\") permite a los usuarios acceder a información sobre su cuenta, como por ejemplo sus métodos de contacto y caducidad de la cuenta. También pueden cambiar su contraseña, iniciar un restablecimiento de contraseña, y vincular o cambiar métodos de contacto, sin tener que recurrir a usted. Además, se pueden enseñar mensajes personalizados de Markdown a los usuarios antes y después de que inicien sesión.",
"requiredSettings": "Debe establecerse un inicio de sesión en jfa-go a través de Jellyfin. Asegúrese de que \"Restablecer contraseña a través de enlace\" está seleccionado para un restablecimiento de contraseña de autoservicio."
},
"proxy": {
"title": "Proxy",
"description": "Hacer que jfa-go realice todas las conexiones a través de un proxy HTTP/SOCK5. La conexión a Jellyfin será evaluada a través de este.",
"protocol": "Protocolo",
"address": "Dirección (incluido el puerto)"
}
}

View File

@ -3,12 +3,12 @@
"name": "Français (FR)"
},
"strings": {
"pageTitle": "Installation - JFA-Go",
"pageTitle": "Installation - jfa-go",
"next": "Suivant",
"back": "Retour",
"optional": "Optionnel",
"serverType": "Type de serveur",
"disabled": "Désactiver",
"disabled": "Désactivé",
"enabled": "Activé",
"port": "Port",
"message": "Message",
@ -22,7 +22,8 @@
"errorNotAdmin": "L'utilisateur n'est pas autorisé à gérer le serveur.",
"errorConnectionRefused": "Connexion refusée.",
"error": "Erreur",
"errorUnknown": "Erreur inconnue, vérifier les logs de l'application."
"errorUnknown": "Erreur inconnue, vérifier les logs de l'application.",
"errorProxy": "Configuration du proxy invalide."
},
"startPage": {
"welcome": "Bienvenue !",
@ -32,7 +33,7 @@
},
"endPage": {
"finished": "Terminé !",
"restartMessage": "Vous pouvez configurer les bots Discord/Telegram/Matrix, personnaliser vos messages et plus encore dans Paramètres. Cliquez ci-dessous pour redémarrer, puis actualisez la page.",
"restartMessage": "Vous pouvez configurer les bots Discord/Telegram/Matrix, personnaliser lapparence vos messages, et plus encore dans Paramètres. Cliquez ci-dessous pour redémarrer, puis actualisez la page.",
"refreshPage": "Rafraichir"
},
"language": {
@ -63,7 +64,8 @@
"adminOnly": "Administrateurs seulement (recommandé)",
"emailNotice": "Votre adresse e-mail peut être utilisée pour recevoir des notifications.",
"allowAll": "Autoriser tous les utilisateurs de Jellyfin à se connecter",
"allowAllDescription": "Non recommandé, vous devez autoriser individuellement les utilisateurs à se connecter une fois la configuration effectuée."
"allowAllDescription": "Non recommandé, vous devez autoriser individuellement les utilisateurs à se connecter une fois la configuration effectuée.",
"authorizeManualUserPageNotice": "Son utilisation désactivera la fonctionnalité \"Page utilisateur\"."
},
"jellyfinEmby": {
"title": "Jellyfin/Emby",
@ -108,14 +110,15 @@
},
"passwordResets": {
"title": "Réinitialisation de mot de passe",
"description": "Lorsqu'un utilisateur essaie de réinitialiser son mot de passe, Jellyfin créé un fichier nommé 'passwordreset-*.json' qui contient le code PIN. jfa-go lit le fichier et envoie le code PIN à l'utilisateur.",
"description": "Lorsqu'un utilisateur essaie de réinitialiser son mot de passe, Jellyfin créé un fichier nommé 'passwordreset-*.json' qui contient le code PIN. jfa-go lit le fichier et envoie le code PIN à l'utilisateur. Si vous avez activé la fonctionnalité « Page utilisateur », une réinitialisation peut également y être effectuée, en fonction d'un nom d'utilisateur, d'un e-mail ou d'une méthode de contact.",
"pathToJellyfin": "Chemin du dossier de configuration de Jellyfin",
"pathToJellyfinNotice": "Si vous ne savez pas où c'est, essayez de réinitialiser votre mot de passe dans Jellyfin. Une popup avec '<path to jellyfin>/passwordreset-*.json' apparaitra.",
"pathToJellyfinNotice": "Si vous ne savez pas où c'est, essayez de réinitialiser votre mot de passe dans Jellyfin. Une popup avec '<path to jellyfin>/passwordreset-*.json' apparaitra. Cela n'est pas nécessaire si vous souhaitez uniquement utiliser la réinitialisation de mot de passe en libre-service via la « Page utilisateur ».",
"resetLinks": "Envoyer un lien plutôt qu'un PIN",
"resetLinksNotice": "Si l'intégration est activée, utilisez ceci pour synchroniser les réinitialisations de mots de passe Jellyfin avec Ombi.",
"resetLinksLanguage": "Langue du lien de réinitialisation par défaut",
"setPassword": "Définir le mot de passe via le lien",
"setPasswordNotice": "L'activation de cette option signifie que l'utilisateur n'a pas à modifier son mot de passe à partir du code PIN après la réinitialisation. La validation du mot de passe sera également appliquée."
"setPasswordNotice": "L'activation de cette option signifie que l'utilisateur n'a pas à modifier son mot de passe à partir du code PIN après la réinitialisation. La validation du mot de passe sera également appliquée.",
"resetLinksRequiredForUserPage": "Requis pour la réinitialisation du mot de passe par l'utilisateur sur la page utilisateur."
},
"passwordValidation": {
"title": "Validation du mot de passe",
@ -148,5 +151,17 @@
"messages": {
"title": "Messages",
"description": "jfa-go peut envoyer des réinitialisations de mot de passe et divers messages par e-mail, Discord, Telegram et/ou Matrix. Vous pouvez configurer l'e-mail ci-dessous, et les autres peuvent être configurés dans les paramètres plus tard. Les instructions se trouvent sur le {n}. Si vous n'en avez pas besoin, vous pouvez désactiver ces fonctionnalités ici."
},
"userPage": {
"title": "Page utilisateur",
"customizeMessages": "Cliquez sur le bouton Modifier à côté de « Page utilisateur » dans les paramètres pour les définir ultérieurement.",
"requiredSettings": "La connexion à jfa-go via Jellyfin doit être définie. Assurez-vous que « Réinitialiser le mot de passe via un lien » est sélectionné ultérieurement pour les réinitialisations de mot de passe par les utilisateurs.",
"description": "La page utilisateur (affichée sous « Mon compte ») permet aux utilisateurs d'accéder aux informations sur leur compte, telles que leurs méthodes de contact et l'expiration de leur compte. Ils peuvent également modifier leur mot de passe, lancer une réinitialisation de mot de passe et lier/modifier les méthodes de contact, sans avoir à vous le demander. De plus, des messages personnalisés peuvent être affichés aux utilisateurs avant et après la connexion."
},
"proxy": {
"title": "Proxy",
"protocol": "Protocole",
"address": "Adresse (y compris le port)",
"description": "Demandez à jfa-go d'établir toutes les connexions via un proxy HTTP/SOCKS5. La connexion à Jellyfin sera testée à travers cela."
}
}

View File

@ -3,12 +3,12 @@
"name": "Português (BR)"
},
"strings": {
"pageTitle": "Configuração - jfa-go",
"pageTitle": "Configuração do jfa-go",
"next": "Próximo",
"back": "Voltar",
"optional": "Opcional",
"serverType": "Tipo de Servidor",
"disabled": "Desativado",
"disabled": "Desabilitado",
"enabled": "Habilitado",
"port": "Porta",
"message": "Mensagem",
@ -20,7 +20,10 @@
"errorUserDisabled": "O usuário pode estar desabilitado.",
"error404": "404, verifique a URL interna.",
"errorInvalidUserPass": "Usuário ou Senha Inválidos.",
"errorConnectionRefused": "Conexão recusada."
"errorConnectionRefused": "Conexão recusada.",
"errorUnknown": "Erro desconhecido. Verifique os registros do aplicativo.",
"errorProxy": "Configuração de proxy inválida.",
"error": "Error"
},
"startPage": {
"welcome": "Bem Vindo!",
@ -61,7 +64,8 @@
"adminOnly": "Apenas usuários administradores (recomendado)",
"emailNotice": "Seu endereço de email pode ser usado para receber notificações.",
"allowAll": "Permitir que todos os usuários do Jellyfin façam login",
"allowAllDescription": "Não recomendado, você deve permitir que usuários individuais façam login após a configuração."
"allowAllDescription": "Não recomendado, você deve permitir que usuários individuais façam login após a configuração.",
"authorizeManualUserPageNotice": "Usar isso desativará o recurso \"Página do usuário\"."
},
"jellyfinEmby": {
"title": "Jellyfin/Emby",
@ -113,7 +117,8 @@
"resetLinksNotice": "Se a integração do Ombi estiver habilitada, use para sincronizar as redefinições de senha do Jellyfin com o Ombi.",
"resetLinksLanguage": "Idioma do link de redefinição padrão",
"setPassword": "Definir a senha por meio de link",
"setPasswordNotice": "Se habilitar significa que o usuário não precisa alterar a senha do PIN após a redefinição. A validação de senha também será aplicada."
"setPasswordNotice": "Se habilitar significa que o usuário não precisa alterar a senha do PIN após a redefinição. A validação de senha também será aplicada.",
"resetLinksRequiredForUserPage": "Obrigatório para redefinição de senha de autoatendimento na página do usuário."
},
"passwordValidation": {
"title": "Validar Senha",
@ -125,7 +130,7 @@
"special": "Caracteres Especial (%, *, etc.)"
},
"helpMessages": {
"title": "Mensagem de Ajuda",
"title": "Mensagem para Ajuda",
"description": "Essas mensagens serão exibidas na página de criação de conta e em alguns emails.",
"contactMessage": "Mensagem de Contato",
"contactMessageNotice": "Exibido na parte inferior de todas as páginas, exceto na administradora.",
@ -146,5 +151,17 @@
"messages": {
"title": "Mensagens",
"description": "jfa-go pode enviar redefinições de senha e várias mensagens por e-mail, Discord, Telegram e/ou Matrix. Você pode configurar o e-mail abaixo e os outros podem ser configurados em Configurações posteriormente. As instruções podem ser encontradas em {n}. Se você não precisar, pode desativar esses recursos aqui."
},
"proxy": {
"description": "Faça com que o jfa-go faça todas as conexões por meio de um proxy HTTP/SOCKS5. A conexão com o Jellyfin será testada através disso.",
"title": "Proxy",
"protocol": "Procedimento",
"address": "Endereço (incluindo porta)"
},
"userPage": {
"description": "A página do usuário (mostrada como “Minha Conta”) permite que os usuários acessem informações sobre sua conta, como métodos de contato e vencimento da conta. Eles também podem alterar sua senha, iniciar uma redefinição de senha e vincular/alterar métodos de contato, sem precisar perguntar a você. Além disso, mensagens Markdown personalizadas podem ser mostradas aos usuários antes e depois do entrar.",
"title": "Página de usuário",
"customizeMessages": "Clique no botão de edição próximo a “Página do usuário” nas configurações para defini-las mais tarde.",
"requiredSettings": "Ao entra no jfa-go via Jellyfin deve ser configurado. Certifique-se de que \"redefinir senha via link\" esteja selecionado posteriormente para redefinições de senha de autoatendimento."
}
}

View File

@ -8,9 +8,11 @@
"invalidPIN": "Ce code PIN est invalide, réessayez.",
"pinSuccess": "Succès ! Vous pouvez maintenant retourner à la page dinscription.",
"languageMessage": "Note : Découvrez les langues disponibles avec {command} et paramétrez la langue souhaitée avec {command} <language code>.",
"discordStartMessage": "Salut !\nEntrez votre code PIN avec `/pin <PIN>` pour vérifier votre compte.",
"discordStartMessage": "Salut !\n.Entrez votre code PIN avec `/pin <PIN>` pour vérifier votre compte.",
"discordDMs": "Veuillez vérifier vos DM pour une réponse.",
"languageSet": "Langue définie sur {language}.",
"languageMessageDiscord": "Note: définissez votre langue avec /lang <nom de la langue>."
"languageMessageDiscord": "Note : définissez votre langue avec /lang <nom de la langue>.",
"sentInvite": "Invitation envoyée.",
"sentInviteFailure": "Échec de l'envoi de l'invitation, vérifiez les journaux."
}
}

View File

@ -11,6 +11,8 @@
"languageMessageDiscord": "Nota: defina seu idioma com /lang <language name>.",
"languageSet": "Idioma definido como {idioma}.",
"discordDMs": "Por favor, verifique seus DMs para uma resposta.",
"discordStartMessage": "Oi!\n Digite seu PIN com `/pin <PIN>` para verificar sua conta."
"discordStartMessage": "Oi!\n Digite seu PIN com `/pin <PIN>` para verificar sua conta.",
"sentInvite": "Enviou convite.",
"sentInviteFailure": "Falha ao enviar o convite. Verifique os registros."
}
}

12
package-lock.json generated
View File

@ -4816,9 +4816,9 @@
}
},
"node_modules/semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"bin": {
"semver": "bin/semver"
}
@ -10364,9 +10364,9 @@
}
},
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
},
"send": {
"version": "0.18.0",

View File

@ -24,20 +24,30 @@ func (app *appContext) loadHTML(router *gin.Engine) {
app.err.Fatalf("Couldn't access template directory: \"%s\"", templatePath)
return
}
loadFiles := make([]string, len(htmlFiles))
for i, f := range htmlFiles {
loadInternal := []string{}
loadExternal := []string{}
for _, f := range htmlFiles {
if _, err := os.Stat(filepath.Join(customPath, f.Name())); os.IsNotExist(err) {
app.debug.Printf("Using default \"%s\"", f.Name())
loadFiles[i] = FSJoin(templatePath, f.Name())
loadInternal = append(loadInternal, FSJoin(templatePath, f.Name()))
} else {
app.info.Printf("Using custom \"%s\"", f.Name())
loadFiles[i] = filepath.Join(filepath.Join(customPath, f.Name()))
loadExternal = append(loadExternal, filepath.Join(filepath.Join(customPath, f.Name())))
}
}
tmpl, err := template.ParseFS(localFS, loadFiles...)
var tmpl *template.Template
if len(loadInternal) != 0 {
tmpl, err = template.ParseFS(localFS, loadInternal...)
if err != nil {
app.err.Fatalf("Failed to load templates: %v", err)
}
}
if len(loadExternal) != 0 {
tmpl, err = tmpl.ParseFiles(loadExternal...)
if err != nil {
app.err.Fatalf("Failed to load external templates: %v", err)
}
}
router.SetHTMLTemplate(tmpl)
}

View File

@ -266,13 +266,20 @@ class ReferralCard {
get code(): string { return this._code; }
set code(c: string) {
this._code = c;
let url = window.location.href;
for (let split of ["#", "?", "account", "my"]) {
url = url.split(split)[0];
let u = new URL(window.location.href);
let path = u.pathname;
for (let split of ["account", "my"]) {
path = path.split(split)[0];
}
if (url.slice(-1) != "/") { url += "/"; }
url = url + "invite/" + this._code;
this._url = url;
if (path.slice(-1) != "/") { path += "/"; }
path = path + "invite/" + this._code;
u.pathname = path;
u.hash = "";
u.search = "";
this._url = u.toString();
}
get remaining_uses(): number { return this._remainingUses; }