Using Django 4.0.6, I have sitemaps working fine for a single default language - English. After adding i18n, the sitemap isn't showing the URLs for other languages, but instead repeats the English URL, whilst labeling it as a URL for the other language.
I've read the documentation but can't see my mistake.
urls.py
from django.conf.urls.i18n import i18n_patterns
from config.sitemaps import sitemaps
from django.contrib.sitemaps.views import sitemap
sitemap_name = "django.contrib.sitemaps.views.sitemap"
urlpatterns: URLList = [
path("i18n/", include("django.conf.urls.i18n")),
path("sitemap.xml", sitemap, {"sitemaps": sitemaps}, name=sitemap_name),
path("sitemap-blog.xml", wagtail_sitemap),
]
urlpatterns += i18n_patterns(
path("", include("lettergun.apps.base.urls", namespace="base")),
path("", include("lettergun.apps.writing.urls", namespace="writing")),
...
)
sitemaps.py
from datetime import datetime
from django.contrib.sitemaps import Sitemap
from django.urls import reverse_lazy
class LettergunSitemap(Sitemap):
i18n = True
languages = ["en", "nl"]
alternates = True
x_default = True
changefreq = "daily"
priority = 0.5
lastmod = datetime.strptime(LAST_MOD, "%Y-%m-%d")
class Home(LettergunSitemap):
location = reverse_lazy("base:home")
def items(self):
return ["item"]
class Contact(LettergunSitemap):
location = reverse_lazy("base:contact")
def items(self):
return ["item"]
class DemoRequest(LettergunSitemap):
location = reverse_lazy("base:demo")
def items(self):
return ["item"]
...
long sitemap extract:
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>http://lettergun.com/en/</loc>
<lastmod>2022-07-04</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
<xhtml:link rel="alternate" hreflang="en" href="http://lettergun.com/en/" />
<xhtml:link rel="alternate" hreflang="nl" href="http://lettergun.com/en/" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://lettergun.com/" />
</url>
<url>
<loc>http://lettergun.com/en/</loc>
<lastmod>2022-07-04</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
<xhtml:link rel="alternate" hreflang="en" href="http://lettergun.com/en/" />
<xhtml:link rel="alternate" hreflang="nl" href="http://lettergun.com/en/" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://lettergun.com/" />
</url>
<url>
<loc>http://lettergun.com/en/say-hello</loc>
<lastmod>2022-07-04</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
<xhtml:link rel="alternate" hreflang="en" href="http://lettergun.com/en/say-hello" />
<xhtml:link rel="alternate" hreflang="nl" href="http://lettergun.com/en/say-hello" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://lettergun.com/say-hello" />
</url>
<url>
<loc>http://lettergun.com/en/say-hello</loc>
<lastmod>2022-07-04</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
<xhtml:link rel="alternate" hreflang="en" href="http://lettergun.com/en/say-hello" />
<xhtml:link rel="alternate" hreflang="nl" href="http://lettergun.com/en/say-hello" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://lettergun.com/say-hello" />
</url>
<url>
<loc>http://lettergun.com/en/</loc>
<lastmod>2022-07-04</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
<xhtml:link rel="alternate" hreflang="en" href="http://lettergun.com/en/" />
<xhtml:link rel="alternate" hreflang="nl" href="http://lettergun.com/en/" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://lettergun.com/" />
</url>
<url>
<loc>http://lettergun.com/en/</loc>
<lastmod>2022-07-04</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
<xhtml:link rel="alternate" hreflang="en" href="http://lettergun.com/en/" />
<xhtml:link rel="alternate" hreflang="nl" href="http://lettergun.com/en/" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://lettergun.com/" />
</url>
<url>
<loc>http://lettergun.com/en/demo</loc>
<lastmod>2022-07-04</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
<xhtml:link rel="alternate" hreflang="en" href="http://lettergun.com/en/demo" />
<xhtml:link rel="alternate" hreflang="nl" href="http://lettergun.com/en/demo" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://lettergun.com/demo" />
</url>
<url>
<loc>http://lettergun.com/en/demo</loc>
<lastmod>2022-07-04</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
<xhtml:link rel="alternate" hreflang="en" href="http://lettergun.com/en/demo" />
<xhtml:link rel="alternate" hreflang="nl" href="http://lettergun.com/en/demo" />
<xhtml:link rel="alternate" hreflang="x-default" href="http://lettergun.com/demo" />
</url>