2017-12-30 2 views
1

오픈 소스 전자 상거래 사이트를 구축하는 방법을 배우고 싶습니다. 이 목적을 위해 나는 '장고'프레임 워크를 '오스카'확장자로 사용하고 있습니다.'장고 - 오스카'번역하기

전체 튜토리얼은 https://django-oscar.readthedocs.io/en/releases-1.5/index.html입니다. 여기서 Translation 튜토리얼이 있습니다. 나는 그것을 따라 갔다. 게다가, 맞습니다

./manage.py makemessages --symlinks --locale=<language code> 

을하지만 :

mkdir locale i18n 
ln -s $PATH_TO_OSCAR i18n/oscar 

그런 다음, 각 언어에 대해 번역 할 :이 부분은 두 개의 폴더를 생성해야 페이지 및 기호 링크를 번역하기 위해, 말한다 그것은 파일을 컴파일해야 locale 폴더 (.mo 개 파일)의 최종 traduction을 얻으실 수 있습니다. 그런 다음 프로젝트 (또는 앱)의 settings.py에 트레이드를 포함해야합니다. $ django-admin.py compilemessages

  • settings.py 담기 :

    국어 = [ ('드', _ ('독일어 (프로젝트의 루트 디렉토리에서) 터미널에서

    • : 이것은 다음과 같은 코드로 이루어집니다 ')), ('엉 ', _ ('영어 ')), ('ES ', _ (')) '스페인어, ]

    (참고 :

    그런 다음 서버를 실행하고 세 언어 만 선택 언어 상자에 표시하지만 페이지를 번역하기 위해 버튼을 누르면, 그것은 기본 언어 (영어)마다 반환, 각 번역 청원이 점점 :

    "POST /i18n/setlang/ HTTP/1.1" 302 0 
    "GET/HTTP/1.1" 200 8379 
    

    것은 내가 잘못 어떤 내가 건너 뛰는거야 단계 또는 있나요 ?

    미리 감사드립니다.

  • 답변

    1

    부분적인 (거의 완전한) 해결책이 있습니다. 사용하고자하는 언어가 매우 일반적이어서 오스카가 제공하는 것을 사용하지 않고 장고 번역 미들웨어를 직접 사용했습니다. 그래서, 내 해결책은 MIDDLEWARE (또는 장고 버전에 따라 MIDDLEWARE_CLASES에)을 포함하여 settings.py을 편집하는 것입니다. 장고 internacionalization 미들웨어 : django.middleware.locale.LocaleMiddleware. 다음과 같이 ugettext (from django.utils.translation import ugettext as _) 가져없이 그 후

    , , 언어를 추가 부담 :

    LANGUAGES = [ 
        ('es', 'Spanish'), 
        ('de', 'German'), 
        ('en', 'English'), 
        ('pt-br', 'Brazilian'), 
        #... and so on 
    ] 
    

    이 솔루션은 심볼릭 링크 나 폴더를 추가로 만들 필요가 없습니다.