]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Fix it so languageCode on top level config still works
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 28 May 2023 16:42:10 +0000 (18:42 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 28 May 2023 16:42:10 +0000 (18:42 +0200)
This is common for monolingual sites, and we broke this in Hugo 0.112.4.

Fixes #11037

config/allconfig/alldecoders.go
hugolib/config_test.go

index c6faf571d34d73569597fc1f9a1b64a088fe2bb1..c8944bd2d1fd083e5b6ee044b232650e6b3a8f6e 100644 (file)
@@ -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": {
index f742eb862f1db070dfc8582330795f5353b06968..a8e3b8f2caa7900311fcdb2877abf0282e240ec6 100644 (file)
@@ -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|")
+
+}