2011-05-08 27 views
0

在使用表單中的ChoicesField時,我遇到了使用Django的翻譯功能強大的問題。Django:ChoiceField表單中的本地化問題

我用這樣的形式,因爲這一個:

from django.utils.translation import ugettext as _ 

class MyForm(forms.Form): 
COUNTRIES = (
    ('france', _('France')), 
    ('italy', _('Italy')), 
    ('sweden', _('Sweden')), 
) 

country = forms.ChoiceField(choices=COUNTRIES) 

通過視圖模板這樣的本 ... {%反式 「國家」 %}渲染:{{form.country }} ...

,並翻譯在法國時,我的問題,突出相關的,如下面的例子:

<label>Contrée </label> 
<select name="country" id="id_country"> 
<option value="france">France</option> 
<option value="italy">Italie</option> 
<option value="sweden">Su&egrave;de</option> 
</select> 

瑞典的口音(「Su&egrave;」)不正確地顯示(沒有HTML代碼的解釋),而國家(「Contrée」)中的口音按預期顯示在瀏覽器中。

要完成這一點,法國我django.po文件是這樣

... 
#: templates/1.html:106 
msgid "Country" 
msgstr "Contr&eacute;e" 

#: templates/1.html:106 myApps/forms.py:19 
msgid "Sweden" 
msgstr "Su&egrave;de" 
... 

這是因爲如果包含在{{form.country}}標籤時,沒有解釋口音的HTML代碼。

任何想法,我在做什麼錯? 在此先感謝。

+0

您是否試過ugettext_lazy作爲_ – DTing 2011-05-09 01:05:47

+0

是的我嘗試用「ugettext_lazy as _」替換「ugettext as _」。結果仍然是一樣的。謝謝。 – Nielluin 2011-05-09 22:55:24

回答

1

我終於解決了這個問題。我沒有正確使用我的django.po翻譯文件。

而不是使用每個重音字符的HTML代碼,他們必須留下normale(即:é,è,à...)和django將取決於目的地,相應地翻譯這些口音。

這裏是我的法文翻譯頭:

msgid "" 
msgstr "" 
"Project-Id-Version: PACKAGE VERSION\n" 
"Report-Msgid-Bugs-To: \n" 
"POT-Creation-Date: 2011-06-06 17:17+0200\n" 
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 
"Last-Translator: ****** <****@*****.com>\n" 
"Language-Team: FR <***@*********.com>\n" 
"MIME-Version: 1.0\n" 
"Content-Type: text/plain; charset=UTF-8\n" 
"Content-Transfer-Encoding: 8bit\n" 
"Language: Français\n" 
"Plural-Forms: nplurals=2; plural=n>1;\n" 

希望這可以幫助一些你。 Regards,