Cater for differences when loading embedded Assets and in dev mode

This commit is contained in:
Deluan 2020-05-02 12:33:37 -04:00 committed by Deluan Quintão
parent 056d5e7111
commit 496b467c1d

View File

@ -1,6 +1,7 @@
package app package app
import ( import (
"bytes"
"context" "context"
"encoding/json" "encoding/json"
"path/filepath" "path/filepath"
@ -81,6 +82,7 @@ func loadTranslations() (loadError error) {
loadError = err loadError = err
return return
} }
var languages []string
for _, f := range files { for _, f := range files {
t, err := loadTranslation(f.Name()) t, err := loadTranslation(f.Name())
if err != nil { if err != nil {
@ -88,26 +90,38 @@ func loadTranslations() (loadError error) {
continue continue
} }
translations[t.ID] = t translations[t.ID] = t
languages = append(languages, t.ID)
} }
log.Info("Loading translations", "languages", languages)
}) })
return return
} }
func loadTranslation(fileName string) (trans translation, err error) { func loadTranslation(fileName string) (translation translation, err error) {
id := strings.TrimSuffix(fileName, filepath.Ext(fileName)) // Get id and full path
filePath := filepath.Join(i18nFolder, fileName) name := filepath.Base(fileName)
id := strings.TrimSuffix(name, filepath.Ext(name))
filePath := filepath.Join(i18nFolder, name)
// Load translation from json file
data, err := resources.Asset(filePath) data, err := resources.Asset(filePath)
trans.Data = string(data)
if err != nil { if err != nil {
return return
} }
var out map[string]interface{} var out map[string]interface{}
err = json.Unmarshal(data, &out) if err = json.Unmarshal(data, &out); err != nil {
if err != nil {
return return
} }
trans.Name = out["languageName"].(string)
trans.ID = id // Compress JSON
buf := new(bytes.Buffer)
if err = json.Compact(buf, data); err != nil {
return
}
translation.Data = buf.String()
translation.Name = out["languageName"].(string)
translation.ID = id
return return
} }