Django에서 get_language()request.LANGUAGE_CODE의 차이점과 활용 방법

Django는 강력한 다국어 지원 기능을 제공하며, 이를 통해 다양한 언어로 웹 애플리케이션을 개발할 수 있습니다. 이 글에서는 Django의 번역 및 지역화 도구 중 django.utils.translation.get_language()request.LANGUAGE_CODE의 차이점과 작동 원리, 그리고 각각의 활용 방법에 대해 자세히 알아보겠습니다.

1. django.utils.translation.get_language()

작동 원리

get_language()는 Django 번역 시스템에서 현재 활성화된 언어 코드를 반환하는 함수입니다.

이 함수는 번역 시스템이 현재 어떤 언어로 설정되어 있는지를 알려주며, 이는 다음과 같은 절차로 결정됩니다:

  • LocaleMiddleware가 사용자 요청, 세션, 쿠키, 브라우저 설정 등을 기반으로 언어를 결정합니다.
  • 결정된 언어는 Django 번역 시스템에 의해 활성화됩니다.
  • get_language()는 활성화된 언어를 반환합니다.

반환값

언어 코드(예: 'en', 'ko', 'fr')가 문자열로 반환됩니다. 만약 활성화된 언어가 없으면 기본 언어 설정(settings.LANGUAGE_CODE)이 반환됩니다.

활용 예시

현재 활성 언어에 따라 사용자에게 다른 메시지나 콘텐츠를 제공해야 할 때.

언어별로 다른 비즈니스 로직을 구현할 때.

from django.utils.translation import get_language
current_language = get_language()
if current_language == 'ko':
    print("현재 활성화된 언어는 한국어입니다.")

2. request.LANGUAGE_CODE

작동 원리

request.LANGUAGE_CODE는 HTTP 요청 기반으로 결정된 언어 코드입니다.

이 값은 브라우저의 Accept-Language 헤더, URL 매개변수, 세션 또는 쿠키 등에 의해 설정됩니다.

  • 클라이언트는 HTTP 요청과 함께 언어 선호 정보를 포함하여 서버에 전송합니다.
  • LocaleMiddleware는 이 정보를 분석하고 적절한 언어를 선택합니다.
  • 선택된 언어는 request.LANGUAGE_CODE에 설정됩니다.

반환값

요청 기반으로 결정된 언어 코드(예: 'en', 'ko').

활용 예시

사용자의 브라우저 언어에 맞는 맞춤형 콘텐츠를 제공할 때.

다국어 API에서 요청 언어에 따라 응답 데이터를 다르게 처리할 때.

def my_view(request):
    user_language = request.LANGUAGE_CODE
    if user_language == 'fr':
        return HttpResponse("Bienvenue!")
    return HttpResponse("Welcome!")

3. 차이점 요약

특징 get_language() request.LANGUAGE_CODE
동작 원리 현재 활성화된 언어를 반환 HTTP 요청에서 설정된 언어 반환
설정 기준 번역 시스템의 활성화된 언어 LocaleMiddleware가 설정한 언어
사용 가능 위치 Django 코드 전반에서 사용 가능 View 함수 내에서 사용 가능
반환값 활성화된 언어 코드 요청 기반 언어 코드

4. 활용 방법 비교

  • get_language() 활용

    현재 활성화된 언어를 기반으로 콘텐츠나 로직을 분기할 때.

    예: 특정 언어에서만 실행되는 기능을 구현하거나 번역된 문자열을 선택적으로 사용해야 할 때.

  • request.LANGUAGE_CODE 활용

    사용자가 요청한 언어에 따라 맞춤형 콘텐츠를 제공할 때.

    예: 사용자 요청에 따라 동적으로 응답 언어를 변경해야 하는 API.

5. 결론

get_language()request.LANGUAGE_CODE는 Django에서 다국어 지원을 효과적으로 구현하기 위해 제공되는 두 가지 도구이지만, 각각의 용도와 동작 방식은 다릅니다.

get_language()는 현재 활성화된 언어를 기반으로 작업해야 할 때 유용합니다. 번역 시스템에 의해 설정된 언어로 동작하므로, 템플릿이나 번역 문자열 처리가 필요한 상황에서 사용하기 적합합니다.

request.LANGUAGE_CODE는 사용자의 HTTP 요청에 포함된 언어 정보를 바탕으로 작업합니다. 사용자 선호 언어에 따라 콘텐츠를 조정하거나 다국어 API 응답을 제공하는 데 유용합니다.

이 두 도구를 적절히 활용하면 Django 애플리케이션에서 보다 정교한 다국어 지원을 구현할 수 있으며, 사용자 경험을 크게 향상시킬 수 있습니다. 상황에 맞는 도구를 선택하여 효율적이고 유연한 다국어 서비스를 제공해보세요! 😊