ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오픈소스로 구성하는 데브옵스 시스템 - AWX 한글화 작업
    DevOps 2018. 11. 15. 17:37

    이번에는 AWX의 한글화 작업을 진행해 보겠습니다.


    보통 AWX는 dockerhub에서 제공하는 이미지로 설치를 했었는데요. 처음에는 단순하게 Docker container 안에 locale 파일만 추가하면 될 줄 알았지만....결국에는 개발환경을 구축하고 소스코드를 수정해서 새로운 Docker image로 빌드까지 해야 했습니다.


    저의 개발환경은 아래와 같습니다.

    - OS : macOS Mojave

    - python 2.7, django 1.11.16, Docker 18.06.1-ce, git

    - IDE : PyCharm Pro , poediter


    개발환경은 본인이 편하신 환경으로 구축하시면 될 듯 합니다.


    개발환경 구축이 완료되면 AWX github project에서 소스를 clone 받아 주세요.

    clone이 완료되고 Project 구성을 확인해 보시면, 다국어 관련 파일은 locale과 ui 안에 존재하는 것을 확인할 수 있었습니다.

    locale의 경우에는 django에서 사용하는 다국어 파일이고, ui의 po 파일은 angular에서 사용하는 것으로 파악이 됩니다.



    우선 django에서 사용하는 locale의 다국어 파일은 django-admin 명령어를 통해서 생생해 줍니다. 

    참고로 명령을 실행하는 경로는 최상위 awx 디렉터리 입니다.

    django-admin makemessages -l ko


    그리고 ui의 po 파일은 poedit로 생성 합니다.


    실행 후 새 번역 만들기를 클릭해 ansible-tower-ui.pot 파일을 가져옵니다.


    열기를 클릭하시고 번역 언어는 한국어로 선택 합니다.


    로그인 화면에 Welcome to Ansible AWX! Please sign in. 메시지를 한글로 변역해 줍니다.


    저장을 합니다. 이 때 위치는 po 파일명은 ko로 설정합니다.


    여기까지 파일생성과 번역내용 적용이 완료 되었습니다.


    그런데 문제는 다국어 파일을 생성해도 ui의 경우 적용이 되지 않았습니다.

    ui의 경우 실행이 될 때 지원하는 locale을 지정을 해줘야 합니다. 해당 파일은 ui > client > src에 app.start.js 파일 입니다. 해당 파일을 열어 SUPPORTED_LOCALES 상수에 ko도 추가해 줍니다.


    더불어 app.start.js의 내용을 보시면 대략적인 다국어 처리의 로직이 파악 됩니다.

    위의 코드에서도 보이지만 언어 파일이 languages라는 디렉터리 안에 있는것으로 파악이 됩니다. 또한 json 파일을 가져와 변경을 해주는 것으로 보입니다. 다만, 아직 빌드를 하지 않아서 languages와 json은 현재 존재하지 않습니다.

    그래서 터미널창에서 아래 명령어로 빌드를 진행합니다. 

    이때도 명령을 실행하는 경로는 최상위 awx 디렉터리 입니다.

    make sdist


    빌드가 완료되면 ui > client 하위와 ui > static 하위에 languages라는 디렉터리가 생긴것을 확인할 수 있습니다. 더불어 그안에 각 언어코드별 json 파일도 존재하고 있습니다.


    또한 기존에 없던 js 디렉터리도 생성이 되었고, 여기에는 app.어쩌구.js 파일이 생성되어 있습니다. 이 파일안에 SUPPORTED_LOCALES로 검색해서 위의 app.start.js 파일에 적용한 ko 코드가 정상적으로 반영이 되었는지 확인 합니다.


    위 모든 작업이 정상적으로 진행 되셨다면, 다음글에서는 개발모드로 docker 컨테이너를 실행하는 방법에 대해 다뤄보도록 하겠습니다.



Designed by Tistory.