【问题标题】:Django {% trans %} template tag giving DjangoUnicodeDecodeErrorDjango {% trans %} 模板标签给出 DjangoUnicodeDecodeError
【发布时间】:2015-07-01 12:32:39
【问题描述】:

我们正在尝试在我们的 Django 1.7.4 网络应用程序中实现 i18n。 成功创建 .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 和 Mac

【问题讨论】:

    标签: python django utf-8 internationalization


    【解决方案1】:

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

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

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

    【讨论】:

    • 很遗憾你被否决了。在使用 i18n 信息多年后,我今天遇到了这个问题。在我的头撞到墙上之后,我从来没有遇到过这个,我终于通过谷歌发现了这个 Q+A。将上述行添加到我的 PO 文件的元数据中解决了我的问题(Django 1.9)。另请参阅此处的元数据:polib.readthedocs.io/en/latest/…
    猜你喜欢
    • 2014-01-18
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 2014-07-17
    • 1970-01-01
    • 2012-10-01
    • 2012-01-18
    相关资源
    最近更新 更多