mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Fixed #33662 -- Allowed Sitemap to customize languages for each item.
This commit is contained in:
@@ -92,6 +92,10 @@ class Sitemap:
|
||||
return attr(item)
|
||||
return attr
|
||||
|
||||
def get_languages_for_item(self, item):
|
||||
"""Languages for which this item is displayed."""
|
||||
return self._languages()
|
||||
|
||||
def _languages(self):
|
||||
if self.languages is not None:
|
||||
return self.languages
|
||||
@@ -103,8 +107,8 @@ class Sitemap:
|
||||
# This is necessary to paginate with all languages already considered.
|
||||
items = [
|
||||
(item, lang_code)
|
||||
for lang_code in self._languages()
|
||||
for item in self.items()
|
||||
for lang_code in self.get_languages_for_item(item)
|
||||
]
|
||||
return items
|
||||
return self.items()
|
||||
@@ -201,7 +205,8 @@ class Sitemap:
|
||||
}
|
||||
|
||||
if self.i18n and self.alternates:
|
||||
for lang_code in self._languages():
|
||||
item_languages = self.get_languages_for_item(item[0])
|
||||
for lang_code in item_languages:
|
||||
loc = f"{protocol}://{domain}{self._location(item, lang_code)}"
|
||||
url_info["alternates"].append(
|
||||
{
|
||||
@@ -209,7 +214,7 @@ class Sitemap:
|
||||
"lang_code": lang_code,
|
||||
}
|
||||
)
|
||||
if self.x_default:
|
||||
if self.x_default and settings.LANGUAGE_CODE in item_languages:
|
||||
lang_code = settings.LANGUAGE_CODE
|
||||
loc = f"{protocol}://{domain}{self._location(item, lang_code)}"
|
||||
loc = loc.replace(f"/{lang_code}/", "/", 1)
|
||||
|
||||
Reference in New Issue
Block a user