장고 사이트에 러시아어 번역을 설치하려고합니다.러시아어 번역을로드하는 중 장고 유니 코드 오류가 발생했습니다.
'locale'폴더에서 다른 언어와 함께 'ru'폴더를 만들고 그 안에 'LC_MESSAGES'폴더를 만들고 여기에 번역본과 함께 'django.po'파일을 넣었습니다 . 번역은 Excel 파일로 제공 되었기 때문에 수동으로 .po 파일을 만들었습니다. 그 .po 파일에서 동일한 프로젝트의 다른 .po 파일에서 찾은 헤더를 복사 한 다음 스크립트를 사용하여 Excel 파일에서이 정보를 추출하는 'msgid'/ 'msgstr'쌍을 작성했습니다. 파일을 검사 한 후 수동으로 수정 한 후 올바른 것으로 보였고 컴파일 할 때 오류가없고 .mo 파일이 생성됩니다. 그런 다음 설정 파일에서 'ru'를 언어로 추가했습니다. 그런 다음 홈페이지를 새로 고침하고 위젯에서 언어를 전환하는 데 러시아어가 사용되었습니다. 하지만 그것을 클릭하면 페이지가 다시로드되고 유니 코드 오류가 발생합니다.
일부 컨텍스트 : 사이트가 영어이지만 스페인어 번역이 이미 설치되어 있고 비 ASCII 문자로 올바르게 작동합니다.
전체 솔루션이 아니더라도 모든 디버그 방법을 환영합니다.
오류 : 'ascii'코덱은 0 바이트 위치의 0xd0 바이트를 범위 (128) 이내의 바이트로 디코딩 할 수 없습니다. 당신은 전달() 내가 찾은 무엇이 문제가 ugettext과 게으른이지만 다른 번역과 함께 작동 이유를 내가 이해하지 못하는 것은에서
...
내가 장고에서 유니 코드 힌트를 얻을 : 인코딩/디코딩 할 수없는 문자열은 다음과 같습니다. 로드하려는 페이지에 따라이 문자열이 변경됩니다.Traceback:
File "/home/env/project/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
136. response.render()
File "/home/env/project/lib/python2.7/site-packages/django/template/response.py" in render
96. self._set_content(self.rendered_content)
File "/home/env/project/lib/python2.7/site-packages/django/template/response.py" in rendered_content
75. content = template.render(context)
File "/home/env/project/lib/python2.7/site-packages/django/template/base.py" in render
123. return self._render(context)
File "/home/env/project/lib/python2.7/site-packages/django/test/utils.py" in instrumented_test_render
57. return self.nodelist.render(context)
File "/home/env/project/lib/python2.7/site-packages/django/template/base.py" in render
744. bits.append(self.render_node(node, context))
File "/home/env/project/lib/python2.7/site-packages/django/template/base.py" in render_node
757. return node.render(context)
File "/home/env/project/lib/python2.7/site-packages/django/template/loader_tags.py" in render
127. return compiled_parent._render(context)
File "/home/env/project/lib/python2.7/site-packages/django/test/utils.py" in instrumented_test_render
57. return self.nodelist.render(context)
File "/home/env/project/lib/python2.7/site-packages/django/template/base.py" in render
744. bits.append(self.render_node(node, context))
File "/home/env/project/lib/python2.7/site-packages/django/template/base.py" in render_node
757. return node.render(context)
File "/home/env/project/lib/python2.7/site-packages/django/template/loader_tags.py" in render
127. return compiled_parent._render(context)
File "/home/env/project/lib/python2.7/site-packages/django/test/utils.py" in instrumented_test_render
57. return self.nodelist.render(context)
File "/home/env/project/lib/python2.7/site-packages/django/template/base.py" in render
744. bits.append(self.render_node(node, context))
File "/home/env/project/lib/python2.7/site-packages/django/template/base.py" in render_node
757. return node.render(context)
File "/home/env/project/lib/python2.7/site-packages/django/template/loader_tags.py" in render
64. result = block.nodelist.render(context)
File "/home/env/project/lib/python2.7/site-packages/django/template/base.py" in render
744. bits.append(self.render_node(node, context))
File "/home/env/project/lib/python2.7/site-packages/django/template/base.py" in render_node
757. return node.render(context)
File "/home/env/project/lib/python2.7/site-packages/django/templatetags/i18n.py" in render
76. return _render_value_in_context(output, context)
File "/home/env/project/lib/python2.7/site-packages/django/template/base.py" in _render_value_in_context
777. value = force_unicode(value)
File "/home/env/project/lib/python2.7/site-packages/django/utils/encoding.py" in force_unicode
93. raise DjangoUnicodeDecodeError(s, *e.args)
Exception Type: DjangoUnicodeDecodeError at/
Exception Value: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128). You passed in <django.utils.functional.__proxy__ object at 0x9f3f16c> (<class 'django.utils.functional.__proxy__'>)
편집 :
내가 처음부터 다시 시작하려고 여기
는 역 추적입니다. 그래서 분명히processing language ru
Traceback (most recent call last):
File "./manage.py", line 15, in <module>
execute_manager(settings)
File "/home/env/project/lib/python2.7/site-packages/django/core/management/__init__.py", line 438, in execute_manager
utility.execute()
File "/home/env/project/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/env/project/lib/python2.7/site-packages/django/core/management/base.py", line 191, in run_from_argv
self.execute(*args, **options.__dict__)
File "/home/env/project/lib/python2.7/site-packages/django/core/management/base.py", line 220, in execute
output = self.handle(*args, **options)
File "/home/env/project/lib/python2.7/site-packages/django/core/management/base.py", line 351, in handle
return self.handle_noargs(**options)
File "/home/env/project/lib/python2.7/site-packages/django/core/management/commands/makemessages.py", line 365, in handle_noargs
make_messages(locale, domain, verbosity, process_all, extensions, symlinks, ignore_patterns, no_wrap, no_obsolete)
File "/home/env/project/lib/python2.7/site-packages/django/core/management/commands/makemessages.py", line 233, in make_messages
f.write(templatize(src, orig_file[2:]))
File "/home/env/project/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 127, in templatize
return _trans.templatize(src, origin)
File "/home/env/project/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 450, in templatize
content = u''.join(comment)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 7: ordinal not in range(128)
뭔가 다른 곳에서 잘못된해야합니다 : 나는이 오류를 얻을 'makemessages'명령과 해당 명령을 실행하는 동안 시도 내 수동으로 생성 로케일 폴더와 .po 파일을 삭제. 나는 계속 볼거야.
편집 :
분명히 번역 여부 될 것으로 표시 여부를 템플릿에서 비 ASCII 문자를 처리 할 수있는 'makemessages'도구입니다. 나는 그들 중 상당수를 발견했고, 나는 그들과 무엇을해야할지 아직 모른다. 일단 내가 그것을 발견하면 나는 여기에보고 할 것이다.
추적 코드를 게시하십시오. 어떤 절차로 오류가 발생하는지 이해하는 데 도움이됩니다. –
좋아, 나는 추적 질문에 질문을 방금 갱신했다. – Bastian
나는 모든 것을 처음부터 다시 시작하고 그것이 어디에서 충돌하는지 이해하려고 노력할 것입니다. 여기서 흥미로운 것을 발견하면 여기에보고하겠습니다. – Bastian