如何在django中翻译表单

时间:2011-12-14 07:32:03

标签: django django-forms django-templates django-views

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

更新

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

4 个答案:

答案 0 :(得分:2)

我能够让翻译工作。

感谢@ 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 :(得分:1)

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

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

答案 2 :(得分:0)

我认为你应该使用{%trans%}来提交“价值”。我不明白为什么你在视图中需要这个价值。如果需要,您仍然可以为提交输入提供自定义“名称”属性。

修改即可。顺便说一下,你的

<br>...</br>

表单中的内容似乎是一个错误。你可能想要成功

<p>...</p>

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

  

表单及其子元素不应使用与表单属性冲突的输入名称或ID,例如submit,length或method。名称冲突可能导致混乱的故障。有关规则的完整列表以及检查这些问题的标记,请参阅DOMLint

答案 3 :(得分:0)

您的视图并不关心提交按钮的值是什么,所以即使您翻译它,您的视图功能也会起作用。