Skip to content

Instantly share code, notes, and snippets.

@Peters8090
Last active June 6, 2020 21:14
Show Gist options
  • Save Peters8090/aab305d78f5a75591a10c7f028c5304a to your computer and use it in GitHub Desktop.
Save Peters8090/aab305d78f5a75591a10c7f028c5304a to your computer and use it in GitHub Desktop.
[Django 3.0.5] - i18n JSONCatalog with domain list and tuple support
# Example of use in urls.py:
# from django.urls import path
# from .views import
# from .views import JSONCatalogWithDomainListTupleSupport
# urlpatterns = [
# path('i18n/', views.JSONCatalogWithDomainListTupleSupport.as_view(domain=['django', 'djangojs'])),
# ]
from django.utils.translation import get_language
from django.utils.translation.trans_real import DjangoTranslation
from django.views.i18n import JSONCatalog
class JSONCatalogWithDomainListTupleSupport(JSONCatalog):
def get(self, request, *args, **kwargs):
locale = get_language()
domain = kwargs.get('domain', self.domain)
packages = kwargs.get('packages', '')
packages = packages.split('+') if packages else self.packages
paths = self.get_paths(packages) if packages else None
if isinstance(domain, list) or isinstance(domain, tuple):
if len(domain) > 0:
for i, domainn in enumerate(domain):
if i == 0:
self.translation = DjangoTranslation(locale, domain=domainn, localedirs=paths)
else:
self.translation.merge(DjangoTranslation(locale, domain=domainn, localedirs=paths))
else:
domain = 'djangojs'
if isinstance(domain, str):
self.translation = DjangoTranslation(locale, domain=domain, localedirs=paths)
context = self.get_context_data(**kwargs)
return self.render_to_response(context)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment