0

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>
John
  • 949
  • 1
  • 9
  • 20

0 Answers0