我正在使用 Django 1.6 和 Python 3.4。我想在参数中翻译 url。例如:
/en/temperature/London/
到:
/fr/température/Londres/
但它不起作用。相反,我获得 /fr/temperature/London/ 。在 urls.py 中,“温度”是硬编码的,“伦敦”是参数的值city
。treshold
是可选的。这个不带参数的 url 被正确翻译:/en/terms/ 到 /fr/mentions-légales/在 django.po 中的
每次更改后,我运行 compilemessage 命令,我手动重新启动开发服务器并刷新浏览器缓存。怎么了?
urls.py:
from django.conf.urls.i18n import i18n_patterns
from django.utils.translation import ugettext_lazy as _
urlpatterns += i18n_patterns('foo.views',
url(_(r'^terms/$'), 'terms', name="terms"),
url(_(r'^temperature/%(city)s(?:/(%(treshold)s))?/$') %{'city': city, 'treshold': treshold}, 'temperature', name="temperature"),
)
django.po
#: /urls.py:X
#, python-format
msgid "^temperature/%(city)s(?:/(%(treshold)s))?/$"
msgstr "^température/%(city)s(?:/(%(treshold)s))?/$"
msgid "London"
msgstr "Londres"
msgid "^terms/$"
msgstr "^mentions-légales/$"
{% load i18n %}
<a href="{% url 'temperature' city="London" %}">Link name</a>