重写形式的Django翻译

时间:2016-02-28 11:53:08

标签: python django forms internationalization lazy-evaluation

这是本地化的问题:

我需要覆盖登录表单(从allauth库开始),修改一些格式等....

forms.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 / locale / 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>"

有人可以引导我朝着正确的方向前进吗?

干杯。

1 个答案:

答案 0 :(得分:1)

这应该有效

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

为什么.format有效,实际上我之前已经搜索过了,但我找不到明确的答案。我的猜测是:

  1. 某些符号可能会导致转换失败,例如%和单引号。

  2. 翻译过的字符串应使用{}和%

  3. 满足的占位符
  4. 我通常遵循http://edx.readthedocs.org/projects/edx-developer-guide/en/latest/internationalization/i18n.html这里有guidlines。