2015-07-01 4 views
2

Мы пытаемся реализовать i18n в нашем веб-приложении Django 1.7.4. успешно создали .mo и .po файлы, иврит .po файл:Django {% trans%} шаблон тега, дающий DjangoUnicodeDecodeError

#: 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

ответ

1

Я нашел решение здесь: https://groups.google.com/forum/#!topic/django-users/5-EjBFQoeyU

Оказывается, я должен добавить этот заголовок в .po файл

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

Это прискорбно вы downvoted. После работы с информацией i18n в течение многих лет, я столкнулся с этим сегодня. После того, как я ударил головой о стену, никогда не сталкиваясь с этим, я, наконец, обнаружил это Q + A через Google. Добавление вышеупомянутой строки в метаданные моего файла PO решило проблему для меня (Django 1.9). См. Также метаданные здесь: https://polib.readthedocs.io/en/latest/quickstart.html#creating-po-catalogs-from-scratch –

Смежные вопросы