내 프로젝트에 다른 언어를 활성화하려고합니다. 지금 영어와 스페인어.Django i18n이 작동하지 않습니다.
내가 따라 모든 단계를 설명 할 것이다 : 모든
첫째, 내가 번역 할 디렉토리에 자신을 배치합니다.
$ cd media/templates/landing/
$ mkdir locale
$ django-admin.py makemessages --locale=en
마지막 명령은 디렉토리/파일 /locale/en/LC_MESSAGES/django.po
내가 django.po 열고 내가 진행을 작성 또는 더 나은 모든 {% 트랜스 %} 태그가 어디 말했다 모든 msgstr 필드를 영어로 완료하십시오. msgid 레이블은 스페인어입니다. 긴 메시지의 경우 팁을 존중합니다. 이 파일에 충전 한 후, 난합니다
$ django-admin.py compilemessages
이 프로세스 django.po 및 django.mo을 만듭니다.
그래서 settings.py를 수정합니다. 중요 라인 : 마지막으로
TEMPLATE_CONTEXT_PROCESSORS = (
'ism.context_processor.user_vars',
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.static',
'django.contrib.messages.context_processors.messages',
'django.core.context_processors.request',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'pipeline.middleware.MinifyHTMLMiddleware',
}
TIME_ZONE = 'Atlantic/Canary'
LANGUAGE_CODE = 'es'
USE_I18N = True
_ = lambda s: s
LANGUAGES = (
('es', _('Espanol')),
('en', _('English')),
)
USE_L10N = True
USE_TZ = True
, 난 URLS.py이 줄을 추가 :
(r'^i18n/', include('django.conf.urls.i18n')),
나는 내 개발 서버를 다시 시작, 내가 첫 번째 주 언어로 영어를 선택하는 내 파이어 폭스 브라우저를 구성하고 그렇지 않습니다 작업. 모든 텍스트는 여전히 영어로 스페인어로 표시됩니다.
Django보기 기능 (.html을 렌더링 함)에서 "en"을 인쇄하는 request.LANGUAGE_CODE로 인쇄하기 때문에 Firefox가 영어로 구성되어 있는지 확인합니다.
무엇이 잘못 되었나요?
는 django-admin.py makemessages이 = 말이지 --locale습니까? – Efazati
사용자가 en과 es를 어떻게 전환합니까? – Efazati
@Efazati 우리 프로젝트의 주요 언어는 EN이 아닌 ES입니다. 그래서 나는'django-admin.py makemessages --locale = en'을 만들어야한다는 것을 이해합니다. 그렇죠? 이렇게하면 django.po 파일에 msgid 필드가 spanish로 만들어지고 msgstr 필드를 영어로 작성해야합니다. –