mirror of
https://github.com/gohugoio/hugo.git
synced 2024-05-11 05:54:58 +00:00
42 lines
992 B
Go
42 lines
992 B
Go
![]() |
package commands
|
||
|
|
||
|
import (
|
||
|
"sort"
|
||
|
|
||
|
"github.com/spf13/cast"
|
||
|
"github.com/spf13/viper"
|
||
|
)
|
||
|
|
||
|
var langConfigs map[string]interface{}
|
||
|
var langConfigsList langConfigsSortable
|
||
|
|
||
|
func readMultilingualConfiguration() {
|
||
|
multilingual := viper.GetStringMap("Multilingual")
|
||
|
if len(multilingual) == 0 {
|
||
|
langConfigsList = append(langConfigsList, "")
|
||
|
return
|
||
|
}
|
||
|
|
||
|
langConfigs = make(map[string]interface{})
|
||
|
for lang, config := range multilingual {
|
||
|
langConfigs[lang] = config
|
||
|
langConfigsList = append(langConfigsList, lang)
|
||
|
}
|
||
|
sort.Sort(langConfigsList)
|
||
|
}
|
||
|
|
||
|
type langConfigsSortable []string
|
||
|
|
||
|
func (p langConfigsSortable) Len() int { return len(p) }
|
||
|
func (p langConfigsSortable) Less(i, j int) bool { return weightForLang(p[i]) < weightForLang(p[j]) }
|
||
|
func (p langConfigsSortable) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
|
||
|
|
||
|
func weightForLang(lang string) int {
|
||
|
conf := langConfigs[lang]
|
||
|
if conf == nil {
|
||
|
return 0
|
||
|
}
|
||
|
m := cast.ToStringMap(conf)
|
||
|
return cast.ToInt(m["weight"])
|
||
|
}
|