【问题标题】:How to translate a form in django如何在 django 中翻译表格
【发布时间】:2011-12-14 07:32:03
【问题描述】:

我在 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" 来确定它是哪个提交请求。

【问题讨论】:

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


    【解决方案1】:

    我能够进行翻译。

    感谢@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'是否在我看来

    【讨论】:

      【解决方案2】:

      对于按钮,除了按钮文本之外,您实际上不会将 value 字段用于任何其他内容,因此翻译起来很简单:

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

      【讨论】:

      • 但我的视图检查是否为postdata['submit']=="Caluclate Discount"。这不会造成问题吗?
      • @user1077344 你的意思是你通过提交按钮来区分表单?为什么不使用隐藏的表单输入元素呢?
      【解决方案3】:

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

      编辑。顺便说一句,你的

      <br>...</br>
      

      表单中的东西似乎是一个错误。你可能会想要成功

      <p>...</p>
      

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

      表单及其子元素不应使用与表单属性(例如提交、长度或方法)冲突的输入名称或 ID。名称冲突可能会导致令人困惑的失败。如需完整的规则列表并检查这些问题的标记,请参阅DOMLint

      【讨论】:

      • 你可以像这样进行检查: if 'your_submit_button_name' in request.POST
      【解决方案4】:

      您的视图并不关心提交按钮的值是什么,因此即使您翻译它,您的视图功能也可以工作。

      【讨论】:

      • 但我的视图会检查if postdata['submit']=="Caluclate Discount"
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      • 1970-01-01
      • 2016-05-01
      • 1970-01-01
      • 2017-10-01
      相关资源
      最近更新 更多