mirror of
https://github.com/astaxie/beego.git
synced 2024-12-23 00:00:50 +00:00
middleware: support i18n
This commit is contained in:
parent
0f170a80da
commit
62e9c89010
@ -10,85 +10,51 @@
|
||||
|
||||
package middleware
|
||||
|
||||
//import (
|
||||
// "github.com/astaxie/beego/config"
|
||||
// "os"
|
||||
// "path"
|
||||
//)
|
||||
import (
|
||||
"encoding/json"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
)
|
||||
|
||||
//type Translation struct {
|
||||
// filetype string
|
||||
// CurrentLocal string
|
||||
// Locales map[string]map[string]string
|
||||
//}
|
||||
type Translation struct {
|
||||
filepath string
|
||||
CurrentLocal string
|
||||
Locales map[string]map[string]string
|
||||
}
|
||||
|
||||
//func NewLocale(filetype string) *Translation {
|
||||
// return &Translation{
|
||||
// filetype: filetype,
|
||||
// CurrentLocal: "zh",
|
||||
// Locales: make(map[string]map[string]string),
|
||||
// }
|
||||
//}
|
||||
func NewLocale(filepath string, defaultlocal string) *Translation {
|
||||
i18n := make(map[string]map[string]string)
|
||||
file, err := os.Open(filepath)
|
||||
if err != nil {
|
||||
panic("open " + filepath + " err :" + err.Error())
|
||||
}
|
||||
data, err := ioutil.ReadAll(file)
|
||||
if err != nil {
|
||||
panic("read " + filepath + " err :" + err.Error())
|
||||
}
|
||||
err = json.Unmarshal(data, &i18n)
|
||||
if err != nil {
|
||||
panic("json.Unmarshal " + filepath + " err :" + err.Error())
|
||||
}
|
||||
return &Translation{
|
||||
filepath: filepath,
|
||||
CurrentLocal: defaultlocal,
|
||||
Locales: i18n,
|
||||
}
|
||||
}
|
||||
|
||||
//func (t *Translation) loadTranslations(dirPath string) error {
|
||||
// dir, err := os.Open(dirPath)
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// defer dir.Close()
|
||||
func (t *Translation) SetLocale(local string) {
|
||||
t.CurrentLocal = local
|
||||
}
|
||||
|
||||
// names, err := dir.Readdirnames(-1)
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
|
||||
// for _, name := range names {
|
||||
// fullPath := path.Join(dirPath, name)
|
||||
|
||||
// fi, err := os.Stat(fullPath)
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
|
||||
// if fi.IsDir() {
|
||||
// continue
|
||||
// } else {
|
||||
// if err := t.loadTranslation(fullPath, name); err != nil {
|
||||
// return err
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// return nil
|
||||
//}
|
||||
|
||||
//func (t *Translation) loadTranslation(fullPath, locale string) error {
|
||||
|
||||
// sourceKey2Trans, ok := t.Locales[locale]
|
||||
// if !ok {
|
||||
// sourceKey2Trans = make(map[string]string)
|
||||
|
||||
// t.Locales[locale] = sourceKey2Trans
|
||||
// }
|
||||
|
||||
// for _, m := range trf.Messages {
|
||||
// if m.Translation != "" {
|
||||
// sourceKey2Trans[sourceKey(m.Source, m.Context)] = m.Translation
|
||||
// }
|
||||
// }
|
||||
|
||||
// return nil
|
||||
//}
|
||||
|
||||
//func (t *Translation) SetLocale(local string) {
|
||||
// t.CurrentLocal = local
|
||||
//}
|
||||
|
||||
//func (t *Translation) Translate(key string) string {
|
||||
// if ct, ok := t.Locales[t.CurrentLocal]; ok {
|
||||
// if v, o := ct[key]; o {
|
||||
// return v
|
||||
// }
|
||||
// }
|
||||
// return key
|
||||
//}
|
||||
func (t *Translation) Translate(key string, local string) string {
|
||||
if local == "" {
|
||||
local = t.CurrentLocal
|
||||
}
|
||||
if ct, ok := t.Locales[key]; ok {
|
||||
if v, o := ct[local]; o {
|
||||
return v
|
||||
}
|
||||
}
|
||||
return key
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user