1
0
mirror of https://github.com/hrfee/jfa-go.git synced 2025-01-03 23:10:11 +00:00

Compare commits

..

No commits in common. "49c7d838408fe9057e8d985b9111ae9c2a60bea5" and "5d289ce023e7ef6bc590f5febcbbc0339e546b8f" have entirely different histories.

35 changed files with 129 additions and 1457 deletions

View File

@ -80,7 +80,7 @@ npm:
@if [ "$(GOESBUILD)" = "off" ]; then\
npm install esbuild;\
else\
go install github.com/evanw/esbuild/cmd/esbuild@latest;\
go get -u github.com/evanw/esbuild/cmd/esbuild;\
fi
configuration:

View File

@ -265,15 +265,6 @@
"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\"."
}
}
},

View File

@ -432,7 +432,6 @@ p.top {
.dropdown {
padding-bottom: 0.5rem;
margin-bottom: -0.5rem;
position: absolute;
}
.dropdown-display.lg {

26
exit.go
View File

@ -5,12 +5,13 @@ import (
"html/template"
"log"
"os"
"os/exec"
"path/filepath"
"runtime"
"runtime/debug"
"strings"
"time"
"github.com/pkg/browser"
)
// https://gist.github.com/swdunlop/9629168
@ -42,21 +43,6 @@ 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")
@ -77,8 +63,7 @@ func Exit(err interface{}) {
if err != nil {
data["Err"] = fmt.Sprintf("%s %v", identifyPanic(), err)
}
// 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"))
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)
@ -93,10 +78,7 @@ func Exit(err interface{}) {
if err2 != nil {
log.Fatalf("Failed to execute template: %v", err2)
}
if err := OpenFile(fpath + ".html"); err != nil {
log.Printf("Failed to open browser, trying text file...")
OpenFile(fpath + ".txt")
}
browser.OpenFile(fpath + ".html")
if TRAY {
QuitTray()
} else {

View File

@ -8,9 +8,6 @@
{{ 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">

View File

@ -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" checked><span>{{ .lang.Login.adminOnly }}</span>
<input type="checkbox" class="mr-2" id="ui-admin_only"><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>

View File

@ -1,217 +1,5 @@
{
"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."
}
}

View File

@ -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éés",
"inviteUsersCreated": "Utilisateurs créer",
"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": "Nom",
"label": "Etiquette",
"settingsRestarting": "Redémarrage…",
"settingsRestart": "Redémarrer",
"announce": "Annoncer",
@ -112,10 +112,7 @@
"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",
"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."
"ombiProfile": "Profil d'utilisateur Ombi"
},
"notifications": {
"changedEmailAddress": "Adresse e-mail modifiée de {n}.",
@ -212,10 +209,6 @@
"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"
}
}
}

View File

@ -3,63 +3,63 @@
"name": "Magyar (HU)"
},
"strings": {
"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",
"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": "",
"contactThrough": "",
"extendExpiry": "",
"sendPWRManual": "",

View File

@ -1,217 +0,0 @@
{
"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} 個帳戶的到期時間。"
}
}
}

View File

@ -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,10 +111,7 @@
"sendPWRSuccessManual": "如果用户没收到,请按下钮复制链接,手动发给用户。",
"setExpiry": "设置到期",
"logs": "记录",
"sendPWRValidFor": "此链接有效30分钟。",
"ombiProfile": "Ombi 用户配置文件",
"accessJFASettings": "无法更改,因为“仅限管理员”或“允许所有”已在“设置”>“常规”中设置。",
"accessJFA": "访问jfa-go"
"sendPWRValidFor": "此链接有效30分钟。"
},
"notifications": {
"changedEmailAddress": "更改了 {n} 的电子邮件地址。",
@ -155,9 +152,7 @@
"errorApplyUpdate": "无法应用更新,请手动尝试。",
"errorCheckUpdate": "检查更新失败。",
"updateAvailable": "有新更新可用,请检查设置。",
"noUpdatesAvailable": "没有可用的更新。",
"setOmbiProfile": "保存ombi配置文件。",
"errorSetOmbiProfile": "无法保存ombi配置文件。"
"noUpdatesAvailable": "没有可用的更新。"
},
"quantityStrings": {
"modifySettingsFor": {
@ -211,10 +206,6 @@
"extendedExpiry": {
"singular": "延长了 {n} 个用户的有效期。",
"plural": "延长了 {n} 个用户的有效期。"
},
"setExpiry": {
"plural": "为{n}用户设置到期时间",
"singular": "为{n}用户设置到期时间"
}
}
}

View File

@ -1,29 +1,5 @@
{
"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"
}
}

View File

@ -14,7 +14,6 @@
"copy": "Salin",
"time24h": "Waktu 24 jam",
"time12h": "Waktu 12 jam",
"theme": "Tema",
"send": "Kirim"
"theme": "Tema"
}
}

View File

@ -1,29 +0,0 @@
{
"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": "必填"
}
}

View File

@ -1,77 +1,5 @@
{
"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."
}
}

View File

@ -3,7 +3,7 @@
"name": "Bahasa Indonesia (ID)"
},
"strings": {
"ifItWasNotYou": "Jika ini bukan kamu, silahkan abaikan email ini.",
"ifItWasNotYou": "Jika ini bukan kamu, silahkan mengabaikan email ini.",
"reason": "Alasan",
"helloUser": "Halo {username},"
},

View File

@ -1,77 +0,0 @@
{
"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": "請聯繫管理員瞭解更多資訊。"
}
}

View File

@ -1,60 +1,5 @@
{
"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"
}
}
}

View File

@ -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": "Envíe el PIN a continuación al bot, luego regrese aquí para vincular su cuenta.",
"sendPIN": "A continuacion envia el PIN al BOT, despues regresa y vincula tu cuenta.",
"matrixEnterUser": "Ingrese su ID de usuario, presione enviar y se le enviará un PIN. Ingrese aquí para continuar."
},
"notifications": {

View File

@ -1,6 +1,6 @@
{
"meta": {
"name": "English (US)"
"name": "Magyar (HU)"
},
"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 írja be a PIN-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.",
"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,10 +30,7 @@
"errorInvalidPIN": "A PIN-kód érvénytelen.",
"errorUnknown": "Ismeretlen hiba.",
"errorNoEmail": "E-mail szükséges.",
"verified": "Fiók ellenőrizve.",
"errorPassword": "Ellenőrizze a jelszó követelményeket.",
"errorCaptcha": "Hibás Captcha.",
"errorNoMatch": "A jelszavak nem egyeznek."
"verified": "Fiók ellenőrizve."
},
"validationStrings": {
"length": {
@ -49,12 +46,12 @@
"plural": "Legalább {n} kisbetüs karakter"
},
"number": {
"singular": "Tartalmaznia kell legalább {n} számot",
"plural": "Legalább {n} számot kell tartalmazzon"
"singular": "",
"plural": ""
},
"special": {
"singular": "Legalább {n} speciális karaktert kell tartalmazzon",
"plural": "Legalább {n} speciális karaktert kell tartalmazzon"
"singular": "",
"plural": ""
}
}
}

View File

@ -15,25 +15,11 @@
"passwordRequirementsHeader": "Persyaratan Kata Sandi",
"successHeader": "Sukses!",
"confirmationRequired": "Konfirmasi email diperlukan",
"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."
"confirmationRequiredMessage": "Silakan periksa kotak masuk email Anda untuk memverifikasi alamat Anda."
},
"notifications": {
"errorUserExists": "Pengguna sudah ada.",
"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."
"errorInvalidCode": "Kode undangan tidak valid."
},
"validationStrings": {
"length": {

View File

@ -1,60 +0,0 @@
{
"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} 個特殊字元"
}
}
}

View File

@ -1,16 +1,5 @@
{
"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."
}
}

View File

@ -1,16 +0,0 @@
{
"meta": {
"name": "繁體中文 (TW)"
},
"strings": {
"passwordReset": "重設密碼",
"reset": "重設",
"resetFailed": "重設密碼失敗",
"tryAgain": "請重試。",
"youCanLogin": "您現在可以使用下方的代碼作為您的密碼登錄。",
"youCanLoginOmbi": "您現在可以使用下方的代碼作為您的密碼登錄 Jellyfin和Ombi。",
"youCanLoginPassword": "您現在可以使用新密碼登錄。 請按下方按鈕跳轉至 Jellyfin。",
"changeYourPassword": "請務必在登錄后更改密碼。",
"enterYourPassword": "在下方輸入您的新密碼。"
}
}

View File

@ -1,150 +1,5 @@
{
"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'."
}
}

View File

@ -1,150 +0,0 @@
{
"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": ""
}
}

View File

@ -1,150 +0,0 @@
{
"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": "顯示在電子郵件的底部。"
}
}

View File

@ -43,7 +43,7 @@
"general": {
"title": "常规",
"listenAddress": "监听端口",
"urlBase": "URL地址",
"urlBase": "URL Base",
"urlBaseNotice": "仅在子域上使用反向代理时才需要例如“jellyf.in/accounts”。",
"lightTheme": "明亮",
"darkTheme": "暗黑",
@ -66,9 +66,7 @@
"authorizeWithJellyfin": "从Jellyfin/Emby 授权:登录信息与 Jellyfin 同步,允许使用多个用户。",
"authorizeManual": "用户名和密码:手动设置用户名和密码。",
"adminOnly": "仅允许管理员账户(推荐)",
"emailNotice": "您的电子邮件地址可以用来接收通知。",
"allowAllDescription": "不建议,您应该允许单个用户在设置后登录。",
"allowAll": "允许所有Jellyfin用户登录"
"emailNotice": "您的电子邮件地址可以用来接收通知。"
},
"jellyfinEmby": {
"title": "Jellyfin/Emby",
@ -101,7 +99,7 @@
"dateFormat": "日期格式",
"dateFormatNotice": "日期遵循 strftime 格式。如需更多信息,请访问 {n}。",
"encryption": "加密",
"mailgunApiURL": "API地址"
"mailgunApiURL": "API URL"
},
"notifications": {
"title": "管理员通知",

View File

@ -1,16 +1,5 @@
{
"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}."
}
}

View File

@ -1,16 +0,0 @@
{
"meta": {
"name": "繁體中文 (TW)"
},
"strings": {
"startMessage": "您好!\n請在這裡輸入 Jellyfin 的 PIN 碼來驗證您的帳戶。",
"discordStartMessage": "您好!\n請輸入 “/PINPIN 碼>” 來驗證您的帳戶。",
"matrixStartMessage": "您好\n在 Jellyfin 註冊頁面中輸入以下 PIN 碼以驗證您的帳戶。",
"invalidPIN": "該 PIN 碼無效,請重試。",
"pinSuccess": "成功! 您現在可以返回註冊頁面。",
"languageMessage": "提示:使用 {command} 查看可用語言,並使用 {command} <language code> 來設置語言。",
"languageMessageDiscord": "提示:使用 “/lang <語言>” 設置語言。",
"languageSet": "語言設置為Language。",
"discordDMs": "請檢查您的私人通信以獲取回復。"
}
}

6
log.go
View File

@ -27,11 +27,7 @@ func logOutput() (closeFunc func(), err error) {
closeFunc = func() {}
return
}
if PLATFORM == "windows" {
writers = []io.Writer{colorStripper{lineCache}, colorStripper{f}}
} else {
writers = append(writers, colorStripper{f})
}
writers = append(writers, colorStripper{f})
closeFunc = func() {
w.Close()
<-wExit

View File

@ -1,4 +1,3 @@
//go:build tray
// +build tray
package main
@ -10,6 +9,7 @@ import (
"syscall"
"github.com/getlantern/systray"
"github.com/skratchdot/open-golang/open"
)
var TRAY = true
@ -101,8 +101,7 @@ func onReady() {
case <-mRestart.ClickedCh:
trayRestart()
case <-mOpenLogs.ClickedCh:
log.Printf("Opening %s\n", logPath)
OpenFile(logPath)
open.Start(logPath)
case <-mQuit.ClickedCh:
systray.Quit()
}

View File

@ -10,8 +10,7 @@ interface formWindow extends Window {
telegramModal: Modal;
discordModal: Modal;
matrixModal: Modal;
confirmationModal: Modal;
redirectToJellyfin: boolean;
confirmationModal: Modal
code: string;
messages: { [key: string]: string };
confirmation: boolean;
@ -413,12 +412,7 @@ const create = (event: SubmitEvent) => {
if (!vals[type]) { valid = false; }
}
if (req.status == 200 && valid) {
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();
}
window.successModal.show();
} else {
submitSpan.classList.add("~critical");
submitSpan.classList.remove("~urge");

View File

@ -1334,7 +1334,9 @@ export class accountsList {
const list = this._collectUsers();
let applyList: string[] = [];
for (let id of list) {
applyList.push(id);
if (this._users[id].expiry || enableUser) {
applyList.push(id);
}
}
this._enableExpiryReason.classList.add("unfocused");
let header: string;

View File

@ -170,7 +170,6 @@ 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
@ -438,18 +437,13 @@ func (app *appContext) InviteProxy(gc *gin.Context) {
fail()
return
}
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,
})
}
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(),
})
inv, ok := app.storage.invites[code]
if ok {
l := len(inv.Keys)
@ -467,36 +461,35 @@ 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(),
"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),
"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),
}
if telegram {
data["telegramPIN"] = app.telegram.NewAuthToken()