考虑一个使用i18n Django功能的网站。
我的问题是:我如何翻译Django表单创建的GET参数?例如,
www.example.com/persons?search=topic
www.example.com/pessoas?procurar=topic
(pessoas <> persons, procurar <> search)
url我可以使用ugettext_lazy
,但参数我不能够,因为表单总是使用字段名(例如下面的search
):
class MyForm(forms.Form):
search = forms.CharField(required=False)
如果需要动态命名URI中的字段,则必须动态命名表单中的字段,如下所示:
from django.utils.translation import ugettext
def MyForm(forms.Form):
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.fields[ugettext("search")] = forms.CharField()
def search_field():
return self.fields[ugettext("search")]
我已经包含了一个帮助函数,这样在代码中您就可以通过一个不变的名称来引用搜索字段。