Thursday, January 10, 2019

Re: Django template translation not working as expected

Can you explain what are django translation

On Thu 10 Jan, 2019 11:59 pm Ashutosh Das <areose21@gmail.com wrote:

I am using django 2.1 , here is all the settings related to translation:


MIDDLEWARE
= [ 'corsheaders.middleware.CorsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'debug_toolbar.middleware.DebugToolbarMiddleware', ] LANGUAGE_CODE = 'en' LANGUAGES = ( ('en', _('English')), ('bn', _('Bengali')) ) LOCALE_PATH = ( os.path.join(BASE_DIR, 'locale') ) TIME_ZONE = 'Asia/Dhaka' USE_I18N = True USE_L10N = True USE_TZ = False

Template tag that I want to translate:


{% load i18n %}  <div class="widget widget-about">        <h4 class="widget-title">{% trans "About Us" %}</h4>  </div

I run both ./manage.py makemessages --all ./manage.py compilemessages commands , also added translation in .po file after makemessages command:


# locale/bn/LC_MESSAGES/django.po
#: templates/partials/footer.html:8 msgid "About Us" msgstr "আমাদের সম্পর্কে"

When I changed the language code from en to bn, template string still rendering the default english "About Us".

Here are all the codes that I am using for changing language:


<
div class="header-dropdown"> {% get_current_language as LANGUAGE_CODE %} {% if LANGUAGE_CODE == 'en' %} <a href="#"><img src="{% static 'image/flag/en.png' %}" alt="flag">ENGLISH</a> {% else %} <a href="#"><img src="{% static 'image/flag/bn.png' %}" alt="flag">বাংলা</a> {% endif %} <div class="header-menu"> <ul> <li><a href="{% url 'change_language' %}?lan=en"><img src="{% static 'image/flag/en.png' %}" alt="USA Flag">ENGLISH</a></li> <li><a href="{% url 'change_language' %}?lan=bn"><img src="{% static 'image/flag/bn.png' %}" alt="Bangladesh Flag">বাংলা</a></li> </ul> </div><!-- End .header-menu -->


views.py :


def change_lan(request):      allowed_lan = ('en', 'bn')      get_lan = request.GET.get('lan', 'en')      if get_lan in allowed_lan:          translation.activate(get_lan)          request.session[translation.LANGUAGE_SESSION_KEY] = get_lan          return redirect(request.META.get('HTTP_REFERER', '/'))      else:          return redirect(request.META.get('HTTP_REFERER', '/'))

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/3ed3c00a-148e-4817-a470-bada1af10ba3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAMsYeuG%3DB65MCOZAz-z3x40iB94jG4HmR2TY-8Ma3siycQ7EJg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment