This is my django-project
below to translate from English to French. *I use Django 4.2.1:
django-project
|-core
| |-settings.py
| └-urls.py
|-my_app1
| |-views.py
| └-urls.py
|-my_app2
└-locale
└-fr
└-LC_MESSAGES
|-django.po
└-django.mo
And, this is core/settings.py
below:
# "core/settings.py"
MIDDLEWARE = [
...
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
...
]
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_TZ = True
from django.utils.translation import gettext_lazy as _
LANGUAGES = (
('en', _('English')),
('fr', _('French'))
)
And, gettext() is used to translate Test
to Examen
in my_app1/views.py
as shown below:
# "my_app1/views.py"
from django.shortcuts import render
from django.utils.translation import gettext as _
def test(request): # ↓ Here ↓
return HttpResponse(_("Test"))
And, hello/world/
path for test()
is set to urlpatterns
in my_app1/urls.py
as shown below:
# "my_app1/urls.py"
from django.urls import path
from . import views
app_name = "my_app1"
urlpatterns = [
# ↓ ↓ Here ↓ ↓
path("hello/world/", views.test, name="test")
]
And, my_app1/
path for my_app1
is set to urlpatterns
with i18n_patterns() as shown below:
# "core/urls.py"
from django.urls import path, include
from django.conf.urls.i18n import i18n_patterns
urlpatterns = i18n_patterns(
# ↓ Here ↓
path("my_app1/", include('my_app1.urls'))
)
And, "Anglais"
, "Français"
and "Examen"
are set for "English"
, "French"
and "Test"
respectively in locale/fr/LC_MESSAGES/django.po
as shown below:
# "locale/fr/LC_MESSAGES/django.po"
...
#: .\core\settings.py:140
msgid "English"
msgstr "Anglais" # Here
#: .\core\settings.py:141
msgid "French"
msgstr "Français" # Here
#: .\my_app1\views.py:5
msgid "Test"
msgstr "Examen" # Here
...
Then, I could translate from English to French as shown below:
http://localhost:8000/fr/my_app1/hello/world/
Now, how can I translate the English url above to the French url below?
http://localhost:8000/fr/mon_app1/bonjour/monde/