Перевод шаблонов 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-адрес.

results matching ""

    No results matching ""