2013-03-20 1 views
1

장고 사이트에 러시아어 번역을 설치하려고합니다.러시아어 번역을로드하는 중 장고 유니 코드 오류가 발생했습니다.

'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'도구입니다. 나는 그들 중 상당수를 발견했고, 나는 그들과 무엇을해야할지 아직 모른다. 일단 내가 그것을 발견하면 나는 여기에보고 할 것이다.

+0

추적 코드를 게시하십시오. 어떤 절차로 오류가 발생하는지 이해하는 데 도움이됩니다. –

+0

좋아, 나는 추적 질문에 질문을 방금 갱신했다. – Bastian

+0

나는 모든 것을 처음부터 다시 시작하고 그것이 어디에서 충돌하는지 이해하려고 노력할 것입니다. 여기서 흥미로운 것을 발견하면 여기에보고하겠습니다. – Bastian

답변

0

Django 1.4.5로 업데이트되었으며 문제가 완전히 사라졌습니다. .po 파일이 제대로 생성되고 컴파일이 잘 진행됩니다.

관련 문제