서비스를 만들다 보면 여러가지 텍스트가 많이 있다. 한국사람만 쓰면 그냥 한글로 하면 되는데, 국제화 시대에 맞추려면 이런 표기말들은 언어별 테이블에서 가져다 쓸 수 있도록 해야 한다.
친절하게 이런 기능들은 이미 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/
끝