Django - 다국어 번역 지원하기

서비스를 만들다 보면 여러가지 텍스트가 많이 있다. 한국사람만 쓰면 그냥 한글로 하면 되는데, 국제화 시대에 맞추려면 이런 표기말들은 언어별 테이블에서 가져다 쓸 수 있도록 해야 한다.

 

친절하게 이런 기능들은 이미 Django 에 내장되어 있다.

일단 아래 함수를 먼저 알아야 하고, 그 함수를 라벨이나 다국어가 필요한 곳에는 반드시 적용해 둬야 한다.

ugettext 함수나 ugettext_lazy 함수로 라벨을 등록해 두자.

 

from django.db import models
from django.contrib.auth.models import User
from django.utils.translation import ugettext_lazy as _

class Article(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name=_("Author"))
    title = models.CharField(max_length=255, default='', null=False, verbose_name=_("Title"))

...

ugettext vs ugettext_lazy

Translation 모듈에 있는 ugettext와 ugettext_lazy에는 약간의 차이가 있다.

  • ugettext를 사용해야 하는 경우
    • views.py와 같이 매번 새로 실행되는 경우
  • ugettext_lazy를 사용해야 하는 경우
    • Django start-up 때 한번만 실행되는 코드의 경우 (apps.py, models.py, forms.py)

 

자세한 내용은 아래 링크로 가서 보시면 완전 설명 짱!!

https://iam.namjun.kim/django/2019/01/29/django-for-international-service/

 

세계로 뻗어나가는 웹 서비스를 만들어보자

Django Translation을 이용한 다국어 지원 방법

iam.namjun.kim

 

사전의 중요성

Pixabay 님의 사진, 출처: Pexels