Page tree
Skip to end of metadata
Go to start of metadata

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 링크 클릭
  • 화면 안내에 따라 텍스트 번역 후 저장

    • 저장시 변경 내용이 .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)

    • "1", "2"...
      • for loop의 키 값으로 사용되므로 아무거나 넣어도 무방함
      • "TEXT_SIGNUP": "TEXT_SIGNUP" (가능)
    • json validation check 하므로 문법에 맞게 넣을 것
  • Response
    • {
          "lang": "ko",
          "1": "회원가입",
          "2": "로그인"
      }