>  기사  >  백엔드 개발  >  Django 프레임워크의 다중 언어 지원

Django 프레임워크의 다중 언어 지원

WBOY
WBOY원래의
2023-06-17 11:12:091688검색

Django 프레임워크는 매우 인기 있는 Python 웹 프레임워크로, 강력한 다국어 지원을 제공하여 개발자가 다국어 웹사이트를 쉽게 개발할 수 있습니다. 이 기사에서는 Django 프레임워크에서 다국어 지원이 구현되는 방법과 몇 가지 모범 사례를 살펴보겠습니다.

먼저 Django 프레임워크의 다국어 기능이 어떻게 구현되는지 이해하겠습니다. Django는 gettext 도구를 사용하여 다중 언어 지원을 구현합니다. 이 도구는 소스 코드에서 텍스트 문자열을 추출하고 이를 다른 언어로 번역하는 데 도움이 됩니다. Django에서는 gettext를 Django 번역 방법으로 사용하거나 Django에 내장된 번역 방법을 사용할 수 있습니다. 어떤 방법을 사용하든 다음 단계가 필요합니다.

  1. 소스 코드에서 텍스트 문자열을 추출합니다.
  2. 번역 도구를 사용하여 텍스트 문자열을 대상 언어로 번역하세요.
  3. 사용자의 언어 설정에 따라 번역된 텍스트 문자열을 선택하세요.

이 단계를 하나씩 논의해 보겠습니다.

  1. 소스 코드에서 텍스트 문자열 추출

Django에서는 gettext 명령을 사용하여 번역해야 하는 텍스트 문자열을 추출합니다. Django의 Gettext 파일 이름은 일반적으로 django.po입니다. 표준 gettext 도구와 Django의 gettext 도구는 코드에서 gettext를 사용하여 번역해야 하는 텍스트 문자열을 표시하는 것을 지원합니다. 예:

from django.utils.translation import gettext as _

class MyView(View):
    def get(self, request):
        context = {
            'title': _('Hello World!'),
        }
        return render(request, 'mytemplate.html', context)

위 코드에서는 Django의 gettext 메소드를 사용하여 번역해야 하는 문자열 "Hello World!"를 표시합니다. 다음으로 번역해야 할 문자열을 추출하기 위해 gettext를 실행해야 합니다.

  1. 번역 도구를 사용하여 텍스트 문자열을 대상 언어로 번역하세요.

gettext로 추출된 텍스트 문자열이 django.po 파일에 저장됩니다. 텍스트 편집기나 전용 po 편집기를 사용하여 이 파일을 편집하여 문자열을 대상 언어로 번역할 수 있습니다. 예를 들어 "Hello World!"를 "Hello, world!"로 번역할 수 있습니다.

  1. 사용자의 언어 설정에 따라 번역된 텍스트 문자열 선택

Django에서는 미들웨어를 통해 사용자의 언어 설정을 가져와서 현재 세션으로 설정할 수 있습니다. Django 커뮤니티는 이 기능을 달성하기 위해 django-언어-utils 및 django-언어-switcher와 같은 우수한 타사 라이브러리를 많이 제공합니다. 다음은 간단한 미들웨어 예입니다.

class LanguageMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        language = request.COOKIES.get('language')  # get language from cookies
        
        if language:
            translation.activate(language)  # set user language for the current session
            
        response = self.get_response(request)
        
        return response

위 미들웨어에서는 쿠키에서 사용자의 언어 설정을 가져와 현재 세션으로 설정합니다. 사용자의 언어 설정이 완료되면 _('Hello World!')를 사용하여 올바른 번역 문자열을 얻을 수 있습니다.

번역이 필요한 텍스트 문자열을 추출하기 위해 gettext 명령을 사용하는 것 외에도 Django는 고급 번역 기능도 제공합니다. 그 중 하나는 템플릿 변수를 번역할 수 있다는 것입니다. 예:

{% trans "Hello {{ name }}!" %}

위 템플릿에서는 Django에 내장된 번역 방법을 사용하여 "Hello {{ name }}!" 문자열을 번역했습니다. Django는 이 문자열의 템플릿 변수를 자동으로 인식하고 번역 도구가 문자열을 올바르게 번역할 수 있도록 번역 도구에 전달합니다.

마지막으로 주의할 점은 다국어 웹사이트를 개발할 때 언어 코드를 사용하여 다양한 언어를 식별해야 한다는 것입니다. 예를 들어 영어는 en이고 중국어는 zh-cn입니다. 언어 코드를 사용하면 당사 웹사이트에서 다양한 언어를 지원할 수 있으며 문자 깨짐 등의 문제가 발생하지 않습니다.

간단히 말하면, Django 프레임워크의 강력한 다국어 지원을 통해 개발자는 다국어 웹사이트를 쉽게 개발할 수 있습니다. gettext 명령을 사용하여 번역해야 하는 텍스트 문자열을 추출하고 PO 편집기를 사용하여 이를 대상 언어로 번역할 수 있습니다. 그런 다음 미들웨어를 사용하여 사용자의 언어 설정을 가져오고 Django의 내장 번역 방법을 사용하여 올바른 번역 문자열을 가져올 수 있습니다. 궁극적으로 우리는 언어 코드를 사용하여 다양한 언어를 식별해야 합니다.

위 내용은 Django 프레임워크의 다중 언어 지원의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.