diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-01-25 19:03:29 +0300 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-01-26 16:04:14 +0300 |
commit | 6413559f7575e2653d76227a8037a7edbaae82aa (patch) | |
tree | 4b2d2be2943e1f7c37d6aa09937bec4391c1e678 /hugolib/config.go | |
parent | 322c567220aa4123a5d707629c1bebd375599912 (diff) |
Add a way to disable one or more languages
This commit adds a new config setting:
```toml
disableLanguages = ["fr"]
```
If this is a multilingual site:
* No site for the French language will be created
* French content pages will be ignored/not read
* The French language configuration (menus etc.) will also be ignored
This makes it possible to start translating new languages and turn it on when you're happy etc.
Fixes #4297
Fixed #4329
Diffstat (limited to 'hugolib/config.go')
-rw-r--r-- | hugolib/config.go | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/hugolib/config.go b/hugolib/config.go index fe3a64f2a..c30e93f15 100644 --- a/hugolib/config.go +++ b/hugolib/config.go @@ -72,16 +72,46 @@ func LoadConfig(fs afero.Fs, relativeSourcePath, configFilename string) (*viper. } func loadLanguageSettings(cfg config.Provider, oldLangs helpers.Languages) error { - multilingual := cfg.GetStringMap("languages") + + defaultLang := cfg.GetString("defaultContentLanguage") + + var languages map[string]interface{} + + languagesFromConfig := cfg.GetStringMap("languages") + disableLanguages := cfg.GetStringSlice("disableLanguages") + + if len(disableLanguages) == 0 { + languages = languagesFromConfig + } else { + languages = make(map[string]interface{}) + for k, v := range languagesFromConfig { + isDisabled := false + for _, disabled := range disableLanguages { + if disabled == defaultLang { + return fmt.Errorf("cannot disable default language %q", defaultLang) + } + + if strings.EqualFold(k, disabled) { + isDisabled = true + break + } + } + if !isDisabled { + languages[k] = v + } + + } + } + var ( langs helpers.Languages err error ) - if len(multilingual) == 0 { + if len(languages) == 0 { langs = append(langs, helpers.NewDefaultLanguage(cfg)) } else { - langs, err = toSortedLanguages(cfg, multilingual) + langs, err = toSortedLanguages(cfg, languages) if err != nil { return fmt.Errorf("Failed to parse multilingual config: %s", err) } @@ -114,8 +144,6 @@ func loadLanguageSettings(cfg config.Provider, oldLangs helpers.Languages) error } } - defaultLang := cfg.GetString("defaultContentLanguage") - // The defaultContentLanguage is something the user has to decide, but it needs // to match a language in the language definition list. langExists := false |