2016-02-28 60 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。