mirror of
https://github.com/hrfee/jfa-go.git
synced 2024-11-09 20:00:12 +00:00
Compare commits
5 Commits
726acb9c29
...
d3c5feaf1b
Author | SHA1 | Date | |
---|---|---|---|
d3c5feaf1b | |||
96c62f556b | |||
ebdad3f7c7 | |||
2fc2f1ddb3 | |||
a1af6e3892 |
3
.gitignore
vendored
3
.gitignore
vendored
@ -21,3 +21,6 @@ cl.md
|
|||||||
mautrix/
|
mautrix/
|
||||||
tempts/
|
tempts/
|
||||||
matacc.txt
|
matacc.txt
|
||||||
|
scripts/langmover/lang
|
||||||
|
scripts/langmover/lang2
|
||||||
|
scripts/langmover/out
|
||||||
|
@ -2,6 +2,23 @@ package main
|
|||||||
|
|
||||||
import "github.com/gin-gonic/gin"
|
import "github.com/gin-gonic/gin"
|
||||||
|
|
||||||
func (app *appContext) HelloWorld(gc *gin.Context) {
|
// @Summary Returns the logged-in user's Jellyfin ID & Username.
|
||||||
gc.JSON(200, stringResponse{"It worked!", "none"})
|
// @Produce json
|
||||||
|
// @Success 200 {object} MyDetailsDTO
|
||||||
|
// @Router /my/details [get]
|
||||||
|
// @tags User Page
|
||||||
|
func (app *appContext) MyDetails(gc *gin.Context) {
|
||||||
|
resp := MyDetailsDTO{
|
||||||
|
Id: gc.GetString("jfId"),
|
||||||
|
}
|
||||||
|
|
||||||
|
user, status, err := app.jf.UserByID(resp.Id, false)
|
||||||
|
if status != 200 || err != nil {
|
||||||
|
app.err.Printf("Failed to get Jellyfin user (%d): %+v\n", status, err)
|
||||||
|
respond(500, "Failed to get user", gc)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp.Username = user.Name
|
||||||
|
|
||||||
|
gc.JSON(200, resp)
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
{{ template "login-modal.html" . }}
|
{{ template "login-modal.html" . }}
|
||||||
<div class="page-container">
|
<div class="page-container">
|
||||||
<div class="card @low dark:~d_neutral mb-4" id="card-user">
|
<div class="card @low dark:~d_neutral mb-4" id="card-user">
|
||||||
Not logged in.
|
<span class="heading"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script src="{{ .urlBase }}/js/user.js" type="module"></script>
|
<script src="{{ .urlBase }}/js/user.js" type="module"></script>
|
||||||
|
6
lang.go
6
lang.go
@ -26,8 +26,9 @@ func (ls *adminLangs) getOptions() [][2]string {
|
|||||||
type commonLangs map[string]commonLang
|
type commonLangs map[string]commonLang
|
||||||
|
|
||||||
type commonLang struct {
|
type commonLang struct {
|
||||||
Meta langMeta `json:"meta"`
|
Meta langMeta `json:"meta"`
|
||||||
Strings langSection `json:"strings"`
|
Strings langSection `json:"strings"`
|
||||||
|
Notifications langSection `json:"notifications"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type adminLang struct {
|
type adminLang struct {
|
||||||
@ -57,6 +58,7 @@ type userLang struct {
|
|||||||
notificationsJSON string
|
notificationsJSON string
|
||||||
ValidationStrings map[string]quantityString `json:"validationStrings"`
|
ValidationStrings map[string]quantityString `json:"validationStrings"`
|
||||||
validationStringsJSON string
|
validationStringsJSON string
|
||||||
|
JSON string
|
||||||
}
|
}
|
||||||
|
|
||||||
type pwrLangs map[string]pwrLang
|
type pwrLangs map[string]pwrLang
|
||||||
|
@ -15,8 +15,6 @@
|
|||||||
"warning": "Advarsel",
|
"warning": "Advarsel",
|
||||||
"inviteInfiniteUsesWarning": "invitationer med uendelig brug kan blive misbrugt",
|
"inviteInfiniteUsesWarning": "invitationer med uendelig brug kan blive misbrugt",
|
||||||
"inviteSendToEmail": "Send til",
|
"inviteSendToEmail": "Send til",
|
||||||
"login": "Log på",
|
|
||||||
"logout": "Log ud",
|
|
||||||
"create": "Opret",
|
"create": "Opret",
|
||||||
"apply": "Anvend",
|
"apply": "Anvend",
|
||||||
"delete": "Slet",
|
"delete": "Slet",
|
||||||
@ -128,13 +126,9 @@
|
|||||||
"updateAppliedRefresh": "Opdatering anvendt, genindlæs venligst siden.",
|
"updateAppliedRefresh": "Opdatering anvendt, genindlæs venligst siden.",
|
||||||
"telegramVerified": "Telegram konto verificeret.",
|
"telegramVerified": "Telegram konto verificeret.",
|
||||||
"accountConnected": "Konto tilsluttet.",
|
"accountConnected": "Konto tilsluttet.",
|
||||||
"errorConnection": "Kunne ikke oprette forbindelse til jfa-go.",
|
|
||||||
"error401Unauthorized": "Adgang nægtet. Prøv at genindlæse siden.",
|
|
||||||
"errorSettingsAppliedNoHomescreenLayout": "Indstillingerne blev anvendt, men anvendelse af startskærmens layout mislykkedes muligvis.",
|
"errorSettingsAppliedNoHomescreenLayout": "Indstillingerne blev anvendt, men anvendelse af startskærmens layout mislykkedes muligvis.",
|
||||||
"errorHomescreenAppliedNoSettings": "Startskærmens layout blev anvendt, men anvendelsen af indstillingerne mislykkedes muligvis.",
|
"errorHomescreenAppliedNoSettings": "Startskærmens layout blev anvendt, men anvendelsen af indstillingerne mislykkedes muligvis.",
|
||||||
"errorSettingsFailed": "Ansøgningen mislykkedes.",
|
"errorSettingsFailed": "Ansøgningen mislykkedes.",
|
||||||
"errorLoginBlank": "Brugernavnet og/eller adgangskoden blev efterladt tomme.",
|
|
||||||
"errorUnknown": "Ukendt fejl.",
|
|
||||||
"errorSaveEmail": "Kunne ikke gemme e-mail.",
|
"errorSaveEmail": "Kunne ikke gemme e-mail.",
|
||||||
"errorBlankFields": "Felter blev efterladt tomme",
|
"errorBlankFields": "Felter blev efterladt tomme",
|
||||||
"errorDeleteProfile": "Kunne ikke slette profilen {n}",
|
"errorDeleteProfile": "Kunne ikke slette profilen {n}",
|
||||||
|
@ -13,8 +13,6 @@
|
|||||||
"warning": "Warnung",
|
"warning": "Warnung",
|
||||||
"inviteInfiniteUsesWarning": "Invites mit unendlich vielen Verwendungen können missbräuchlich verwendet werden",
|
"inviteInfiniteUsesWarning": "Invites mit unendlich vielen Verwendungen können missbräuchlich verwendet werden",
|
||||||
"inviteSendToEmail": "Senden an",
|
"inviteSendToEmail": "Senden an",
|
||||||
"login": "Anmelden",
|
|
||||||
"logout": "Abmelden",
|
|
||||||
"create": "Erstellen",
|
"create": "Erstellen",
|
||||||
"apply": "Anwenden",
|
"apply": "Anwenden",
|
||||||
"delete": "Löschen",
|
"delete": "Löschen",
|
||||||
@ -122,13 +120,9 @@
|
|||||||
"createProfile": "Profil {n} erstellt.",
|
"createProfile": "Profil {n} erstellt.",
|
||||||
"saveSettings": "Einstellungen wurden gespeichert",
|
"saveSettings": "Einstellungen wurden gespeichert",
|
||||||
"setOmbiDefaults": "Ombi-Standardeinstellungen gespeichert.",
|
"setOmbiDefaults": "Ombi-Standardeinstellungen gespeichert.",
|
||||||
"errorConnection": "Konnte keine Verbindung zu jfa-go herstellen.",
|
|
||||||
"error401Unauthorized": "Unberechtigt. Versuch, die Seite zu aktualisieren.",
|
|
||||||
"errorSettingsAppliedNoHomescreenLayout": "Einstellungen wurden angewendet, aber die Anwendung des Startbildschirmlayouts ist möglicherweise fehlgeschlagen.",
|
"errorSettingsAppliedNoHomescreenLayout": "Einstellungen wurden angewendet, aber die Anwendung des Startbildschirmlayouts ist möglicherweise fehlgeschlagen.",
|
||||||
"errorHomescreenAppliedNoSettings": "Startbildschirmlayout wurde angewendet, aber die Anwendung der Einstellungen ist möglicherweise fehlgeschlagen.",
|
"errorHomescreenAppliedNoSettings": "Startbildschirmlayout wurde angewendet, aber die Anwendung der Einstellungen ist möglicherweise fehlgeschlagen.",
|
||||||
"errorSettingsFailed": "Anwendung ist fehlgeschlagen.",
|
"errorSettingsFailed": "Anwendung ist fehlgeschlagen.",
|
||||||
"errorLoginBlank": "Der Benutzername und/oder das Passwort wurden nicht ausgefüllt.",
|
|
||||||
"errorUnknown": "Unbekannter Fehler.",
|
|
||||||
"errorBlankFields": "Felder wurden nicht ausgefüllt",
|
"errorBlankFields": "Felder wurden nicht ausgefüllt",
|
||||||
"errorDeleteProfile": "Fehler beim Löschen des Profils {n}",
|
"errorDeleteProfile": "Fehler beim Löschen des Profils {n}",
|
||||||
"errorLoadProfiles": "Fehler beim Laden der Profile.",
|
"errorLoadProfiles": "Fehler beim Laden der Profile.",
|
||||||
|
@ -13,8 +13,6 @@
|
|||||||
"warning": "Προσοχή",
|
"warning": "Προσοχή",
|
||||||
"inviteInfiniteUsesWarning": "μπορεί να γίνει κατάχρηση των προσκλήσεων με άπειρες χρήσεις",
|
"inviteInfiniteUsesWarning": "μπορεί να γίνει κατάχρηση των προσκλήσεων με άπειρες χρήσεις",
|
||||||
"inviteSendToEmail": "Αποστολή σε",
|
"inviteSendToEmail": "Αποστολή σε",
|
||||||
"login": "Σύνδεση",
|
|
||||||
"logout": "Αποσύνδεση",
|
|
||||||
"create": "Δημιουργία",
|
"create": "Δημιουργία",
|
||||||
"apply": "Εφαρμογή",
|
"apply": "Εφαρμογή",
|
||||||
"delete": "Διαγραφή",
|
"delete": "Διαγραφή",
|
||||||
@ -98,13 +96,9 @@
|
|||||||
"createProfile": "Δημιουργήθηκε το {n} προφίλ.",
|
"createProfile": "Δημιουργήθηκε το {n} προφίλ.",
|
||||||
"saveSettings": "Οι ρυθμίσεις αποθηκεύτηκαν",
|
"saveSettings": "Οι ρυθμίσεις αποθηκεύτηκαν",
|
||||||
"setOmbiDefaults": "Αποθηκεύτηκαν οι προκαθορισμένες ρυθμίσεις του ombi.",
|
"setOmbiDefaults": "Αποθηκεύτηκαν οι προκαθορισμένες ρυθμίσεις του ombi.",
|
||||||
"errorConnection": "Δεν μπόρεσε να συνδεθεί με το jfa-go.",
|
|
||||||
"error401Unauthorized": "Ανεξουσιοδότητος. Προσπαθήστε να κάνετε επαναφόρτωση την σελίδα.",
|
|
||||||
"errorSettingsAppliedNoHomescreenLayout": "Οι ρυθμίσεις αποθηκεύτηκαν, αλλά η καταχώρηση δομής αρχικής οθόνης ίσως απέτυχε.",
|
"errorSettingsAppliedNoHomescreenLayout": "Οι ρυθμίσεις αποθηκεύτηκαν, αλλά η καταχώρηση δομής αρχικής οθόνης ίσως απέτυχε.",
|
||||||
"errorHomescreenAppliedNoSettings": "Η δομή αρχικής οθόνης εφαρμόστηκε, αλλά οι ρυθμίσεις ίσως απέτυχαν.",
|
"errorHomescreenAppliedNoSettings": "Η δομή αρχικής οθόνης εφαρμόστηκε, αλλά οι ρυθμίσεις ίσως απέτυχαν.",
|
||||||
"errorSettingsFailed": "Η εφαρμογή απέτυχε.",
|
"errorSettingsFailed": "Η εφαρμογή απέτυχε.",
|
||||||
"errorLoginBlank": "Το όνομα χρήστη και/ή ο κωδικός ήταν κενά.",
|
|
||||||
"errorUnknown": "Άγνωστο σφάλμα.",
|
|
||||||
"errorBlankFields": "Τα πεφία ήταν κενά",
|
"errorBlankFields": "Τα πεφία ήταν κενά",
|
||||||
"errorDeleteProfile": "Αποτυχία διαγραφής του προφίλ {n}",
|
"errorDeleteProfile": "Αποτυχία διαγραφής του προφίλ {n}",
|
||||||
"errorLoadProfiles": "Αποτυχία φόρτωσης των προφίλ.",
|
"errorLoadProfiles": "Αποτυχία φόρτωσης των προφίλ.",
|
||||||
|
@ -68,8 +68,6 @@
|
|||||||
"inviteHours": "Hours",
|
"inviteHours": "Hours",
|
||||||
"inviteInfiniteUsesWarning": "invites with infinite uses can be used abusively",
|
"inviteInfiniteUsesWarning": "invites with infinite uses can be used abusively",
|
||||||
"inviteSendToEmail": "Send to",
|
"inviteSendToEmail": "Send to",
|
||||||
"login": "Login",
|
|
||||||
"logout": "Logout",
|
|
||||||
"apply": "Apply",
|
"apply": "Apply",
|
||||||
"delete": "Delete",
|
"delete": "Delete",
|
||||||
"updates": "Updates",
|
"updates": "Updates",
|
||||||
@ -175,9 +173,7 @@
|
|||||||
},
|
},
|
||||||
"notifications": {
|
"notifications": {
|
||||||
"errorSettingsFailed": "Application failed.",
|
"errorSettingsFailed": "Application failed.",
|
||||||
"errorLoginBlank": "The username and/or password was left blank.",
|
|
||||||
"errorLoadSettings": "Failed to load settings.",
|
"errorLoadSettings": "Failed to load settings.",
|
||||||
"errorUnknown": "Unknown error.",
|
|
||||||
"errorDeleteProfile": "Failed to delete profile {n}",
|
"errorDeleteProfile": "Failed to delete profile {n}",
|
||||||
"sentAnnouncement": "Announcement sent.",
|
"sentAnnouncement": "Announcement sent.",
|
||||||
"savedAnnouncement": "Announcement saved.",
|
"savedAnnouncement": "Announcement saved.",
|
||||||
@ -186,7 +182,6 @@
|
|||||||
"updateAppliedRefresh": "Update applied, please refresh.",
|
"updateAppliedRefresh": "Update applied, please refresh.",
|
||||||
"telegramVerified": "Telegram account verified.",
|
"telegramVerified": "Telegram account verified.",
|
||||||
"accountConnected": "Account connected.",
|
"accountConnected": "Account connected.",
|
||||||
"error401Unauthorized": "Unauthorised. Try refreshing the page.",
|
|
||||||
"errorSettingsAppliedNoHomescreenLayout": "Settings were applied, but applying homescreen layout may have failed.",
|
"errorSettingsAppliedNoHomescreenLayout": "Settings were applied, but applying homescreen layout may have failed.",
|
||||||
"errorSaveEmail": "Failed to save email.",
|
"errorSaveEmail": "Failed to save email.",
|
||||||
"errorLoadProfiles": "Failed to load profiles.",
|
"errorLoadProfiles": "Failed to load profiles.",
|
||||||
@ -207,7 +202,6 @@
|
|||||||
"saveEmail": "Email saved.",
|
"saveEmail": "Email saved.",
|
||||||
"createProfile": "Created profile {n}.",
|
"createProfile": "Created profile {n}.",
|
||||||
"saveSettings": "Settings were saved",
|
"saveSettings": "Settings were saved",
|
||||||
"errorConnection": "Couldn't connect to jfa-go.",
|
|
||||||
"errorHomescreenAppliedNoSettings": "Homescreen layout was applied, but applying settings may have failed.",
|
"errorHomescreenAppliedNoSettings": "Homescreen layout was applied, but applying settings may have failed.",
|
||||||
"errorBlankFields": "Fields were left blank",
|
"errorBlankFields": "Fields were left blank",
|
||||||
"errorSetDefaultProfile": "Failed to set default profile.",
|
"errorSetDefaultProfile": "Failed to set default profile.",
|
||||||
|
@ -15,8 +15,6 @@
|
|||||||
"warning": "Warning",
|
"warning": "Warning",
|
||||||
"inviteInfiniteUsesWarning": "invites with infinite uses can be used abusively",
|
"inviteInfiniteUsesWarning": "invites with infinite uses can be used abusively",
|
||||||
"inviteSendToEmail": "Send to",
|
"inviteSendToEmail": "Send to",
|
||||||
"login": "Login",
|
|
||||||
"logout": "Logout",
|
|
||||||
"create": "Create",
|
"create": "Create",
|
||||||
"apply": "Apply",
|
"apply": "Apply",
|
||||||
"delete": "Delete",
|
"delete": "Delete",
|
||||||
@ -139,13 +137,9 @@
|
|||||||
"updateAppliedRefresh": "Update applied, please refresh.",
|
"updateAppliedRefresh": "Update applied, please refresh.",
|
||||||
"telegramVerified": "Telegram account verified.",
|
"telegramVerified": "Telegram account verified.",
|
||||||
"accountConnected": "Account connected.",
|
"accountConnected": "Account connected.",
|
||||||
"errorConnection": "Couldn't connect to jfa-go.",
|
|
||||||
"error401Unauthorized": "Unauthorized. Try refreshing the page.",
|
|
||||||
"errorSettingsAppliedNoHomescreenLayout": "Settings were applied, but applying homescreen layout may have failed.",
|
"errorSettingsAppliedNoHomescreenLayout": "Settings were applied, but applying homescreen layout may have failed.",
|
||||||
"errorHomescreenAppliedNoSettings": "Homescreen layout was applied, but applying settings may have failed.",
|
"errorHomescreenAppliedNoSettings": "Homescreen layout was applied, but applying settings may have failed.",
|
||||||
"errorSettingsFailed": "Application failed.",
|
"errorSettingsFailed": "Application failed.",
|
||||||
"errorLoginBlank": "The username and/or password were left blank.",
|
|
||||||
"errorUnknown": "Unknown error.",
|
|
||||||
"errorSaveEmail": "Failed to save email.",
|
"errorSaveEmail": "Failed to save email.",
|
||||||
"errorBlankFields": "Fields were left blank",
|
"errorBlankFields": "Fields were left blank",
|
||||||
"errorDeleteProfile": "Failed to delete profile {n}",
|
"errorDeleteProfile": "Failed to delete profile {n}",
|
||||||
|
@ -15,8 +15,6 @@
|
|||||||
"warning": "Advertencia",
|
"warning": "Advertencia",
|
||||||
"inviteInfiniteUsesWarning": "Las invitaciones con usos infinitos se pueden usar de forma abusiva",
|
"inviteInfiniteUsesWarning": "Las invitaciones con usos infinitos se pueden usar de forma abusiva",
|
||||||
"inviteSendToEmail": "Enviar a",
|
"inviteSendToEmail": "Enviar a",
|
||||||
"login": "Acceso",
|
|
||||||
"logout": "Cerrar sesión",
|
|
||||||
"create": "Crear",
|
"create": "Crear",
|
||||||
"apply": "Aplicar",
|
"apply": "Aplicar",
|
||||||
"delete": "Eliminar",
|
"delete": "Eliminar",
|
||||||
@ -125,13 +123,9 @@
|
|||||||
"sentAnnouncement": "Anuncio enviado.",
|
"sentAnnouncement": "Anuncio enviado.",
|
||||||
"setOmbiDefaults": "Valores predeterminados de ombi almacenados.",
|
"setOmbiDefaults": "Valores predeterminados de ombi almacenados.",
|
||||||
"updateApplied": "Actualización aplicada, por favor reinicie.",
|
"updateApplied": "Actualización aplicada, por favor reinicie.",
|
||||||
"errorConnection": "No se pudo conectar a jfa-go.",
|
|
||||||
"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 la aplicación de la configuración haya fallado.",
|
"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.",
|
|
||||||
"errorUnknown": "Error desconocido.",
|
|
||||||
"errorSaveEmail": "No se pudo guardar el correo electrónico.",
|
"errorSaveEmail": "No se pudo guardar el correo electrónico.",
|
||||||
"errorBlankFields": "Los campos se dejaron en blanco",
|
"errorBlankFields": "Los campos se dejaron en blanco",
|
||||||
"errorDeleteProfile": "No se pudo borrar el perfil {n}",
|
"errorDeleteProfile": "No se pudo borrar el perfil {n}",
|
||||||
|
@ -15,8 +15,6 @@
|
|||||||
"warning": "Attention",
|
"warning": "Attention",
|
||||||
"inviteInfiniteUsesWarning": "les invitations infinies peuvent être utilisées abusivement",
|
"inviteInfiniteUsesWarning": "les invitations infinies peuvent être utilisées abusivement",
|
||||||
"inviteSendToEmail": "Envoyer à",
|
"inviteSendToEmail": "Envoyer à",
|
||||||
"login": "S'identifier",
|
|
||||||
"logout": "Se déconnecter",
|
|
||||||
"create": "Créer",
|
"create": "Créer",
|
||||||
"apply": "Appliquer",
|
"apply": "Appliquer",
|
||||||
"delete": "Effacer",
|
"delete": "Effacer",
|
||||||
@ -123,13 +121,9 @@
|
|||||||
"createProfile": "Profil créé {n}.",
|
"createProfile": "Profil créé {n}.",
|
||||||
"saveSettings": "Les paramètres ont été enregistrés",
|
"saveSettings": "Les paramètres ont été enregistrés",
|
||||||
"setOmbiDefaults": "Valeurs par défaut de Ombi.",
|
"setOmbiDefaults": "Valeurs par défaut de Ombi.",
|
||||||
"errorConnection": "Impossible de se connecter à jfa-go.",
|
|
||||||
"error401Unauthorized": "Non autorisé. Essayez d'actualiser la page.",
|
|
||||||
"errorSettingsAppliedNoHomescreenLayout": "Les paramètres ont été appliqués, mais l'application de la disposition de l'écran d'accueil a peut-être échoué.",
|
"errorSettingsAppliedNoHomescreenLayout": "Les paramètres ont été appliqués, mais l'application de la disposition de l'écran d'accueil a peut-être échoué.",
|
||||||
"errorHomescreenAppliedNoSettings": "La disposition de l'écran d'accueil a été appliquée, mais l'application des paramètres a peut-être échoué.",
|
"errorHomescreenAppliedNoSettings": "La disposition de l'écran d'accueil a été appliquée, mais l'application des paramètres a peut-être échoué.",
|
||||||
"errorSettingsFailed": "L'application a échoué.",
|
"errorSettingsFailed": "L'application a échoué.",
|
||||||
"errorLoginBlank": "Le nom d'utilisateur et/ou le mot de passe sont vides.",
|
|
||||||
"errorUnknown": "Erreur inconnue.",
|
|
||||||
"errorBlankFields": "Les champs sont vides",
|
"errorBlankFields": "Les champs sont vides",
|
||||||
"errorDeleteProfile": "Échec de la suppression du profil {n}",
|
"errorDeleteProfile": "Échec de la suppression du profil {n}",
|
||||||
"errorLoadProfiles": "Échec du chargement des profils.",
|
"errorLoadProfiles": "Échec du chargement des profils.",
|
||||||
|
@ -15,8 +15,6 @@
|
|||||||
"warning": "Figyelmeztetés",
|
"warning": "Figyelmeztetés",
|
||||||
"inviteInfiniteUsesWarning": "a végtelen felhasználású meghívókkal visszaélhetnek",
|
"inviteInfiniteUsesWarning": "a végtelen felhasználású meghívókkal visszaélhetnek",
|
||||||
"inviteSendToEmail": "Címzett",
|
"inviteSendToEmail": "Címzett",
|
||||||
"login": "Belépés",
|
|
||||||
"logout": "Kijelentkezés",
|
|
||||||
"create": "Létrehozás",
|
"create": "Létrehozás",
|
||||||
"apply": "Alkalmaz",
|
"apply": "Alkalmaz",
|
||||||
"delete": "Törlés",
|
"delete": "Törlés",
|
||||||
@ -126,13 +124,9 @@
|
|||||||
"updateAppliedRefresh": "",
|
"updateAppliedRefresh": "",
|
||||||
"telegramVerified": "",
|
"telegramVerified": "",
|
||||||
"accountConnected": "",
|
"accountConnected": "",
|
||||||
"errorConnection": "",
|
|
||||||
"error401Unauthorized": "",
|
|
||||||
"errorSettingsAppliedNoHomescreenLayout": "",
|
"errorSettingsAppliedNoHomescreenLayout": "",
|
||||||
"errorHomescreenAppliedNoSettings": "",
|
"errorHomescreenAppliedNoSettings": "",
|
||||||
"errorSettingsFailed": "",
|
"errorSettingsFailed": "",
|
||||||
"errorLoginBlank": "",
|
|
||||||
"errorUnknown": "",
|
|
||||||
"errorSaveEmail": "",
|
"errorSaveEmail": "",
|
||||||
"errorBlankFields": "",
|
"errorBlankFields": "",
|
||||||
"errorDeleteProfile": "",
|
"errorDeleteProfile": "",
|
||||||
|
@ -13,8 +13,6 @@
|
|||||||
"warning": "Peringatan",
|
"warning": "Peringatan",
|
||||||
"inviteInfiniteUsesWarning": "Undangan dalam jumlah tak terbatas dapat disalahgunakan",
|
"inviteInfiniteUsesWarning": "Undangan dalam jumlah tak terbatas dapat disalahgunakan",
|
||||||
"inviteSendToEmail": "Dikirim kepada",
|
"inviteSendToEmail": "Dikirim kepada",
|
||||||
"login": "Masuk",
|
|
||||||
"logout": "Keluar",
|
|
||||||
"create": "Buat",
|
"create": "Buat",
|
||||||
"apply": "Terapkan",
|
"apply": "Terapkan",
|
||||||
"delete": "Hapus",
|
"delete": "Hapus",
|
||||||
@ -82,13 +80,9 @@
|
|||||||
"createProfile": "Membuat profil {n}.",
|
"createProfile": "Membuat profil {n}.",
|
||||||
"saveSettings": "Pengaturan telah disimpan",
|
"saveSettings": "Pengaturan telah disimpan",
|
||||||
"setOmbiDefaults": "Default ombi tersimpan.",
|
"setOmbiDefaults": "Default ombi tersimpan.",
|
||||||
"errorConnection": "Tidak dapat terhubung ke jfa-go.",
|
|
||||||
"error401Unauthorized": "Tidak ter-otorisasi. Coba segarkan halaman.",
|
|
||||||
"errorSettingsAppliedNoHomescreenLayout": "Pengaturan telah diterapkan, tetapi menerapkan tata letak layar utama mungkin gagal.",
|
"errorSettingsAppliedNoHomescreenLayout": "Pengaturan telah diterapkan, tetapi menerapkan tata letak layar utama mungkin gagal.",
|
||||||
"errorHomescreenAppliedNoSettings": "Tata letak layar beranda diterapkan, tetapi menerapkan pengaturan mungkin gagal.",
|
"errorHomescreenAppliedNoSettings": "Tata letak layar beranda diterapkan, tetapi menerapkan pengaturan mungkin gagal.",
|
||||||
"errorSettingsFailed": "Aplikasi gagal.",
|
"errorSettingsFailed": "Aplikasi gagal.",
|
||||||
"errorLoginBlank": "Nama pengguna dan / atau sandi kosong.",
|
|
||||||
"errorUnknown": "Kesalahan yang tidak diketahui.",
|
|
||||||
"errorBlankFields": "Isian dibiarkan kosong",
|
"errorBlankFields": "Isian dibiarkan kosong",
|
||||||
"errorDeleteProfile": "Gagal menghapus profil {n}",
|
"errorDeleteProfile": "Gagal menghapus profil {n}",
|
||||||
"errorLoadProfiles": "Gagal memuat profil.",
|
"errorLoadProfiles": "Gagal memuat profil.",
|
||||||
|
@ -13,8 +13,6 @@
|
|||||||
"warning": "Waarschuwing",
|
"warning": "Waarschuwing",
|
||||||
"inviteInfiniteUsesWarning": "ongelimiteerde uitnodigingen kunnen misbruikt worden",
|
"inviteInfiniteUsesWarning": "ongelimiteerde uitnodigingen kunnen misbruikt worden",
|
||||||
"inviteSendToEmail": "Stuur naar",
|
"inviteSendToEmail": "Stuur naar",
|
||||||
"login": "Inloggen",
|
|
||||||
"logout": "Uitloggen",
|
|
||||||
"create": "Aanmaken",
|
"create": "Aanmaken",
|
||||||
"apply": "Toepassen",
|
"apply": "Toepassen",
|
||||||
"delete": "Verwijderen",
|
"delete": "Verwijderen",
|
||||||
@ -122,13 +120,9 @@
|
|||||||
"createProfile": "Profiel {n} aangemaakt.",
|
"createProfile": "Profiel {n} aangemaakt.",
|
||||||
"saveSettings": "De instellingen zijn opgeslagen",
|
"saveSettings": "De instellingen zijn opgeslagen",
|
||||||
"setOmbiDefaults": "De ombi standaardinstellingen zijn opgeslagen.",
|
"setOmbiDefaults": "De ombi standaardinstellingen zijn opgeslagen.",
|
||||||
"errorConnection": "Kon geen verbinding maken met jfa-go.",
|
|
||||||
"error401Unauthorized": "Geen toegang. Probeer de pagina te vernieuwen.",
|
|
||||||
"errorSettingsAppliedNoHomescreenLayout": "De instellingen zijn toegepast, maar wijzigen van de startpaginaindeling is misschien mislukt.",
|
"errorSettingsAppliedNoHomescreenLayout": "De instellingen zijn toegepast, maar wijzigen van de startpaginaindeling is misschien mislukt.",
|
||||||
"errorHomescreenAppliedNoSettings": "Startpaginaindeling toegepast, maar opslaan van instellingen is misschien mislukt.",
|
"errorHomescreenAppliedNoSettings": "Startpaginaindeling toegepast, maar opslaan van instellingen is misschien mislukt.",
|
||||||
"errorSettingsFailed": "Opslaan mislukt.",
|
"errorSettingsFailed": "Opslaan mislukt.",
|
||||||
"errorLoginBlank": "De gebruikersnaam en/of wachtwoord is leeg.",
|
|
||||||
"errorUnknown": "Onbekende fout.",
|
|
||||||
"errorBlankFields": "Velden leeggelaten",
|
"errorBlankFields": "Velden leeggelaten",
|
||||||
"errorDeleteProfile": "Verwijderen van profiel {n} mislukt",
|
"errorDeleteProfile": "Verwijderen van profiel {n} mislukt",
|
||||||
"errorLoadProfiles": "Fout bij het laden van profielen.",
|
"errorLoadProfiles": "Fout bij het laden van profielen.",
|
||||||
|
@ -15,8 +15,6 @@
|
|||||||
"warning": "Ostrzeżenie",
|
"warning": "Ostrzeżenie",
|
||||||
"inviteInfiniteUsesWarning": "",
|
"inviteInfiniteUsesWarning": "",
|
||||||
"inviteSendToEmail": "",
|
"inviteSendToEmail": "",
|
||||||
"login": "",
|
|
||||||
"logout": "",
|
|
||||||
"create": "",
|
"create": "",
|
||||||
"apply": "",
|
"apply": "",
|
||||||
"delete": "",
|
"delete": "",
|
||||||
@ -128,13 +126,9 @@
|
|||||||
"updateAppliedRefresh": "Aktualizacja zastosowana, odśwież.",
|
"updateAppliedRefresh": "Aktualizacja zastosowana, odśwież.",
|
||||||
"telegramVerified": "Konto telegramu zweryfikowane.",
|
"telegramVerified": "Konto telegramu zweryfikowane.",
|
||||||
"accountConnected": "Konto połączone.",
|
"accountConnected": "Konto połączone.",
|
||||||
"errorConnection": "Nie udało się połączyć z jfa-go.",
|
|
||||||
"error401Unauthorized": "Nieautoryzowany. Spróbuj odświeżyć stronę.",
|
|
||||||
"errorSettingsAppliedNoHomescreenLayout": "Zastosowano ustawienia, ale zastosowanie układu ekranu głównego mogło się nie powieść.",
|
"errorSettingsAppliedNoHomescreenLayout": "Zastosowano ustawienia, ale zastosowanie układu ekranu głównego mogło się nie powieść.",
|
||||||
"errorHomescreenAppliedNoSettings": "",
|
"errorHomescreenAppliedNoSettings": "",
|
||||||
"errorSettingsFailed": "",
|
"errorSettingsFailed": "",
|
||||||
"errorLoginBlank": "",
|
|
||||||
"errorUnknown": "Nieznany błąd.",
|
|
||||||
"errorSaveEmail": "",
|
"errorSaveEmail": "",
|
||||||
"errorBlankFields": "",
|
"errorBlankFields": "",
|
||||||
"errorDeleteProfile": "",
|
"errorDeleteProfile": "",
|
@ -13,8 +13,6 @@
|
|||||||
"warning": "Aviso",
|
"warning": "Aviso",
|
||||||
"inviteInfiniteUsesWarning": "convites infinitos podem ser usados de forma abusiva",
|
"inviteInfiniteUsesWarning": "convites infinitos podem ser usados de forma abusiva",
|
||||||
"inviteSendToEmail": "Enviar para",
|
"inviteSendToEmail": "Enviar para",
|
||||||
"login": "Login",
|
|
||||||
"logout": "Sair",
|
|
||||||
"create": "Criar",
|
"create": "Criar",
|
||||||
"apply": "Aplicar",
|
"apply": "Aplicar",
|
||||||
"delete": "Deletar",
|
"delete": "Deletar",
|
||||||
@ -122,13 +120,9 @@
|
|||||||
"createProfile": "Perfil {n} criado.",
|
"createProfile": "Perfil {n} criado.",
|
||||||
"saveSettings": "As configurações foram salvas",
|
"saveSettings": "As configurações foram salvas",
|
||||||
"setOmbiDefaults": "Padrões do ombi armazenados.",
|
"setOmbiDefaults": "Padrões do ombi armazenados.",
|
||||||
"errorConnection": "Não foi possível conectar ao jfa-go.",
|
|
||||||
"error401Unauthorized": "Não autorizado. Tente atualizar a página.",
|
|
||||||
"errorSettingsAppliedNoHomescreenLayout": "As configurações foram aplicadas, mas a aplicação do layout da tela inicial pode ter falhado.",
|
"errorSettingsAppliedNoHomescreenLayout": "As configurações foram aplicadas, mas a aplicação do layout da tela inicial pode ter falhado.",
|
||||||
"errorHomescreenAppliedNoSettings": "O layout da tela inicial foi aplicado, mas a aplicação das configurações pode ter falhado.",
|
"errorHomescreenAppliedNoSettings": "O layout da tela inicial foi aplicado, mas a aplicação das configurações pode ter falhado.",
|
||||||
"errorSettingsFailed": "Falha na aplicação.",
|
"errorSettingsFailed": "Falha na aplicação.",
|
||||||
"errorLoginBlank": "O nome de usuário e/ou senha foram deixados em branco.",
|
|
||||||
"errorUnknown": "Erro desconhecido.",
|
|
||||||
"errorBlankFields": "Os campos foram deixados em branco",
|
"errorBlankFields": "Os campos foram deixados em branco",
|
||||||
"errorDeleteProfile": "Falha ao excluir perfil {n}",
|
"errorDeleteProfile": "Falha ao excluir perfil {n}",
|
||||||
"errorLoadProfiles": "Falha ao carregar perfis.",
|
"errorLoadProfiles": "Falha ao carregar perfis.",
|
||||||
|
@ -13,8 +13,6 @@
|
|||||||
"warning": "Varning",
|
"warning": "Varning",
|
||||||
"inviteInfiniteUsesWarning": "inbjudningar med oändligt antal användningar kan missbrukas",
|
"inviteInfiniteUsesWarning": "inbjudningar med oändligt antal användningar kan missbrukas",
|
||||||
"inviteSendToEmail": "Skicka till",
|
"inviteSendToEmail": "Skicka till",
|
||||||
"login": "Logga in",
|
|
||||||
"logout": "Logga ut",
|
|
||||||
"create": "Skapa",
|
"create": "Skapa",
|
||||||
"apply": "Tillämpa",
|
"apply": "Tillämpa",
|
||||||
"delete": "Radera",
|
"delete": "Radera",
|
||||||
@ -92,13 +90,9 @@
|
|||||||
"saveEmail": "E-post sparad.",
|
"saveEmail": "E-post sparad.",
|
||||||
"sentAnnouncement": "Meddelande skickat.",
|
"sentAnnouncement": "Meddelande skickat.",
|
||||||
"setOmbiDefaults": "Lagrade ombi-standardvärden.",
|
"setOmbiDefaults": "Lagrade ombi-standardvärden.",
|
||||||
"errorConnection": "Det gick inte att ansluta till jfa-go.",
|
|
||||||
"error401Unauthorized": "Obehörig. Prova att uppdatera sidan.",
|
|
||||||
"errorSettingsAppliedNoHomescreenLayout": "Inställningarna tillämpades, men tillämpningen av hemskärmslayout kan ha misslyckats.",
|
"errorSettingsAppliedNoHomescreenLayout": "Inställningarna tillämpades, men tillämpningen av hemskärmslayout kan ha misslyckats.",
|
||||||
"errorHomescreenAppliedNoSettings": "Hemskärmslayout tillämpades, men tillämpningen av inställningar kan ha misslyckats.",
|
"errorHomescreenAppliedNoSettings": "Hemskärmslayout tillämpades, men tillämpningen av inställningar kan ha misslyckats.",
|
||||||
"errorSettingsFailed": "Tillämpning misslyckades.",
|
"errorSettingsFailed": "Tillämpning misslyckades.",
|
||||||
"errorLoginBlank": "Användarnamnet och/eller lösenordet lämnades tomt.",
|
|
||||||
"errorUnknown": "Okänt fel.",
|
|
||||||
"errorSaveEmail": "Det gick inte att spara e-postmeddelandet.",
|
"errorSaveEmail": "Det gick inte att spara e-postmeddelandet.",
|
||||||
"errorBlankFields": "Fält lämnades tomma",
|
"errorBlankFields": "Fält lämnades tomma",
|
||||||
"errorDeleteProfile": "Det gick inte att ta bort profilen {n}",
|
"errorDeleteProfile": "Det gick inte att ta bort profilen {n}",
|
||||||
|
@ -15,8 +15,6 @@
|
|||||||
"warning": "Cảnh báo",
|
"warning": "Cảnh báo",
|
||||||
"inviteInfiniteUsesWarning": "các lời mời không giới hạn số lần sử dụng có thể bị lạm dụng",
|
"inviteInfiniteUsesWarning": "các lời mời không giới hạn số lần sử dụng có thể bị lạm dụng",
|
||||||
"inviteSendToEmail": "Gửi tới",
|
"inviteSendToEmail": "Gửi tới",
|
||||||
"login": "Đăng nhập",
|
|
||||||
"logout": "Đăng xuất",
|
|
||||||
"create": "Tạo mới",
|
"create": "Tạo mới",
|
||||||
"apply": "Áp dụng",
|
"apply": "Áp dụng",
|
||||||
"delete": "Xóa",
|
"delete": "Xóa",
|
||||||
@ -127,13 +125,9 @@
|
|||||||
"updateAppliedRefresh": "Cập nhật mới đã được áp dụng, vui lòng làm mới lại trang.",
|
"updateAppliedRefresh": "Cập nhật mới đã được áp dụng, vui lòng làm mới lại trang.",
|
||||||
"telegramVerified": "Tài khoản Telegram đã được xác thực.",
|
"telegramVerified": "Tài khoản Telegram đã được xác thực.",
|
||||||
"accountConnected": "Tài khoản đã được kết nối.",
|
"accountConnected": "Tài khoản đã được kết nối.",
|
||||||
"errorConnection": "Không thể kết nối với jfa-go.",
|
|
||||||
"error401Unauthorized": "Không được phép. Hãy thử làm mới trang.",
|
|
||||||
"errorSettingsAppliedNoHomescreenLayout": "Cài đặt đã được áp dụng, nhưng việc áp dụng bố cục màn hình chính có thể không thành công.",
|
"errorSettingsAppliedNoHomescreenLayout": "Cài đặt đã được áp dụng, nhưng việc áp dụng bố cục màn hình chính có thể không thành công.",
|
||||||
"errorHomescreenAppliedNoSettings": "",
|
"errorHomescreenAppliedNoSettings": "",
|
||||||
"errorSettingsFailed": "",
|
"errorSettingsFailed": "",
|
||||||
"errorLoginBlank": "",
|
|
||||||
"errorUnknown": "",
|
|
||||||
"errorSaveEmail": "",
|
"errorSaveEmail": "",
|
||||||
"errorBlankFields": "",
|
"errorBlankFields": "",
|
||||||
"errorDeleteProfile": "",
|
"errorDeleteProfile": "",
|
||||||
|
@ -15,8 +15,6 @@
|
|||||||
"warning": "警告",
|
"warning": "警告",
|
||||||
"inviteInfiniteUsesWarning": "无限使用次数的邀请码可能被滥用",
|
"inviteInfiniteUsesWarning": "无限使用次数的邀请码可能被滥用",
|
||||||
"inviteSendToEmail": "发送到",
|
"inviteSendToEmail": "发送到",
|
||||||
"login": "登录",
|
|
||||||
"logout": "登出",
|
|
||||||
"create": "创建",
|
"create": "创建",
|
||||||
"apply": "申请",
|
"apply": "申请",
|
||||||
"delete": "删除",
|
"delete": "删除",
|
||||||
@ -129,13 +127,9 @@
|
|||||||
"updateAppliedRefresh": "已应用更新,请刷新。",
|
"updateAppliedRefresh": "已应用更新,请刷新。",
|
||||||
"telegramVerified": "Telegram账户已验证。",
|
"telegramVerified": "Telegram账户已验证。",
|
||||||
"accountConnected": "帐户已连接。",
|
"accountConnected": "帐户已连接。",
|
||||||
"errorConnection": "无法连接到 jfa-go。",
|
|
||||||
"error401Unauthorized": "无授权。尝试刷新页面。",
|
|
||||||
"errorSettingsAppliedNoHomescreenLayout": "已应用设置,但应用主屏幕布局可能失败。",
|
"errorSettingsAppliedNoHomescreenLayout": "已应用设置,但应用主屏幕布局可能失败。",
|
||||||
"errorHomescreenAppliedNoSettings": "已应用主屏幕布局,但应用设置可能失败。",
|
"errorHomescreenAppliedNoSettings": "已应用主屏幕布局,但应用设置可能失败。",
|
||||||
"errorSettingsFailed": "应用失败。",
|
"errorSettingsFailed": "应用失败。",
|
||||||
"errorLoginBlank": "用户名/密码留空。",
|
|
||||||
"errorUnknown": "未知错误。",
|
|
||||||
"errorSaveEmail": "电子邮箱保存失败。",
|
"errorSaveEmail": "电子邮箱保存失败。",
|
||||||
"errorBlankFields": "字段留空",
|
"errorBlankFields": "字段留空",
|
||||||
"errorDeleteProfile": "删除配置文件{n}失败",
|
"errorDeleteProfile": "删除配置文件{n}失败",
|
||||||
|
@ -15,8 +15,6 @@
|
|||||||
"warning": "警告",
|
"warning": "警告",
|
||||||
"inviteInfiniteUsesWarning": "無限使用次數的邀請碼可能被濫用",
|
"inviteInfiniteUsesWarning": "無限使用次數的邀請碼可能被濫用",
|
||||||
"inviteSendToEmail": "發送到",
|
"inviteSendToEmail": "發送到",
|
||||||
"login": "登錄",
|
|
||||||
"logout": "登出",
|
|
||||||
"create": "創建",
|
"create": "創建",
|
||||||
"apply": "應用",
|
"apply": "應用",
|
||||||
"delete": "刪除",
|
"delete": "刪除",
|
||||||
@ -128,13 +126,9 @@
|
|||||||
"updateAppliedRefresh": "更新已應用,請重新整理。",
|
"updateAppliedRefresh": "更新已應用,請重新整理。",
|
||||||
"telegramVerified": "Telegram 帳戶已驗證。",
|
"telegramVerified": "Telegram 帳戶已驗證。",
|
||||||
"accountConnected": "帳戶已連接。",
|
"accountConnected": "帳戶已連接。",
|
||||||
"errorConnection": "無法連接到 jfa-go。",
|
|
||||||
"error401Unauthorized": "未經授權。嘗試重新整理頁面。",
|
|
||||||
"errorSettingsAppliedNoHomescreenLayout": "已應用設置,但應用主螢幕佈局可能失敗。",
|
"errorSettingsAppliedNoHomescreenLayout": "已應用設置,但應用主螢幕佈局可能失敗。",
|
||||||
"errorHomescreenAppliedNoSettings": "已應用主螢幕佈局,但應用設置可能失敗。",
|
"errorHomescreenAppliedNoSettings": "已應用主螢幕佈局,但應用設置可能失敗。",
|
||||||
"errorSettingsFailed": "應用失敗。",
|
"errorSettingsFailed": "應用失敗。",
|
||||||
"errorLoginBlank": "帳戶名稱和/或密碼留空。",
|
|
||||||
"errorUnknown": "未知的錯誤。",
|
|
||||||
"errorSaveEmail": "無法儲存電子郵件。",
|
"errorSaveEmail": "無法儲存電子郵件。",
|
||||||
"errorBlankFields": "欄位留空",
|
"errorBlankFields": "欄位留空",
|
||||||
"errorDeleteProfile": "無法刪除設置文件 {n}",
|
"errorDeleteProfile": "無法刪除設置文件 {n}",
|
7
lang/common/ar-aa.json
Normal file
7
lang/common/ar-aa.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"name": "العربية (AR)"
|
||||||
|
},
|
||||||
|
"strings": {},
|
||||||
|
"notifications": {}
|
||||||
|
}
|
@ -24,6 +24,14 @@
|
|||||||
"contactDiscord": "Kontakt gennem Discord",
|
"contactDiscord": "Kontakt gennem Discord",
|
||||||
"theme": "Tema",
|
"theme": "Tema",
|
||||||
"refresh": "Opdater",
|
"refresh": "Opdater",
|
||||||
"required": "Påkrævet"
|
"required": "Påkrævet",
|
||||||
|
"login": "Log på",
|
||||||
|
"logout": "Log ud"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"errorLoginBlank": "Brugernavnet og/eller adgangskoden blev efterladt tomme.",
|
||||||
|
"errorConnection": "Kunne ikke oprette forbindelse til jfa-go.",
|
||||||
|
"errorUnknown": "Ukendt fejl.",
|
||||||
|
"error401Unauthorized": "Adgang nægtet. Prøv at genindlæse siden."
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,26 +4,34 @@
|
|||||||
},
|
},
|
||||||
"strings": {
|
"strings": {
|
||||||
"username": "Benutzername",
|
"username": "Benutzername",
|
||||||
"name": "Name",
|
|
||||||
"password": "Passwort",
|
"password": "Passwort",
|
||||||
"emailAddress": "E-Mail Adresse",
|
"emailAddress": "E-Mail Adresse",
|
||||||
|
"name": "Name",
|
||||||
"submit": "Absenden",
|
"submit": "Absenden",
|
||||||
|
"send": "Senden",
|
||||||
"success": "Erfolgreich",
|
"success": "Erfolgreich",
|
||||||
"continue": "Weiter",
|
"continue": "Weiter",
|
||||||
"error": "Fehler",
|
"error": "Fehler",
|
||||||
"copy": "Kopieren",
|
"copy": "Kopieren",
|
||||||
"theme": "Thema",
|
"copied": "Kopiert",
|
||||||
"time24h": "24h-Format",
|
"time24h": "24h-Format",
|
||||||
"time12h": "12h-Format",
|
"time12h": "12h-Format",
|
||||||
"copied": "Kopiert",
|
|
||||||
"linkTelegram": "Link Telegram",
|
"linkTelegram": "Link Telegram",
|
||||||
"contactEmail": "Kontakt über E-Mail",
|
"contactEmail": "Kontakt über E-Mail",
|
||||||
"contactTelegram": "Kontakt über Telegram",
|
"contactTelegram": "Kontakt über Telegram",
|
||||||
"linkDiscord": "Link Discord",
|
"linkDiscord": "Link Discord",
|
||||||
"linkMatrix": "Link Matrix",
|
"linkMatrix": "Link Matrix",
|
||||||
"send": "Senden",
|
|
||||||
"contactDiscord": "Kontakt über Discord",
|
"contactDiscord": "Kontakt über Discord",
|
||||||
|
"theme": "Thema",
|
||||||
"refresh": "Aktualisieren",
|
"refresh": "Aktualisieren",
|
||||||
"required": "Erforderlich"
|
"required": "Erforderlich",
|
||||||
|
"login": "Anmelden",
|
||||||
|
"logout": "Abmelden"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"errorLoginBlank": "Der Benutzername und/oder das Passwort wurden nicht ausgefüllt.",
|
||||||
|
"errorConnection": "Konnte keine Verbindung zu jfa-go herstellen.",
|
||||||
|
"errorUnknown": "Unbekannter Fehler.",
|
||||||
|
"error401Unauthorized": "Unberechtigt. Versuch, die Seite zu aktualisieren."
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -12,9 +12,17 @@
|
|||||||
"continue": "Συνέχεια",
|
"continue": "Συνέχεια",
|
||||||
"error": "Σφάλμα",
|
"error": "Σφάλμα",
|
||||||
"copy": "Αντιγραφή",
|
"copy": "Αντιγραφή",
|
||||||
"theme": "Θέμα",
|
"copied": "Αντιγράφηκε",
|
||||||
"time24h": "24 Ώρες",
|
"time24h": "24 Ώρες",
|
||||||
"time12h": "12 Ώρες",
|
"time12h": "12 Ώρες",
|
||||||
"copied": "Αντιγράφηκε"
|
"theme": "Θέμα",
|
||||||
|
"login": "Σύνδεση",
|
||||||
|
"logout": "Αποσύνδεση"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"errorLoginBlank": "Το όνομα χρήστη και/ή ο κωδικός ήταν κενά.",
|
||||||
|
"errorConnection": "Δεν μπόρεσε να συνδεθεί με το jfa-go.",
|
||||||
|
"errorUnknown": "Άγνωστο σφάλμα.",
|
||||||
|
"error401Unauthorized": "Ανεξουσιοδότητος. Προσπαθήστε να κάνετε επαναφόρτωση την σελίδα."
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,27 +3,35 @@
|
|||||||
"name": "English (GB)"
|
"name": "English (GB)"
|
||||||
},
|
},
|
||||||
"strings": {
|
"strings": {
|
||||||
"continue": "Continue",
|
|
||||||
"time24h": "24h Time",
|
|
||||||
"linkTelegram": "Link Telegram",
|
|
||||||
"send": "Send",
|
|
||||||
"linkDiscord": "Link Discord",
|
|
||||||
"linkMatrix": "Link Matrix",
|
|
||||||
"contactDiscord": "Contact through Discord",
|
|
||||||
"username": "Username",
|
"username": "Username",
|
||||||
"password": "Password",
|
"password": "Password",
|
||||||
"emailAddress": "Email Address",
|
"emailAddress": "Email Address",
|
||||||
|
"name": "Name",
|
||||||
|
"submit": "Submit",
|
||||||
|
"send": "Send",
|
||||||
|
"success": "Success",
|
||||||
|
"continue": "Continue",
|
||||||
|
"error": "Error",
|
||||||
"copy": "Copy",
|
"copy": "Copy",
|
||||||
"copied": "Copied",
|
"copied": "Copied",
|
||||||
"submit": "Submit",
|
"time24h": "24h Time",
|
||||||
"success": "Success",
|
|
||||||
"error": "Error",
|
|
||||||
"time12h": "12h Time",
|
"time12h": "12h Time",
|
||||||
"theme": "Theme",
|
"linkTelegram": "Link Telegram",
|
||||||
"contactEmail": "Contact through Email",
|
"contactEmail": "Contact through Email",
|
||||||
"contactTelegram": "Contact through Telegram",
|
"contactTelegram": "Contact through Telegram",
|
||||||
"name": "Name",
|
"linkDiscord": "Link Discord",
|
||||||
|
"linkMatrix": "Link Matrix",
|
||||||
|
"contactDiscord": "Contact through Discord",
|
||||||
|
"theme": "Theme",
|
||||||
"refresh": "Refresh",
|
"refresh": "Refresh",
|
||||||
"required": "Required"
|
"required": "Required",
|
||||||
|
"login": "Login",
|
||||||
|
"logout": "Logout"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"errorLoginBlank": "The username and/or password was left blank.",
|
||||||
|
"errorConnection": "Couldn't connect to jfa-go.",
|
||||||
|
"errorUnknown": "Unknown error.",
|
||||||
|
"error401Unauthorized": "Unauthorised. Try refreshing the page."
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -24,6 +24,14 @@
|
|||||||
"contactDiscord": "Contact through Discord",
|
"contactDiscord": "Contact through Discord",
|
||||||
"theme": "Theme",
|
"theme": "Theme",
|
||||||
"refresh": "Refresh",
|
"refresh": "Refresh",
|
||||||
"required": "Required"
|
"required": "Required",
|
||||||
|
"login": "Login",
|
||||||
|
"logout": "Logout"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"errorLoginBlank": "The username and/or password were left blank.",
|
||||||
|
"errorConnection": "Couldn't connect to jfa-go.",
|
||||||
|
"errorUnknown": "Unknown error.",
|
||||||
|
"error401Unauthorized": "Unauthorized. Try refreshing the page."
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -8,6 +8,7 @@
|
|||||||
"emailAddress": "Correo electrónico",
|
"emailAddress": "Correo electrónico",
|
||||||
"name": "Nombre",
|
"name": "Nombre",
|
||||||
"submit": "Enviar",
|
"submit": "Enviar",
|
||||||
|
"send": "Enviar",
|
||||||
"success": "Éxito",
|
"success": "Éxito",
|
||||||
"continue": "Continuar",
|
"continue": "Continuar",
|
||||||
"error": "Error",
|
"error": "Error",
|
||||||
@ -15,15 +16,22 @@
|
|||||||
"copied": "Copiado",
|
"copied": "Copiado",
|
||||||
"time24h": "Formato de 24 horas",
|
"time24h": "Formato de 24 horas",
|
||||||
"time12h": "Formato de 12 horas",
|
"time12h": "Formato de 12 horas",
|
||||||
"theme": "Tema",
|
"linkTelegram": "Enlace Telegram",
|
||||||
"send": "Enviar",
|
|
||||||
"contactDiscord": "Contactar por Discord",
|
|
||||||
"contactEmail": "Contactar por correo electrónico",
|
"contactEmail": "Contactar por correo electrónico",
|
||||||
"contactTelegram": "Contactar por Telegram",
|
"contactTelegram": "Contactar por Telegram",
|
||||||
"linkMatrix": "Enlace Matrix",
|
|
||||||
"linkDiscord": "Enlace Discord",
|
"linkDiscord": "Enlace Discord",
|
||||||
"linkTelegram": "Enlace Telegram",
|
"linkMatrix": "Enlace Matrix",
|
||||||
|
"contactDiscord": "Contactar por Discord",
|
||||||
|
"theme": "Tema",
|
||||||
"refresh": "Refrescar",
|
"refresh": "Refrescar",
|
||||||
"required": "Requerido"
|
"required": "Requerido",
|
||||||
|
"login": "Acceso",
|
||||||
|
"logout": "Cerrar sesión"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"errorLoginBlank": "El nombre de usuario y/o la contraseña se dejaron en blanco.",
|
||||||
|
"errorConnection": "No se pudo conectar a jfa-go.",
|
||||||
|
"errorUnknown": "Error desconocido.",
|
||||||
|
"error401Unauthorized": "No autorizado. Intente actualizar la página."
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -23,5 +23,6 @@
|
|||||||
"linkMatrix": "پیوند ماتریکس",
|
"linkMatrix": "پیوند ماتریکس",
|
||||||
"contactDiscord": "از طریق دیسکورد تماس بگیرید",
|
"contactDiscord": "از طریق دیسکورد تماس بگیرید",
|
||||||
"theme": "موضوع"
|
"theme": "موضوع"
|
||||||
}
|
},
|
||||||
|
"notifications": {}
|
||||||
}
|
}
|
@ -1,30 +1,37 @@
|
|||||||
{
|
{
|
||||||
"meta": {
|
"meta": {
|
||||||
"name": "Français (FR)",
|
"name": "Français (FR)"
|
||||||
"author": "https://github.com/Killianbe"
|
|
||||||
},
|
},
|
||||||
"strings": {
|
"strings": {
|
||||||
"username": "Nom d'utilisateur",
|
"username": "Nom d'utilisateur",
|
||||||
"name": "Nom",
|
|
||||||
"password": "Mot de passe",
|
"password": "Mot de passe",
|
||||||
"emailAddress": "Adresse e-mail",
|
"emailAddress": "Adresse e-mail",
|
||||||
|
"name": "Nom",
|
||||||
"submit": "Soumettre",
|
"submit": "Soumettre",
|
||||||
|
"send": "Envoyer",
|
||||||
"success": "Succès",
|
"success": "Succès",
|
||||||
"continue": "Continuer",
|
"continue": "Continuer",
|
||||||
"error": "Erreur",
|
"error": "Erreur",
|
||||||
"copy": "Copier",
|
"copy": "Copier",
|
||||||
|
"copied": "Copié",
|
||||||
"time24h": "Temps 24h",
|
"time24h": "Temps 24h",
|
||||||
"time12h": "Temps 12h",
|
"time12h": "Temps 12h",
|
||||||
"theme": "Thème",
|
|
||||||
"copied": "Copié",
|
|
||||||
"linkTelegram": "Lien Telegram",
|
"linkTelegram": "Lien Telegram",
|
||||||
"contactEmail": "Contact par e-mail",
|
"contactEmail": "Contact par e-mail",
|
||||||
"contactTelegram": "Contact par Telegram",
|
"contactTelegram": "Contact par Telegram",
|
||||||
"linkDiscord": "Lier Discord",
|
"linkDiscord": "Lier Discord",
|
||||||
"linkMatrix": "Lier Matrix",
|
"linkMatrix": "Lier Matrix",
|
||||||
"send": "Envoyer",
|
|
||||||
"contactDiscord": "Contacter par Discord",
|
"contactDiscord": "Contacter par Discord",
|
||||||
|
"theme": "Thème",
|
||||||
"refresh": "Actualiser",
|
"refresh": "Actualiser",
|
||||||
"required": "Requis"
|
"required": "Requis",
|
||||||
|
"login": "S'identifier",
|
||||||
|
"logout": "Se déconnecter"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"errorLoginBlank": "Le nom d'utilisateur et/ou le mot de passe sont vides.",
|
||||||
|
"errorConnection": "Impossible de se connecter à jfa-go.",
|
||||||
|
"errorUnknown": "Erreur inconnue.",
|
||||||
|
"error401Unauthorized": "Non autorisé. Essayez d'actualiser la page."
|
||||||
}
|
}
|
||||||
}
|
}
|
10
lang/common/hu-hu.json
Normal file
10
lang/common/hu-hu.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"name": "English (US)"
|
||||||
|
},
|
||||||
|
"strings": {
|
||||||
|
"login": "Belépés",
|
||||||
|
"logout": "Kijelentkezés"
|
||||||
|
},
|
||||||
|
"notifications": {}
|
||||||
|
}
|
@ -8,6 +8,7 @@
|
|||||||
"emailAddress": "Alamat Email",
|
"emailAddress": "Alamat Email",
|
||||||
"name": "Nama",
|
"name": "Nama",
|
||||||
"submit": "Submit",
|
"submit": "Submit",
|
||||||
|
"send": "Kirim",
|
||||||
"success": "Sukses",
|
"success": "Sukses",
|
||||||
"continue": "Lanjut",
|
"continue": "Lanjut",
|
||||||
"error": "Error",
|
"error": "Error",
|
||||||
@ -15,6 +16,13 @@
|
|||||||
"time24h": "Waktu 24 jam",
|
"time24h": "Waktu 24 jam",
|
||||||
"time12h": "Waktu 12 jam",
|
"time12h": "Waktu 12 jam",
|
||||||
"theme": "Tema",
|
"theme": "Tema",
|
||||||
"send": "Kirim"
|
"login": "Masuk",
|
||||||
|
"logout": "Keluar"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"errorLoginBlank": "Nama pengguna dan / atau sandi kosong.",
|
||||||
|
"errorConnection": "Tidak dapat terhubung ke jfa-go.",
|
||||||
|
"errorUnknown": "Kesalahan yang tidak diketahui.",
|
||||||
|
"error401Unauthorized": "Tidak ter-otorisasi. Coba segarkan halaman."
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -25,5 +25,6 @@
|
|||||||
"theme": "Tema",
|
"theme": "Tema",
|
||||||
"refresh": "Aggiorna",
|
"refresh": "Aggiorna",
|
||||||
"required": "Richiesto"
|
"required": "Richiesto"
|
||||||
}
|
},
|
||||||
|
"notifications": {}
|
||||||
}
|
}
|
@ -4,26 +4,34 @@
|
|||||||
},
|
},
|
||||||
"strings": {
|
"strings": {
|
||||||
"username": "Gebruikersnaam",
|
"username": "Gebruikersnaam",
|
||||||
"name": "Naam",
|
|
||||||
"password": "Wachtwoord",
|
"password": "Wachtwoord",
|
||||||
"emailAddress": "E-mailadres",
|
"emailAddress": "E-mailadres",
|
||||||
|
"name": "Naam",
|
||||||
"submit": "Verstuur",
|
"submit": "Verstuur",
|
||||||
|
"send": "Verstuur",
|
||||||
"success": "Succes",
|
"success": "Succes",
|
||||||
"continue": "Doorgaan",
|
"continue": "Doorgaan",
|
||||||
"error": "Fout",
|
"error": "Fout",
|
||||||
"copy": "Kopiëer",
|
"copy": "Kopiëer",
|
||||||
"theme": "Thema",
|
"copied": "Gekopieerd",
|
||||||
"time24h": "24u-formaat",
|
"time24h": "24u-formaat",
|
||||||
"time12h": "12u-formaat",
|
"time12h": "12u-formaat",
|
||||||
"copied": "Gekopieerd",
|
|
||||||
"linkTelegram": "Koppel Telegram",
|
"linkTelegram": "Koppel Telegram",
|
||||||
"contactEmail": "Stuur e-mailbericht",
|
"contactEmail": "Stuur e-mailbericht",
|
||||||
"contactTelegram": "Stuur Telegram-bericht",
|
"contactTelegram": "Stuur Telegram-bericht",
|
||||||
"send": "Verstuur",
|
|
||||||
"linkDiscord": "Koppel Discord",
|
"linkDiscord": "Koppel Discord",
|
||||||
"linkMatrix": "Koppel Matrix",
|
"linkMatrix": "Koppel Matrix",
|
||||||
"contactDiscord": "Stuur Discord bericht",
|
"contactDiscord": "Stuur Discord bericht",
|
||||||
|
"theme": "Thema",
|
||||||
"refresh": "Ververs",
|
"refresh": "Ververs",
|
||||||
"required": "Verplicht"
|
"required": "Verplicht",
|
||||||
|
"login": "Inloggen",
|
||||||
|
"logout": "Uitloggen"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"errorLoginBlank": "De gebruikersnaam en/of wachtwoord is leeg.",
|
||||||
|
"errorConnection": "Kon geen verbinding maken met jfa-go.",
|
||||||
|
"errorUnknown": "Onbekende fout.",
|
||||||
|
"error401Unauthorized": "Geen toegang. Probeer de pagina te vernieuwen."
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -25,5 +25,10 @@
|
|||||||
"theme": "Motyw",
|
"theme": "Motyw",
|
||||||
"refresh": "Odśwież",
|
"refresh": "Odśwież",
|
||||||
"required": "Wymagane"
|
"required": "Wymagane"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"errorConnection": "Nie udało się połączyć z jfa-go.",
|
||||||
|
"errorUnknown": "Nieznany błąd.",
|
||||||
|
"error401Unauthorized": "Nieautoryzowany. Spróbuj odświeżyć stronę."
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,26 +4,34 @@
|
|||||||
},
|
},
|
||||||
"strings": {
|
"strings": {
|
||||||
"username": "Nome do Usuário",
|
"username": "Nome do Usuário",
|
||||||
"name": "Nome",
|
|
||||||
"password": "Senha",
|
"password": "Senha",
|
||||||
"emailAddress": "Endereço de e-mail",
|
"emailAddress": "Endereço de e-mail",
|
||||||
|
"name": "Nome",
|
||||||
"submit": "Enviar",
|
"submit": "Enviar",
|
||||||
|
"send": "Enviar",
|
||||||
"success": "Sucesso",
|
"success": "Sucesso",
|
||||||
"continue": "Continuar",
|
"continue": "Continuar",
|
||||||
"error": "Erro",
|
"error": "Erro",
|
||||||
"copy": "Copiar",
|
"copy": "Copiar",
|
||||||
"theme": "Tema",
|
"copied": "Copiado",
|
||||||
"time24h": "Horário 24h",
|
"time24h": "Horário 24h",
|
||||||
"time12h": "Horário 12h",
|
"time12h": "Horário 12h",
|
||||||
"copied": "Copiado",
|
|
||||||
"linkTelegram": "Link do Telegram",
|
"linkTelegram": "Link do Telegram",
|
||||||
"contactEmail": "Contato por Email",
|
"contactEmail": "Contato por Email",
|
||||||
"contactTelegram": "Contato pelo Telegram",
|
"contactTelegram": "Contato pelo Telegram",
|
||||||
"send": "Enviar",
|
|
||||||
"linkDiscord": "Link do Discord",
|
"linkDiscord": "Link do Discord",
|
||||||
"linkMatrix": "Link do Matrix",
|
"linkMatrix": "Link do Matrix",
|
||||||
"contactDiscord": "Contato através do Discord",
|
"contactDiscord": "Contato através do Discord",
|
||||||
|
"theme": "Tema",
|
||||||
"refresh": "Atualizar",
|
"refresh": "Atualizar",
|
||||||
"required": "Requeridos"
|
"required": "Requeridos",
|
||||||
|
"login": "Login",
|
||||||
|
"logout": "Sair"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"errorLoginBlank": "O nome de usuário e/ou senha foram deixados em branco.",
|
||||||
|
"errorConnection": "Não foi possível conectar ao jfa-go.",
|
||||||
|
"errorUnknown": "Erro desconhecido.",
|
||||||
|
"error401Unauthorized": "Não autorizado. Tente atualizar a página."
|
||||||
}
|
}
|
||||||
}
|
}
|
7
lang/common/ro-ro.json
Normal file
7
lang/common/ro-ro.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"name": "Română (ROU)"
|
||||||
|
},
|
||||||
|
"strings": {},
|
||||||
|
"notifications": {}
|
||||||
|
}
|
@ -25,5 +25,6 @@
|
|||||||
"theme": "Tema",
|
"theme": "Tema",
|
||||||
"refresh": "Osveži",
|
"refresh": "Osveži",
|
||||||
"required": "Obvezno"
|
"required": "Obvezno"
|
||||||
}
|
},
|
||||||
|
"notifications": {}
|
||||||
}
|
}
|
@ -14,6 +14,14 @@
|
|||||||
"copy": "Kopiera",
|
"copy": "Kopiera",
|
||||||
"time24h": "24 timmarsklocka",
|
"time24h": "24 timmarsklocka",
|
||||||
"time12h": "12 timmarsklocka",
|
"time12h": "12 timmarsklocka",
|
||||||
"theme": "Tema"
|
"theme": "Tema",
|
||||||
|
"login": "Logga in",
|
||||||
|
"logout": "Logga ut"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"errorLoginBlank": "Användarnamnet och/eller lösenordet lämnades tomt.",
|
||||||
|
"errorConnection": "Det gick inte att ansluta till jfa-go.",
|
||||||
|
"errorUnknown": "Okänt fel.",
|
||||||
|
"error401Unauthorized": "Obehörig. Prova att uppdatera sidan."
|
||||||
}
|
}
|
||||||
}
|
}
|
13
lang/common/vi-vn.json
Normal file
13
lang/common/vi-vn.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"name": "Tiếng Anh (Mỹ)"
|
||||||
|
},
|
||||||
|
"strings": {
|
||||||
|
"login": "Đăng nhập",
|
||||||
|
"logout": "Đăng xuất"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"errorConnection": "Không thể kết nối với jfa-go.",
|
||||||
|
"error401Unauthorized": "Không được phép. Hãy thử làm mới trang."
|
||||||
|
}
|
||||||
|
}
|
@ -24,6 +24,14 @@
|
|||||||
"contactDiscord": "通过Discord联系",
|
"contactDiscord": "通过Discord联系",
|
||||||
"theme": "主题",
|
"theme": "主题",
|
||||||
"refresh": "刷新",
|
"refresh": "刷新",
|
||||||
"required": "必需的"
|
"required": "必需的",
|
||||||
|
"login": "登录",
|
||||||
|
"logout": "登出"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"errorLoginBlank": "用户名/密码留空。",
|
||||||
|
"errorConnection": "无法连接到 jfa-go。",
|
||||||
|
"errorUnknown": "未知错误。",
|
||||||
|
"error401Unauthorized": "无授权。尝试刷新页面。"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -24,6 +24,14 @@
|
|||||||
"contactDiscord": "通過 Discord 聯繫",
|
"contactDiscord": "通過 Discord 聯繫",
|
||||||
"theme": "主題",
|
"theme": "主題",
|
||||||
"refresh": "重新整理",
|
"refresh": "重新整理",
|
||||||
"required": "必填"
|
"required": "必填",
|
||||||
|
"login": "登錄",
|
||||||
|
"logout": "登出"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"errorLoginBlank": "帳戶名稱和/或密碼留空。",
|
||||||
|
"errorConnection": "無法連接到 jfa-go。",
|
||||||
|
"errorUnknown": "未知的錯誤。",
|
||||||
|
"error401Unauthorized": "未經授權。嘗試重新整理頁面。"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -19,7 +19,8 @@
|
|||||||
"yourAccountIsValidUntil": "Your account will be valid until {date}.",
|
"yourAccountIsValidUntil": "Your account will be valid until {date}.",
|
||||||
"sendPIN": "Send the PIN below to the bot, then come back here to link your account.",
|
"sendPIN": "Send the PIN below to the bot, then come back here to link your account.",
|
||||||
"sendPINDiscord": "Type {command} in {server_channel} on Discord, then send the PIN below.",
|
"sendPINDiscord": "Type {command} in {server_channel} on Discord, then send the PIN below.",
|
||||||
"matrixEnterUser": "Enter your User ID, press submit, and a PIN will be sent to you. Enter it here to continue."
|
"matrixEnterUser": "Enter your User ID, press submit, and a PIN will be sent to you. Enter it here to continue.",
|
||||||
|
"welcomeUser": "Welcome, {user}"
|
||||||
},
|
},
|
||||||
"notifications": {
|
"notifications": {
|
||||||
"errorUserExists": "User already exists.",
|
"errorUserExists": "User already exists.",
|
||||||
|
3
main.go
3
main.go
@ -651,6 +651,9 @@ func flagPassed(name string) (found bool) {
|
|||||||
// @tag.name Auth
|
// @tag.name Auth
|
||||||
// @tag.description -Get a token here if running swagger UI locally.-
|
// @tag.description -Get a token here if running swagger UI locally.-
|
||||||
|
|
||||||
|
// @tag.name User Page
|
||||||
|
// @tag.description User-page related routes.
|
||||||
|
|
||||||
// @tag.name Users
|
// @tag.name Users
|
||||||
// @tag.description Jellyfin user related operations.
|
// @tag.description Jellyfin user related operations.
|
||||||
|
|
||||||
|
@ -373,3 +373,9 @@ type ReCaptchaResponseDTO struct {
|
|||||||
Hostname string `json:"hostname"`
|
Hostname string `json:"hostname"`
|
||||||
ErrorCodes []string `json:"error-codes"`
|
ErrorCodes []string `json:"error-codes"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MyDetailsDTO is sent to the user page to personalize it for the user.
|
||||||
|
type MyDetailsDTO struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
}
|
||||||
|
366
package-lock.json
generated
366
package-lock.json
generated
@ -15,7 +15,7 @@
|
|||||||
"any-date-parser": "^1.5.4",
|
"any-date-parser": "^1.5.4",
|
||||||
"browserslist": "^4.21.7",
|
"browserslist": "^4.21.7",
|
||||||
"cheerio": "^1.0.0-rc.12",
|
"cheerio": "^1.0.0-rc.12",
|
||||||
"esbuild": "^0.18.3",
|
"esbuild": "^0.18.4",
|
||||||
"fs-cheerio": "^3.0.0",
|
"fs-cheerio": "^3.0.0",
|
||||||
"inline-source": "^8.0.2",
|
"inline-source": "^8.0.2",
|
||||||
"jsdom": "^22.1.0",
|
"jsdom": "^22.1.0",
|
||||||
@ -57,9 +57,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/android-arm": {
|
"node_modules/@esbuild/android-arm": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.4.tgz",
|
||||||
"integrity": "sha512-QOn3VIlL6Qv1eHBpQB/s7simaZgGss2ASyxDOwYSLmc6vD0uuizZkuYawHmuLjWEm5wPwp0JQWhbpaYwwGevYw==",
|
"integrity": "sha512-yKmQC9IiuvHdsNEbPHSprnMHg6OhL1cSeQZLzPpgzJBJ9ppEg9GAZN8MKj1TcmB4tZZUrq5xjK7KCmhwZP8iDA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm"
|
"arm"
|
||||||
],
|
],
|
||||||
@ -72,9 +72,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/android-arm64": {
|
"node_modules/@esbuild/android-arm64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.4.tgz",
|
||||||
"integrity": "sha512-PgabCsoaEEnnOiF6rUhOBXgYoLFIrHWP6mfLOzuQ1oZ1lwBdTL0hp5ivC4K3Kvz3BD8EipjeQo6l0aty3nr4qQ==",
|
"integrity": "sha512-yQVgO+V307hA2XhzELQ6F91CBGX7gSnlVGAj5YIqjQOxThDpM7fOcHT2YLJbE6gNdPtgRSafQrsK8rJ9xHCaZg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@ -87,9 +87,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/android-x64": {
|
"node_modules/@esbuild/android-x64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.4.tgz",
|
||||||
"integrity": "sha512-1OkJf8wNX1W5ucbp5HrK+z42b9DINb4ix59oJH/PIsh9cyFMqjgRKtCBXg0zEWhkmP1k3egdfrnS7cDTpLH43g==",
|
"integrity": "sha512-yLKXMxQg6sk1ntftxQ5uwyVgG4/S2E7UoOCc5N4YZW7fdkfRiYEXqm7CMuIfY2Vs3FTrNyKmSfNevIuIvJnMww==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@ -102,9 +102,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/darwin-arm64": {
|
"node_modules/@esbuild/darwin-arm64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.4.tgz",
|
||||||
"integrity": "sha512-57aofORpY7wDAuMs6DeqpmgSnVfZ63RgGbR/BHdOSTqJgYvHDCMY7/o1myFntl3k0YxtLE3WAm56nMf4qy3UDw==",
|
"integrity": "sha512-MVPEoZjZpk2xQ1zckZrb8eQuQib+QCzdmMs3YZAYEQPg+Rztk5pUxGyk8htZOC8Z38NMM29W+MqY9Sqo/sDGKw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@ -117,9 +117,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/darwin-x64": {
|
"node_modules/@esbuild/darwin-x64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.4.tgz",
|
||||||
"integrity": "sha512-NVBqMnxT9qvgu7Z322LUDlwjh4GDk6wEePyAQnHF9noxik/WvLFmr5v3Vgz5LSvqFducLCxsdmLztKhdpFW0Gg==",
|
"integrity": "sha512-uEsRtYRUDsz7i2tXg/t/SyF+5gU1cvi9B6B8i5ebJgtUUHJYWyIPIesmIOL4/+bywjxsDMA/XrNFMgMffLnh5A==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@ -132,9 +132,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/freebsd-arm64": {
|
"node_modules/@esbuild/freebsd-arm64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.4.tgz",
|
||||||
"integrity": "sha512-XiLK1AsCk2wKxN7j8h9GXXCs8FPZhp07U0rnpwRkAVSVGgLaIWYSqpTRzKjAfqJiZlp+XKo1HwsmDdICEKB3Dg==",
|
"integrity": "sha512-I8EOigqWnOHRin6Zp5Y1cfH3oT54bd7Sdz/VnpUNksbOtfp8IWRTH4pgkgO5jWaRQPjCpJcOpdRjYAMjPt8wXg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@ -147,9 +147,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/freebsd-x64": {
|
"node_modules/@esbuild/freebsd-x64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.4.tgz",
|
||||||
"integrity": "sha512-xyITfrF0G3l1gwR79hvNCCWKQ/16uK14xNNPFgzjbIqF4EpBvhO6l3jrWxXFUW51z6dVIl2Szh3x3uIbBWzH1Q==",
|
"integrity": "sha512-1bHfgMz/cNMjbpsYxjVgMJ1iwKq+NdDPlACBrWULD7ZdFmBQrhMicMaKb5CdmdVyvIwXmasOuF4r6Iq574kUTA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@ -162,9 +162,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-arm": {
|
"node_modules/@esbuild/linux-arm": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.4.tgz",
|
||||||
"integrity": "sha512-fc/T0QHMzvmnlF+kfD6bHLB8u+17gg13260p/E86yYjVoKNFjonL/+Y0GGQjMbFUas9QijqOa7pcR00a9RNkwg==",
|
"integrity": "sha512-4XCGqM/Ay1LCXUBH59bL4JbSbbTK1K22dWHymWMGaEh2sQCDOUw+OQxozYV/YdBb91leK2NbuSrE2BRamwgaYw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm"
|
"arm"
|
||||||
],
|
],
|
||||||
@ -177,9 +177,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-arm64": {
|
"node_modules/@esbuild/linux-arm64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.4.tgz",
|
||||||
"integrity": "sha512-lsKUYVd8L/j2uNs8dhMjMsKC5MHYh77gR9EThu7YCeeFz1XpIkx1I4a7mhoVfPS2VPVD1pMCh+PgxuAHUcEmXw==",
|
"integrity": "sha512-J42vLHaYREyiBwH0eQE4/7H1DTfZx8FuxyWSictx4d7ezzuKE3XOkIvOg+SQzRz7T9HLVKzq2tvbAov4UfufBw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@ -192,9 +192,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-ia32": {
|
"node_modules/@esbuild/linux-ia32": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.4.tgz",
|
||||||
"integrity": "sha512-EyfGWeOwRqK5Xj18vok0qv8IFBZ1/+hKV+cqD44oVhGsxHo9TmPtoSiDrWn8Sa2swq/VuO5Aiog6YPDj81oIkA==",
|
"integrity": "sha512-4ksIqFwhq7OExty7Sl1n0vqQSCqTG4sU6i99G2yuMr28CEOUZ/60N+IO9hwI8sIxBqmKmDgncE1n5CMu/3m0IA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ia32"
|
"ia32"
|
||||||
],
|
],
|
||||||
@ -207,9 +207,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-loong64": {
|
"node_modules/@esbuild/linux-loong64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.4.tgz",
|
||||||
"integrity": "sha512-PwXkcl3t0kSeYH5RuJIeh/fHOzKZd+ZdifAWzpVO+9TLWArutTFBJvOSkTZ3CcqQqNrTj1Qyo6nqE8MQj/a7cQ==",
|
"integrity": "sha512-bsWtoVHkGQgAsFXioDueXRiUIfSGrVkJjBBz4gcBJxXcD461cWFQFyu8Fxdj9TP+zEeqJ8C/O4LFFMBNi6Fscw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"loong64"
|
"loong64"
|
||||||
],
|
],
|
||||||
@ -222,9 +222,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-mips64el": {
|
"node_modules/@esbuild/linux-mips64el": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.4.tgz",
|
||||||
"integrity": "sha512-CRVkkSXf5GQcq7Am2a2tdIn85oqi/bkjuPvhNqcdeTgI0xgNbqLnEPRy2AEGkRuaJWB5uCX1IC4sqnY8ET14Yg==",
|
"integrity": "sha512-LRD9Fu8wJQgIOOV1o3nRyzrheFYjxA0C1IVWZ93eNRRWBKgarYFejd5WBtrp43cE4y4D4t3qWWyklm73Mrsd/g==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"mips64el"
|
"mips64el"
|
||||||
],
|
],
|
||||||
@ -237,9 +237,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-ppc64": {
|
"node_modules/@esbuild/linux-ppc64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.4.tgz",
|
||||||
"integrity": "sha512-t7zK1Cheh0xvzfZbimztiE0wGnpV+YRsBg3tefcEBN3O4GzgLu6fFpA5HxEyVm3hHZW1jAC4OhoGEp7C5Ii6Eg==",
|
"integrity": "sha512-jtQgoZjM92gauVRxNaaG/TpL3Pr4WcL3Pwqi9QgdrBGrEXzB+twohQiWNSTycs6lUygakos4mm2h0B9/SHveng==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ppc64"
|
"ppc64"
|
||||||
],
|
],
|
||||||
@ -252,9 +252,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-riscv64": {
|
"node_modules/@esbuild/linux-riscv64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.4.tgz",
|
||||||
"integrity": "sha512-fUZPtyCYih6y4lDYdSM4Yoax4nS7aH0/XixJStys+9tfp5cAlIAZhEVKOOdeGXmQn0IEyiUtlIsPnfObbeDQfQ==",
|
"integrity": "sha512-7WaU/kRZG0VCV09Xdlkg6LNAsfU9SAxo6XEdaZ8ffO4lh+DZoAhGTx7+vTMOXKxa+r2w1LYDGxfJa2rcgagMRA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"riscv64"
|
"riscv64"
|
||||||
],
|
],
|
||||||
@ -267,9 +267,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-s390x": {
|
"node_modules/@esbuild/linux-s390x": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.4.tgz",
|
||||||
"integrity": "sha512-oIcK2LqHWqfMERqjvaKJ3QJmycHn723HsXIv5gH4iGfmePfSj+gi0ZQv2h4bHUg2bs2gJtV0DlIjGhEuvdgxLw==",
|
"integrity": "sha512-D19ed0xreKQvC5t+ArE2njSnm18WPpE+1fhwaiJHf+Xwqsq+/SUaV8Mx0M27nszdU+Atq1HahrgCOZCNNEASUg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"s390x"
|
"s390x"
|
||||||
],
|
],
|
||||||
@ -282,9 +282,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-x64": {
|
"node_modules/@esbuild/linux-x64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.4.tgz",
|
||||||
"integrity": "sha512-RW9lpfZ6XZ6f5to2DJPvt0f/4RXEW229Xf++quVoW+YbnPrcapIJChtD/AmZ8cK3hglO/hXxJjs21pV0/l7L5w==",
|
"integrity": "sha512-Rx3AY1sxyiO/gvCGP00nL69L60dfmWyjKWY06ugpB8Ydpdsfi3BHW58HWC24K3CAjAPSwxcajozC2PzA9JBS1g==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@ -297,9 +297,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/netbsd-x64": {
|
"node_modules/@esbuild/netbsd-x64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.4.tgz",
|
||||||
"integrity": "sha512-piZ2oBoaq58pKZvhgdV6PemlL30Uhd9GmmOkIGZYgChwNcyVSSl6iMEJxMzU7x44Lk9q+hJ6a343M/iVEMEvxA==",
|
"integrity": "sha512-AaShPmN9c6w1mKRpliKFlaWcSkpBT4KOlk93UfFgeI3F3cbjzdDKGsbKnOZozmYbE1izZKLmNJiW0sFM+A5JPA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@ -312,9 +312,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/openbsd-x64": {
|
"node_modules/@esbuild/openbsd-x64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.4.tgz",
|
||||||
"integrity": "sha512-vaMfouYTz/4tKdQsXDccqhV6wgPEr+hfuxdNU5Pl/vQxYTsqcXv5DYEa5Z1RAxCoua5aEB+Uj5V7VT/bM92wxw==",
|
"integrity": "sha512-tRGvGwou3BrvHVvF8HxTqEiC5VtPzySudS9fh2jBIKpLX7HCW8jIkW+LunkFDNwhslx4xMAgh0jAHsx/iCymaQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@ -327,9 +327,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/sunos-x64": {
|
"node_modules/@esbuild/sunos-x64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.4.tgz",
|
||||||
"integrity": "sha512-Fa3rNQQ9q1qwy9u2cdDvuGKy3jmPnPPMDdyy/qbn5d395Pb9hjLYiPzX9BozXMPJDlCNofSY7jN3miM9gyAdHA==",
|
"integrity": "sha512-acORFDI95GKhmAnlH8EarBeuqoy/j3yxIU+FDB91H3+ZON+8HhTadtT450YkaMzX6lEWbhi+mjVUCj00M5yyOQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@ -342,9 +342,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/win32-arm64": {
|
"node_modules/@esbuild/win32-arm64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.4.tgz",
|
||||||
"integrity": "sha512-LPJC8ub+9uzyC6ygVmp00dAqet1q1DsZ/OldGIIBt+y+Ctd1OfnKNlzQgXK8nxwY1G8fAhklFSeSRRgAUJnR0w==",
|
"integrity": "sha512-1NxP+iOk8KSvS1L9SSxEvBAJk39U0GiGZkiiJGbuDF9G4fG7DSDw6XLxZMecAgmvQrwwx7yVKdNN3GgNh0UfKg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@ -357,9 +357,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/win32-ia32": {
|
"node_modules/@esbuild/win32-ia32": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.4.tgz",
|
||||||
"integrity": "sha512-WtUyRspyxZR6NTc2HG4xd9Wvz8lP4C6OUY1gAqisrf151HvXIxsK0mfAacFJNS7EN2wvPTgjP+SM8vgBOx5+zA==",
|
"integrity": "sha512-OKr8jze93vbgqZ/r23woWciTixUwLa976C9W7yNBujtnVHyvsL/ocYG61tsktUfJOpyIz5TsohkBZ6Lo2+PCcQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ia32"
|
"ia32"
|
||||||
],
|
],
|
||||||
@ -372,9 +372,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/win32-x64": {
|
"node_modules/@esbuild/win32-x64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.4.tgz",
|
||||||
"integrity": "sha512-Z8qCK4BkBm40j5KUM4NrkxYQS0R12cBO1NBVtI4vws6uwh1n/VaNu31Hm+n2cJUWdFbfH57PBghkhm9yLgmPfw==",
|
"integrity": "sha512-qJr3wVvcLjPFcV4AMDS3iquhBfTef2zo/jlm8RMxmiRp3Vy2HY8WMxrykJlcbCnqLXZPA0YZxZGND6eug85ogg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@ -1647,9 +1647,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild": {
|
"node_modules/esbuild": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.4.tgz",
|
||||||
"integrity": "sha512-eadWJC4CRpj93+miO5ZBlvCv+m2x6pzyNBznTvUeLFObMmxs1IMd8cCf6qiDVEZuDL6W8W7u+ZNW3GKEfOdDsA==",
|
"integrity": "sha512-9rxWV/Cb2DMUXfe9aUsYtqg0KTlw146ElFH22kYeK9KVV1qT082X4lpmiKsa12ePiCcIcB686TQJxaGAa9TFvA==",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"esbuild": "bin/esbuild"
|
"esbuild": "bin/esbuild"
|
||||||
@ -1658,28 +1658,28 @@
|
|||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@esbuild/android-arm": "0.18.3",
|
"@esbuild/android-arm": "0.18.4",
|
||||||
"@esbuild/android-arm64": "0.18.3",
|
"@esbuild/android-arm64": "0.18.4",
|
||||||
"@esbuild/android-x64": "0.18.3",
|
"@esbuild/android-x64": "0.18.4",
|
||||||
"@esbuild/darwin-arm64": "0.18.3",
|
"@esbuild/darwin-arm64": "0.18.4",
|
||||||
"@esbuild/darwin-x64": "0.18.3",
|
"@esbuild/darwin-x64": "0.18.4",
|
||||||
"@esbuild/freebsd-arm64": "0.18.3",
|
"@esbuild/freebsd-arm64": "0.18.4",
|
||||||
"@esbuild/freebsd-x64": "0.18.3",
|
"@esbuild/freebsd-x64": "0.18.4",
|
||||||
"@esbuild/linux-arm": "0.18.3",
|
"@esbuild/linux-arm": "0.18.4",
|
||||||
"@esbuild/linux-arm64": "0.18.3",
|
"@esbuild/linux-arm64": "0.18.4",
|
||||||
"@esbuild/linux-ia32": "0.18.3",
|
"@esbuild/linux-ia32": "0.18.4",
|
||||||
"@esbuild/linux-loong64": "0.18.3",
|
"@esbuild/linux-loong64": "0.18.4",
|
||||||
"@esbuild/linux-mips64el": "0.18.3",
|
"@esbuild/linux-mips64el": "0.18.4",
|
||||||
"@esbuild/linux-ppc64": "0.18.3",
|
"@esbuild/linux-ppc64": "0.18.4",
|
||||||
"@esbuild/linux-riscv64": "0.18.3",
|
"@esbuild/linux-riscv64": "0.18.4",
|
||||||
"@esbuild/linux-s390x": "0.18.3",
|
"@esbuild/linux-s390x": "0.18.4",
|
||||||
"@esbuild/linux-x64": "0.18.3",
|
"@esbuild/linux-x64": "0.18.4",
|
||||||
"@esbuild/netbsd-x64": "0.18.3",
|
"@esbuild/netbsd-x64": "0.18.4",
|
||||||
"@esbuild/openbsd-x64": "0.18.3",
|
"@esbuild/openbsd-x64": "0.18.4",
|
||||||
"@esbuild/sunos-x64": "0.18.3",
|
"@esbuild/sunos-x64": "0.18.4",
|
||||||
"@esbuild/win32-arm64": "0.18.3",
|
"@esbuild/win32-arm64": "0.18.4",
|
||||||
"@esbuild/win32-ia32": "0.18.3",
|
"@esbuild/win32-ia32": "0.18.4",
|
||||||
"@esbuild/win32-x64": "0.18.3"
|
"@esbuild/win32-x64": "0.18.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/escalade": {
|
"node_modules/escalade": {
|
||||||
@ -6797,135 +6797,135 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@esbuild/android-arm": {
|
"@esbuild/android-arm": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.4.tgz",
|
||||||
"integrity": "sha512-QOn3VIlL6Qv1eHBpQB/s7simaZgGss2ASyxDOwYSLmc6vD0uuizZkuYawHmuLjWEm5wPwp0JQWhbpaYwwGevYw==",
|
"integrity": "sha512-yKmQC9IiuvHdsNEbPHSprnMHg6OhL1cSeQZLzPpgzJBJ9ppEg9GAZN8MKj1TcmB4tZZUrq5xjK7KCmhwZP8iDA==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/android-arm64": {
|
"@esbuild/android-arm64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.4.tgz",
|
||||||
"integrity": "sha512-PgabCsoaEEnnOiF6rUhOBXgYoLFIrHWP6mfLOzuQ1oZ1lwBdTL0hp5ivC4K3Kvz3BD8EipjeQo6l0aty3nr4qQ==",
|
"integrity": "sha512-yQVgO+V307hA2XhzELQ6F91CBGX7gSnlVGAj5YIqjQOxThDpM7fOcHT2YLJbE6gNdPtgRSafQrsK8rJ9xHCaZg==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/android-x64": {
|
"@esbuild/android-x64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.4.tgz",
|
||||||
"integrity": "sha512-1OkJf8wNX1W5ucbp5HrK+z42b9DINb4ix59oJH/PIsh9cyFMqjgRKtCBXg0zEWhkmP1k3egdfrnS7cDTpLH43g==",
|
"integrity": "sha512-yLKXMxQg6sk1ntftxQ5uwyVgG4/S2E7UoOCc5N4YZW7fdkfRiYEXqm7CMuIfY2Vs3FTrNyKmSfNevIuIvJnMww==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/darwin-arm64": {
|
"@esbuild/darwin-arm64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.4.tgz",
|
||||||
"integrity": "sha512-57aofORpY7wDAuMs6DeqpmgSnVfZ63RgGbR/BHdOSTqJgYvHDCMY7/o1myFntl3k0YxtLE3WAm56nMf4qy3UDw==",
|
"integrity": "sha512-MVPEoZjZpk2xQ1zckZrb8eQuQib+QCzdmMs3YZAYEQPg+Rztk5pUxGyk8htZOC8Z38NMM29W+MqY9Sqo/sDGKw==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/darwin-x64": {
|
"@esbuild/darwin-x64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.4.tgz",
|
||||||
"integrity": "sha512-NVBqMnxT9qvgu7Z322LUDlwjh4GDk6wEePyAQnHF9noxik/WvLFmr5v3Vgz5LSvqFducLCxsdmLztKhdpFW0Gg==",
|
"integrity": "sha512-uEsRtYRUDsz7i2tXg/t/SyF+5gU1cvi9B6B8i5ebJgtUUHJYWyIPIesmIOL4/+bywjxsDMA/XrNFMgMffLnh5A==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/freebsd-arm64": {
|
"@esbuild/freebsd-arm64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.4.tgz",
|
||||||
"integrity": "sha512-XiLK1AsCk2wKxN7j8h9GXXCs8FPZhp07U0rnpwRkAVSVGgLaIWYSqpTRzKjAfqJiZlp+XKo1HwsmDdICEKB3Dg==",
|
"integrity": "sha512-I8EOigqWnOHRin6Zp5Y1cfH3oT54bd7Sdz/VnpUNksbOtfp8IWRTH4pgkgO5jWaRQPjCpJcOpdRjYAMjPt8wXg==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/freebsd-x64": {
|
"@esbuild/freebsd-x64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.4.tgz",
|
||||||
"integrity": "sha512-xyITfrF0G3l1gwR79hvNCCWKQ/16uK14xNNPFgzjbIqF4EpBvhO6l3jrWxXFUW51z6dVIl2Szh3x3uIbBWzH1Q==",
|
"integrity": "sha512-1bHfgMz/cNMjbpsYxjVgMJ1iwKq+NdDPlACBrWULD7ZdFmBQrhMicMaKb5CdmdVyvIwXmasOuF4r6Iq574kUTA==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/linux-arm": {
|
"@esbuild/linux-arm": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.4.tgz",
|
||||||
"integrity": "sha512-fc/T0QHMzvmnlF+kfD6bHLB8u+17gg13260p/E86yYjVoKNFjonL/+Y0GGQjMbFUas9QijqOa7pcR00a9RNkwg==",
|
"integrity": "sha512-4XCGqM/Ay1LCXUBH59bL4JbSbbTK1K22dWHymWMGaEh2sQCDOUw+OQxozYV/YdBb91leK2NbuSrE2BRamwgaYw==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/linux-arm64": {
|
"@esbuild/linux-arm64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.4.tgz",
|
||||||
"integrity": "sha512-lsKUYVd8L/j2uNs8dhMjMsKC5MHYh77gR9EThu7YCeeFz1XpIkx1I4a7mhoVfPS2VPVD1pMCh+PgxuAHUcEmXw==",
|
"integrity": "sha512-J42vLHaYREyiBwH0eQE4/7H1DTfZx8FuxyWSictx4d7ezzuKE3XOkIvOg+SQzRz7T9HLVKzq2tvbAov4UfufBw==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/linux-ia32": {
|
"@esbuild/linux-ia32": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.4.tgz",
|
||||||
"integrity": "sha512-EyfGWeOwRqK5Xj18vok0qv8IFBZ1/+hKV+cqD44oVhGsxHo9TmPtoSiDrWn8Sa2swq/VuO5Aiog6YPDj81oIkA==",
|
"integrity": "sha512-4ksIqFwhq7OExty7Sl1n0vqQSCqTG4sU6i99G2yuMr28CEOUZ/60N+IO9hwI8sIxBqmKmDgncE1n5CMu/3m0IA==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/linux-loong64": {
|
"@esbuild/linux-loong64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.4.tgz",
|
||||||
"integrity": "sha512-PwXkcl3t0kSeYH5RuJIeh/fHOzKZd+ZdifAWzpVO+9TLWArutTFBJvOSkTZ3CcqQqNrTj1Qyo6nqE8MQj/a7cQ==",
|
"integrity": "sha512-bsWtoVHkGQgAsFXioDueXRiUIfSGrVkJjBBz4gcBJxXcD461cWFQFyu8Fxdj9TP+zEeqJ8C/O4LFFMBNi6Fscw==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/linux-mips64el": {
|
"@esbuild/linux-mips64el": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.4.tgz",
|
||||||
"integrity": "sha512-CRVkkSXf5GQcq7Am2a2tdIn85oqi/bkjuPvhNqcdeTgI0xgNbqLnEPRy2AEGkRuaJWB5uCX1IC4sqnY8ET14Yg==",
|
"integrity": "sha512-LRD9Fu8wJQgIOOV1o3nRyzrheFYjxA0C1IVWZ93eNRRWBKgarYFejd5WBtrp43cE4y4D4t3qWWyklm73Mrsd/g==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/linux-ppc64": {
|
"@esbuild/linux-ppc64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.4.tgz",
|
||||||
"integrity": "sha512-t7zK1Cheh0xvzfZbimztiE0wGnpV+YRsBg3tefcEBN3O4GzgLu6fFpA5HxEyVm3hHZW1jAC4OhoGEp7C5Ii6Eg==",
|
"integrity": "sha512-jtQgoZjM92gauVRxNaaG/TpL3Pr4WcL3Pwqi9QgdrBGrEXzB+twohQiWNSTycs6lUygakos4mm2h0B9/SHveng==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/linux-riscv64": {
|
"@esbuild/linux-riscv64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.4.tgz",
|
||||||
"integrity": "sha512-fUZPtyCYih6y4lDYdSM4Yoax4nS7aH0/XixJStys+9tfp5cAlIAZhEVKOOdeGXmQn0IEyiUtlIsPnfObbeDQfQ==",
|
"integrity": "sha512-7WaU/kRZG0VCV09Xdlkg6LNAsfU9SAxo6XEdaZ8ffO4lh+DZoAhGTx7+vTMOXKxa+r2w1LYDGxfJa2rcgagMRA==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/linux-s390x": {
|
"@esbuild/linux-s390x": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.4.tgz",
|
||||||
"integrity": "sha512-oIcK2LqHWqfMERqjvaKJ3QJmycHn723HsXIv5gH4iGfmePfSj+gi0ZQv2h4bHUg2bs2gJtV0DlIjGhEuvdgxLw==",
|
"integrity": "sha512-D19ed0xreKQvC5t+ArE2njSnm18WPpE+1fhwaiJHf+Xwqsq+/SUaV8Mx0M27nszdU+Atq1HahrgCOZCNNEASUg==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/linux-x64": {
|
"@esbuild/linux-x64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.4.tgz",
|
||||||
"integrity": "sha512-RW9lpfZ6XZ6f5to2DJPvt0f/4RXEW229Xf++quVoW+YbnPrcapIJChtD/AmZ8cK3hglO/hXxJjs21pV0/l7L5w==",
|
"integrity": "sha512-Rx3AY1sxyiO/gvCGP00nL69L60dfmWyjKWY06ugpB8Ydpdsfi3BHW58HWC24K3CAjAPSwxcajozC2PzA9JBS1g==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/netbsd-x64": {
|
"@esbuild/netbsd-x64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.4.tgz",
|
||||||
"integrity": "sha512-piZ2oBoaq58pKZvhgdV6PemlL30Uhd9GmmOkIGZYgChwNcyVSSl6iMEJxMzU7x44Lk9q+hJ6a343M/iVEMEvxA==",
|
"integrity": "sha512-AaShPmN9c6w1mKRpliKFlaWcSkpBT4KOlk93UfFgeI3F3cbjzdDKGsbKnOZozmYbE1izZKLmNJiW0sFM+A5JPA==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/openbsd-x64": {
|
"@esbuild/openbsd-x64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.4.tgz",
|
||||||
"integrity": "sha512-vaMfouYTz/4tKdQsXDccqhV6wgPEr+hfuxdNU5Pl/vQxYTsqcXv5DYEa5Z1RAxCoua5aEB+Uj5V7VT/bM92wxw==",
|
"integrity": "sha512-tRGvGwou3BrvHVvF8HxTqEiC5VtPzySudS9fh2jBIKpLX7HCW8jIkW+LunkFDNwhslx4xMAgh0jAHsx/iCymaQ==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/sunos-x64": {
|
"@esbuild/sunos-x64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.4.tgz",
|
||||||
"integrity": "sha512-Fa3rNQQ9q1qwy9u2cdDvuGKy3jmPnPPMDdyy/qbn5d395Pb9hjLYiPzX9BozXMPJDlCNofSY7jN3miM9gyAdHA==",
|
"integrity": "sha512-acORFDI95GKhmAnlH8EarBeuqoy/j3yxIU+FDB91H3+ZON+8HhTadtT450YkaMzX6lEWbhi+mjVUCj00M5yyOQ==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/win32-arm64": {
|
"@esbuild/win32-arm64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.4.tgz",
|
||||||
"integrity": "sha512-LPJC8ub+9uzyC6ygVmp00dAqet1q1DsZ/OldGIIBt+y+Ctd1OfnKNlzQgXK8nxwY1G8fAhklFSeSRRgAUJnR0w==",
|
"integrity": "sha512-1NxP+iOk8KSvS1L9SSxEvBAJk39U0GiGZkiiJGbuDF9G4fG7DSDw6XLxZMecAgmvQrwwx7yVKdNN3GgNh0UfKg==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/win32-ia32": {
|
"@esbuild/win32-ia32": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.4.tgz",
|
||||||
"integrity": "sha512-WtUyRspyxZR6NTc2HG4xd9Wvz8lP4C6OUY1gAqisrf151HvXIxsK0mfAacFJNS7EN2wvPTgjP+SM8vgBOx5+zA==",
|
"integrity": "sha512-OKr8jze93vbgqZ/r23woWciTixUwLa976C9W7yNBujtnVHyvsL/ocYG61tsktUfJOpyIz5TsohkBZ6Lo2+PCcQ==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/win32-x64": {
|
"@esbuild/win32-x64": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.4.tgz",
|
||||||
"integrity": "sha512-Z8qCK4BkBm40j5KUM4NrkxYQS0R12cBO1NBVtI4vws6uwh1n/VaNu31Hm+n2cJUWdFbfH57PBghkhm9yLgmPfw==",
|
"integrity": "sha512-qJr3wVvcLjPFcV4AMDS3iquhBfTef2zo/jlm8RMxmiRp3Vy2HY8WMxrykJlcbCnqLXZPA0YZxZGND6eug85ogg==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@jridgewell/gen-mapping": {
|
"@jridgewell/gen-mapping": {
|
||||||
@ -7896,32 +7896,32 @@
|
|||||||
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
|
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
|
||||||
},
|
},
|
||||||
"esbuild": {
|
"esbuild": {
|
||||||
"version": "0.18.3",
|
"version": "0.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.3.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.4.tgz",
|
||||||
"integrity": "sha512-eadWJC4CRpj93+miO5ZBlvCv+m2x6pzyNBznTvUeLFObMmxs1IMd8cCf6qiDVEZuDL6W8W7u+ZNW3GKEfOdDsA==",
|
"integrity": "sha512-9rxWV/Cb2DMUXfe9aUsYtqg0KTlw146ElFH22kYeK9KVV1qT082X4lpmiKsa12ePiCcIcB686TQJxaGAa9TFvA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@esbuild/android-arm": "0.18.3",
|
"@esbuild/android-arm": "0.18.4",
|
||||||
"@esbuild/android-arm64": "0.18.3",
|
"@esbuild/android-arm64": "0.18.4",
|
||||||
"@esbuild/android-x64": "0.18.3",
|
"@esbuild/android-x64": "0.18.4",
|
||||||
"@esbuild/darwin-arm64": "0.18.3",
|
"@esbuild/darwin-arm64": "0.18.4",
|
||||||
"@esbuild/darwin-x64": "0.18.3",
|
"@esbuild/darwin-x64": "0.18.4",
|
||||||
"@esbuild/freebsd-arm64": "0.18.3",
|
"@esbuild/freebsd-arm64": "0.18.4",
|
||||||
"@esbuild/freebsd-x64": "0.18.3",
|
"@esbuild/freebsd-x64": "0.18.4",
|
||||||
"@esbuild/linux-arm": "0.18.3",
|
"@esbuild/linux-arm": "0.18.4",
|
||||||
"@esbuild/linux-arm64": "0.18.3",
|
"@esbuild/linux-arm64": "0.18.4",
|
||||||
"@esbuild/linux-ia32": "0.18.3",
|
"@esbuild/linux-ia32": "0.18.4",
|
||||||
"@esbuild/linux-loong64": "0.18.3",
|
"@esbuild/linux-loong64": "0.18.4",
|
||||||
"@esbuild/linux-mips64el": "0.18.3",
|
"@esbuild/linux-mips64el": "0.18.4",
|
||||||
"@esbuild/linux-ppc64": "0.18.3",
|
"@esbuild/linux-ppc64": "0.18.4",
|
||||||
"@esbuild/linux-riscv64": "0.18.3",
|
"@esbuild/linux-riscv64": "0.18.4",
|
||||||
"@esbuild/linux-s390x": "0.18.3",
|
"@esbuild/linux-s390x": "0.18.4",
|
||||||
"@esbuild/linux-x64": "0.18.3",
|
"@esbuild/linux-x64": "0.18.4",
|
||||||
"@esbuild/netbsd-x64": "0.18.3",
|
"@esbuild/netbsd-x64": "0.18.4",
|
||||||
"@esbuild/openbsd-x64": "0.18.3",
|
"@esbuild/openbsd-x64": "0.18.4",
|
||||||
"@esbuild/sunos-x64": "0.18.3",
|
"@esbuild/sunos-x64": "0.18.4",
|
||||||
"@esbuild/win32-arm64": "0.18.3",
|
"@esbuild/win32-arm64": "0.18.4",
|
||||||
"@esbuild/win32-ia32": "0.18.3",
|
"@esbuild/win32-ia32": "0.18.4",
|
||||||
"@esbuild/win32-x64": "0.18.3"
|
"@esbuild/win32-x64": "0.18.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"escalade": {
|
"escalade": {
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
"any-date-parser": "^1.5.4",
|
"any-date-parser": "^1.5.4",
|
||||||
"browserslist": "^4.21.7",
|
"browserslist": "^4.21.7",
|
||||||
"cheerio": "^1.0.0-rc.12",
|
"cheerio": "^1.0.0-rc.12",
|
||||||
"esbuild": "^0.18.3",
|
"esbuild": "^0.18.4",
|
||||||
"fs-cheerio": "^3.0.0",
|
"fs-cheerio": "^3.0.0",
|
||||||
"inline-source": "^8.0.2",
|
"inline-source": "^8.0.2",
|
||||||
"jsdom": "^22.1.0",
|
"jsdom": "^22.1.0",
|
||||||
|
@ -226,7 +226,7 @@ func (app *appContext) loadRoutes(router *gin.Engine) {
|
|||||||
api.POST(p+"/matrix/login", app.MatrixLogin)
|
api.POST(p+"/matrix/login", app.MatrixLogin)
|
||||||
|
|
||||||
if userPageEnabled {
|
if userPageEnabled {
|
||||||
user.GET(p+"/hello", app.HelloWorld)
|
user.GET(p+"/details", app.MyDetails)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
33
scripts/langmover/README.md
Normal file
33
scripts/langmover/README.md
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# *langmover*
|
||||||
|
|
||||||
|
* Makes moving strings between language files a little easier.
|
||||||
|
|
||||||
|
# Usage
|
||||||
|
|
||||||
|
You'll need to create a template file. See example `template.json`:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"explanation": "values here can either be folder, folder:section, or folder:section:subkey, and then either nothing, or /keyname. It all depends on whether the sections and keys match up, or if you want to pull a plural/singular only or not."
|
||||||
|
},
|
||||||
|
"strings": {
|
||||||
|
"inviteInfiniteUsesWarning": "admin", // Resolves to admin/strings/inviteInfiniteUsesWarning
|
||||||
|
"emailAddress": "form:strings/emailAddress", // Resolves to form/strings/emailAddress
|
||||||
|
"modifySettingsFor": "admin:quantityStrings:plural/", // Resolves to admin/quantityStrings/modifySettingsFor/plural
|
||||||
|
"deleteNUsers": "admin:quantityStrings:singular/deleteNUsers" // Resolves to admin/quantityStrings/deleteNUsers/singular
|
||||||
|
},
|
||||||
|
"quantityStrings": {
|
||||||
|
"reEnableUsers": "admin" // Resolves to admin/quantityStrings/reEnableUsers
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Args:
|
||||||
|
* `--source`: Source `lang/` directory. **Always run on a copy, to avoid data loss**
|
||||||
|
* `--template`: Template JSON file.
|
||||||
|
* `--output`: Output directory. Will be filled with lang files (e.g. "en-us.json", "fa-ir.json", ...).
|
||||||
|
* `--extract`: Passing will remove the templated strings from their source file. **Modifies the source directory**.
|
||||||
|
|
||||||
|
|
138
scripts/langmover/langmover.py
Normal file
138
scripts/langmover/langmover.py
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
import json, argparse, os
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
ROOT = "en-us.json"
|
||||||
|
|
||||||
|
# Tree structure: <lang-code.json>/<folder>/<json content>
|
||||||
|
def generateTree(src: Path):
|
||||||
|
tree = {}
|
||||||
|
langs = {}
|
||||||
|
directories = []
|
||||||
|
|
||||||
|
def readLangFile(path: Path):
|
||||||
|
with open(path, 'r') as f:
|
||||||
|
content = json.load(f)
|
||||||
|
|
||||||
|
return content
|
||||||
|
|
||||||
|
|
||||||
|
for directory in os.scandir(src):
|
||||||
|
if not directory.is_dir(): continue
|
||||||
|
directories.append(directory.name)
|
||||||
|
|
||||||
|
# tree[directory.name] = {}
|
||||||
|
|
||||||
|
for lang in os.scandir(directory.path):
|
||||||
|
if not lang.is_file(): continue
|
||||||
|
if not ".json" in lang.name: continue
|
||||||
|
if lang.name not in langs:
|
||||||
|
langs[lang.name] = True
|
||||||
|
if lang.name.lower() not in tree:
|
||||||
|
tree[lang.name.lower()] = {}
|
||||||
|
|
||||||
|
for lang in langs:
|
||||||
|
for directory in directories:
|
||||||
|
filepath = Path(src) / Path(directory) / Path(lang)
|
||||||
|
if not filepath.exists(): continue
|
||||||
|
tree[lang.lower()][directory] = readLangFile(filepath)
|
||||||
|
|
||||||
|
return tree
|
||||||
|
|
||||||
|
def parseKey(langTree, currentSection: str, fieldName: str, key: str, extract=False):
|
||||||
|
temp = key.split("/")
|
||||||
|
loc = temp[0]
|
||||||
|
k = ""
|
||||||
|
if len(temp) > 1:
|
||||||
|
k = temp[1]
|
||||||
|
|
||||||
|
sections = loc.split(":")
|
||||||
|
|
||||||
|
# folder, folder:section or folder:section:subkey
|
||||||
|
folder = sections[0]
|
||||||
|
section = currentSection
|
||||||
|
subkey = None
|
||||||
|
if len(sections) > 1:
|
||||||
|
section = sections[1]
|
||||||
|
if len(sections) > 2:
|
||||||
|
subkey = sections[2]
|
||||||
|
|
||||||
|
|
||||||
|
if k == '':
|
||||||
|
k = fieldName
|
||||||
|
|
||||||
|
value = ""
|
||||||
|
if folder in langTree and section in langTree[folder] and k in langTree[folder][section]:
|
||||||
|
value = langTree[folder][section][k]
|
||||||
|
if extract:
|
||||||
|
s = langTree[folder][section]
|
||||||
|
del s[k]
|
||||||
|
langTree[folder][section] = s
|
||||||
|
|
||||||
|
if subkey is not None and subkey in value:
|
||||||
|
value = value[subkey]
|
||||||
|
|
||||||
|
return (langTree, folder, value)
|
||||||
|
|
||||||
|
|
||||||
|
def generate(templ: Path, source: Path, output: Path, extract: str, tree):
|
||||||
|
with open(templ, "r") as f:
|
||||||
|
template = json.load(f)
|
||||||
|
|
||||||
|
if not output.exists():
|
||||||
|
output.mkdir()
|
||||||
|
|
||||||
|
for lang in tree:
|
||||||
|
out = {}
|
||||||
|
for section in template:
|
||||||
|
if section == "meta":
|
||||||
|
# grab a meta section from the first file we find
|
||||||
|
for file in tree[lang]:
|
||||||
|
out["meta"] = tree[lang][file]["meta"]
|
||||||
|
break
|
||||||
|
|
||||||
|
continue
|
||||||
|
|
||||||
|
folder = ""
|
||||||
|
out[section] = {}
|
||||||
|
for key in template[section]:
|
||||||
|
(tree[lang], folder, val) = parseKey(tree[lang], section, key, template[section][key], extract)
|
||||||
|
if val != "":
|
||||||
|
out[section][key] = val
|
||||||
|
|
||||||
|
# if extract and val != "":
|
||||||
|
# with open(source / folder / lang, "w") as f:
|
||||||
|
# json.dump(modifiedTree[folder], f, indent=4, ensure_ascii=False)
|
||||||
|
|
||||||
|
with open(output / Path(lang), "w") as f:
|
||||||
|
json.dump(out, f, indent=4, ensure_ascii=False)
|
||||||
|
|
||||||
|
if extract and extract != "":
|
||||||
|
ex = Path(extract)
|
||||||
|
if not ex.exists():
|
||||||
|
ex.mkdir()
|
||||||
|
|
||||||
|
for lang in tree:
|
||||||
|
for folder in tree[lang]:
|
||||||
|
if not (ex / folder).exists():
|
||||||
|
(ex / folder).mkdir()
|
||||||
|
with open(ex / folder / lang, "w") as f:
|
||||||
|
json.dump(tree[lang][folder], f, indent=4, ensure_ascii=False)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
|
||||||
|
parser.add_argument("--source", help="source \"lang/\" folder.")
|
||||||
|
parser.add_argument("--template", help="template file. see template.json for an example of how it works.")
|
||||||
|
parser.add_argument("--output", help="output directory for new files.")
|
||||||
|
parser.add_argument("--extract", help="put copies of original files with strings removed in this directory")
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
source = Path(args.source)
|
||||||
|
|
||||||
|
tree = generateTree(source)
|
||||||
|
|
||||||
|
generate(Path(args.template), source, Path(args.output), args.extract, tree)
|
||||||
|
|
||||||
|
# print(json.dumps(tree, sort_keys=True, indent=4))
|
35
scripts/langmover/login.json
Normal file
35
scripts/langmover/login.json
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"meta": {},
|
||||||
|
"strings": {
|
||||||
|
"username": "common",
|
||||||
|
"password": "common",
|
||||||
|
"emailAddress": "common",
|
||||||
|
"name": "common",
|
||||||
|
"submit": "common",
|
||||||
|
"send": "common",
|
||||||
|
"success": "common",
|
||||||
|
"continue": "common",
|
||||||
|
"error": "common",
|
||||||
|
"copy": "common",
|
||||||
|
"copied": "common",
|
||||||
|
"time24h": "common",
|
||||||
|
"time12h": "common",
|
||||||
|
"linkTelegram": "common",
|
||||||
|
"contactEmail": "common",
|
||||||
|
"contactTelegram": "common",
|
||||||
|
"linkDiscord": "common",
|
||||||
|
"linkMatrix": "common",
|
||||||
|
"contactDiscord": "common",
|
||||||
|
"theme": "common",
|
||||||
|
"refresh": "common",
|
||||||
|
"required": "common",
|
||||||
|
"login": "admin",
|
||||||
|
"logout": "admin"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"errorLoginBlank": "admin",
|
||||||
|
"errorConnection": "admin",
|
||||||
|
"errorUnknown": "admin",
|
||||||
|
"error401Unauthorized": "admin"
|
||||||
|
}
|
||||||
|
}
|
15
scripts/langmover/template.json
Normal file
15
scripts/langmover/template.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"explanation": "values here can either be folder, folder:section, or folder:section:subkey, and then either nothing, or /keyname. It all depends on whether the sections and keys match up, or if you want to pull a plural/singular only or not."
|
||||||
|
},
|
||||||
|
"strings": {
|
||||||
|
"inviteInfiniteUsesWarning": "admin",
|
||||||
|
"emailAddress": "form:strings/emailAddress",
|
||||||
|
"modifySettingsFor": "admin:quantityStrings:plural/",
|
||||||
|
"deleteNUsers": "admin:quantityStrings:singular/deleteNUsers"
|
||||||
|
},
|
||||||
|
"quantityStrings": {
|
||||||
|
"reEnableUsers": "admin"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
3
setup.go
3
setup.go
@ -111,7 +111,8 @@ func (st *Storage) loadLangSetup(filesystems ...fs.FS) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
st.lang.Common.patchCommon(&lang.Strings, index)
|
st.lang.Common.patchCommonStrings(&lang.Strings, index)
|
||||||
|
st.lang.Common.patchCommonNotifications(&lang.Notifications, index)
|
||||||
if fname != "en-us.json" {
|
if fname != "en-us.json" {
|
||||||
if lang.Meta.Fallback != "" {
|
if lang.Meta.Fallback != "" {
|
||||||
fallback, ok := st.lang.Setup[lang.Meta.Fallback]
|
fallback, ok := st.lang.Setup[lang.Meta.Fallback]
|
||||||
|
38
storage.go
38
storage.go
@ -164,7 +164,7 @@ func (st *Storage) loadLang(filesystems ...fs.FS) (err error) {
|
|||||||
// from a list of other sources in a preferred order.
|
// from a list of other sources in a preferred order.
|
||||||
// languages to patch from should be in decreasing priority,
|
// languages to patch from should be in decreasing priority,
|
||||||
// E.g: If to = fr-be, from = [fr-fr, en-us].
|
// E.g: If to = fr-be, from = [fr-fr, en-us].
|
||||||
func (common *commonLangs) patchCommon(to *langSection, from ...string) {
|
func (common *commonLangs) patchCommonStrings(to *langSection, from ...string) {
|
||||||
if *to == nil {
|
if *to == nil {
|
||||||
*to = langSection{}
|
*to = langSection{}
|
||||||
}
|
}
|
||||||
@ -183,6 +183,25 @@ func (common *commonLangs) patchCommon(to *langSection, from ...string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (common *commonLangs) patchCommonNotifications(to *langSection, from ...string) {
|
||||||
|
if *to == nil {
|
||||||
|
*to = langSection{}
|
||||||
|
}
|
||||||
|
for n, ev := range (*common)[from[len(from)-1]].Notifications {
|
||||||
|
if v, ok := (*to)[n]; !ok || v == "" {
|
||||||
|
i := 0
|
||||||
|
for i < len(from)-1 {
|
||||||
|
ev, ok = (*common)[from[i]].Notifications[n]
|
||||||
|
if ok && ev != "" {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
(*to)[n] = ev
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func patchLang(to *langSection, from ...*langSection) {
|
func patchLang(to *langSection, from ...*langSection) {
|
||||||
if *to == nil {
|
if *to == nil {
|
||||||
*to = langSection{}
|
*to = langSection{}
|
||||||
@ -329,7 +348,8 @@ func (st *Storage) loadLangAdmin(filesystems ...fs.FS) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
st.lang.Common.patchCommon(&lang.Strings, index)
|
st.lang.Common.patchCommonStrings(&lang.Strings, index)
|
||||||
|
st.lang.Common.patchCommonNotifications(&lang.Notifications, index)
|
||||||
if fname != "en-us.json" {
|
if fname != "en-us.json" {
|
||||||
if lang.Meta.Fallback != "" {
|
if lang.Meta.Fallback != "" {
|
||||||
fallback, ok := st.lang.Admin[lang.Meta.Fallback]
|
fallback, ok := st.lang.Admin[lang.Meta.Fallback]
|
||||||
@ -415,7 +435,8 @@ func (st *Storage) loadLangUser(filesystems ...fs.FS) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
st.lang.Common.patchCommon(&lang.Strings, index)
|
st.lang.Common.patchCommonStrings(&lang.Strings, index)
|
||||||
|
st.lang.Common.patchCommonNotifications(&lang.Notifications, index)
|
||||||
if fname != "en-us.json" {
|
if fname != "en-us.json" {
|
||||||
if lang.Meta.Fallback != "" {
|
if lang.Meta.Fallback != "" {
|
||||||
fallback, ok := st.lang.User[lang.Meta.Fallback]
|
fallback, ok := st.lang.User[lang.Meta.Fallback]
|
||||||
@ -445,8 +466,13 @@ func (st *Storage) loadLangUser(filesystems ...fs.FS) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
userJSON, err := json.Marshal(lang)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
lang.notificationsJSON = string(notifications)
|
lang.notificationsJSON = string(notifications)
|
||||||
lang.validationStringsJSON = string(validationStrings)
|
lang.validationStringsJSON = string(validationStrings)
|
||||||
|
lang.JSON = string(userJSON)
|
||||||
st.lang.User[index] = lang
|
st.lang.User[index] = lang
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -506,7 +532,7 @@ func (st *Storage) loadLangPWR(filesystems ...fs.FS) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
st.lang.Common.patchCommon(&lang.Strings, index)
|
st.lang.Common.patchCommonStrings(&lang.Strings, index)
|
||||||
if fname != "en-us.json" {
|
if fname != "en-us.json" {
|
||||||
if lang.Meta.Fallback != "" {
|
if lang.Meta.Fallback != "" {
|
||||||
fallback, ok := st.lang.PasswordReset[lang.Meta.Fallback]
|
fallback, ok := st.lang.PasswordReset[lang.Meta.Fallback]
|
||||||
@ -582,7 +608,7 @@ func (st *Storage) loadLangEmail(filesystems ...fs.FS) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
st.lang.Common.patchCommon(&lang.Strings, index)
|
st.lang.Common.patchCommonStrings(&lang.Strings, index)
|
||||||
if fname != "en-us.json" {
|
if fname != "en-us.json" {
|
||||||
if lang.Meta.Fallback != "" {
|
if lang.Meta.Fallback != "" {
|
||||||
fallback, ok := st.lang.Email[lang.Meta.Fallback]
|
fallback, ok := st.lang.Email[lang.Meta.Fallback]
|
||||||
@ -679,7 +705,7 @@ func (st *Storage) loadLangTelegram(filesystems ...fs.FS) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
st.lang.Common.patchCommon(&lang.Strings, index)
|
st.lang.Common.patchCommonStrings(&lang.Strings, index)
|
||||||
if fname != "en-us.json" {
|
if fname != "en-us.json" {
|
||||||
if lang.Meta.Fallback != "" {
|
if lang.Meta.Fallback != "" {
|
||||||
fallback, ok := st.lang.Telegram[lang.Meta.Fallback]
|
fallback, ok := st.lang.Telegram[lang.Meta.Fallback]
|
||||||
|
21
ts/user.ts
21
ts/user.ts
@ -4,6 +4,13 @@ import { Modal } from "./modules/modal.js";
|
|||||||
import { _get, _post, notificationBox, whichAnimationEvent } from "./modules/common.js";
|
import { _get, _post, notificationBox, whichAnimationEvent } from "./modules/common.js";
|
||||||
import { Login } from "./modules/login.js";
|
import { Login } from "./modules/login.js";
|
||||||
|
|
||||||
|
interface userWindow extends Window {
|
||||||
|
jellyfinID: string;
|
||||||
|
username: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
declare var window: userWindow;
|
||||||
|
|
||||||
const theme = new ThemeManager(document.getElementById("button-theme"));
|
const theme = new ThemeManager(document.getElementById("button-theme"));
|
||||||
|
|
||||||
window.lang = new lang(window.langFile as LangFile);
|
window.lang = new lang(window.langFile as LangFile);
|
||||||
@ -22,14 +29,20 @@ window.modals = {} as Modals;
|
|||||||
|
|
||||||
window.notifications = new notificationBox(document.getElementById('notification-box') as HTMLDivElement, 5);
|
window.notifications = new notificationBox(document.getElementById('notification-box') as HTMLDivElement, 5);
|
||||||
|
|
||||||
|
var rootCard = document.getElementById("card-user");
|
||||||
|
|
||||||
const login = new Login(window.modals.login as Modal, "/my/");
|
const login = new Login(window.modals.login as Modal, "/my/");
|
||||||
login.onLogin = () => {
|
login.onLogin = () => {
|
||||||
console.log("Logged in.");
|
console.log("Logged in.");
|
||||||
document.getElementById("card-user").textContent = "Logged In!";
|
_get("/my/details", null, (req: XMLHttpRequest) => {
|
||||||
_get("/my/hello", null, (req: XMLHttpRequest) => {
|
|
||||||
if (req.readyState == 4) {
|
if (req.readyState == 4) {
|
||||||
const card = document.getElementById("card-user");
|
if (req.status != 200) {
|
||||||
card.textContent = card.textContent + " got response " + req.response["response"];
|
window.notifications.customError("myDetailsError", req.response["error"]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
window.jellyfinID = req.response["id"];
|
||||||
|
window.username = req.response["username"];
|
||||||
|
rootCard.querySelector(".heading").textContent = window.lang.strings("welcomeUser").replace("{user}", window.username);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
32
views.go
32
views.go
@ -166,22 +166,22 @@ func (app *appContext) MyUserPage(gc *gin.Context) {
|
|||||||
notificationsEnabled, _ := app.config.Section("notifications").Key("enabled").Bool()
|
notificationsEnabled, _ := app.config.Section("notifications").Key("enabled").Bool()
|
||||||
ombiEnabled := app.config.Section("ombi").Key("enabled").MustBool(false)
|
ombiEnabled := app.config.Section("ombi").Key("enabled").MustBool(false)
|
||||||
gcHTML(gc, http.StatusOK, "user.html", gin.H{
|
gcHTML(gc, http.StatusOK, "user.html", gin.H{
|
||||||
"urlBase": app.getURLBase(gc),
|
"urlBase": app.getURLBase(gc),
|
||||||
"cssClass": app.cssClass,
|
"cssClass": app.cssClass,
|
||||||
"cssVersion": cssVersion,
|
"cssVersion": cssVersion,
|
||||||
"contactMessage": app.config.Section("ui").Key("contact_message").String(),
|
"contactMessage": app.config.Section("ui").Key("contact_message").String(),
|
||||||
"emailEnabled": emailEnabled,
|
"emailEnabled": emailEnabled,
|
||||||
"telegramEnabled": telegramEnabled,
|
"telegramEnabled": telegramEnabled,
|
||||||
"discordEnabled": discordEnabled,
|
"discordEnabled": discordEnabled,
|
||||||
"matrixEnabled": matrixEnabled,
|
"matrixEnabled": matrixEnabled,
|
||||||
"ombiEnabled": ombiEnabled,
|
"ombiEnabled": ombiEnabled,
|
||||||
"linkResetEnabled": app.config.Section("password_resets").Key("link_reset").MustBool(false),
|
"linkResetEnabled": app.config.Section("password_resets").Key("link_reset").MustBool(false),
|
||||||
"notifications": notificationsEnabled,
|
"notifications": notificationsEnabled,
|
||||||
"username": !app.config.Section("email").Key("no_username").MustBool(false),
|
"username": !app.config.Section("email").Key("no_username").MustBool(false),
|
||||||
"strings": app.storage.lang.Admin[lang].Strings,
|
"strings": app.storage.lang.User[lang].Strings,
|
||||||
"quantityStrings": app.storage.lang.Admin[lang].QuantityStrings,
|
"validationStrings": app.storage.lang.User[lang].ValidationStrings,
|
||||||
"language": app.storage.lang.Admin[lang].JSON,
|
"language": app.storage.lang.User[lang].JSON,
|
||||||
"langName": lang,
|
"langName": lang,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user