Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

348
Views
Django: translation in templates not working

Django 1.11

I can't make Django translate templates in my project. Messages were compiled and recompiled.

Could you give me a kick here?

settings.py

INSTALLED_APPS = [
...
    'frame',
...
]

LANGUAGE_CODE = 'ru-RU'
USE_I18N = True

frame/templates/frame/frame_form.html

{% extends 'general/cbv/general_form.html' %}
{% load i18n %}

{% block title %}
    <h1>{% trans "Create frame" %}</h1>
{% endblock %}

frame/locale/ru_RU/LC_MESSAGES/django.po

#: templates/frame/frame_form.html:5
msgid "Create frame"
msgstr "Создать сюжет"

tree

├── frame
...
│   ├── locale
│   │   └── ru_RU
│   │       └── LC_MESSAGES
│   │           ├── django.mo
│   │           └── django.po
...
│   ├── templates
│   │   └── frame
│   │       ├── frame_form.html
about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Check for the following:

Settings.py

In your settings.py

1) Make sure Middleware classes is in the following order

MIDDLEWARE_CLASSES = [
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',

]

2) Set your language code default:

LANGUAGE_CODE = 'en-us'

USE_I18N = True

3) Put the language you want to translate to a list can be found here

from django.utils.translation import gettext_lazy as _

#Example for English and German
LANGUAGES =[ ('en', _('English')),
('de', _('German')),]

4) Set your Locale path folder (This is where your language translations will appear)

LOCALE_PATHS = (
    os.path.join(SITE_ROOT, 'locale'),
)

URL.py

Check you have this link in the main URL conf file url.py

urlpatterns = [
    path('', include('YOUR APP.urls')),
    path('admin/', admin.site.urls),
    path('i18n/', include('django.conf.urls.i18n')),  #Make sure this is present
]

HTML template

After you have this checked and your HTML template done with the {% load i18n %} before any of the {% trans "FOO" %} on your html page and some way to change the languages. You might also want something like this dropdown: Django change language in html to debug language changes

Creating and modifying .po files

1) Create django.po files in the locale directory that you specify in the settings.py (LOCALE_PATHS) using the following command in the command line to create the .po files for example english would be:

   python manage.py makemessages -l en   #en = english replace en for other languages

This creates a directory with YOUR_LANGUAGE/LC_MESSAGES/django.po

Note that some languages will not show up unless it is capitalized for some reason such as simplified chinese zh-Hans instead of zh-hans not really sure why.

2) Go into the django.po of the language you want to change and change the msgstr ""

msgid "Create frame"
msgstr "Создать сюжет" #This area had translated string added

3) Compile the messages and restart the server in the commandline

# Compile messages 
django-admin compilemessages #this creates a django.mo file in LC_MESSAGES folder

#Run server
python manage.py runserver

The text should change when you switch languages using the dropdown menu or whatever way you chose.

4) If you add new translation tags you have to remake the messages and recompile them in the commandline and then runserver

#Make messages for all your languages
django-admin makemessages -a

# Compile messages
django-admin compilemessages
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!