Add multilingual multihost support

This commit adds multihost support when more than one language is configured and `baseURL` is set per language.

Updates #4027
This commit is contained in:
Bjørn Erik Pedersen 2017-11-02 08:25:20 +01:00
parent 6233ddf9d1
commit 2e0465764b
14 changed files with 350 additions and 80 deletions

View file

@ -19,6 +19,7 @@ import (
"io"
"strings"
"github.com/gohugoio/hugo/config"
"github.com/gohugoio/hugo/helpers"
"github.com/spf13/afero"
"github.com/spf13/viper"
@ -80,11 +81,34 @@ func LoadConfig(fs afero.Fs, relativeSourcePath, configFilename string) (*viper.
helpers.Deprecated("site config", "disableRobotsTXT", "Use disableKinds= [\"robotsTXT\"]", false)
}
loadDefaultSettingsFor(v)
if err := loadDefaultSettingsFor(v); err != nil {
return v, err
}
return v, nil
}
func loadLanguageSettings(cfg config.Provider) error {
multilingual := cfg.GetStringMap("languages")
var (
langs helpers.Languages
err error
)
if len(multilingual) == 0 {
langs = append(langs, helpers.NewDefaultLanguage(cfg))
} else {
langs, err = toSortedLanguages(cfg, multilingual)
if err != nil {
return fmt.Errorf("Failed to parse multilingual config: %s", err)
}
}
cfg.Set("languagesSorted", langs)
return nil
}
func loadDefaultSettingsFor(v *viper.Viper) error {
c, err := helpers.NewContentSpec(v)
@ -154,5 +178,5 @@ func loadDefaultSettingsFor(v *viper.Viper) error {
v.SetDefault("debug", false)
v.SetDefault("disableFastRender", false)
return nil
return loadLanguageSettings(v)
}