본문 바로가기
[AWS]/MEGA-SAM-FM

파이썬 gettext 이용하여 다국어 번역기 만들기

by SAMSUNG CLOUD-OKY 2021. 10. 31.
반응형

 

gettext란 ? 

리소스를 적게 사용하여 다양한 언어로 번역할 수 있도록 개발된 리눅스 프로그램이다.

무려 1995년도에 만들어졌지만 아직까지 유용하게 쓰여지고 있다.

po 파일만 만들면 쉽게 지정한 언어로 번역을 할 수 있다.

po 파일을 쉽게 작성하기 위한 poedit(https://snapcraft.io/poedit)이라는 유틸리티도 있다. 


  1. gettext 를 import 한 python 파일 만들기
    print_('변수')로 작성한 내용이 po 파일에 생성된다.
# test_gettext.py
# -*- coding: utf-8 -*-
import gettext  
import re  
import sys  
reload(sys)  
sys.setdefaultencoding('utf-8')

t = gettext.translation('gettext_test', 'locale', languages=['ko'], fallback=True)  
_ = t.ugettext

print _('HelloWorld')  
print _('Python')

2위의 py 파일이 있는 폴더로 이동하여 po 파일 생성 명령어 입력~/practice $ xgettext -d gettext_test test_gettext.py

  1. 생성된 po 파일 확인
    po 파일은 사람이 직접 읽고 편집할 수 있는 파일이며, 한개의 po 파일은 하나의 번역할 언어에 사용된다. ~/practice $ ls test_gettext.py gettext_test.po
  2. po 파일을 열어서 번역할 단어들을 1:1 매칭 시켜서 작성한다.
    content-type과 Content-Transfer-Encoding 도 utf-8로 변경해준다.~/practice $ cat gettext_test.po # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-06-27 10:26+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: utf-8\n" #: test_gettext.py:21 msgid "HelloWorld" msgstr "안녕디지몬" #: test_gettext.py:22 msgid "Python" msgstr "파이썬"
  1. po 파일을 저장할 폴더 생성
    한글 po 파일을 사용하기 위해 test_gettext.py 파일이 있는 아래 경로에서
    /locale/ko_KR/LC_MESSAGES 경로를 만들어준다.mkdir -p /home/practice/locale/ko_KR/LC_MESSAGES
  1. 생성한 폴더로 gettext_tet.po 파일 복사cp gettext_test.po /home/practice/locale/ko_KR/LC_MESSAGES/gettext_test.po
  2. po 파일이 있는 위치에서 아래의 명령어 입력으로 gettext_test.mo 파일 생성
    mo 파일은 프로그램에서 읽어들이는 파일이고, 바이너리 파일이다. cd /home/practice/locale/ko_KR/LC_MESSAGES/ $ msgfmt gettext_test.po -o gettext_test.mo
  3. test_gettext.py 파이썬 파일 실행하여 번역된 내용확인
    안녕디지몬
    파이썬

 

 

 

 

 



출처: https://minimilab.tistory.com/10 [MINIMI LAB]

반응형

댓글