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

separate options for form and admin language

This commit is contained in:
Harvey Tindall 2021-01-12 23:37:22 +00:00
parent c9e7e34fbf
commit a4e44f5a8b
Signed by: hrfee
GPG Key ID: BBC65952848FB1A2
4 changed files with 54 additions and 20 deletions

38
api.go
View File

@ -1085,17 +1085,25 @@ func (app *appContext) GetConfig(gc *gin.Context) {
app.info.Println("Config requested") app.info.Println("Config requested")
resp := app.configBase resp := app.configBase
// Load language options // Load language options
langOptions := make([]string, len(app.storage.lang.Form)) loadLangs := func(langs *map[string]map[string]interface{}, settingsKey string) (string, []string) {
chosenLang := app.config.Section("ui").Key("language").MustString("en-us") langOptions := make([]string, len(*langs))
chosenLangName := app.storage.lang.Form[chosenLang]["meta"].(map[string]interface{})["name"].(string) chosenLang := app.config.Section("ui").Key("language-" + settingsKey).MustString("en-us")
chosenLangName := (*langs)[chosenLang]["meta"].(map[string]interface{})["name"].(string)
i := 0 i := 0
for _, lang := range app.storage.lang.Form { for _, lang := range *langs {
langOptions[i] = lang["meta"].(map[string]interface{})["name"].(string) langOptions[i] = lang["meta"].(map[string]interface{})["name"].(string)
i++ i++
} }
l := resp.Sections["ui"].Settings["language"] return chosenLangName, langOptions
l.Options = langOptions }
l.Value = chosenLangName formChosen, formOptions := loadLangs(&app.storage.lang.Form, "form")
fl := resp.Sections["ui"].Settings["language-form"]
fl.Options = formOptions
fl.Value = formChosen
adminChosen, adminOptions := loadLangs(&app.storage.lang.Admin, "admin")
al := resp.Sections["ui"].Settings["language-admin"]
al.Options = adminOptions
al.Value = adminChosen
for sectName, section := range resp.Sections { for sectName, section := range resp.Sections {
for settingName, setting := range section.Settings { for settingName, setting := range section.Settings {
val := app.config.Section(sectName).Key(settingName) val := app.config.Section(sectName).Key(settingName)
@ -1111,11 +1119,12 @@ func (app *appContext) GetConfig(gc *gin.Context) {
resp.Sections[sectName].Settings[settingName] = s resp.Sections[sectName].Settings[settingName] = s
} }
} }
resp.Sections["ui"].Settings["language"] = l resp.Sections["ui"].Settings["language-form"] = fl
resp.Sections["ui"].Settings["language-admin"] = al
t := resp.Sections["jellyfin"].Settings["type"] t := resp.Sections["jellyfin"].Settings["type"]
opts := make([]string, len(serverTypes)) opts := make([]string, len(serverTypes))
i = 0 i := 0
for _, v := range serverTypes { for _, v := range serverTypes {
opts[i] = v opts[i] = v
i++ i++
@ -1146,10 +1155,17 @@ func (app *appContext) ModifyConfig(gc *gin.Context) {
tempConfig.NewSection(section) tempConfig.NewSection(section)
} }
for setting, value := range settings.(map[string]interface{}) { for setting, value := range settings.(map[string]interface{}) {
if section == "ui" && setting == "language" { if section == "ui" && setting == "language-form" {
for key, lang := range app.storage.lang.Form { for key, lang := range app.storage.lang.Form {
if lang["meta"].(map[string]interface{})["name"].(string) == value.(string) { if lang["meta"].(map[string]interface{})["name"].(string) == value.(string) {
tempConfig.Section("ui").Key("language").SetValue(key) tempConfig.Section("ui").Key("language-form").SetValue(key)
break
}
}
} else if section == "ui" && setting == "language-admin" {
for key, lang := range app.storage.lang.Admin {
if lang["meta"].(map[string]interface{})["name"].(string) == value.(string) {
tempConfig.Section("ui").Key("language-admin").SetValue(key)
break break
} }
} }

View File

@ -84,8 +84,15 @@ func (app *appContext) loadConfig() error {
substituteStrings = app.config.Section("jellyfin").Key("substitute_jellyfin_strings").MustString("") substituteStrings = app.config.Section("jellyfin").Key("substitute_jellyfin_strings").MustString("")
app.storage.lang.chosenFormLang = app.config.Section("ui").Key("language").MustString("en-us") oldFormLang := app.config.Section("ui").Key("language").MustString("")
app.storage.lang.chosenFormLang = app.config.Section("ui").Key("language").MustString("en-us") if oldFormLang != "" {
app.storage.lang.chosenFormLang = oldFormLang
}
newFormLang := app.config.Section("ui").Key("language-form").MustString("")
if newFormLang != "" {
app.storage.lang.chosenFormLang = newFormLang
}
app.storage.lang.chosenAdminLang = app.config.Section("ui").Key("language-admin").MustString("en-us")
return nil return nil
} }

View File

@ -84,7 +84,7 @@
"description": "Settings related to the UI and program functionality." "description": "Settings related to the UI and program functionality."
}, },
"settings": { "settings": {
"language": { "language-form": {
"name": "Default Form Language", "name": "Default Form Language",
"required": false, "required": false,
"requires_restart": true, "requires_restart": true,
@ -93,7 +93,18 @@
"en-us" "en-us"
], ],
"value": "en-US", "value": "en-US",
"description": "Default UI Language. Currently only implemented for account creation form. Submit a PR on github if you'd like to translate." "description": "Default Account Form Language. Submit a PR on github if you'd like to translate."
},
"language-admin": {
"name": "Default Admin Language",
"required": false,
"requires_restart": true,
"type": "select",
"options": [
"en-us"
],
"value": "en-US",
"description": "Default Admin page Language. Settings has not been translated. Submit a PR on github if you'd like to translate."
}, },
"theme": { "theme": {
"name": "Default Look", "name": "Default Look",

View File

@ -15,9 +15,9 @@ func gcHTML(gc *gin.Context, code int, file string, templ gin.H) {
func (app *appContext) AdminPage(gc *gin.Context) { func (app *appContext) AdminPage(gc *gin.Context) {
lang := gc.Query("lang") lang := gc.Query("lang")
if lang == "" { if lang == "" {
lang = app.storage.lang.chosenFormLang lang = app.storage.lang.chosenAdminLang
} else if _, ok := app.storage.lang.Form[lang]; !ok { } else if _, ok := app.storage.lang.Form[lang]; !ok {
lang = app.storage.lang.chosenFormLang lang = app.storage.lang.chosenAdminLang
} }
emailEnabled, _ := app.config.Section("invite_emails").Key("enabled").Bool() emailEnabled, _ := app.config.Section("invite_emails").Key("enabled").Bool()
notificationsEnabled, _ := app.config.Section("notifications").Key("enabled").Bool() notificationsEnabled, _ := app.config.Section("notifications").Key("enabled").Bool()