Author: Adam <git@apiote.tk>
not panic when default language is not a symbolic link
front/html.go | 7 +++++-- i18n/i18n.go | 14 ++++++++++----
diff --git a/front/html.go b/front/html.go index ba3a5538dbd09c060afbd05140f8b5eebb5248a2..8ecadc229e582d56b28df4fc288246c8cb2a2857 100644 --- a/front/html.go +++ b/front/html.go @@ -59,10 +59,13 @@ user accounts.User } func render(languages []language.Tag, data RenderData, file string) string { - i18n.LoadServerLangs() + err := i18n.LoadServerLangs() + if err != nil { + // todo return http:500 + } language, err := i18n.Match(languages) if err != nil { - // todo show warning + // todo return http:500 } strings, err := i18n.LoadStrings(language) if err != nil { diff --git a/i18n/i18n.go b/i18n/i18n.go index 99e12f7f787c02ae60cf4ca82b0a035c0eb4a56f..9c0247a81bc6601743d1bae9f063924d4399dd35 100644 --- a/i18n/i18n.go +++ b/i18n/i18n.go @@ -43,17 +43,19 @@ } var serverLangs []language.Tag -func LoadServerLangs() { +func LoadServerLangs() error { var tags []string var defaultLocale string defaultLocaleIndex := -1 - filepath.Walk(config.DataHome+"/i18n", func(path string, info os.FileInfo, err error) error { + err := filepath.Walk(config.DataHome+"/i18n", func(path string, info os.FileInfo, err error) error { if !info.IsDir() { if filepath.Ext(path) == ".toml" { tag := strings.Replace(filepath.Base(path), ".toml", "", 1) if tag == "default" { - // todo if is a link - p, _ := os.Readlink(path) + p, err := os.Readlink(path) + if err != nil { + return err + } defaultLocale = strings.Replace(filepath.Base(p), ".toml", "", 1) } else { tags = append(tags, tag) @@ -62,6 +64,9 @@ } } return nil }) + if err != nil { + return err + } for i, tag := range tags { if tag == defaultLocale { @@ -73,6 +78,7 @@ for _, tag := range tags { serverLangs = append(serverLangs, language.Make(tag)) } + return nil } func Match(acceptLanguages []language.Tag) (language.Tag, error) {