Last active
June 6, 2020 21:14
-
-
Save Peters8090/aab305d78f5a75591a10c7f028c5304a to your computer and use it in GitHub Desktop.
[Django 3.0.5] - i18n JSONCatalog with domain list and tuple support
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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