mirror of
https://github.com/hrfee/jfa-go.git
synced 2024-12-29 12:30:11 +00:00
Compare commits
40 Commits
5d289ce023
...
49c7d83840
Author | SHA1 | Date | |
---|---|---|---|
49c7d83840 | |||
|
a30469f6ec | ||
|
045f9ef827 | ||
|
abc13575c9 | ||
|
958b824dbc | ||
|
7b5f5abd22 | ||
|
5b7060c6a3 | ||
|
bbcba005c0 | ||
|
11d8b90f88 | ||
|
b531ec9b50 | ||
|
79790303a9 | ||
|
11c45a67b3 | ||
|
413ea07cbd | ||
|
890148051f | ||
|
3ba5d1f3fd | ||
|
ef5a0c3f75 | ||
|
0323b2783b | ||
|
b1e8bc4a46 | ||
|
e3a33d102e | ||
|
b9a3ed1d74 | ||
|
cb0d4e8bd7 | ||
|
5ee7bdc55e | ||
|
35ed4e20f0 | ||
|
a5faf0699a | ||
|
cb249b30af | ||
|
bb1e3a2c72 | ||
|
540b8d7c13 | ||
|
99e524589c | ||
|
295343be85 | ||
|
6f61d2246d | ||
|
e0cd4ed379 | ||
|
9f3269bce7 | ||
|
464fabc3bb | ||
c187b948d9 | |||
eb85ee4d35 | |||
de6bc02ad8 | |||
d355b3167f | |||
6cd846dfd8 | |||
|
0c102f5324 | ||
|
f50596c4a1 |
2
Makefile
2
Makefile
@ -80,7 +80,7 @@ npm:
|
||||
@if [ "$(GOESBUILD)" = "off" ]; then\
|
||||
npm install esbuild;\
|
||||
else\
|
||||
go get -u github.com/evanw/esbuild/cmd/esbuild;\
|
||||
go install github.com/evanw/esbuild/cmd/esbuild@latest;\
|
||||
fi
|
||||
|
||||
configuration:
|
||||
|
@ -265,6 +265,15 @@
|
||||
"value": "",
|
||||
"advanced": true,
|
||||
"description": "Set a different URL for the sign-up form to redirect the user to when they've signed up. Default to 'Public Server' or 'Server' in the Jellyfin tab."
|
||||
},
|
||||
"auto_redirect": {
|
||||
"name": "Auto redirect on success",
|
||||
"required": false,
|
||||
"requires_restart": true,
|
||||
"type": "bool",
|
||||
"value": false,
|
||||
"advanced": true,
|
||||
"description": "Navigate directly to the above URL instead of needing the user to click \"Continue\"."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -432,6 +432,7 @@ p.top {
|
||||
.dropdown {
|
||||
padding-bottom: 0.5rem;
|
||||
margin-bottom: -0.5rem;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.dropdown-display.lg {
|
||||
|
26
exit.go
26
exit.go
@ -5,13 +5,12 @@ import (
|
||||
"html/template"
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"runtime/debug"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/pkg/browser"
|
||||
)
|
||||
|
||||
// https://gist.github.com/swdunlop/9629168
|
||||
@ -43,6 +42,21 @@ func identifyPanic() string {
|
||||
return fmt.Sprintf("pc:%x", pc)
|
||||
}
|
||||
|
||||
// OpenFile attempts to open a given file in the appropriate GUI application.
|
||||
func OpenFile(fpath string) (err error) {
|
||||
switch PLATFORM {
|
||||
case "linux":
|
||||
err = exec.Command("xdg-open", fpath).Start()
|
||||
case "windows":
|
||||
err = exec.Command("rundll32", "url.dll,FileProtocolHandler", fpath).Start()
|
||||
case "darwin":
|
||||
err = exec.Command("open", fpath).Start()
|
||||
default:
|
||||
err = fmt.Errorf("unknown os")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Exit dumps the last 100 lines of output to a crash file in /tmp (or equivalent), and generates a prettier HTML file containing it that is opened in the browser if possible.
|
||||
func Exit(err interface{}) {
|
||||
tmpl, err2 := template.ParseFS(localFS, "html/crash.html", "html/header.html")
|
||||
@ -63,7 +77,8 @@ func Exit(err interface{}) {
|
||||
if err != nil {
|
||||
data["Err"] = fmt.Sprintf("%s %v", identifyPanic(), err)
|
||||
}
|
||||
fpath := filepath.Join(temp, "jfa-go-crash-"+time.Now().Local().Format("2006-01-02T15:04:05"))
|
||||
// Use dashes for time rather than colons for Windows
|
||||
fpath := filepath.Join(temp, "jfa-go-crash-"+time.Now().Local().Format("2006-01-02T15-04-05"))
|
||||
err2 = os.WriteFile(fpath+".txt", []byte(logCache), 0666)
|
||||
if err2 != nil {
|
||||
log.Fatalf("Failed to write crash dump file: %v", err2)
|
||||
@ -78,7 +93,10 @@ func Exit(err interface{}) {
|
||||
if err2 != nil {
|
||||
log.Fatalf("Failed to execute template: %v", err2)
|
||||
}
|
||||
browser.OpenFile(fpath + ".html")
|
||||
if err := OpenFile(fpath + ".html"); err != nil {
|
||||
log.Printf("Failed to open browser, trying text file...")
|
||||
OpenFile(fpath + ".txt")
|
||||
}
|
||||
if TRAY {
|
||||
QuitTray()
|
||||
} else {
|
||||
|
@ -8,6 +8,9 @@
|
||||
{{ else }}
|
||||
<title>{{ .strings.pageTitle }}</title>
|
||||
{{ end }}
|
||||
<script>
|
||||
window.redirectToJellyfin = {{ .redirectToJellyfin }};
|
||||
</script>
|
||||
</head>
|
||||
<body class="max-w-full overflow-x-hidden section">
|
||||
<div id="modal-success" class="modal">
|
||||
|
@ -137,7 +137,7 @@
|
||||
<input type="radio" class="mr-2" name="ui-jellyfin_login" value="true" checked><span>{{ .lang.Login.authorizeWithJellyfin }}</span>
|
||||
</label>
|
||||
<label class="row switch pl-4 pb-4">
|
||||
<input type="checkbox" class="mr-2" id="ui-admin_only"><span>{{ .lang.Login.adminOnly }}</span>
|
||||
<input type="checkbox" class="mr-2" id="ui-admin_only" checked><span>{{ .lang.Login.adminOnly }}</span>
|
||||
</label>
|
||||
<label class="row switch pl-4 pb-2">
|
||||
<input type="checkbox" class="mr-2" id="ui-allow_all"><span>{{ .lang.Login.allowAll }}</span>
|
||||
|
@ -1,5 +1,217 @@
|
||||
{
|
||||
"meta": {
|
||||
"name": "English (GB)"
|
||||
},
|
||||
"quantityStrings": {
|
||||
"deleteUser": {
|
||||
"singular": "Delete User",
|
||||
"plural": "Delete Users"
|
||||
},
|
||||
"deletedUser": {
|
||||
"singular": "Deleted {n} user.",
|
||||
"plural": "Deleted {n} users."
|
||||
},
|
||||
"disabledUser": {
|
||||
"plural": "Disabled {n} users.",
|
||||
"singular": "Disabled {n} user."
|
||||
},
|
||||
"extendExpiry": {
|
||||
"singular": "Extend expiry for {n} user",
|
||||
"plural": "Extend expiry for {n} users"
|
||||
},
|
||||
"extendedExpiry": {
|
||||
"plural": "Extended expiry for {n} users.",
|
||||
"singular": "Extended expiry for {n} user."
|
||||
},
|
||||
"addUser": {
|
||||
"singular": "Add user",
|
||||
"plural": "Add users"
|
||||
},
|
||||
"modifySettingsFor": {
|
||||
"singular": "Modify Settings for {n} user",
|
||||
"plural": "Modify Settings for {n} users"
|
||||
},
|
||||
"deleteNUsers": {
|
||||
"plural": "Delete {n} users",
|
||||
"singular": "Delete {n} user"
|
||||
},
|
||||
"disableUsers": {
|
||||
"singular": "Disable {n} user",
|
||||
"plural": "Disable {n} users"
|
||||
},
|
||||
"enabledUser": {
|
||||
"singular": "Enabled {n} user.",
|
||||
"plural": "Enabled {n} users."
|
||||
},
|
||||
"announceTo": {
|
||||
"singular": "Announce to {n} user",
|
||||
"plural": "Announce to {n} users"
|
||||
},
|
||||
"appliedSettings": {
|
||||
"singular": "Applied settings to {n} user.",
|
||||
"plural": "Applied settings to {n} users."
|
||||
},
|
||||
"setExpiry": {
|
||||
"singular": "Set expiry for {n} user",
|
||||
"plural": "Set expiry for {n} users"
|
||||
},
|
||||
"reEnableUsers": {
|
||||
"singular": "Re-enable {n} user",
|
||||
"plural": "Re-enable {n} users"
|
||||
}
|
||||
},
|
||||
"strings": {
|
||||
"invites": "Invites",
|
||||
"accounts": "Accounts",
|
||||
"settings": "Settings",
|
||||
"inviteDays": "Days",
|
||||
"inviteHours": "Hours",
|
||||
"inviteInfiniteUsesWarning": "invites with infinite uses can be used abusively",
|
||||
"inviteSendToEmail": "Send to",
|
||||
"login": "Login",
|
||||
"logout": "Logout",
|
||||
"apply": "Apply",
|
||||
"delete": "Delete",
|
||||
"updates": "Updates",
|
||||
"expiry": "Expiry",
|
||||
"variables": "Variables",
|
||||
"preview": "Preview",
|
||||
"markdownSupported": "Markdown is supported.",
|
||||
"applyHomescreenLayout": "Apply homescreen layout",
|
||||
"ombiProfile": "Ombi user profile",
|
||||
"settingsApplyRestartNow": "Apply & restart",
|
||||
"settingsApplied": "Settings applied.",
|
||||
"userProfiles": "User Profiles",
|
||||
"addProfile": "Add Profile",
|
||||
"userProfilesLibraries": "Libraries",
|
||||
"addProfileNameOf": "Profile Name",
|
||||
"inviteDateCreated": "Created",
|
||||
"settingsRestart": "Restart",
|
||||
"inviteMinutes": "Minutes",
|
||||
"inviteNumberOfUses": "Number of uses",
|
||||
"warning": "Warning",
|
||||
"create": "Create",
|
||||
"name": "Name",
|
||||
"conditionals": "Conditionals",
|
||||
"contactThrough": "Contact through:",
|
||||
"select": "Select",
|
||||
"date": "Date",
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled",
|
||||
"disable": "Disable",
|
||||
"edit": "Edit",
|
||||
"extendExpiry": "Extend expiry",
|
||||
"sendPWR": "Send Password Reset",
|
||||
"inviteMonths": "Months",
|
||||
"inviteDuration": "Invite Duration",
|
||||
"add": "Add",
|
||||
"reEnable": "Re-enable",
|
||||
"update": "Update",
|
||||
"user": "User",
|
||||
"userExpiryDescription": "A specified amount of time after each signup, jfa-go will delete/disable the account. You can change this behaviour in settings.",
|
||||
"templates": "Templates",
|
||||
"accessJFA": "Access jfa-go",
|
||||
"message": "Message",
|
||||
"reset": "Reset",
|
||||
"donate": "Donate",
|
||||
"sendPWRSuccessManual": "If the user hasn't received it, press copy to get a link to manually send to them.",
|
||||
"modifySettingsDescription": "Apply settings from an existing profile, or source them directly from a user.",
|
||||
"logs": "Logs",
|
||||
"sendPWRManual": "User {n} has no method of contact, press copy to get a link to send to them.",
|
||||
"sendPWRSuccess": "Password reset link sent.",
|
||||
"customizeMessages": "Customise Messages",
|
||||
"customizeMessagesDescription": "If you don't want to use jfa-go's message templates, you can create your own using Markdown.",
|
||||
"modifySettings": "Modify Settings",
|
||||
"sendDeleteNotificationEmail": "Send notification message",
|
||||
"sendDeleteNotifiationExample": "Your account has been deleted.",
|
||||
"settingsRestarting": "Restarting…",
|
||||
"settingsRestartRequired": "Restart needed",
|
||||
"settingsRefreshPage": "Refresh the page in a few seconds.",
|
||||
"settingsRequiredOrRestartMessage": "Note: {n} indicates a required field, {n} indicates changes require a restart.",
|
||||
"settingsSave": "Save",
|
||||
"userProfilesDescription": "Profiles are applied to users when they create an account. A profile include library access rights and homescreen layout.",
|
||||
"addProfileDescription": "Create a Jellyfin user and configure it, then select it below. When this profile is applied to an invite, new users will be created with the settings.",
|
||||
"addProfileStoreHomescreenLayout": "Store homescreen layout",
|
||||
"inviteNoUsersCreated": "None yet!",
|
||||
"inviteUsersCreated": "Created users",
|
||||
"inviteRemainingUses": "Remaining uses",
|
||||
"inviteNoInvites": "None",
|
||||
"inviteExpiresInTime": "Expires in {n}",
|
||||
"notifyEvent": "Notify on:",
|
||||
"notifyInviteExpiry": "On expiry",
|
||||
"notifyUserCreation": "On user creation",
|
||||
"sendPIN": "Ask the user to send the PIN below to the bot.",
|
||||
"findDiscordUser": "Find Discord user",
|
||||
"linkMatrixDescription": "Enter the username and password of the user to use as a bot. Once submitted, the app will restart.",
|
||||
"matrixHomeServer": "Home server address",
|
||||
"saveAsTemplate": "Save as template",
|
||||
"deleteTemplate": "Delete template",
|
||||
"settingsRestartRequiredDescription": "A restart is necessary to apply some settings you changed. Restart now or later?",
|
||||
"settingsApplyRestartLater": "Apply, restart later",
|
||||
"subject": "Subject",
|
||||
"setExpiry": "Set expiry",
|
||||
"admin": "Admin",
|
||||
"download": "Download",
|
||||
"search": "Search",
|
||||
"advancedSettings": "Advanced Settings",
|
||||
"lastActiveTime": "Last Active",
|
||||
"from": "From",
|
||||
"userExpiry": "User Expiry",
|
||||
"aboutProgram": "About",
|
||||
"version": "Version",
|
||||
"commitNoun": "Commit",
|
||||
"newUser": "New User",
|
||||
"profile": "Profile",
|
||||
"unknown": "Unknown",
|
||||
"label": "Label",
|
||||
"announce": "Announce",
|
||||
"sendPWRValidFor": "The link is valid for 30m.",
|
||||
"ombiUserDefaultsDescription": "Create an Ombi user and configure it, then select it below. It's settings/permissions will be stored and applied to new Ombi users created by jfa-go when this profile is selected.",
|
||||
"userProfilesIsDefault": "Default",
|
||||
"inviteNoProfile": "No Profile",
|
||||
"searchDiscordUser": "Start typing the Discord username to find the user.",
|
||||
"templateEnterName": "Enter a name to save this template.",
|
||||
"accessJFASettings": "Cannot be changed as either \"Admin Only\" or \"Allow All\" has been set in Settings > General."
|
||||
},
|
||||
"notifications": {
|
||||
"errorSettingsFailed": "Application failed.",
|
||||
"errorLoginBlank": "The username and/or password was left blank.",
|
||||
"errorLoadSettings": "Failed to load settings.",
|
||||
"errorUnknown": "Unknown error.",
|
||||
"errorDeleteProfile": "Failed to delete profile {n}",
|
||||
"sentAnnouncement": "Announcement sent.",
|
||||
"savedAnnouncement": "Announcement saved.",
|
||||
"setOmbiProfile": "Stored ombi profile.",
|
||||
"updateApplied": "Update applied, please restart.",
|
||||
"updateAppliedRefresh": "Update applied, please refresh.",
|
||||
"telegramVerified": "Telegram account verified.",
|
||||
"accountConnected": "Account connected.",
|
||||
"error401Unauthorized": "Unauthorised. Try refreshing the page.",
|
||||
"errorSettingsAppliedNoHomescreenLayout": "Settings were applied, but applying homescreen layout may have failed.",
|
||||
"errorSaveEmail": "Failed to save email.",
|
||||
"errorLoadProfiles": "Failed to load profiles.",
|
||||
"errorCreateProfile": "Failed to create profile {n}",
|
||||
"errorLoadUsers": "Failed to load users.",
|
||||
"errorSaveSettings": "Couldn't save settings.",
|
||||
"errorSetOmbiProfile": "Failed to store ombi profile.",
|
||||
"errorLoadOmbiUsers": "Failed to load ombi users.",
|
||||
"errorFailureCheckLogs": "Failed (check console/logs)",
|
||||
"errorPartialFailureCheckLogs": "Partial failure (check console/logs)",
|
||||
"errorUserCreated": "Failed to create user {n}.",
|
||||
"errorSendWelcomeEmail": "Failed to send welcome message (check console/logs)",
|
||||
"errorApplyUpdate": "Failed to apply update, try manually.",
|
||||
"errorCheckUpdate": "Failed to check for update.",
|
||||
"noUpdatesAvailable": "No new updates available.",
|
||||
"changedEmailAddress": "Changed email address of {n}.",
|
||||
"userCreated": "User {n} created.",
|
||||
"saveEmail": "Email saved.",
|
||||
"createProfile": "Created profile {n}.",
|
||||
"saveSettings": "Settings were saved",
|
||||
"errorConnection": "Couldn't connect to jfa-go.",
|
||||
"errorHomescreenAppliedNoSettings": "Homescreen layout was applied, but applying settings may have failed.",
|
||||
"errorBlankFields": "Fields were left blank",
|
||||
"errorSetDefaultProfile": "Failed to set default profile.",
|
||||
"errorChangedEmailAddress": "Couldn't change email address of {n}.",
|
||||
"updateAvailable": "A new update is available, check settings."
|
||||
}
|
||||
}
|
||||
|
@ -55,7 +55,7 @@
|
||||
"addProfileNameOf": "Nom de profil",
|
||||
"addProfileStoreHomescreenLayout": "Enregistrer la disposition de l'écran d'accueil",
|
||||
"inviteNoUsersCreated": "Aucun pour l'instant !",
|
||||
"inviteUsersCreated": "Utilisateurs créer",
|
||||
"inviteUsersCreated": "Utilisateurs créés",
|
||||
"inviteNoProfile": "Aucun profil",
|
||||
"inviteDateCreated": "Créer",
|
||||
"inviteRemainingUses": "Utilisations restantes",
|
||||
@ -64,7 +64,7 @@
|
||||
"notifyEvent": "Notifier sur :",
|
||||
"notifyInviteExpiry": "À l'expiration",
|
||||
"notifyUserCreation": "à la création de l'utilisateur",
|
||||
"label": "Etiquette",
|
||||
"label": "Nom",
|
||||
"settingsRestarting": "Redémarrage…",
|
||||
"settingsRestart": "Redémarrer",
|
||||
"announce": "Annoncer",
|
||||
@ -112,7 +112,10 @@
|
||||
"sendPWRValidFor": "Ce lien est valable 30min.",
|
||||
"sendPWRManual": "L'utilisateur {n} n'a pas indiqué de méthode de contact, appuyez sur copier pour recevoir un lien à lui envoyer.",
|
||||
"sendPWRSuccessManual": "Si l'utilisateur ne l'a pas reçu, appuyez sur copier pour recevoir un lien à lui envoyer manuellement.",
|
||||
"ombiProfile": "Profil d'utilisateur Ombi"
|
||||
"ombiProfile": "Profil d'utilisateur Ombi",
|
||||
"logs": "Logs",
|
||||
"accessJFA": "Accès à jfa-go",
|
||||
"accessJFASettings": "Ne peut pas être changé car \"Admin Only\" ou \"Allow All\" a été défini dans Paramètres > Général."
|
||||
},
|
||||
"notifications": {
|
||||
"changedEmailAddress": "Adresse e-mail modifiée de {n}.",
|
||||
@ -209,6 +212,10 @@
|
||||
"disabledUser": {
|
||||
"singular": "{n} utilisateur désactivé.",
|
||||
"plural": "{n} utilisateurs désactivés."
|
||||
},
|
||||
"setExpiry": {
|
||||
"singular": "Définir l'expiration pour {n} utilisateur",
|
||||
"plural": "Définir l'expiration pour {n} utilisateurs"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,63 +3,63 @@
|
||||
"name": "Magyar (HU)"
|
||||
},
|
||||
"strings": {
|
||||
"invites": "",
|
||||
"accounts": "",
|
||||
"settings": "",
|
||||
"inviteMonths": "",
|
||||
"inviteDays": "",
|
||||
"inviteHours": "",
|
||||
"inviteMinutes": "",
|
||||
"inviteNumberOfUses": "",
|
||||
"inviteDuration": "",
|
||||
"warning": "",
|
||||
"inviteInfiniteUsesWarning": "",
|
||||
"inviteSendToEmail": "",
|
||||
"login": "",
|
||||
"logout": "",
|
||||
"create": "",
|
||||
"apply": "",
|
||||
"delete": "",
|
||||
"add": "",
|
||||
"select": "",
|
||||
"name": "",
|
||||
"date": "",
|
||||
"enabled": "",
|
||||
"disabled": "",
|
||||
"reEnable": "",
|
||||
"setExpiry": "",
|
||||
"disable": "",
|
||||
"admin": "",
|
||||
"updates": "",
|
||||
"update": "",
|
||||
"download": "",
|
||||
"search": "",
|
||||
"advancedSettings": "",
|
||||
"lastActiveTime": "",
|
||||
"from": "",
|
||||
"user": "",
|
||||
"expiry": "",
|
||||
"userExpiry": "",
|
||||
"userExpiryDescription": "",
|
||||
"aboutProgram": "",
|
||||
"version": "",
|
||||
"commitNoun": "",
|
||||
"newUser": "",
|
||||
"profile": "",
|
||||
"unknown": "",
|
||||
"label": "",
|
||||
"logs": "",
|
||||
"announce": "",
|
||||
"templates": "",
|
||||
"subject": "",
|
||||
"message": "",
|
||||
"variables": "",
|
||||
"conditionals": "",
|
||||
"preview": "",
|
||||
"reset": "",
|
||||
"edit": "",
|
||||
"donate": "",
|
||||
"sendPWR": "",
|
||||
"invites": "Meghívások",
|
||||
"accounts": "Fiókok",
|
||||
"settings": "Beállítások",
|
||||
"inviteMonths": "Hónapok",
|
||||
"inviteDays": "Napok",
|
||||
"inviteHours": "Órák",
|
||||
"inviteMinutes": "Percek",
|
||||
"inviteNumberOfUses": "Felhasználások száma",
|
||||
"inviteDuration": "Meghívás időtartama",
|
||||
"warning": "Figyelmeztetés",
|
||||
"inviteInfiniteUsesWarning": "a végtelen felhasználású meghívókkal visszaélhetnek",
|
||||
"inviteSendToEmail": "Címzett",
|
||||
"login": "Belépés",
|
||||
"logout": "Kijelentkezés",
|
||||
"create": "Létrehozás",
|
||||
"apply": "Alkalmaz",
|
||||
"delete": "Törlés",
|
||||
"add": "Hozzáadás",
|
||||
"select": "Kiválasztás",
|
||||
"name": "Név",
|
||||
"date": "Dátum",
|
||||
"enabled": "Engedélyezve",
|
||||
"disabled": "Tiltva",
|
||||
"reEnable": "Újra engedélyezés",
|
||||
"setExpiry": "Lejárat beállítása",
|
||||
"disable": "Letiltás",
|
||||
"admin": "Adminisztrátor",
|
||||
"updates": "Frissítések",
|
||||
"update": "Frissítés",
|
||||
"download": "Letöltés",
|
||||
"search": "Keresés",
|
||||
"advancedSettings": "További beállítások",
|
||||
"lastActiveTime": "Utoljára aktív",
|
||||
"from": "Feladó",
|
||||
"user": "Felhasználó",
|
||||
"expiry": "Lejárat",
|
||||
"userExpiry": "Felhasználói lejárat",
|
||||
"userExpiryDescription": "Egy meghatározott idő után minden regisztrációt töröl, vagy felfüggeszt a jfa-go. Ezt a működést megváltoztathatod a beállításokban.",
|
||||
"aboutProgram": "Névjegy",
|
||||
"version": "Verzió",
|
||||
"commitNoun": "Elkövet",
|
||||
"newUser": "Új felhasználó",
|
||||
"profile": "Profil",
|
||||
"unknown": "Ismeretlen",
|
||||
"label": "Címke",
|
||||
"logs": "Naplók",
|
||||
"announce": "Bejelentés",
|
||||
"templates": "Sablonok",
|
||||
"subject": "Téma",
|
||||
"message": "Üzenet",
|
||||
"variables": "Változók",
|
||||
"conditionals": "Feltételek",
|
||||
"preview": "Előnézet",
|
||||
"reset": "Visszaállítás",
|
||||
"edit": "Szerkesztés",
|
||||
"donate": "Támogatás",
|
||||
"sendPWR": "Jelszó visszaállítás küldése",
|
||||
"contactThrough": "",
|
||||
"extendExpiry": "",
|
||||
"sendPWRManual": "",
|
||||
|
217
lang/admin/zh-Hant.json
Normal file
217
lang/admin/zh-Hant.json
Normal file
@ -0,0 +1,217 @@
|
||||
{
|
||||
"meta": {
|
||||
"name": "繁體中文 (TW)"
|
||||
},
|
||||
"strings": {
|
||||
"invites": "邀請",
|
||||
"accounts": "帳戶",
|
||||
"settings": "設置",
|
||||
"inviteMonths": "月",
|
||||
"inviteDays": "日",
|
||||
"inviteHours": "小時",
|
||||
"inviteMinutes": "分鐘",
|
||||
"inviteNumberOfUses": "使用次數",
|
||||
"inviteDuration": "邀請時長",
|
||||
"warning": "警告",
|
||||
"inviteInfiniteUsesWarning": "無限使用次數的邀請碼可能被濫用",
|
||||
"inviteSendToEmail": "發送到",
|
||||
"login": "登錄",
|
||||
"logout": "登出",
|
||||
"create": "創建",
|
||||
"apply": "應用",
|
||||
"delete": "刪除",
|
||||
"add": "添加",
|
||||
"select": "選擇",
|
||||
"name": "帳戶名稱",
|
||||
"date": "日期",
|
||||
"enabled": "已啟用",
|
||||
"disabled": "已禁用",
|
||||
"reEnable": "重新啟用",
|
||||
"setExpiry": "設置到期時間",
|
||||
"disable": "禁用",
|
||||
"admin": "管理員",
|
||||
"updates": "更新",
|
||||
"update": "更新",
|
||||
"download": "下載",
|
||||
"search": "搜尋",
|
||||
"advancedSettings": "高級設置",
|
||||
"lastActiveTime": "上次啟用時間",
|
||||
"from": "從",
|
||||
"user": "帳戶",
|
||||
"expiry": "到期",
|
||||
"userExpiry": "帳戶到期",
|
||||
"userExpiryDescription": "每次註冊后指定的時間,jfa-go 將刪除/禁用該帳戶。您可以在設定中更改此行為。",
|
||||
"aboutProgram": "關於",
|
||||
"version": "版本",
|
||||
"commitNoun": "提交",
|
||||
"newUser": "新帳戶",
|
||||
"profile": "帳戶資料",
|
||||
"unknown": "未知",
|
||||
"label": "標籤",
|
||||
"logs": "日誌",
|
||||
"announce": "公告",
|
||||
"templates": "範本",
|
||||
"subject": "主題",
|
||||
"message": "訊息",
|
||||
"variables": "變數",
|
||||
"conditionals": "條件",
|
||||
"preview": "預覽",
|
||||
"reset": "重設",
|
||||
"edit": "編輯",
|
||||
"donate": "捐贈",
|
||||
"sendPWR": "發送密碼重置",
|
||||
"contactThrough": "聯繫方式:",
|
||||
"extendExpiry": "延長到期時間",
|
||||
"sendPWRManual": "使用者 {n} 沒有聯繫方式,請按 “複製” 以獲取連結並手動發送給使用者。",
|
||||
"sendPWRSuccess": "已發送密碼重置連結。",
|
||||
"sendPWRSuccessManual": "如果使用者沒收到,請按 “複製” 以獲取連結並手動發送給使用者。",
|
||||
"sendPWRValidFor": "該連結的有效期為 30 分鐘。",
|
||||
"customizeMessages": "自定義訊息",
|
||||
"customizeMessagesDescription": "如果您不想使用 jfa-go 的訊息範本,可以使用 Markdown 創建自己的訊息範本。",
|
||||
"markdownSupported": "支持 Markdown。",
|
||||
"modifySettings": "修改設置",
|
||||
"modifySettingsDescription": "應用現有配置文件中的設置,或直接從帳戶處獲取設置。",
|
||||
"applyHomescreenLayout": "應用主螢幕佈局",
|
||||
"sendDeleteNotificationEmail": "發送通知訊息",
|
||||
"sendDeleteNotifiationExample": "您的帳戶已被刪除。",
|
||||
"settingsRestart": "重新啟動",
|
||||
"settingsRestarting": "正在重新啟動…",
|
||||
"settingsRestartRequired": "需要重新啟動",
|
||||
"settingsRestartRequiredDescription": "需要重新啟動才能應用您更改的某些設定。 現在重新啟動還是稍後重新啟動?",
|
||||
"settingsApplyRestartLater": "應用,稍後重新啟動",
|
||||
"settingsApplyRestartNow": "應用並重新啟動",
|
||||
"settingsApplied": "已應用設置。",
|
||||
"settingsRefreshPage": "幾秒鐘後刷新頁面。",
|
||||
"settingsRequiredOrRestartMessage": "注意: {n} 表示必填欄位, {n} 表示更改需要重新啟動。",
|
||||
"settingsSave": "儲存",
|
||||
"ombiProfile": "Ombi 帳戶資料",
|
||||
"ombiUserDefaultsDescription": "創建一個 Ombi 帳戶並對其進行配置,然後在下面選擇它。選擇此設定時,它的設置/權限將被存儲並應用於由 jfa-go 創建的新 Ombi 帳戶。",
|
||||
"userProfiles": "帳戶資料",
|
||||
"userProfilesDescription": "配置文件在使用者創建帳戶時應用於使用者。配置文件包括庫訪問權限和主螢幕佈局。",
|
||||
"userProfilesIsDefault": "預設",
|
||||
"userProfilesLibraries": "庫",
|
||||
"addProfile": "添加配置文件",
|
||||
"addProfileDescription": "創建一個 Jellyfin 帳戶並對其進行配置,然後在下面選擇它。將此設定文件應用於邀請時,將使用這些設置創建新帳戶。",
|
||||
"addProfileNameOf": "配置文件名稱",
|
||||
"addProfileStoreHomescreenLayout": "保存主螢幕佈局",
|
||||
"inviteNoUsersCreated": "暫無!",
|
||||
"inviteUsersCreated": "創建的帳戶",
|
||||
"inviteNoProfile": "無資料",
|
||||
"inviteDateCreated": "已創建",
|
||||
"inviteRemainingUses": "剩餘使用次數",
|
||||
"inviteNoInvites": "無",
|
||||
"inviteExpiresInTime": "在 {n} 到期",
|
||||
"notifyEvent": "通知:",
|
||||
"notifyInviteExpiry": "在到期時",
|
||||
"notifyUserCreation": "在創建用戶時",
|
||||
"sendPIN": "要求使用者將下面的 PIN 發送給機器人。",
|
||||
"searchDiscordUser": "開始鍵入 Discord 帳戶名稱以查找帳戶。",
|
||||
"findDiscordUser": "查尋 Discord 帳戶",
|
||||
"linkMatrixDescription": "輸入要用作機器人的帳戶的帳戶名稱和密碼。提交后,應用程序將重新啟動。",
|
||||
"matrixHomeServer": "主伺服器位址",
|
||||
"saveAsTemplate": "儲存為範本",
|
||||
"deleteTemplate": "刪除範本",
|
||||
"templateEnterName": "輸入名稱以儲存此範本。",
|
||||
"accessJFA": "訪問 jfa-go",
|
||||
"accessJFASettings": "無法更改,因為已在「一般設置」中設置了「僅限管理員帳戶」或「允許全部帳戶」。"
|
||||
},
|
||||
"notifications": {
|
||||
"changedEmailAddress": "更改了 {n} 的電子郵件地址。",
|
||||
"userCreated": "帳戶 {n} 已創建。",
|
||||
"createProfile": "創建了配置文件 {n}。",
|
||||
"saveSettings": "設置已儲存",
|
||||
"saveEmail": "電子郵件已儲存。",
|
||||
"sentAnnouncement": "已發送公告。",
|
||||
"savedAnnouncement": "公告已儲存。",
|
||||
"setOmbiProfile": "ombi 設定已存儲。",
|
||||
"updateApplied": "已應用更新,請重新啟動。",
|
||||
"updateAppliedRefresh": "更新已應用,請重新整理。",
|
||||
"telegramVerified": "Telegram 帳戶已驗證。",
|
||||
"accountConnected": "帳戶已連接。",
|
||||
"errorConnection": "無法連接到 jfa-go。",
|
||||
"error401Unauthorized": "未經授權。嘗試重新整理頁面。",
|
||||
"errorSettingsAppliedNoHomescreenLayout": "已應用設置,但應用主螢幕佈局可能失敗。",
|
||||
"errorHomescreenAppliedNoSettings": "已應用主螢幕佈局,但應用設置可能失敗。",
|
||||
"errorSettingsFailed": "應用失敗。",
|
||||
"errorLoginBlank": "帳戶名稱和/或密碼留空。",
|
||||
"errorUnknown": "未知的錯誤。",
|
||||
"errorSaveEmail": "無法儲存電子郵件。",
|
||||
"errorBlankFields": "欄位留空",
|
||||
"errorDeleteProfile": "無法刪除設置文件 {n}",
|
||||
"errorLoadProfiles": "無法讀取設置文件。",
|
||||
"errorCreateProfile": "無法創建設置文件 {n}",
|
||||
"errorSetDefaultProfile": "無法設置預設設置文件。",
|
||||
"errorLoadUsers": "無法讀取帳戶。",
|
||||
"errorSaveSettings": "無法儲存設置。",
|
||||
"errorLoadSettings": "無法讀取設置。",
|
||||
"errorSetOmbiProfile": "無法儲存 ombi 設置文件。",
|
||||
"errorLoadOmbiUsers": "無法讀取 ombi 帳戶。",
|
||||
"errorChangedEmailAddress": "無法更改 {n} 的電子郵件地址。",
|
||||
"errorFailureCheckLogs": "失敗(請檢查主控台/紀錄)",
|
||||
"errorPartialFailureCheckLogs": "部分故障(請檢查主控台/日誌)",
|
||||
"errorUserCreated": "無法創建帳戶 {n}。",
|
||||
"errorSendWelcomeEmail": "無法送出歡迎訊息(請檢查主控台/紀錄)",
|
||||
"errorApplyUpdate": "無法應用更新,請手動嘗試。",
|
||||
"errorCheckUpdate": "無法檢查更新。",
|
||||
"updateAvailable": "有新的更新可用,請檢查設置。",
|
||||
"noUpdatesAvailable": "沒有新的更新可用。"
|
||||
},
|
||||
"quantityStrings": {
|
||||
"modifySettingsFor": {
|
||||
"singular": "修改 {n} 個帳戶的設置",
|
||||
"plural": "修改 {n} 個帳戶的設置"
|
||||
},
|
||||
"deleteNUsers": {
|
||||
"singular": "刪除 {n} 個帳戶",
|
||||
"plural": "刪除 {n} 個帳戶"
|
||||
},
|
||||
"disableUsers": {
|
||||
"singular": "禁用 {n} 個帳戶",
|
||||
"plural": "禁用 {n} 個帳戶"
|
||||
},
|
||||
"reEnableUsers": {
|
||||
"singular": "重新啟用 {n} 個帳戶",
|
||||
"plural": "重新啟用 {n} 個帳戶"
|
||||
},
|
||||
"addUser": {
|
||||
"singular": "添加帳戶",
|
||||
"plural": "添加帳戶"
|
||||
},
|
||||
"deleteUser": {
|
||||
"singular": "刪除帳戶",
|
||||
"plural": "刪除帳戶"
|
||||
},
|
||||
"deletedUser": {
|
||||
"singular": "刪除 {n} 個帳戶。",
|
||||
"plural": "刪除 {n} 個帳戶。"
|
||||
},
|
||||
"disabledUser": {
|
||||
"singular": "禁用 {n} 個帳戶。",
|
||||
"plural": "禁用 {n} 個帳戶。"
|
||||
},
|
||||
"enabledUser": {
|
||||
"singular": "已啟用 {n} 個帳戶。",
|
||||
"plural": "已啟用 {n} 個帳戶。"
|
||||
},
|
||||
"announceTo": {
|
||||
"singular": "公告給 {n} 個帳戶",
|
||||
"plural": "公告給 {n} 個帳戶"
|
||||
},
|
||||
"appliedSettings": {
|
||||
"singular": "將設置應用到 {n} 個帳戶。",
|
||||
"plural": "將設置應用到 {n} 個帳戶。"
|
||||
},
|
||||
"extendExpiry": {
|
||||
"singular": "延長 {n} 個帳戶的到期時間",
|
||||
"plural": "延長 {n} 個帳戶的到期時間"
|
||||
},
|
||||
"setExpiry": {
|
||||
"singular": "設置 {n} 個帳戶的到期時間",
|
||||
"plural": "設置 {n} 個帳戶的到期時間"
|
||||
},
|
||||
"extendedExpiry": {
|
||||
"singular": "已延長 {n} 個帳戶的到期時間。",
|
||||
"plural": "已延長 {n} 個帳戶的到期時間。"
|
||||
}
|
||||
}
|
||||
}
|
@ -78,7 +78,7 @@
|
||||
"settingsRequiredOrRestartMessage": "注意:{n} 表示必填字段,{n} 表示更改需要重新启动。",
|
||||
"settingsSave": "保存",
|
||||
"ombiUserDefaults": "Ombi 用户默认值",
|
||||
"ombiUserDefaultsDescription": "创建并配置 Ombi 用户,然后在下面选择它。它的设置/权限将被存储并应用于由 jfa-go 创建的新 Ombi 用户",
|
||||
"ombiUserDefaultsDescription": "创建并配置 Ombi 用户,然后在下面选择它。它的设置/权限将被存储并应用于由 jfa-go 创建的新 Ombi 用户。",
|
||||
"userProfiles": "用户档案",
|
||||
"userProfilesDescription": "配置文件在用户创建帐户时应用于用户。配置文件包括库访问权限和主屏幕布局。",
|
||||
"userProfilesIsDefault": "默认",
|
||||
@ -97,7 +97,7 @@
|
||||
"notifyEvent": "通知:",
|
||||
"notifyInviteExpiry": "在到期时",
|
||||
"notifyUserCreation": "在创建用户时",
|
||||
"sendPIN": "要求用户将下面的 PIN 发送给机器人。",
|
||||
"sendPIN": "需要用户将下面的 PIN 发送给机器人。",
|
||||
"searchDiscordUser": "开始输入 Discord 用户名以查找用户。",
|
||||
"findDiscordUser": "查找 Discord 用户",
|
||||
"linkMatrixDescription": "输入要用作机器人的用户的用户名和密码。一旦提交,应用程序将重新启动。",
|
||||
@ -111,7 +111,10 @@
|
||||
"sendPWRSuccessManual": "如果用户没收到,请按下钮复制链接,手动发给用户。",
|
||||
"setExpiry": "设置到期",
|
||||
"logs": "记录",
|
||||
"sendPWRValidFor": "此链接有效30分钟。"
|
||||
"sendPWRValidFor": "此链接有效30分钟。",
|
||||
"ombiProfile": "Ombi 用户配置文件",
|
||||
"accessJFASettings": "无法更改,因为“仅限管理员”或“允许所有”已在“设置”>“常规”中设置。",
|
||||
"accessJFA": "访问jfa-go"
|
||||
},
|
||||
"notifications": {
|
||||
"changedEmailAddress": "更改了 {n} 的电子邮件地址。",
|
||||
@ -152,7 +155,9 @@
|
||||
"errorApplyUpdate": "无法应用更新,请手动尝试。",
|
||||
"errorCheckUpdate": "检查更新失败。",
|
||||
"updateAvailable": "有新更新可用,请检查设置。",
|
||||
"noUpdatesAvailable": "没有可用的更新。"
|
||||
"noUpdatesAvailable": "没有可用的更新。",
|
||||
"setOmbiProfile": "保存ombi配置文件。",
|
||||
"errorSetOmbiProfile": "无法保存ombi配置文件。"
|
||||
},
|
||||
"quantityStrings": {
|
||||
"modifySettingsFor": {
|
||||
@ -206,6 +211,10 @@
|
||||
"extendedExpiry": {
|
||||
"singular": "延长了 {n} 个用户的有效期。",
|
||||
"plural": "延长了 {n} 个用户的有效期。"
|
||||
},
|
||||
"setExpiry": {
|
||||
"plural": "为{n}用户设置到期时间",
|
||||
"singular": "为{n}用户设置到期时间"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,29 @@
|
||||
{
|
||||
"meta": {
|
||||
"name": "English (GB)"
|
||||
},
|
||||
"strings": {
|
||||
"continue": "Continue",
|
||||
"time24h": "24h Time",
|
||||
"linkTelegram": "Link Telegram",
|
||||
"send": "Send",
|
||||
"linkDiscord": "Link Discord",
|
||||
"linkMatrix": "Link Matrix",
|
||||
"contactDiscord": "Contact through Discord",
|
||||
"username": "Username",
|
||||
"password": "Password",
|
||||
"emailAddress": "Email Address",
|
||||
"copy": "Copy",
|
||||
"copied": "Copied",
|
||||
"submit": "Submit",
|
||||
"success": "Success",
|
||||
"error": "Error",
|
||||
"time12h": "12h Time",
|
||||
"theme": "Theme",
|
||||
"contactEmail": "Contact through Email",
|
||||
"contactTelegram": "Contact through Telegram",
|
||||
"name": "Name",
|
||||
"refresh": "Refresh",
|
||||
"required": "Required"
|
||||
}
|
||||
}
|
||||
|
@ -14,6 +14,7 @@
|
||||
"copy": "Salin",
|
||||
"time24h": "Waktu 24 jam",
|
||||
"time12h": "Waktu 12 jam",
|
||||
"theme": "Tema"
|
||||
"theme": "Tema",
|
||||
"send": "Kirim"
|
||||
}
|
||||
}
|
||||
|
29
lang/common/zh-Hant.json
Normal file
29
lang/common/zh-Hant.json
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
"meta": {
|
||||
"name": "繁體中文 (TW)"
|
||||
},
|
||||
"strings": {
|
||||
"username": "帳戶名稱",
|
||||
"password": "密碼",
|
||||
"emailAddress": "電子郵件",
|
||||
"name": "帳戶名稱",
|
||||
"submit": "提交",
|
||||
"send": "發送",
|
||||
"success": "成功",
|
||||
"continue": "繼續",
|
||||
"error": "錯誤",
|
||||
"copy": "複製",
|
||||
"copied": "已複製",
|
||||
"time24h": "24小時制",
|
||||
"time12h": "12小時制",
|
||||
"linkTelegram": "連結 Telegram",
|
||||
"contactEmail": "通過電子郵件聯繫",
|
||||
"contactTelegram": "通過 Telegram 聯繫",
|
||||
"linkDiscord": "連結 Discord",
|
||||
"linkMatrix": "連結 Matrix",
|
||||
"contactDiscord": "通過 Discord 聯繫",
|
||||
"theme": "主題",
|
||||
"refresh": "重新整理",
|
||||
"required": "必填"
|
||||
}
|
||||
}
|
@ -1,5 +1,77 @@
|
||||
{
|
||||
"meta": {
|
||||
"name": "English (GB)"
|
||||
},
|
||||
"emailConfirmation": {
|
||||
"title": "Confirm your email - Jellyfin",
|
||||
"confirmEmail": "Confirm Email",
|
||||
"name": "Confirmation email",
|
||||
"clickBelow": "Click the link below to confirm your email address and start using Jellyfin."
|
||||
},
|
||||
"welcomeEmail": {
|
||||
"name": "Welcome",
|
||||
"title": "Welcome to Jellyfin",
|
||||
"welcome": "Welcome to Jellyfin!",
|
||||
"yourAccountWillExpire": "Your account will expire on {date}.",
|
||||
"jellyfinURL": "URL",
|
||||
"youCanLoginWith": "You can login with the details below"
|
||||
},
|
||||
"strings": {
|
||||
"helloUser": "Hi {username},",
|
||||
"ifItWasNotYou": "If this wasn't you, please ignore this.",
|
||||
"reason": "Reason"
|
||||
},
|
||||
"userCreated": {
|
||||
"name": "User creation",
|
||||
"title": "Notice: User created",
|
||||
"time": "Time",
|
||||
"aUserWasCreated": "A user was created using code {code}.",
|
||||
"notificationNotice": "Note: Notification messages can be toggled on the admin dashboard."
|
||||
},
|
||||
"inviteExpiry": {
|
||||
"expiredAt": "Code {code} expired at {time}.",
|
||||
"notificationNotice": "Note: Notification messages can be toggled on the admin dashboard.",
|
||||
"name": "Invite expiry",
|
||||
"title": "Notice: Invite expired",
|
||||
"inviteExpired": "Invite expired."
|
||||
},
|
||||
"passwordReset": {
|
||||
"name": "Password reset",
|
||||
"title": "Password reset requested - Jellyfin",
|
||||
"ifItWasYou": "If this was you, enter the pin below into the prompt.",
|
||||
"ifItWasYouLink": "If this was you, click the link below.",
|
||||
"pin": "PIN",
|
||||
"someoneHasRequestedReset": "Someone has recently requested a password reset on Jellyfin.",
|
||||
"codeExpiry": "The code will expire on {date}, at {time} UTC, which is in {expiresInMinutes}."
|
||||
},
|
||||
"userDeleted": {
|
||||
"title": "Your account was deleted - Jellyfin",
|
||||
"yourAccountWasDeleted": "Your Jellyfin account was deleted.",
|
||||
"name": "User deletion"
|
||||
},
|
||||
"inviteEmail": {
|
||||
"name": "Invite email",
|
||||
"hello": "Hi",
|
||||
"toJoin": "To join, follow the below link.",
|
||||
"inviteExpiry": "This invite will expire on {date} at {time}, which is in {expiresInMinutes}, so act quick.",
|
||||
"linkButton": "Setup your account",
|
||||
"title": "Invite - Jellyfin",
|
||||
"youHaveBeenInvited": "You've been invited to Jellyfin."
|
||||
},
|
||||
"userExpired": {
|
||||
"name": "User expiry",
|
||||
"title": "Your account has expired - Jellyfin",
|
||||
"yourAccountHasExpired": "Your account has expired.",
|
||||
"contactTheAdmin": "Contact the administrator for more info."
|
||||
},
|
||||
"userDisabled": {
|
||||
"name": "User disabled",
|
||||
"title": "Your account has been disabled - Jellyfin",
|
||||
"yourAccountWasDisabled": "Your account was disabled."
|
||||
},
|
||||
"userEnabled": {
|
||||
"name": "User enabled",
|
||||
"title": "Your account has been re-enabled - Jellyfin",
|
||||
"yourAccountWasEnabled": "Your account was re-enabled."
|
||||
}
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
"name": "Bahasa Indonesia (ID)"
|
||||
},
|
||||
"strings": {
|
||||
"ifItWasNotYou": "Jika ini bukan kamu, silahkan mengabaikan email ini.",
|
||||
"ifItWasNotYou": "Jika ini bukan kamu, silahkan abaikan email ini.",
|
||||
"reason": "Alasan",
|
||||
"helloUser": "Halo {username},"
|
||||
},
|
||||
|
77
lang/email/zh-Hant.json
Normal file
77
lang/email/zh-Hant.json
Normal file
@ -0,0 +1,77 @@
|
||||
{
|
||||
"meta": {
|
||||
"name": "繁體中文 (TW)"
|
||||
},
|
||||
"strings": {
|
||||
"ifItWasNotYou": "如果這不是您,請忽略本信件。",
|
||||
"helloUser": "你好 {username},",
|
||||
"reason": "原因"
|
||||
},
|
||||
"userCreated": {
|
||||
"name": "帳戶創建",
|
||||
"title": "注意:帳戶已創建",
|
||||
"aUserWasCreated": "已使用邀請碼 {code} 創建了一個帳戶。",
|
||||
"time": "時間",
|
||||
"notificationNotice": "注意:可以在管理儀錶板上切換通知訊息。"
|
||||
},
|
||||
"inviteExpiry": {
|
||||
"name": "邀請到期",
|
||||
"title": "通知:邀請已過期",
|
||||
"inviteExpired": "邀請已過期。",
|
||||
"expiredAt": "邀請碼 {code} 在 {time} 過期。",
|
||||
"notificationNotice": "注意:可以在管理儀錶板上切換通知訊息。"
|
||||
},
|
||||
"passwordReset": {
|
||||
"name": "重置密碼",
|
||||
"title": "忘記密碼 - Jellfin",
|
||||
"someoneHasRequestedReset": "最近在 Jellyfin 上有一個您的密碼重置申請。",
|
||||
"ifItWasYou": "如果是您本人,請在密碼重置提示框中輸入下方的 PIN 碼。",
|
||||
"ifItWasYouLink": "如果是您本人,請點選下方的連結。",
|
||||
"codeExpiry": "該 PIN 碼將在 {expiresInMinutes} 内到期(UTC 時間 {date} {time})。",
|
||||
"pin": "PIN 碼"
|
||||
},
|
||||
"userDeleted": {
|
||||
"name": "帳戶刪除",
|
||||
"title": "您的帳戶已被刪除 - Jellyfin",
|
||||
"yourAccountWasDeleted": "您的 Jellyfin 帳戶已被刪除。"
|
||||
},
|
||||
"userDisabled": {
|
||||
"name": "帳戶已被禁用",
|
||||
"title": "您的帳戶已被禁用 - Jellyfin",
|
||||
"yourAccountWasDisabled": "您的帳戶已被禁用。"
|
||||
},
|
||||
"userEnabled": {
|
||||
"name": "帳戶已被重新啟用",
|
||||
"title": "您的帳戶已被重新啟用 - Jellyfin",
|
||||
"yourAccountWasEnabled": "您的帳戶已被重新啟用。"
|
||||
},
|
||||
"inviteEmail": {
|
||||
"name": "邀請電子郵件",
|
||||
"title": "邀請 - Jellyfin",
|
||||
"hello": "您好",
|
||||
"youHaveBeenInvited": "您已受邀註冊 Jellyfin。",
|
||||
"toJoin": "請點選以下連結來加入。",
|
||||
"inviteExpiry": "此邀請將於 {date} {time} 到期,即 {expiresInMinutes} 內,請儘快註冊。",
|
||||
"linkButton": "設置您的帳戶"
|
||||
},
|
||||
"welcomeEmail": {
|
||||
"name": "歡迎",
|
||||
"title": "歡迎使用 Jellyfin",
|
||||
"welcome": "歡迎使用 Jellyfin!",
|
||||
"youCanLoginWith": "您可以使用以下資訊登錄",
|
||||
"yourAccountWillExpire": "您的帳戶將在 {date} 到期。",
|
||||
"jellyfinURL": "網址"
|
||||
},
|
||||
"emailConfirmation": {
|
||||
"name": "確認電子郵件",
|
||||
"title": "確認您的電子郵件 - Jellyfin",
|
||||
"clickBelow": "點選下面的連結以確認您的電子郵件地址並開始使用 Jellyfin。",
|
||||
"confirmEmail": "確認電子郵件"
|
||||
},
|
||||
"userExpired": {
|
||||
"name": "帳戶到期",
|
||||
"title": "您的帳號已過期 - Jellyfin",
|
||||
"yourAccountHasExpired": "您的帳號已過期。",
|
||||
"contactTheAdmin": "請聯繫管理員瞭解更多資訊。"
|
||||
}
|
||||
}
|
@ -1,5 +1,60 @@
|
||||
{
|
||||
"meta": {
|
||||
"name": "English (GB)"
|
||||
},
|
||||
"strings": {
|
||||
"confirmationRequired": "Email confirmation required",
|
||||
"createAccountHeader": "Create Account",
|
||||
"accountDetails": "Details",
|
||||
"emailAddress": "Email",
|
||||
"username": "Username",
|
||||
"password": "Password",
|
||||
"reEnterPassword": "Re-enter Password",
|
||||
"createAccountButton": "Create Account",
|
||||
"passwordRequirementsHeader": "Password Requirements",
|
||||
"successHeader": "Success!",
|
||||
"pageTitle": "Create Jellyfin Account",
|
||||
"reEnterPasswordInvalid": "Passwords are not the same.",
|
||||
"confirmationRequiredMessage": "Please check your email inbox to verify your address.",
|
||||
"yourAccountIsValidUntil": "Your account will be valid until {date}.",
|
||||
"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.",
|
||||
"matrixEnterUser": "Enter your User ID, press submit, and a PIN will be sent to you. Enter it here to continue."
|
||||
},
|
||||
"notifications": {
|
||||
"errorUnknown": "Unknown error.",
|
||||
"verified": "Account verified.",
|
||||
"errorCaptcha": "Captcha incorrect.",
|
||||
"errorPassword": "Check password requirements.",
|
||||
"errorNoMatch": "Passwords don't match.",
|
||||
"errorTelegramVerification": "Telegram verification required.",
|
||||
"errorInvalidPIN": "PIN is invalid.",
|
||||
"errorUserExists": "User already exists.",
|
||||
"errorInvalidCode": "Invalid invite code.",
|
||||
"errorMatrixVerification": "Matrix verification required.",
|
||||
"errorDiscordVerification": "Discord verification required.",
|
||||
"errorNoEmail": "Email required."
|
||||
},
|
||||
"validationStrings": {
|
||||
"length": {
|
||||
"singular": "Must have at least {n} character",
|
||||
"plural": "Must have at least {n} characters"
|
||||
},
|
||||
"number": {
|
||||
"plural": "Must have at least {n} numbers",
|
||||
"singular": "Must have at least {n} number"
|
||||
},
|
||||
"special": {
|
||||
"plural": "Must have at least {n} special characters",
|
||||
"singular": "Must have at least {n} special character"
|
||||
},
|
||||
"uppercase": {
|
||||
"singular": "Must have at least {n} uppercase character",
|
||||
"plural": "Must have at least {n} uppercase characters"
|
||||
},
|
||||
"lowercase": {
|
||||
"singular": "Must have at least {n} lowercase character",
|
||||
"plural": "Must have at least {n} lowercase characters"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
"confirmationRequiredMessage": "Por favor, revise la bandeja de entrada de su correo electrónico para verificar su dirección.",
|
||||
"yourAccountIsValidUntil": "Su cuenta será válida hasta el {date}.",
|
||||
"sendPINDiscord": "Escribe {command} en {server_channel} en Discord, luego envía el PIN a través de DM al bot.",
|
||||
"sendPIN": "A continuacion envia el PIN al BOT, despues regresa y vincula tu cuenta.",
|
||||
"sendPIN": "Envíe el PIN a continuación al bot, luego regrese aquí para vincular su cuenta.",
|
||||
"matrixEnterUser": "Ingrese su ID de usuario, presione enviar y se le enviará un PIN. Ingrese aquí para continuar."
|
||||
},
|
||||
"notifications": {
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"meta": {
|
||||
"name": "Magyar (HU)"
|
||||
"name": "English (US)"
|
||||
},
|
||||
"strings": {
|
||||
"pageTitle": "Jellyfin fiók létrehozása",
|
||||
@ -18,7 +18,7 @@
|
||||
"confirmationRequiredMessage": "Kérjük ellenőrizze az e-mail címére küldött üzenetet, a fiók ellenőrzéséhez.",
|
||||
"yourAccountIsValidUntil": "A fiókja eddig lesz érvényes: {date}.",
|
||||
"sendPIN": "Az alábbi kódot küldje el a botnak, majd itt csatolja össze a fiókját.",
|
||||
"sendPINDiscord": "Discordon haszánlja a {command} parancsot, a {server_channel} csatornában, majd küldje el a kódot a botnak privát üzenetben.",
|
||||
"sendPINDiscord": "Discordon haszánlja a {command} parancsot, a {server_channel} csatornában, majd írja be a PIN-t.",
|
||||
"matrixEnterUser": "Írja be a felhasználója azonosítóját majd nyomja meg a beküldés gombot. A kapott kódot ide írja be."
|
||||
},
|
||||
"notifications": {
|
||||
@ -30,7 +30,10 @@
|
||||
"errorInvalidPIN": "A PIN-kód érvénytelen.",
|
||||
"errorUnknown": "Ismeretlen hiba.",
|
||||
"errorNoEmail": "E-mail szükséges.",
|
||||
"verified": "Fiók ellenőrizve."
|
||||
"verified": "Fiók ellenőrizve.",
|
||||
"errorPassword": "Ellenőrizze a jelszó követelményeket.",
|
||||
"errorCaptcha": "Hibás Captcha.",
|
||||
"errorNoMatch": "A jelszavak nem egyeznek."
|
||||
},
|
||||
"validationStrings": {
|
||||
"length": {
|
||||
@ -46,12 +49,12 @@
|
||||
"plural": "Legalább {n} kisbetüs karakter"
|
||||
},
|
||||
"number": {
|
||||
"singular": "",
|
||||
"plural": ""
|
||||
"singular": "Tartalmaznia kell legalább {n} számot",
|
||||
"plural": "Legalább {n} számot kell tartalmazzon"
|
||||
},
|
||||
"special": {
|
||||
"singular": "",
|
||||
"plural": ""
|
||||
"singular": "Legalább {n} speciális karaktert kell tartalmazzon",
|
||||
"plural": "Legalább {n} speciális karaktert kell tartalmazzon"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -15,11 +15,25 @@
|
||||
"passwordRequirementsHeader": "Persyaratan Kata Sandi",
|
||||
"successHeader": "Sukses!",
|
||||
"confirmationRequired": "Konfirmasi email diperlukan",
|
||||
"confirmationRequiredMessage": "Silakan periksa kotak masuk email Anda untuk memverifikasi alamat Anda."
|
||||
"confirmationRequiredMessage": "Silakan periksa kotak masuk email Anda untuk memverifikasi alamat Anda.",
|
||||
"sendPINDiscord": "Ketik {command} di {server_channel} pada Discord, lalu kirim PIN di bawah ini.",
|
||||
"yourAccountIsValidUntil": "Akun kamu berlaku hingga {date}.",
|
||||
"sendPIN": "Kirim PIN di bawah ini ke bot, lalu kembali kesini untuk menerima link ke akun kamu.",
|
||||
"matrixEnterUser": "Masukkan User ID kamu, tekan submit, nomor PIN akan dikirimkan ke kamu. Masukkan untuk melanjutkan."
|
||||
},
|
||||
"notifications": {
|
||||
"errorUserExists": "Pengguna sudah ada.",
|
||||
"errorInvalidCode": "Kode undangan tidak valid."
|
||||
"errorInvalidCode": "Kode undangan tidak valid.",
|
||||
"errorDiscordVerification": "Butuh verifikasi pada Discord.",
|
||||
"errorUnknown": "Terjadi kesalahan.",
|
||||
"errorTelegramVerification": "Butuh verifikasi pada Telegram.",
|
||||
"errorInvalidPIN": "Kode PIN salah.",
|
||||
"errorCaptcha": "Captcha salah.",
|
||||
"errorPassword": "Perhatikan persyaratan password.",
|
||||
"errorNoMatch": "Password tidak sama.",
|
||||
"verified": "Akun terverifikasi.",
|
||||
"errorNoEmail": "Butuh Email.",
|
||||
"errorMatrixVerification": "Butuh verifikasi pada Matrix."
|
||||
},
|
||||
"validationStrings": {
|
||||
"length": {
|
||||
|
60
lang/form/zh-Hant.json
Normal file
60
lang/form/zh-Hant.json
Normal file
@ -0,0 +1,60 @@
|
||||
{
|
||||
"meta": {
|
||||
"name": "繁體中文 (TW)"
|
||||
},
|
||||
"strings": {
|
||||
"pageTitle": "創建 Jellfin 帳戶",
|
||||
"createAccountHeader": "創建帳戶",
|
||||
"accountDetails": "詳細資訊",
|
||||
"emailAddress": "電子郵件",
|
||||
"username": "帳戶名稱",
|
||||
"password": "密碼",
|
||||
"reEnterPassword": "重新輸入密碼",
|
||||
"reEnterPasswordInvalid": "密碼不一樣。",
|
||||
"createAccountButton": "創建帳戶",
|
||||
"passwordRequirementsHeader": "密碼格式要求",
|
||||
"successHeader": "成功!",
|
||||
"confirmationRequired": "需要電子郵件確認",
|
||||
"confirmationRequiredMessage": "請檢查您的電子郵件收件匣以驗證您的地址。",
|
||||
"yourAccountIsValidUntil": "您的帳戶有效期至 {date}。",
|
||||
"sendPIN": "將下面的 PIN 碼發送給機器人,然後返回此處連結您的帳戶。",
|
||||
"sendPINDiscord": "在 Discord 上的 {server_channel} 中輸入 {command},然後發送下方的 PIN 碼。",
|
||||
"matrixEnterUser": "輸入您的帳戶 ID 並點擊提交。在此處輸入發送給您的PIN 碼以繼續。"
|
||||
},
|
||||
"notifications": {
|
||||
"errorUserExists": "帳戶已存在。",
|
||||
"errorInvalidCode": "邀請碼無效。",
|
||||
"errorTelegramVerification": "需要 Telegram 驗證。",
|
||||
"errorDiscordVerification": "需要 Discord 驗證。",
|
||||
"errorMatrixVerification": "需要 Matrix 驗證。",
|
||||
"errorInvalidPIN": "無效的PIN碼。",
|
||||
"errorUnknown": "未知的錯誤。",
|
||||
"errorNoEmail": "電子郵件必填。",
|
||||
"errorCaptcha": "CAPTCHA 驗證碼不正確。",
|
||||
"errorPassword": "請您檢查密碼要求後再試。",
|
||||
"errorNoMatch": "密碼不匹配。",
|
||||
"verified": "帳戶已驗證。"
|
||||
},
|
||||
"validationStrings": {
|
||||
"length": {
|
||||
"singular": "必須至少包含 {n} 個字元",
|
||||
"plural": "必須至少包含 {n} 個字元"
|
||||
},
|
||||
"uppercase": {
|
||||
"singular": "必須至少包含 {n} 個大寫字母",
|
||||
"plural": "必須至少包含 {n} 個大寫字母"
|
||||
},
|
||||
"lowercase": {
|
||||
"singular": "必須至少包含 {n} 個小寫字母",
|
||||
"plural": "必須至少包含 {n} 個小寫字母"
|
||||
},
|
||||
"number": {
|
||||
"singular": "必須至少包含 {n} 個數字",
|
||||
"plural": "必須至少包含 {n} 個數字"
|
||||
},
|
||||
"special": {
|
||||
"singular": "必須至少包含 {n} 個特殊字元",
|
||||
"plural": "必須至少包含 {n} 個特殊字元"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,16 @@
|
||||
{
|
||||
"meta": {
|
||||
"name": "English (GB)"
|
||||
},
|
||||
"strings": {
|
||||
"youCanLoginOmbi": "You can now log in to Jellyfin & Ombi with the below code as your password.",
|
||||
"passwordReset": "Password reset",
|
||||
"resetFailed": "Password reset failed",
|
||||
"tryAgain": "Please try again.",
|
||||
"youCanLogin": "You can now log in with the below code as your password.",
|
||||
"changeYourPassword": "Make sure to change your password after you log in.",
|
||||
"reset": "Reset",
|
||||
"enterYourPassword": "Enter your new password below.",
|
||||
"youCanLoginPassword": "You can now login with your new password. Press below to continue to Jellyfin."
|
||||
}
|
||||
}
|
||||
|
16
lang/pwreset/zh-Hant.json
Normal file
16
lang/pwreset/zh-Hant.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"meta": {
|
||||
"name": "繁體中文 (TW)"
|
||||
},
|
||||
"strings": {
|
||||
"passwordReset": "重設密碼",
|
||||
"reset": "重設",
|
||||
"resetFailed": "重設密碼失敗",
|
||||
"tryAgain": "請重試。",
|
||||
"youCanLogin": "您現在可以使用下方的代碼作為您的密碼登錄。",
|
||||
"youCanLoginOmbi": "您現在可以使用下方的代碼作為您的密碼登錄 Jellyfin和Ombi。",
|
||||
"youCanLoginPassword": "您現在可以使用新密碼登錄。 請按下方按鈕跳轉至 Jellyfin。",
|
||||
"changeYourPassword": "請務必在登錄后更改密碼。",
|
||||
"enterYourPassword": "在下方輸入您的新密碼。"
|
||||
}
|
||||
}
|
@ -1,5 +1,150 @@
|
||||
{
|
||||
"meta": {
|
||||
"name": "English (GB)"
|
||||
},
|
||||
"passwordValidation": {
|
||||
"special": "Special characters (%, *, etc.)",
|
||||
"numbers": "Numbers",
|
||||
"title": "Password Validation",
|
||||
"lowercase": "Lowercase characters",
|
||||
"length": "Length",
|
||||
"uppercase": "Uppercase characters",
|
||||
"description": "If enabled, a set of password requirements will show on the account creation page, such as minimum length, uppercase/lowercase characters, etc."
|
||||
},
|
||||
"email": {
|
||||
"method": "Sending method",
|
||||
"dateFormat": "Date Format",
|
||||
"useEmailAsUsername": "Use email addresses as username",
|
||||
"useEmailAsUsernameNotice": "If enabled, new users will login to Jellyfin/Emby with their email address instead of a username.",
|
||||
"title": "Email",
|
||||
"fromAddress": "From Address",
|
||||
"senderName": "Sender Name",
|
||||
"encryption": "Encryption",
|
||||
"mailgunApiURL": "API URL",
|
||||
"description": "jfa-go can send password reset PINs and various notifications through email. You can connect to an SMTP server, or use the {n} API.",
|
||||
"dateFormatNotice": "Date follows the strftime format. For more info, visit {n}."
|
||||
},
|
||||
"passwordResets": {
|
||||
"resetLinks": "Send a link instead of a PIN",
|
||||
"setPassword": "Set password through link",
|
||||
"resetLinksNotice": "If Ombi integration is enabled, use this to sync Jellyfin password resets with Ombi.",
|
||||
"title": "Password Resets",
|
||||
"description": "When a user tries to reset their password, Jellyfin creates a file named 'passwordreset-*.json' which contains a PIN. jfa-go reads the file and sends the PIN to the user.",
|
||||
"pathToJellyfin": "Path to Jellyfin configuration directory",
|
||||
"pathToJellyfinNotice": "If you don't know where this is, try resetting your password in Jellyfin. A popup with '<path to jellyfin>/passwordreset-*.json' will appear.",
|
||||
"resetLinksLanguage": "Default reset link language",
|
||||
"setPasswordNotice": "Enabling this means the user doesn't have to change their password from the PIN after the reset. Password validation will also be enforced."
|
||||
},
|
||||
"helpMessages": {
|
||||
"title": "Help Messages",
|
||||
"description": "These messages will display in the account creation page and in some emails.",
|
||||
"contactMessage": "Contact Message",
|
||||
"contactMessageNotice": "Displays at the bottom of all pages except admin.",
|
||||
"helpMessage": "Help Message",
|
||||
"helpMessageNotice": "Displays on the account creation page.",
|
||||
"successMessage": "Success Message",
|
||||
"successMessageNotice": "Displays when a user creates their account.",
|
||||
"emailMessage": "Email Message",
|
||||
"emailMessageNotice": "Displays at the bottom of emails."
|
||||
},
|
||||
"strings": {
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled",
|
||||
"next": "Next",
|
||||
"back": "Back",
|
||||
"optional": "Optional",
|
||||
"serverType": "Server Type",
|
||||
"port": "Port",
|
||||
"serverAddress": "Server Address",
|
||||
"emailSubject": "Email Subject",
|
||||
"URL": "URL",
|
||||
"apiKey": "API Key",
|
||||
"errorUserDisabled": "User may be disabled.",
|
||||
"error404": "404, check the internal URL.",
|
||||
"message": "Message",
|
||||
"pageTitle": "Setup - jfa-go",
|
||||
"errorInvalidUserPass": "Invalid username/password.",
|
||||
"errorNotAdmin": "User is not allowed to manage server.",
|
||||
"errorConnectionRefused": "Connection refused."
|
||||
},
|
||||
"startPage": {
|
||||
"welcome": "Welcome!",
|
||||
"httpsNotice": "Make sure you're accessing this page via HTTPS or on a private network.",
|
||||
"start": "Start",
|
||||
"pressStart": "You'll need to do a few things to set up jfa-go. Press start to continue."
|
||||
},
|
||||
"jellyfinEmby": {
|
||||
"title": "Jellyfin/Emby",
|
||||
"embyNotice": "Emby support is limited and does not support password resets.",
|
||||
"internal": "Internal",
|
||||
"external": "External",
|
||||
"description": "An admin account is needed because the API does not allow user creation using an API key. You should create a separate account and check 'Allow this user to manage the server'. You can disable everything else. Once done, enter the login details here.",
|
||||
"replaceJellyfin": "Server name",
|
||||
"replaceJellyfinNotice": "If given, this will replace any occurrence of 'Jellyfin' in the app.",
|
||||
"addressExternalNotice": "Leave blank to use the same address.",
|
||||
"testConnection": "Test Connection"
|
||||
},
|
||||
"endPage": {
|
||||
"refreshPage": "Refresh",
|
||||
"finished": "Finished!",
|
||||
"restartMessage": "You can configure Discord/Telegram/Matrix bots, customise your messages and more in Settings. Click below to restart, then refresh the page."
|
||||
},
|
||||
"language": {
|
||||
"title": "Language",
|
||||
"defaultAdminLang": "Default admin language",
|
||||
"defaultFormLang": "Default account creation language",
|
||||
"defaultEmailLang": "Default email language",
|
||||
"description": "Community translations are available for most parts of jfa-go. You can choose the default languages below, but users can still change it if they wish. If you want to help translate, sign up to {n} to start contributing!"
|
||||
},
|
||||
"general": {
|
||||
"lightTheme": "Light",
|
||||
"title": "General",
|
||||
"listenAddress": "Listen Address",
|
||||
"darkTheme": "Dark",
|
||||
"useHTTPS": "Use HTTPS",
|
||||
"httpsPort": "HTTPS Port",
|
||||
"pathToCertificate": "Path to certificate",
|
||||
"pathToKeyFile": "Path to key file",
|
||||
"urlBase": "URL Base",
|
||||
"urlBaseNotice": "Only needed if using a reverse proxy on a subdomain (e.g 'jellyf.in/accounts').",
|
||||
"useHTTPSNotice": "Only recommended if you aren't using a reverse proxy."
|
||||
},
|
||||
"updates": {
|
||||
"title": "Updates",
|
||||
"updateChannel": "Update Channel",
|
||||
"stable": "Stable",
|
||||
"unstable": "Unstable",
|
||||
"description": "Enable to be notified when new updates are available. jfa-go will check {n} every 30 minutes. No IPs or personally identifiable information are collected."
|
||||
},
|
||||
"login": {
|
||||
"title": "Login",
|
||||
"description": "To access the admin page, you need to login with a method below:",
|
||||
"authorizeManual": "Username and Password: Manually set the username and password.",
|
||||
"adminOnly": "Admin users only (recommended)",
|
||||
"authorizeWithJellyfin": "Authorise with Jellyfin/Emby: Login details are shared with Jellyfin, which allows for multiple users.",
|
||||
"allowAll": "Allow all Jellyfin users to login",
|
||||
"allowAllDescription": "Not recommended, you should allow individual users to login once setup.",
|
||||
"emailNotice": "Your email address can be used to receive notifications."
|
||||
},
|
||||
"welcomeEmails": {
|
||||
"title": "Welcome messages",
|
||||
"description": "If enabled, a message will be sent to new users with the Jellyfin/Emby URL and their username."
|
||||
},
|
||||
"ombi": {
|
||||
"title": "Ombi",
|
||||
"description": "By connecting to Ombi, both a Jellyfin and Ombi account will be created when a user joins through jfa-go. After setup is finished, go to Settings to set a default profile for new ombi users.",
|
||||
"apiKeyNotice": "Find this in the first tab of Ombi settings."
|
||||
},
|
||||
"messages": {
|
||||
"description": "jfa-go can send password resets and various messages through Email, Discord, Telegram, and/or Matrix. You can set up email below, and the others can be configured in Settings later. Instructions can be found on the {n}. If you don't need this, you can disable these features here.",
|
||||
"title": "Messages"
|
||||
},
|
||||
"notifications": {
|
||||
"title": "Admin Notifications",
|
||||
"description": "If enabled, you can choose (per invite) to receive an message when an invite expires, or a user is created. If you didn't choose the Jellyfin login method, make sure you provided your email address, or add another contact method later."
|
||||
},
|
||||
"inviteEmails": {
|
||||
"title": "Invite Messages",
|
||||
"description": "If enabled, you can send invites directly to a user's email address, Discord or Matrix user. Because you might be using a reverse proxy, you need to provide the URL invites are accessed from. Write your URL Base, and append '/invite'."
|
||||
}
|
||||
}
|
||||
|
150
lang/setup/hu-HU.json
Normal file
150
lang/setup/hu-HU.json
Normal file
@ -0,0 +1,150 @@
|
||||
{
|
||||
"meta": {
|
||||
"name": "English (US)"
|
||||
},
|
||||
"strings": {
|
||||
"pageTitle": "Telepítés - jfa-go",
|
||||
"next": "Következő",
|
||||
"back": "Vissza",
|
||||
"optional": "Opcionális",
|
||||
"serverType": "Szerver típus",
|
||||
"disabled": "Letiltva",
|
||||
"enabled": "Engedélyezve",
|
||||
"port": "Port",
|
||||
"message": "Üzenet",
|
||||
"serverAddress": "Szerver cím",
|
||||
"emailSubject": "E-mail tárgy",
|
||||
"URL": "URL",
|
||||
"apiKey": "API kulcs",
|
||||
"errorInvalidUserPass": "Érvénytelen felhasználónév / jelszó.",
|
||||
"errorNotAdmin": "A felhasználó számára nincs engedélyezve a szerver kezelése.",
|
||||
"errorUserDisabled": "Lehetséges, hogy a felhasználó le lett tiltva.",
|
||||
"error404": "404, ellenőrizze a belső URL-t.",
|
||||
"errorConnectionRefused": ""
|
||||
},
|
||||
"startPage": {
|
||||
"welcome": "Üdv!",
|
||||
"pressStart": "",
|
||||
"httpsNotice": "",
|
||||
"start": ""
|
||||
},
|
||||
"endPage": {
|
||||
"finished": "",
|
||||
"restartMessage": "",
|
||||
"refreshPage": ""
|
||||
},
|
||||
"language": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"defaultAdminLang": "",
|
||||
"defaultFormLang": "",
|
||||
"defaultEmailLang": ""
|
||||
},
|
||||
"general": {
|
||||
"title": "",
|
||||
"listenAddress": "",
|
||||
"urlBase": "",
|
||||
"urlBaseNotice": "",
|
||||
"lightTheme": "",
|
||||
"darkTheme": "",
|
||||
"useHTTPS": "",
|
||||
"httpsPort": "",
|
||||
"useHTTPSNotice": "",
|
||||
"pathToCertificate": "",
|
||||
"pathToKeyFile": ""
|
||||
},
|
||||
"updates": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"updateChannel": "",
|
||||
"stable": "",
|
||||
"unstable": ""
|
||||
},
|
||||
"login": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"authorizeWithJellyfin": "",
|
||||
"authorizeManual": "",
|
||||
"adminOnly": "",
|
||||
"allowAll": "",
|
||||
"allowAllDescription": "",
|
||||
"emailNotice": ""
|
||||
},
|
||||
"jellyfinEmby": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"embyNotice": "",
|
||||
"internal": "",
|
||||
"external": "",
|
||||
"replaceJellyfin": "",
|
||||
"replaceJellyfinNotice": "",
|
||||
"addressExternalNotice": "",
|
||||
"testConnection": ""
|
||||
},
|
||||
"ombi": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"apiKeyNotice": ""
|
||||
},
|
||||
"messages": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"email": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"method": "",
|
||||
"useEmailAsUsername": "",
|
||||
"useEmailAsUsernameNotice": "",
|
||||
"fromAddress": "",
|
||||
"senderName": "",
|
||||
"dateFormat": "",
|
||||
"dateFormatNotice": "",
|
||||
"encryption": "",
|
||||
"mailgunApiURL": ""
|
||||
},
|
||||
"notifications": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"welcomeEmails": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"inviteEmails": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
},
|
||||
"passwordResets": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"pathToJellyfin": "",
|
||||
"pathToJellyfinNotice": "",
|
||||
"resetLinks": "",
|
||||
"resetLinksNotice": "",
|
||||
"resetLinksLanguage": "",
|
||||
"setPassword": "",
|
||||
"setPasswordNotice": ""
|
||||
},
|
||||
"passwordValidation": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"length": "",
|
||||
"uppercase": "",
|
||||
"lowercase": "",
|
||||
"numbers": "",
|
||||
"special": ""
|
||||
},
|
||||
"helpMessages": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"contactMessage": "",
|
||||
"contactMessageNotice": "",
|
||||
"helpMessage": "",
|
||||
"helpMessageNotice": "",
|
||||
"successMessage": "",
|
||||
"successMessageNotice": "",
|
||||
"emailMessage": "",
|
||||
"emailMessageNotice": ""
|
||||
}
|
||||
}
|
150
lang/setup/zh-Hant.json
Normal file
150
lang/setup/zh-Hant.json
Normal file
@ -0,0 +1,150 @@
|
||||
{
|
||||
"meta": {
|
||||
"name": "繁體中文 (TW)"
|
||||
},
|
||||
"strings": {
|
||||
"pageTitle": "設置 - jfa-go",
|
||||
"next": "下一步",
|
||||
"back": "上一步",
|
||||
"optional": "可選的",
|
||||
"serverType": "伺服器類型",
|
||||
"disabled": "已禁用",
|
||||
"enabled": "已啟用",
|
||||
"port": "通訊埠",
|
||||
"message": "訊息",
|
||||
"serverAddress": "伺服器地址",
|
||||
"emailSubject": "電子郵件主題",
|
||||
"URL": "網址",
|
||||
"apiKey": "API密鑰",
|
||||
"errorInvalidUserPass": "無效的帳戶名稱/密碼。",
|
||||
"errorNotAdmin": "此帳戶不允許管理伺服器。",
|
||||
"errorUserDisabled": "此帳戶可能已被禁用。",
|
||||
"error404": "404, 請檢查內部網址(internal URL)。",
|
||||
"errorConnectionRefused": "連線遭拒。"
|
||||
},
|
||||
"startPage": {
|
||||
"welcome": "歡迎!",
|
||||
"pressStart": "您需要完成幾個步驟來設置jfa-go。點擊 開始 以繼續。",
|
||||
"httpsNotice": "請確保您通過 HTTPS 或專用網路訪問此頁面。",
|
||||
"start": "開始"
|
||||
},
|
||||
"endPage": {
|
||||
"finished": "已完成!",
|
||||
"restartMessage": "您可以設置Discord/Telegram/Matrix機器人,在“設置”中自定義您的訊息和其他內容。點擊下方重新啟動,然後重整頁面。",
|
||||
"refreshPage": "重新整理"
|
||||
},
|
||||
"language": {
|
||||
"title": "語言",
|
||||
"description": "jfa-go 的大部分內容都仰賴社群翻譯。您可以選擇下面的預設語言,但使用者仍然可以根據需要進行更改。如果您想改進翻譯,請在 {n} 註冊以開始貢獻您的一份力量!",
|
||||
"defaultAdminLang": "預設管理語言",
|
||||
"defaultFormLang": "預設帳戶創建語言",
|
||||
"defaultEmailLang": "預設電子郵件語言"
|
||||
},
|
||||
"general": {
|
||||
"title": "一般",
|
||||
"listenAddress": "監聽埠",
|
||||
"urlBase": "基底URL",
|
||||
"urlBaseNotice": "只有在子網域上使用反向代理時才需要(例如“jellyf.in/accounts”)。",
|
||||
"lightTheme": "明亮",
|
||||
"darkTheme": "黑暗",
|
||||
"useHTTPS": "使用HTTPS",
|
||||
"httpsPort": "HTTPS 通訊埠",
|
||||
"useHTTPSNotice": "只有在您不使用反向代理時才推薦使用。",
|
||||
"pathToCertificate": "證書文件路徑",
|
||||
"pathToKeyFile": "密鑰文件路徑"
|
||||
},
|
||||
"updates": {
|
||||
"title": "更新",
|
||||
"description": "啟用此選項可在有新更新可用時收到通知。jfa-go 每 30 分鐘將對 {n} 檢查一次。不會收集任何IP或個人身份資訊。",
|
||||
"updateChannel": "更新頻道",
|
||||
"stable": "穩定版",
|
||||
"unstable": "非穩定版"
|
||||
},
|
||||
"login": {
|
||||
"title": "登錄",
|
||||
"description": "要存取管理頁面,您需要使用以下方法登錄:",
|
||||
"authorizeWithJellyfin": "使用Jellyfin/Emby授權:登錄詳細資訊與Jellyfin共用,允許使用多個帳戶。",
|
||||
"authorizeManual": "帳戶名稱和密碼:手動設置帳戶名稱和密碼。",
|
||||
"adminOnly": "僅限管理員帳戶(推薦)",
|
||||
"allowAll": "允許所有Jellyfin帳戶登錄",
|
||||
"allowAllDescription": "不建議,您應該允許個別使用者在登錄后設置。",
|
||||
"emailNotice": "您的電子郵件地址可用於接收通知。"
|
||||
},
|
||||
"jellyfinEmby": {
|
||||
"title": "Jellyfin/Emby",
|
||||
"description": "需要管理員帳戶,因為 API 不允許使用 API 金鑰創建帳戶。您應該創建一個單獨的帳戶並選取「 允許此使用者管理伺服器」。您可以關閉其他所有內容。完成後,在此處輸入登錄詳細資訊。",
|
||||
"embyNotice": "對 Emby 提供有限支持,不支持密碼重置功能。",
|
||||
"internal": "內部",
|
||||
"external": "外部",
|
||||
"replaceJellyfin": "伺服器名稱",
|
||||
"replaceJellyfinNotice": "如果填寫,則替換應用程式中出現的所有 'Jellyfin' 字樣。",
|
||||
"addressExternalNotice": "留空以使用相同的地址。",
|
||||
"testConnection": "測試連接"
|
||||
},
|
||||
"ombi": {
|
||||
"title": "Ombi",
|
||||
"description": "通過連接到 Ombi,當使用者通過 jfa-go 加入時,將創建 Jellyfin 和 Ombi 帳戶。設置完成後,轉到 “設置” 為新的 ombi 帳戶設置預設配置檔。",
|
||||
"apiKeyNotice": "在 Ombi “設置”的第一個選項卡中找到它。"
|
||||
},
|
||||
"messages": {
|
||||
"title": "訊息",
|
||||
"description": "jfa-go 可以通過電子郵件、Discord、Telegram 和/或 Matrix 發送密碼重置和各種消息。您可以在下面設置電子郵件,其他電子郵件可以稍後在「設置」中進行配置。說明可以在 {n} 上找到。如果不需要此功能,可以在此處禁用這些功能。"
|
||||
},
|
||||
"email": {
|
||||
"title": "電子郵件",
|
||||
"description": "jfa-go 可以通過電子郵件發送密碼重置PIN和各種通知。您可以連接到 SMTP 伺服器,或使用 {n} API。",
|
||||
"method": "發送方式",
|
||||
"useEmailAsUsername": "使用電子郵件地址作為使用者名稱",
|
||||
"useEmailAsUsernameNotice": "如果啟用,新使用者將使用他們的電子郵件地址而不是帳戶名稱登錄Jellyfin/Emby。",
|
||||
"fromAddress": "寄件者地址",
|
||||
"senderName": "寄件者名稱",
|
||||
"dateFormat": "日期格式",
|
||||
"dateFormatNotice": "日期遵循 strftime 格式。有關詳細資訊,請訪問 {n}。",
|
||||
"encryption": "加密",
|
||||
"mailgunApiURL": "API URL"
|
||||
},
|
||||
"notifications": {
|
||||
"title": "管理員通知",
|
||||
"description": "如果啟用,您可以選擇(每個邀請)在邀請過期或創建帳戶時接收消息。如果您沒有選擇 Jellyfin 登錄方式,請確保您提供了電子郵件地址,或稍後添加其他聯繫方式。"
|
||||
},
|
||||
"welcomeEmails": {
|
||||
"title": "歡迎訊息",
|
||||
"description": "如果啟用,將向新帳戶發送一條消息,其中包含 Jellyfin/Emby URL 及其帳戶名稱。"
|
||||
},
|
||||
"inviteEmails": {
|
||||
"title": "邀請通知",
|
||||
"description": "如果啟用,您可以直接向使用者的電子郵件、Discord 或 Matrix 帳戶發送邀請。由於您可能使用的是反向代理,因此需要提供從中訪問邀請的URL。寫下您的 URL 庫,並附加 “/invite”。"
|
||||
},
|
||||
"passwordResets": {
|
||||
"title": "重置密碼",
|
||||
"description": "當用戶嘗試重置密碼時,Jellyfin 會創建一個名為 “passwordreset-*.json” 的檔,其中包含一個 PIN 碼。jfa-go 讀取該文件並將 PIN 碼發送給使用者。",
|
||||
"pathToJellyfin": "Jellyfin 配置目錄的路徑",
|
||||
"pathToJellyfinNotice": "如果您不知道它在哪裡,請嘗試在Jellyfin中重置密碼。將出現一個帶有 “<path to jellyfin>/passwordreset-*.json” 的彈出視窗。",
|
||||
"resetLinks": "發送連結而不是 PIN 碼",
|
||||
"resetLinksNotice": "如果啟用了 Ombi 集成,請使用此選項將 Jellyfin 密碼重置與 Ombi 同步。",
|
||||
"resetLinksLanguage": "預設重置連結語言",
|
||||
"setPassword": "通過連結設置密碼",
|
||||
"setPasswordNotice": "啟用此功能意味著使用者不必在重置後從 PIN 更改其密碼。並將強制執行密碼驗證。"
|
||||
},
|
||||
"passwordValidation": {
|
||||
"title": "密碼驗證",
|
||||
"description": "如果啟用,帳戶創建頁面上將顯示一組密碼要求,例如最小長度、大寫/小寫字元等。",
|
||||
"length": "長度",
|
||||
"uppercase": "大寫字元",
|
||||
"lowercase": "小寫字元",
|
||||
"numbers": "數字",
|
||||
"special": "特殊字元(%、* 等)"
|
||||
},
|
||||
"helpMessages": {
|
||||
"title": "幫助訊息",
|
||||
"description": "這些訊息將顯示在帳戶創建頁面和某些電子郵件中。",
|
||||
"contactMessage": "聯繫方式",
|
||||
"contactMessageNotice": "顯示在除管理員之外的所有頁面的底部。",
|
||||
"helpMessage": "幫助訊息",
|
||||
"helpMessageNotice": "顯示在帳戶創建頁面上。",
|
||||
"successMessage": "成功訊息",
|
||||
"successMessageNotice": "在使用者創建其帳戶時顯示。",
|
||||
"emailMessage": "電子郵件訊息",
|
||||
"emailMessageNotice": "顯示在電子郵件的底部。"
|
||||
}
|
||||
}
|
@ -43,7 +43,7 @@
|
||||
"general": {
|
||||
"title": "常规",
|
||||
"listenAddress": "监听端口",
|
||||
"urlBase": "URL Base",
|
||||
"urlBase": "URL地址",
|
||||
"urlBaseNotice": "仅在子域上使用反向代理时才需要(例如“jellyf.in/accounts”)。",
|
||||
"lightTheme": "明亮",
|
||||
"darkTheme": "暗黑",
|
||||
@ -66,7 +66,9 @@
|
||||
"authorizeWithJellyfin": "从Jellyfin/Emby 授权:登录信息与 Jellyfin 同步,允许使用多个用户。",
|
||||
"authorizeManual": "用户名和密码:手动设置用户名和密码。",
|
||||
"adminOnly": "仅允许管理员账户(推荐)",
|
||||
"emailNotice": "您的电子邮件地址可以用来接收通知。"
|
||||
"emailNotice": "您的电子邮件地址可以用来接收通知。",
|
||||
"allowAllDescription": "不建议,您应该允许单个用户在设置后登录。",
|
||||
"allowAll": "允许所有Jellyfin用户登录"
|
||||
},
|
||||
"jellyfinEmby": {
|
||||
"title": "Jellyfin/Emby",
|
||||
@ -99,7 +101,7 @@
|
||||
"dateFormat": "日期格式",
|
||||
"dateFormatNotice": "日期遵循 strftime 格式。如需更多信息,请访问 {n}。",
|
||||
"encryption": "加密",
|
||||
"mailgunApiURL": "API URL"
|
||||
"mailgunApiURL": "API地址"
|
||||
},
|
||||
"notifications": {
|
||||
"title": "管理员通知",
|
||||
|
@ -1,5 +1,16 @@
|
||||
{
|
||||
"meta": {
|
||||
"name": "English (GB)"
|
||||
},
|
||||
"strings": {
|
||||
"startMessage": "Hi!\nEnter your Jellyfin PIN code here to verify your account.",
|
||||
"languageMessage": "Note: See available languages with {command}, and set language with {command} <language code>.",
|
||||
"discordDMs": "Please check your DMs for a response.",
|
||||
"matrixStartMessage": "Hi\nEnter the below PIN in the Jellyfin sign-up page to verify your account.",
|
||||
"discordStartMessage": "Hi!\n Enter your PIN with `/pin <PIN>` to verify your account.",
|
||||
"invalidPIN": "That PIN was invalid, try again.",
|
||||
"pinSuccess": "Success! You can now return to the sign-up page.",
|
||||
"languageMessageDiscord": "Note: set your language with /lang <language name>.",
|
||||
"languageSet": "Language set to {language}."
|
||||
}
|
||||
}
|
||||
|
16
lang/telegram/zh-Hant.json
Normal file
16
lang/telegram/zh-Hant.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"meta": {
|
||||
"name": "繁體中文 (TW)"
|
||||
},
|
||||
"strings": {
|
||||
"startMessage": "您好!\n請在這裡輸入 Jellyfin 的 PIN 碼來驗證您的帳戶。",
|
||||
"discordStartMessage": "您好!\n請輸入 “/PIN<PIN 碼>” 來驗證您的帳戶。",
|
||||
"matrixStartMessage": "您好\n在 Jellyfin 註冊頁面中輸入以下 PIN 碼以驗證您的帳戶。",
|
||||
"invalidPIN": "該 PIN 碼無效,請重試。",
|
||||
"pinSuccess": "成功! 您現在可以返回註冊頁面。",
|
||||
"languageMessage": "提示:使用 {command} 查看可用語言,並使用 {command} <language code> 來設置語言。",
|
||||
"languageMessageDiscord": "提示:使用 “/lang <語言>” 設置語言。",
|
||||
"languageSet": "語言設置為{Language}。",
|
||||
"discordDMs": "請檢查您的私人通信以獲取回復。"
|
||||
}
|
||||
}
|
6
log.go
6
log.go
@ -27,7 +27,11 @@ func logOutput() (closeFunc func(), err error) {
|
||||
closeFunc = func() {}
|
||||
return
|
||||
}
|
||||
writers = append(writers, colorStripper{f})
|
||||
if PLATFORM == "windows" {
|
||||
writers = []io.Writer{colorStripper{lineCache}, colorStripper{f}}
|
||||
} else {
|
||||
writers = append(writers, colorStripper{f})
|
||||
}
|
||||
closeFunc = func() {
|
||||
w.Close()
|
||||
<-wExit
|
||||
|
5
tray.go
5
tray.go
@ -1,3 +1,4 @@
|
||||
//go:build tray
|
||||
// +build tray
|
||||
|
||||
package main
|
||||
@ -9,7 +10,6 @@ import (
|
||||
"syscall"
|
||||
|
||||
"github.com/getlantern/systray"
|
||||
"github.com/skratchdot/open-golang/open"
|
||||
)
|
||||
|
||||
var TRAY = true
|
||||
@ -101,7 +101,8 @@ func onReady() {
|
||||
case <-mRestart.ClickedCh:
|
||||
trayRestart()
|
||||
case <-mOpenLogs.ClickedCh:
|
||||
open.Start(logPath)
|
||||
log.Printf("Opening %s\n", logPath)
|
||||
OpenFile(logPath)
|
||||
case <-mQuit.ClickedCh:
|
||||
systray.Quit()
|
||||
}
|
||||
|
10
ts/form.ts
10
ts/form.ts
@ -10,7 +10,8 @@ interface formWindow extends Window {
|
||||
telegramModal: Modal;
|
||||
discordModal: Modal;
|
||||
matrixModal: Modal;
|
||||
confirmationModal: Modal
|
||||
confirmationModal: Modal;
|
||||
redirectToJellyfin: boolean;
|
||||
code: string;
|
||||
messages: { [key: string]: string };
|
||||
confirmation: boolean;
|
||||
@ -412,7 +413,12 @@ const create = (event: SubmitEvent) => {
|
||||
if (!vals[type]) { valid = false; }
|
||||
}
|
||||
if (req.status == 200 && valid) {
|
||||
window.successModal.show();
|
||||
if (window.redirectToJellyfin == true) {
|
||||
const url = ((document.getElementById("modal-success") as HTMLDivElement).querySelector("a.submit") as HTMLAnchorElement).href;
|
||||
window.location.href = url;
|
||||
} else {
|
||||
window.successModal.show();
|
||||
}
|
||||
} else {
|
||||
submitSpan.classList.add("~critical");
|
||||
submitSpan.classList.remove("~urge");
|
||||
|
@ -1334,9 +1334,7 @@ export class accountsList {
|
||||
const list = this._collectUsers();
|
||||
let applyList: string[] = [];
|
||||
for (let id of list) {
|
||||
if (this._users[id].expiry || enableUser) {
|
||||
applyList.push(id);
|
||||
}
|
||||
applyList.push(id);
|
||||
}
|
||||
this._enableExpiryReason.classList.add("unfocused");
|
||||
let header: string;
|
||||
|
79
views.go
79
views.go
@ -170,6 +170,7 @@ func (app *appContext) ResetPassword(gc *gin.Context) {
|
||||
data["helpMessage"] = app.config.Section("ui").Key("help_message").String()
|
||||
data["successMessage"] = app.config.Section("ui").Key("success_message").String()
|
||||
data["jfLink"] = app.config.Section("ui").Key("redirect_url").String()
|
||||
data["redirectToJellyfin"] = app.config.Section("ui").Key("auto_redirect").MustBool(false)
|
||||
data["validate"] = app.config.Section("password_validation").Key("enabled").MustBool(false)
|
||||
data["requirements"] = app.validator.getCriteria()
|
||||
data["strings"] = app.storage.lang.PasswordReset[lang].Strings
|
||||
@ -437,13 +438,18 @@ func (app *appContext) InviteProxy(gc *gin.Context) {
|
||||
fail()
|
||||
return
|
||||
}
|
||||
gcHTML(gc, http.StatusOK, "create-success.html", gin.H{
|
||||
"cssClass": app.cssClass,
|
||||
"strings": app.storage.lang.Form[lang].Strings,
|
||||
"successMessage": app.config.Section("ui").Key("success_message").String(),
|
||||
"contactMessage": app.config.Section("ui").Key("contact_message").String(),
|
||||
"jfLink": app.config.Section("ui").Key("redirect_url").String(),
|
||||
})
|
||||
jfLink := app.config.Section("ui").Key("redirect_url").String()
|
||||
if app.config.Section("ui").Key("auto_redirect").MustBool(false) {
|
||||
gc.Redirect(301, jfLink)
|
||||
} else {
|
||||
gcHTML(gc, http.StatusOK, "create-success.html", gin.H{
|
||||
"cssClass": app.cssClass,
|
||||
"strings": app.storage.lang.Form[lang].Strings,
|
||||
"successMessage": app.config.Section("ui").Key("success_message").String(),
|
||||
"contactMessage": app.config.Section("ui").Key("contact_message").String(),
|
||||
"jfLink": jfLink,
|
||||
})
|
||||
}
|
||||
inv, ok := app.storage.invites[code]
|
||||
if ok {
|
||||
l := len(inv.Keys)
|
||||
@ -461,35 +467,36 @@ func (app *appContext) InviteProxy(gc *gin.Context) {
|
||||
matrix := matrixEnabled && app.config.Section("matrix").Key("show_on_reg").MustBool(true)
|
||||
|
||||
data := gin.H{
|
||||
"urlBase": app.getURLBase(gc),
|
||||
"cssClass": app.cssClass,
|
||||
"cssVersion": cssVersion,
|
||||
"contactMessage": app.config.Section("ui").Key("contact_message").String(),
|
||||
"helpMessage": app.config.Section("ui").Key("help_message").String(),
|
||||
"successMessage": app.config.Section("ui").Key("success_message").String(),
|
||||
"jfLink": app.config.Section("ui").Key("redirect_url").String(),
|
||||
"validate": app.config.Section("password_validation").Key("enabled").MustBool(false),
|
||||
"requirements": app.validator.getCriteria(),
|
||||
"email": email,
|
||||
"username": !app.config.Section("email").Key("no_username").MustBool(false),
|
||||
"strings": app.storage.lang.Form[lang].Strings,
|
||||
"validationStrings": app.storage.lang.Form[lang].validationStringsJSON,
|
||||
"notifications": app.storage.lang.Form[lang].notificationsJSON,
|
||||
"code": code,
|
||||
"confirmation": app.config.Section("email_confirmation").Key("enabled").MustBool(false),
|
||||
"userExpiry": inv.UserExpiry,
|
||||
"userExpiryMonths": inv.UserMonths,
|
||||
"userExpiryDays": inv.UserDays,
|
||||
"userExpiryHours": inv.UserHours,
|
||||
"userExpiryMinutes": inv.UserMinutes,
|
||||
"userExpiryMessage": app.storage.lang.Form[lang].Strings.get("yourAccountIsValidUntil"),
|
||||
"langName": lang,
|
||||
"passwordReset": false,
|
||||
"telegramEnabled": telegram,
|
||||
"discordEnabled": discord,
|
||||
"matrixEnabled": matrix,
|
||||
"emailRequired": app.config.Section("email").Key("required").MustBool(false),
|
||||
"captcha": app.config.Section("captcha").Key("enabled").MustBool(false),
|
||||
"urlBase": app.getURLBase(gc),
|
||||
"cssClass": app.cssClass,
|
||||
"cssVersion": cssVersion,
|
||||
"contactMessage": app.config.Section("ui").Key("contact_message").String(),
|
||||
"helpMessage": app.config.Section("ui").Key("help_message").String(),
|
||||
"successMessage": app.config.Section("ui").Key("success_message").String(),
|
||||
"jfLink": app.config.Section("ui").Key("redirect_url").String(),
|
||||
"redirectToJellyfin": app.config.Section("ui").Key("auto_redirect").MustBool(false),
|
||||
"validate": app.config.Section("password_validation").Key("enabled").MustBool(false),
|
||||
"requirements": app.validator.getCriteria(),
|
||||
"email": email,
|
||||
"username": !app.config.Section("email").Key("no_username").MustBool(false),
|
||||
"strings": app.storage.lang.Form[lang].Strings,
|
||||
"validationStrings": app.storage.lang.Form[lang].validationStringsJSON,
|
||||
"notifications": app.storage.lang.Form[lang].notificationsJSON,
|
||||
"code": code,
|
||||
"confirmation": app.config.Section("email_confirmation").Key("enabled").MustBool(false),
|
||||
"userExpiry": inv.UserExpiry,
|
||||
"userExpiryMonths": inv.UserMonths,
|
||||
"userExpiryDays": inv.UserDays,
|
||||
"userExpiryHours": inv.UserHours,
|
||||
"userExpiryMinutes": inv.UserMinutes,
|
||||
"userExpiryMessage": app.storage.lang.Form[lang].Strings.get("yourAccountIsValidUntil"),
|
||||
"langName": lang,
|
||||
"passwordReset": false,
|
||||
"telegramEnabled": telegram,
|
||||
"discordEnabled": discord,
|
||||
"matrixEnabled": matrix,
|
||||
"emailRequired": app.config.Section("email").Key("required").MustBool(false),
|
||||
"captcha": app.config.Section("captcha").Key("enabled").MustBool(false),
|
||||
}
|
||||
if telegram {
|
||||
data["telegramPIN"] = app.telegram.NewAuthToken()
|
||||
|
Loading…
Reference in New Issue
Block a user