这是我的django-project
下面从英语翻译成法语。* 我使用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
下面是core/settings.py
:
# "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'))
)
并且,gettext()用于将Test
转换为my_app1/views.py
中的Examen
,如下所示:
# "my_app1/views.py"
from django.shortcuts import render
from django.utils.translation import gettext as _
def test(request): # ↓ Here ↓
return HttpResponse(_("Test"))
并且,test()
的hello/world/
路径设置为my_app1/urls.py
中的urlpatterns
,如下所示:
# "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")
]
并且,my_app1
的my_app1/
路径设置为urlpatterns
,i18n_patterns()如下所示:
# "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'))
)
并且,locale/fr/LC_MESSAGES/django.po
中的"English"
、"French"
和"Test"
分别设置为"Anglais"
、"Français"
和"Examen"
,如下所示:
# "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
...
然后,我可以从英语翻译成法语,如下所示:
http://localhost:8000/fr/my_app1/hello/world/
现在,我如何将上面的英语网址翻译成下面的法文网址?
http://localhost:8000/fr/mon_app1/bonjour/monde/
1条答案
按热度按时间wz8daaqr1#
您应该使用gettext_lazy()并将
"hello/world/"
替换为_("hello/world/")
,如下所示。* 对于路径,gettext_lazy()
可以工作,但gettext()不起作用,你可以看到我的答案解释了如何在Django中翻译:然后,使用
gettext_lazy()
并将"my_app1/"
替换为_("my_app1/")
,如下所示:然后,运行下面的命令:
然后,分别为
"my_app1/"
和"hello/world/"
添加"mon_app1/"
和"bonjour/monde/"
,如下所示:然后,运行下面的命令:
现在,您可以将英语url翻译为法文url,如下所示:
另外,我不知道如何在Django Admin中翻译URL,所以我问了the question。