Implement switching language (but doesn't persist)
This commit is contained in:
@@ -19,7 +19,7 @@ func RegisterAnonMasterConroller(router *gin.RouterGroup) {
|
||||
"distanceUnits": db.DistanceUnitDetails,
|
||||
"roles": db.RoleDetails,
|
||||
"currencies": models.GetCurrencyMasterList(),
|
||||
"languages": models.GetLanguageMastersList(),
|
||||
"languages": models.GetLanguageMastersList(),
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -53,7 +53,7 @@ func udpateSettings(c *gin.Context) {
|
||||
func udpateMySettings(c *gin.Context) {
|
||||
var model models.UpdateSettingModel
|
||||
if err := c.ShouldBind(&model); err == nil {
|
||||
err := service.UpdateUserSettings(c.MustGet("userId").(string), model.Currency, *model.DistanceUnit, model.DateFormat)
|
||||
err := service.UpdateUserSettings(c.MustGet("userId").(string), model.Currency, *model.DistanceUnit, model.DateFormat, model.Language)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusUnprocessableEntity, common.NewError("udpateMySettings", err))
|
||||
return
|
||||
|
||||
@@ -29,7 +29,7 @@ var migrations = []localMigration{
|
||||
},
|
||||
{
|
||||
Name: "2023_02_26_13_42_AddLanguage",
|
||||
Query: "ALTER TABLE users ADD COLUMN language text default 'English 🇬🇧'",
|
||||
Query: "ALTER TABLE users ADD COLUMN language text default 'en'",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ type LanguageModel struct {
|
||||
Emoji string `json:"emoji"`
|
||||
Name string `json:"name"`
|
||||
NameNative string `json:"nameNative"`
|
||||
Shorthand string `json:"shorthand"`
|
||||
}
|
||||
|
||||
func GetLanguageMastersList() []LanguageModel {
|
||||
@@ -12,10 +13,12 @@ func GetLanguageMastersList() []LanguageModel {
|
||||
Emoji: "🇬🇧",
|
||||
Name: "English",
|
||||
NameNative: "English",
|
||||
Shorthand: "en",
|
||||
}, {
|
||||
Emoji: "🇩🇪",
|
||||
Name: "German",
|
||||
NameNative: "Deutsch",
|
||||
Shorthand: "de",
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ type UpdateSettingModel struct {
|
||||
Currency string `json:"currency" form:"currency" query:"currency"`
|
||||
DateFormat string `json:"dateFormat" form:"dateFormat" query:"dateFormat"`
|
||||
DistanceUnit *db.DistanceUnit `json:"distanceUnit" form:"distanceUnit" query:"distanceUnit" `
|
||||
Language string `json:"language" form:"language" query:"language"`
|
||||
}
|
||||
|
||||
type ClarksonMigrationModel struct {
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"hammond/db"
|
||||
"hammond/models"
|
||||
)
|
||||
|
||||
func CanInitializeSystem() (bool, error) {
|
||||
@@ -14,15 +16,30 @@ func UpdateSettings(currency string, distanceUnit db.DistanceUnit) error {
|
||||
setting.DistanceUnit = distanceUnit
|
||||
return db.UpdateSettings(setting)
|
||||
}
|
||||
func UpdateUserSettings(userId, currency string, distanceUnit db.DistanceUnit, dateFormat string) error {
|
||||
func UpdateUserSettings(userId, currency string, distanceUnit db.DistanceUnit, dateFormat string, language string) error {
|
||||
user, err := db.GetUserById(userId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// TODO: Pull into function
|
||||
languageExists := false
|
||||
languages := models.GetLanguageMastersList();
|
||||
for _, lang := range languages {
|
||||
if (language == lang.Shorthand){
|
||||
languageExists = true
|
||||
}
|
||||
}
|
||||
|
||||
if (!languageExists) {
|
||||
return errors.New("Language not in masters list")
|
||||
}
|
||||
|
||||
|
||||
user.Currency = currency
|
||||
user.DistanceUnit = distanceUnit
|
||||
user.DateFormat = dateFormat
|
||||
user.Language = language
|
||||
return db.UpdateUser(user)
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ export default {
|
||||
dateFormat: this.me.dateFormat,
|
||||
},
|
||||
tryingToSave: false,
|
||||
selectedLanguage: "",
|
||||
changePassModel: {
|
||||
old: '',
|
||||
new: '',
|
||||
@@ -59,15 +60,9 @@ export default {
|
||||
)
|
||||
})
|
||||
},
|
||||
filteredLanguageMasters() {
|
||||
return this.languageMasters.filter((option) => {
|
||||
return (
|
||||
option.nameNative
|
||||
.toString()
|
||||
.toLowerCase()
|
||||
.indexOf(this.settingsModel.language.toLowerCase()) >= 0)
|
||||
})
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.selectedLanguage = this.formatLanguage(this.languageMasters.filter(x => x.shorthand === this.me.language)[0])
|
||||
},
|
||||
methods: {
|
||||
changePassword() {
|
||||
@@ -120,6 +115,7 @@ export default {
|
||||
type: 'is-success',
|
||||
duration: 3000,
|
||||
})
|
||||
this.$i18n.locale = this.settingsModel.language
|
||||
})
|
||||
.catch((ex) => {
|
||||
this.$buefy.toast.open({
|
||||
@@ -151,13 +147,14 @@ export default {
|
||||
<form class="box " @submit.prevent="saveSettings">
|
||||
<b-field :label="$t('language')">
|
||||
<b-autocomplete
|
||||
v-model="settingsModel.language"
|
||||
:custom-formatter="formatLanguage"
|
||||
:data="filteredLanguageMasters"
|
||||
v-model="selectedLanguage"
|
||||
:placeholder="$t('language')"
|
||||
:keep-first="true"
|
||||
:custom-formatter="formatLanguage"
|
||||
:data="languageMasters"
|
||||
:open-on-focus="true"
|
||||
required
|
||||
@select="(option) => (settingsModel.language = option.shorthand)"
|
||||
/>
|
||||
</b-field>
|
||||
<b-field :label="$t('currency')">
|
||||
|
||||
Reference in New Issue
Block a user