Fix it so languageCode on top level config still works - hugo - [fork] hugo port for 9front
HTML git clone git@git.drkhsh.at/hugo.git
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
DIR commit e3dfc76fa8665562798b1e89abc2aa0e9141b1fa
DIR parent cd59216de470874b3f9a71e72418bc381539fdd0
HTML Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date: Sun, 28 May 2023 18:42:10 +0200
Fix it so languageCode on top level config still works
This is common for monolingual sites, and we broke this in Hugo 0.112.4.
Fixes #11037
Diffstat:
M config/allconfig/alldecoders.go | 20 ++++++++++++++++++--
M hugolib/config_test.go | 22 ++++++++++++++++++++++
2 files changed, 40 insertions(+), 2 deletions(-)
---
DIR diff --git a/config/allconfig/alldecoders.go b/config/allconfig/alldecoders.go
@@ -241,8 +241,24 @@ var allDecoderSetups = map[string]decodeWeight{
key: "languages",
decode: func(d decodeWeight, p decodeConfig) error {
var err error
- p.c.Languages, err = langs.DecodeConfig(p.p.GetStringMap(d.key))
- return err
+ m := p.p.GetStringMap(d.key)
+ if len(m) == 1 {
+ // In v0.112.4 we moved this to the language config, but it's very commmon for mono language sites to have this at the top level.
+ var first maps.Params
+ for _, v := range m {
+ first = v.(maps.Params)
+ break
+ }
+ if _, found := first["languagecode"]; !found {
+ first["languagecode"] = p.p.GetString("languagecode")
+ }
+ }
+ p.c.Languages, err = langs.DecodeConfig(m)
+ if err != nil {
+ return err
+ }
+
+ return nil
},
},
"cascade": {
DIR diff --git a/hugolib/config_test.go b/hugolib/config_test.go
@@ -1044,3 +1044,25 @@ HTACCESS.
b.AssertFileContent("public/.htaccess", "HTACCESS")
}
+
+func TestConfigLanguageCodeTopLevel(t *testing.T) {
+ t.Parallel()
+
+ files := `
+-- hugo.toml --
+languageCode = "en-US"
+-- layouts/index.html --
+LanguageCode: {{ .Site.LanguageCode }}|{{ site.Language.LanguageCode }}|
+
+
+`
+ b := NewIntegrationTestBuilder(
+ IntegrationTestConfig{
+ T: t,
+ TxtarString: files,
+ },
+ ).Build()
+
+ b.AssertFileContent("public/index.html", "LanguageCode: en-US|en-US|")
+
+}