Перевод шаблонов URL-адресов
Джанго поддерживает перевод строк в шаблонах URL-адресов. Для каждого языка можно использовать свой перевод для одного шаблона URL-адреса. Можно пометить шаблоны URL для перевода так же, как и литералы, используя функцию ugettext_lazy().
Отредактируйте основной файл urls.py проекта myshop и добавьте строки перевода в регулярные выражения шаблонов URL-адресов для приложений cart, orders, payment, и coupons, как показано ниже:
from django.utils.translation import gettext_lazy as _
urlpatterns = i18n_patterns(
url(r'^admin/', include(admin.site.urls)),
url(_(r'^cart/'), include('cart.urls', namespace='cart')),
url(_(r'^orders/'), include('orders.urls', namespace='orders')),
url(_(r'^payment/'), include('payment.urls', namespace='payment')),
url(r'^paypal/', include('paypal.standard.ipn.urls')),
url(_(r'^coupons/'), include('coupons.urls', namespace='coupons')),
url(r'^rosetta/', include('rosetta.urls')),
url(r'^', include('shop.urls', namespace='shop')),
)
Отредактируйте файл urls.py приложения orders и пометьте шаблоны URL-адресов для перевода:
from django.conf.urls import url
from .import views
from django.utils.translation import gettext_lazy as _
urlpatterns = [
url(_(r'^create/$'), views.order_create, name='order_create'),
# ...
]
Измените urls.py - файл приложения payment:
from django.conf.urls import url
from . import views
from django.utils.translation import gettext_lazy as _
urlpatterns = [
url(_(r'^process/$'), views.payment_process, name='process'),
url(_(r'^done/$'), views.payment_done, name='done'),
url(_(r'^canceled/$'), views.payment_canceled, name='canceled'),
]
Нам не нужно переводить шаблоны URL-адресов приложения - shop, поскольку они построены с помощью переменных и не содержат каких-либо других литералов.
Откройте терминал и выполните следующую команду, чтобы обновить файлы сообщений с помощью новых переводов:
django-admin makemessages --all
Убедитесь, что сервер разработки запущен. Откройте в вашем браузере http://127.0.0.1:8000/en/rosetta/ и перейдите по ссылке Myshop под секцией Spanish.
Вы можете использовать фильтр для просмотра только тех строк, которые еще не были переведены. Убедитесь в том, что в переводе URL-адреса хранятся специальные символы регулярных выражений. Перевод URL-адресов является деликатной задачей; При изменении регулярного выражения можно разорвать URL-адрес.