2016-02-28 58 views
0

这是定位的问题:Django的翻译重写形式

我需要重写的登录表单(基地从allauth库),修改一些格式等等....

形式。 PY

from django.utils.translation import ugettext_lazy as _ 
class CustomLoginForm(LoginForm): 
    def __init__(self,*args,**kwargs): 
     super(CustomLoginForm ,self).__init__(*args,**kwargs) 
     self.fields['login'].help_text = _(u"Don't have an account? <a href='%(URL)s'>Register</a>" % {'URL':reverse('account_signup')}) 
     self.fields['password'].help_text = _(u"Forgotten Password? <a href='%(URL)s'>Reset</a>" % {'URL':reverse("account_reset_password")}) 

在上述中,翻译不被反映在形式。我已经做了必要的改变,以区域文件XYZ.po,但它没有效果。我所有的其他翻译都很好,很明显我做错了什么。

这里是MYAPP /区域设置相应的入口/ FR/LC_MESSAGES/django.po

#: MYAPP/allauth/forms.py:16 
#, python-format 
msgid "Don't have an account? <a href='%(URL)s'>Register</a>" 
msgstr "Ne pas avoir un compte? <a href='%(URL)s'>Enregistrer </a>" 

#: MYAPP/allauth/forms.py:17 
#, python-format 
msgid "Forgotten Password? <a href='%(URL)s'>Reset</a>" 
msgstr "Mot de passe oublié? <a href='%(URL)s'>Réinitialiser</a>" 

有人能指导我在正确的方向吗?

干杯。

+0

你可以发布.po文件中的相应部分 –

+0

@AhmedHosny是的,当然,请参阅修改问题。 –

+0

在这种情况下,我建议使用格式如下的ugettext_lazy: '_(u“没有帐户?Register”).format(URL = reverse('account_signup'))'。试试这个,并用结果更新我 –

回答

1

这应该工作,为什么.format作品,其实我已经搜查了在此之前

_(u"Don't have account? <a href={URL}>Register</a>").format(URL=reverse('account_signup'))

,但我无法找到一个明确的答案。我的猜测是:

  1. 某些符号会导致翻译失败,如%和单引号。

  2. 翻译后的字符串应该使用占位符是在满足{}和%

  3. 这里http://edx.readthedocs.org/projects/edx-developer-guide/en/latest/internationalization/i18n.html,我通常遵循有guidlines。