FrontEnd에서 번역 기능 이용하기
- 번역이 필요한 모든 텍스트는 키 값(변수)으로 사용한다.
alert(TEXT_LOGIN); // OK
alert("로그인"); // NG
새로 추가한 텍스트는 관리를 위해 아래 위치에 업데이트 한다.
파일: /uconnec-server/things/texts.py from django.utils.translation import gettext as _ TEXT_LIST_COMMON = { _('TEXT_UCONNEC'), } TEXT_LIST_ACCOUNTS = { _('TEXT_SIGNUP'), _('TEXT_LOGIN'), }
_('<키 값>'), 형식으로 추가함
- 번역 텍스트는 이 곳에 추가 안 함(별도 텍스트 파일로 관리)
- 비슷한 항목별로 적절히 categorize 시킴 (보기 편한 목적, 기능적으로는 상관 없음)
- 이곳(및 Django project 내에)에 gettext(as _) 형식으로 적어둬야 Django 에서 텍스트를 모아줌
- 텍스트 추가 후 아래 명령어 입력
~/uconnec-server$ python manage.py makemessages -a
/uconnec-server/uconnec/locale 에 en / kr 각각 django.po 파일이 생성 및 업데이트 됨
Cannot find msgfmt error 발생할 경우
$ brew link gettext --force
텍스트 번역하기
- Django 의 dev server 혹은 상용 서버의 admin 페이지 접속
- 하단의 Translations 링크 클릭
- 직접 접속 가능 (Admin 권한 필요)
- 화면 안내에 따라 텍스트 번역 후 저장
- 저장시 변경 내용이 .po 파일에 업데이트 되며 .mo 파일(실제 gettext가 사용하는 binary file) 자동 생성됨
번역 API 사용하기
- API address: /things/translation/
- method: POST
- media type: application/json
- content
{ "lang": "ko", "1": "TEXT_SIGNUP", "2": "TEXT_LOGIN" }
"lang" (optional)
- 번역하길 원하는 Language code
- 미입력시 현재 사용중인 LANGUAGE_CODE로 번역함
- "1", "2"...
- for loop의 키 값으로 사용되므로 아무거나 넣어도 무방함
- "TEXT_SIGNUP": "TEXT_SIGNUP" (가능)
- json validation check 하므로 문법에 맞게 넣을 것
- Response
{ "lang": "ko", "1": "회원가입", "2": "로그인" }