如何在django中翻译表单



我在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 %}标签,视图如何捕获正确的post请求?

更新

在同一个页面上有很多这样的表单,我的视图使用if postdata['submit']=="Caluclate Discount"来确定它是哪个提交请求

我能让翻译工作。

感谢@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'在我的视图

对于按钮,除了按钮文本,您实际上不会将value字段用于其他任何内容,因此可以直接翻译为:

<input type="submit" name="submit" value="{% trans "Caluclate Discount" %}"/>

我认为你应该使用{% trans %}来提交"value"。我不明白为什么在视图中需要这个值。如果你愿意,你仍然可以给你的提交输入一个自定义的"name"属性。

编辑。顺便说一下,你的

<br>...</br>
表单中的

内容似乎是一个错误。你可能想把它改成

<p>...</p>

。也不建议对type="submit"输入使用"submit"名称(取自http://api.jquery.com/submit/):

)

表单及其子元素不应该使用与表单属性冲突的输入名称或id,例如submit、length或method。名称冲突可能导致令人困惑的失败。要获得完整的规则列表并检查这些问题的标记,请参见DOMLint。

你的视图并不关心提交按钮的值是什么,所以即使你翻译它,你的视图函数也会工作

最新更新