在表单中使用ChoicesField时,我在使用Django的翻译功能时遇到了麻烦。
我使用的形式如下:
from django.utils.translation import ugettext as _
class MyForm(forms.Form):
COUNTRIES = (
('france', _('France')),
('italy', _('Italy')),
('sweden', _('Sweden')),
)
country = forms.ChoiceField(choices=COUNTRIES)
通过模板中的视图渲染这样的内容 ... {%trans“Country”%}:{{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ède</option>
</select>
瑞典(“Suè”)的重音错误显示(没有HTML代码的解释),而国家(“Contrée”)中的重音在浏览器中按预期显示。
要完成此操作,我的法语django.po文件就是这样
...
#: templates/1.html:106
msgid "Country"
msgstr "Contrée"
#: templates/1.html:106 myApps/forms.py:19
msgid "Sweden"
msgstr "Suède"
...
当{{form.country}}标记中包含重音的HTML代码时,就好像没有解释它一样。
关于我做错了什么的任何想法? 提前谢谢。
答案 0 :(得分: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"
希望这可以帮助你们中的一些人。 的问候,