@@ -79,7 +79,12 @@ def get_view_url(self):
7979 view_url_name = self .view_url_name
8080
8181 # Make sure the slug is replaced with a translated version of the current language.
82- kwargs = self .kwargs
82+ kwargs = self ._get_translated_kwargs (self .kwargs )
83+ return mixed_reverse (
84+ view_url_name , args = self .args , kwargs = kwargs , current_page = self .get_current_page ()
85+ )
86+
87+ def _get_translated_kwargs (self , kwargs ):
8388 if (
8489 hasattr (self , "object" )
8590 and isinstance (self .object , TranslatableModel )
@@ -88,10 +93,7 @@ def get_view_url(self):
8893 kwargs = kwargs .copy ()
8994 with switch_language (self .object , translation .get_language ()):
9095 kwargs [self .slug_url_kwarg ] = getattr (self .object , self .slug_field )
91-
92- return mixed_reverse (
93- view_url_name , args = self .args , kwargs = kwargs , current_page = self .get_current_page ()
94- )
96+ return kwargs
9597
9698
9799class BaseArchiveMixin (BaseBlogMixin ):
@@ -245,6 +247,16 @@ def get_category(self, slug):
245247 except ObjectDoesNotExist as e :
246248 raise Http404 (str (e ))
247249
250+ def _get_translated_kwargs (self , kwargs ):
251+ # ListView does not combine with SingleObjectMixin logic.
252+ # Hence, this variation needs custom handling for get_view_url()
253+ if isinstance (self .category , TranslatableModel ):
254+ kwargs = kwargs .copy ()
255+ with switch_language (self .category , translation .get_language ()):
256+ kwargs ['slug' ] = self .category .slug
257+
258+ return kwargs
259+
248260
249261class EntryAuthorArchive (BaseArchiveMixin , ArchiveIndexView ):
250262 """
0 commit comments