Как перевести форму в Джанго - PullRequest
2 голосов
/ 14 декабря 2011

У меня есть форма на сайте django

<form method="POST" action="." class="right_custom">{% csrf_token %}
    <br>{% trans "Enter the discount coupon code if you have any" %}</br>
    <input type="text" name="coupon_code"  size="25" maxlength="25" />
    <input type="submit" name="submit" value="Caluclate Discount"/>
</form>

Я бы хотел перевести весь сайт на множество языков. Мне нужно перевести текст кнопки, который Caluclate Discount. Как я могу это сделать? если я использую тег {% trans %}, как представление поймает правильный пост?

UPDATE

На одной и той же странице есть много форм, и мое представление использует if postdata['submit']=="Caluclate Discount", чтобы определить, какой это запрос на отправку.

Ответы [ 4 ]

2 голосов
/ 15 декабря 2011

Мне удалось заставить работать перевод.

Благодаря ответам @ linux-warrior и @ Joachim

Теперь форма

<form method="POST" action="." class="right_custom">{% csrf_token %}
    <input type="hidden" name="form_name" value="discount_form" />
    <br>{% trans "Enter the discount coupon code if you have any" %}</br>
    <input type="text" name="coupon_code"  size="25" maxlength="25" />
    <input type="submit" name="submit" value="{% trans "Caluclate Discount" %}" />
</form>

я проверяю, если postdata['form_name']=='discount_form' на мой взгляд

1 голос
/ 14 декабря 2011

Для кнопок вы действительно не используете поле значения для чего-либо еще, кроме текста кнопки, поэтому его легко перевести:

<input type="submit" name="submit" value="{% trans "Caluclate Discount" %}"/>
0 голосов
/ 14 декабря 2011

Ваше представление не заботится о значении кнопки отправки, поэтому даже если вы переведете его, ваша функция просмотра будет работать.

0 голосов
/ 14 декабря 2011

Я думаю, что вы должны использовать {% trans%} для отправки "значения".Я не понимаю, зачем вам эта ценность внутри вашего взгляда.Если вы хотите, вы все равно можете дать своему представлению ввода собственный атрибут "name".

Редактировать .Кстати, ваша

<br>...</br>

вещь в вашей форме кажется ошибкой.Вы, вероятно, захотите сделать это

<p>...</p>

.Также не рекомендуется использовать имя «submit» для ввода type = «submit» (взято из http://api.jquery.com/submit/):

Формы и их дочерние элементы не должны использовать имена или идентификаторы ввода, конфликтующие со свойствамиформы, например, отправки, длины или метода. Конфликты имен могут привести к сбивающим с толку ошибкам. Полный список правил и проверку разметки для этих проблем см. DOMLint .

...