Django 국제화 튜토리얼-2

view.py 파일의 설정 및 번역에 대한 깊이



Django Internationalization의 이전 자습서에서는 출력 변수에 정의된 메시지를 반환하는 기본 보기를 개발했습니다.

이 게시물에서 우리의 목표는 해당 메시지의 해석을 실행하는 것입니다. 이를 위해 우리는 지난 포스트에서 만든 Django 프로젝트를 활용할 것입니다.

설정 구성:

당연히 준비를 통해 만들어진 Django 프로젝트는 현재 국제화(i18n) 및 제한(l10n)을 위해 설정되었습니다. 그럼에도 불구하고 langtests/settings.py에서 벤처 설정을 열고 USE_I18N 및 USE_L10N이 true로 설정되어 있는지 확인하십시오.

# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'

USE_I18N = True
USE_L10N = True
USE_TZ = True


주목해야 할 한 가지 중요한 설정은 전체 프로젝트의 기본 언어를 특징짓는 LANGUAGE_CODE입니다. 물론 'en-us'로 설정되어 있지만 나중에 번역이 작동하는지 테스트하기 위해 'pt-pt'로 변경할 것입니다.

두 번째로 해야 할 일은 settings.py의 설치된 앱 목록에 laguages ​​애플리케이션(첫 번째 튜토리얼에서 생성한 애플리케이션)을 추가하는 것입니다. 뷰가 없어도 뷰에 도달할 수 있지만 프로젝트의 경우 다음과 같이 필수적입니다.

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'languages'
]


번역:
Django에서 번역 가능한 모든 문자열은 명시적으로 스탬프 처리되어야 합니다. Python 코드에서는 ugettext() 함수 또는 밑줄(_)을 별칭으로 사용하여 해석 문자열을 결정합니다. 이 애플리케이션의 경우 languages/views.py를 열고 결과 문자열을 번역 가능으로 표시합니다.

from django.utils.translation import ugettext as _
from django.http import HttpResponse

def index(request):
    output = _('Welcome to my site.')
    return HttpResponse(output)


추가 변경 사항: import 문 외에도 유일한 중요한 변경 사항은 밑줄 별칭 forugettext를 사용하는 것입니다.

번역 파일 만들기:
번역 가능한 문자열을 구분했으므로 자체적으로 번역 문서를 만들고자 합니다. Django에서 번역 파일은 message files이라고 하며 확장자는 .pofile입니다.

Django는 이러한 문서의 생성 및 업데이트를 자동화하는 장치(makemessages)를 수반합니다. 몇 군데에서 이 콘텐츠를 실행할 수 있지만 이 교육용 연습을 위해 기본으로 저장하고 우리가 가지고 있는 기본 응용 프로그램이므로 lanagues 응용 프로그램 내에서 사용할 것입니다.

언어의 디렉토리 안에 로케일 디렉토리를 만드십시오(mkdir 로케일 사용).

예를 들어 포르투갈어용 메시지 파일을 만들어 보겠습니다. 언어 디렉토리 내에서 다음을 수행하십시오.

django-admin makemessages -l pt_pt


그러면 다음과 같은 구조가 생성됩니다.
언어의 응용 프로그램.



Note: It is worth noting that I used an underscore for the language directory (pt_pt rather than pt-pt). Although we use dashes such as pt-pt in Django settings, we must use underscores in folders.



번역 메시지 작성:
django.po의 본질을 실제로 본다고 가정하면 포르투갈어로 준비된 문자열을 볼 수 있습니다. 기본적으로 Django makemessages 스크립트는 ugettext()의 이벤트를 찾고 번역을 위해 따로 설정된 모든 문자열을 꺼냅니다.

번역을 하려면 msgstr의 내용을 입력하기만 하면 됩니다.

#: views.py:5
msgid "Welcome to my site."
msgstr "Bem-vindo ao meu site"


모든 문자열을 번역한 후에는 compilemessages 스크립트를 사용하여 문자열을 컴파일해야 합니다.

django-admin compilemessages


새 파일 django.mo가 메시지 파일 옆에 나타납니다.



샘플 번역 테스트
모든 것이 해석을 위해 준비된 것처럼 보이지만 프로그램을 http://localhost:8000/languages/ 방향으로 향한다고 가정하면 "내 사이트에 오신 것을 환영합니다."라는 메시지가 표시됩니다. 영어로 문자열. 이는 문자열을 해석해야 하는 언어를 지정하지 않았기 때문입니다.

# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/


LANGUAGE_CODE = 'pt-pt'
TIME_ZONE = 'UTC'

USE_I18N = True
USE_L10N = True
USE_TZ = True


이제 브라우저에서 http://localhost:8000/languages/을 가리킵니다.



Django는 포르투갈어로 번역된 문자열을 반환합니다. Google 번역은 포르투갈어로 보고 있고 영어로 변환하려는 옵션을 제공합니다.

면책 조항: 이것은 개인적인 [블로그, 게시물, 진술, 의견]입니다. 여기에 표현된 견해와 의견은 저자의 견해와 의견일 뿐이며 저자가 직업적으로나 개인적으로 연관될 수 있는 조직이나 개인의 견해와 의견을 대변하지 않습니다.

좋은 웹페이지 즐겨찾기