2011-08-14 2 views
7

프로젝트에서 장고 언어 현지화를 실행하려고하지만 makemessages는 항상 내 템플릿 폴더의 html 템플릿을 무시합니다.Django 언어 현지화를위한 makemessages 함수가 html 파일을 무시하는 이유는 무엇입니까?

프로젝트 루트에서 python manage.py makemessages -a을 실행하면 .po 파일에 프로젝트의 .py 파일 내에서 번역 된 것으로 표시된 모든 문자열이 성공적으로 .po 파일에 추가됩니다.

템플릿의 상단에 필요한 모듈이로드되어 있어도 {{ trans "String_to_translate" }} 인 모든 문자열이 무시되고 .po 파일에 추가되지 않습니다. {% load i18n %}.

전체 템플릿 폴더가 makemessages 함수에서 제외되었을 가능성을 테스트하기 위해 .py 파일을 만들어 번역 할 문자열을 포함 시켰으며 .po 파일에 성공적으로 추가되었습니다.

이러한 모든 문제로 인해이 문제의 원인이 무엇인지 알 수 있습니까? 미리 도움을 주셔서 감사합니다!

편집 : 솔루션은 전적으로 INSTALLED_APPS 또는 TEMPLATE_DIRS에 나열되어있는 디렉토리에 나열 된 응용 프로그램에 있어야 하나 필요 {% trans "string" %}

답변

3

귀하의 templates 폴더에 {{ trans "string" }}의 구문을 변경 구성 -에 settings.py 파일

+0

두 가지가 이미 구성되어 있으며 템플릿의 makemessages 기능을 제외한 템플릿이 성공적으로 작동합니다. – dlmccoy

+1

django app이'app'라고하면'templates'라는 디렉토리가 있습니까? 이'.py' 파일은 어디에서 만들었습니까? 통로? 코드에서 어떻게 언급 했습니까? 'INSTALLED_APPS'과'TEMPLATE_DIRS' 설정을 여기에 붙일 수 있습니까? –

+0

myproject/app 내부에는 실제로 템플릿 디렉토리가 있으며 템플릿이 필요한 모든 뷰에서 템플릿이 내부에서 성공적으로 발견됩니다. Makemessages는 ugettext ("String_to_translate")와 같이 정상적인 views.py에서 번역 할 문자열을 성공적으로 찾습니다. 나는 또한 makemessages가 그 폴더 안에있는 것을 보았는지 확인하기 위해 templates 폴더 안에 example.py를 만들었고, 그 안에 ugettext ("Another string")를 발견했다. TEMPLATE_DIRS = ('/ home/dlmccoy/webapps/projectname/myproject/app/templates'), INSTALLED_APPS = ( 'myproject.app', ) – dlmccoy

4

templates 폴더의 심볼릭 링크를 app 폴더에 만들어보십시오. 그런 다음 django-admin.py makemessages --all --symlinks

cd /myproject 
ln -s /myproject/templates /myproject/myapp/templates  
cd /myproject/myapp 
django-admin.py makemessages --all --symlinks 

makemessagesTEMPLATE_DIRSINSTALLED_APPS 무시 심볼릭 링크 스위치를 사용하여 응용 프로그램 폴더에서 makemessages를 호출합니다. 템플릿 디렉토리는 앱 폴더 안에 있어야하며 makemessages은 앱 폴더 내부에서 호출해야합니다.

관련 문제