Django {%trans%}模板标记给出了DjangoUnicodeDecodeError

时间:2015-07-01 12:32:40

标签: python django utf-8 internationalization

我们正在尝试将i18n应用到我们的Django 1.7.4网络应用程序中。 成功创建.mo和.po文件, 希伯来语.po文件:

#: templates/community/profile.html:109
msgid "Games"
msgstr "משחקים"

有些包含希伯来字符(非ascii), 我创建了一个只有这个的小模板:

{% load i18n %}
{% trans "Games" %}

获取错误:

DjangoUnicodeDecodeError at /community/testtrans/
'ascii' codec can't decode byte 0xd7 in position 0: ordinal not in     range(128). You passed in <django.utils.functional.__proxy__ object at     0x05A29550> (<class 'django.utils.functional.__proxy__'>)

我注意到生成的.PO文件编译为ASCII,尝试更改为UTF-8,没有帮助

这些测试顺利通过:

  • 直接在HTML文件中编写希伯来文本
  • 传递视图参数viewParams['trans_games'] = _("Games"),然后使用{{trans_games}}
  • 将其显示在模板上

我们在两台本地计算机上试过它:Windows&amp; MAC

1 个答案:

答案 0 :(得分:2)

我在这里找到了解决方案: https://groups.google.com/forum/#!topic/django-users/5-EjBFQoeyU

原来我必须将此标题添加到.po文件

"Content-Type: text/plain; charset=UTF-8\n"