다국어 설정하기 - Tirrilee/TechTalk GitHub Wiki
MIDDLEWARE = [
...
'django.middleware.locale.LocaleMiddleware', # 이 부분 추가
'django.middleware.common.CommonMiddleware',
...
]
LANGUAGES = [
('ko', _('Korean')),
('en', _('English')),
]
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
)위 파일을 설치 후 환경변수 설정을 해주자
$ xgettext --version- 위 명령어가 정상 동작하면 성공
- cmd창을 열고 Python 가상환경에 들어가서 명령어를 쳐줘야한다.
$ python manage.py makemessages -l ko
$ python manage.py makemessages -l en파일이 생성된 후
$ python manage.py makemessages -a다음 명령어로 한번에 업데이트 가능하다.
{% load i18n %}
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>:: {% trans "html_title" %} ::</title>
...-
{% load i18n %}를 추가하고 - 다국어를 적용시킬 부분에
{% trans "html_title" %}이렇게 적어준 다음 -
$ python manage.py makemessages -a다음 명령어를 실행시킨다.
#: .\templates\Base\Base.html:7
msgid "html_title"
msgstr ""
- 생성된 파일을 보면 이런식으로
msgid가 설정된걸 볼 수 있다. -
msgstr에 언어별로 번역된 글을 적어주면 된다.
urlpatterns = [
path('', HomePage, name='home'),
path('/projects', ProjectListPage, name='projects'),
]urlpatterns += [
...
path('<str:lang>', include('App.urls')),
]def HomePage(request, lang):
translation.activate(lang)
return render(request, 'Home/HomePage.html', {
'lang':lang
})<a href="{% url 'App:projects' lang=lang %}">리스트 페이지</a>