summaryrefslogtreecommitdiffstats
path: root/hugolib/config.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-01-25 17:03:29 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-01-26 14:04:14 +0100
commit6413559f7575e2653d76227a8037a7edbaae82aa (patch)
tree4b2d2be2943e1f7c37d6aa09937bec4391c1e678 /hugolib/config.go
parent322c567220aa4123a5d707629c1bebd375599912 (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.go38
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