这是本地化的问题:
我需要覆盖登录表单(从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>"
有人可以引导我朝着正确的方向前进吗?
干杯。
答案 0 :(得分:1)
这应该有效
_(u"Don't have account? <a href={URL}>Register</a>").format(URL=reverse('account_signup'))
为什么.format
有效,实际上我之前已经搜索过了,但我找不到明确的答案。我的猜测是:
某些符号可能会导致转换失败,例如%和单引号。
翻译过的字符串应使用{}和%
我通常遵循http://edx.readthedocs.org/projects/edx-developer-guide/en/latest/internationalization/i18n.html这里有guidlines。