django-localeurl и статические ссылки

#django #internationalization #translation #locale

#django #интернационализация #перевод #язык

Вопрос:

У меня есть веб-сайт, на котором я установил django-localeurl, и каждая динамически созданная ссылка работает должным образом, но все статические ссылки — нет, например, если у меня есть href =»{ cat.get_absolute_url}» и я захожу на испанский (/ es /) или английский (/ en /) сайт, он перенаправляется, как и ожидалось, но с href =»/ museum /» он перенаправляется на код языка по умолчанию.

Вопрос в том, как мне перенаправить статические ссылки на английский или испанский сайт в зависимости от того, что смотрит пользователь?

Ответ №1:

get_absolute_url (и другие места, где у вас есть жестко запрограммированные ссылки) должны использовать декоратор @permalink или иным образом использовать утилиту django «reverse» (которая исправлена в localeurl)

Комментарии:

1. Все методы моделей get_absolute_url используют декоратор @permalink, проблема в том, что когда в шаблоне у меня есть ссылка, закодированная как /warranty /, и когда я нажимаю на нее, промежуточное программное обеспечение django-localeurl переводит меня на язык по умолчанию вместо того, который я использую. Закодированные ссылки в основном предназначены для flatpages, поэтому либо я не понимаю вашего решения, либо вы не понимаете мою проблему… Тем не менее, большое спасибо за ваш ответ, и если я не понимаю вашего решения, пожалуйста, уточните.

2. 1] сделайте все возможное, чтобы никогда жестко не кодировать URL-адреса в своих шаблонах. используйте {% url «warranty_page» %} или что угодно. У меня был разговор с carljm (текущим сопровождающим localeurl) именно об этой проблеме, и в основном он говорит, что он, по принципу localeurl, никогда не будет поддерживать этот вариант использования. Для localeurl это означает, что URL-адреса изначально не имеют состояния. Для меня, если ваши URL начинаются ТОЛЬКО с /[locale] / path/to/ place /, то /path / to / place / может перенаправлять с сохранением состояния. У меня есть большой способ обойти это, если вы хотите, дайте мне знать.

3. Сейчас я использую тег url, и он отлично с ним работает… но теперь проблема в многоязычном приложении.flatpages… Я не знаю, как получить URL-адрес multilingual.flatpages, используя тег url. Вот чего мне сейчас не хватает… Спасибо

4. packages.python.org/django-localeurl/usage.html#examples Вы можете использовать это и вместо передачи строки передать запрос. LANGUAGE_CODE или аналогичный

5. Спасибо за совет… Мне удается заставить это работать следующим образом href=»/{{DEFAULT_LANGUAGE_CODE}}/quality /» где quality — это жестко запрограммированная ссылка, и она работает как шарм.