Repository: gohugoio/hugo (language: go)

Issue:
Multilang sitemap includes empty rel=alternate link if disableKinds=taxonomy is used by one language
<!-- Please answer these questions before submitting your issue. Thanks! -->

### What version of Hugo are you using (`hugo version`)?

<pre>
hugo v0.88.1+extended darwin/amd64
</pre>

### Does this issue reproduce with the latest release?
Yes

### Issue description
Our website is using Hugo with multi language setup with different `baseURL` for each language. One language (let's say English) has a blog with standard taxonomies (categories, tags) set up, but another language (let's say French) does not show the blog (because we don't have it translated) at all and under `[languages.fr]` has `disableKinds = ["taxonomy"]`. 
This works as expected in most areas, except the sitemap for English contains entries like this:
```
<url>
        <loc>https://example.com/tags/</loc>
        <lastmod>2017-04-03T10:00:07+00:00</lastmod>
        <xhtml:link rel="alternate" hreflang="fr" href=""/>
        <xhtml:link rel="alternate" hreflang="en" href="https://example.com/tags/"/>
    </url>
```
with empty link for French for both categories and tags taxonomy pages.  Sitemap for French is fine - does not contain any reference to taxonomies at all.
All other links in the sitemaps are fine, taxonomy term pages do not have the empty link either.


Discussion / hints:
This issue has been automatically marked as stale because it has not had recent activity. The resources of the Hugo team are limited, and so we are asking for your help.
If this is a **bug** and you can still reproduce this error on the <code>master</code> branch, please reply with all of the information you have about it in order to keep the issue open.
If this is a **feature request**, and you feel that it is still relevant and valuable, please tell us why.
This issue will automatically be closed in the near future if no further activity occurs. Thank you for all your contributions.

Fix patch:
diff --git a/hugolib/translations.go b/hugolib/translations.go
index 76beafba9f9..5fcbc921840 100644
--- a/hugolib/translations.go
+++ b/hugolib/translations.go
@@ -21,7 +21,7 @@ func pagesToTranslationsMap(sites []*Site) map[string]page.Pages {
 	out := make(map[string]page.Pages)
 
 	for _, s := range sites {
-		s.pageMap.pageTrees.Walk(func(ss string, n *contentNode) bool {
+		s.pageMap.pageTrees.WalkLinkable(func(ss string, n *contentNode) bool {
 			p := n.p
 			// TranslationKey is implemented for all page types.
 			base := p.TranslationKey()


Test patch:
diff --git a/hugolib/integration_test.go b/hugolib/integration_test.go
new file mode 100644
index 00000000000..417fe212993
--- /dev/null
+++ b/hugolib/integration_test.go
@@ -0,0 +1,89 @@
+// Copyright 2022 The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package hugolib_test
+
+import (
+	"testing"
+
+	"github.com/gohugoio/hugo/hugolib"
+)
+
+// Issue 9073
+func TestPageTranslationsMap(t *testing.T) {
+	t.Parallel()
+
+	files := `
+-- config.toml --
+baseURL = 'https://example.org/'
+title = 'Issue-9073'
+defaultContentLanguageInSubdir = true
+
+[taxonomies]
+tag = 'tags'
+
+[languages.en]
+contentDir = 'content/en'
+weight = 1
+disableKinds = ['RSS','sitemap']
+
+[languages.de]
+contentDir = 'content/de'
+weight = 2
+disableKinds = ['home', 'page', 'section', 'taxonomy', 'term','RSS','sitemap']
+-- content/de/posts/p1.md --
+---
+title: P1
+tags: ['T1']
+---
+-- content/en/posts/p1.md --
+---
+title: P1
+tags: ['T1']
+---
+-- layouts/_default/single.html --
+<ul>{{ range .AllTranslations }}<li>{{ .Title }}-{{ .Lang }}</li>{{ end }}</ul>
+-- layouts/_default/list.html --
+<ul>{{ range .AllTranslations }}<li>{{ .Title }}-{{ .Lang }}</li>{{ end }}</ul>
+	`
+
+	b := hugolib.NewIntegrationTestBuilder(
+		hugolib.IntegrationTestConfig{
+			T:           t,
+			TxtarString: files,
+		},
+	)
+	b.Build()
+
+	// Kind home
+	b.AssertFileContent("public/en/index.html",
+		"<ul><li>Issue-9073-en</li></ul>",
+	)
+	// Kind section
+	b.AssertFileContent("public/en/posts/index.html",
+		"<ul><li>Posts-en</li></ul>",
+	)
+	// Kind page
+	b.AssertFileContent("public/en/posts/p1/index.html",
+		"<ul><li>P1-en</li></ul>",
+	)
+	// Kind taxonomy
+	b.AssertFileContent("public/en/tags/index.html",
+		"<ul><li>Tags-en</li></ul>",
+	)
+	// Kind term
+	b.AssertFileContent("public/en/tags/t1/index.html",
+		"<ul><li>T1-en</li></ul>",
+	)
+
+}