반응형

Python의 googletrans 라이브러리를 사용하여 텍스트와 문장을 다른 언어로 빠르게 번역할 수 있습니다. 매우 간단하며 몇 줄의 코드만 있으면 됩니다.


Install

Python 환경에서 간단하게 googletrans만 설치하면 사용이 가능합니다. pip 를 이용하여 googletrans 설치를 진행하면 3.0.0 버전으로 설치가 되지만 3.0.0 버전은 오류가 있으니 아래와 같이 버전을 지정하여 4.0.0rc1 버전으로 설치하시기 바랍니다.

pip install googletrans==4.0.0rc1

Import packages

from googletrans import Translator

options = ['text', 'file']

Class declaration

Googletrans는 Google Translate API를 이용하여 구현한 Python 라이브러리이고 무료입니다. 이것은 현재 Google에서 제공하는 번역기 Google Translate Ajax API와 동일한 method를 사용합니다.

class Google_Translator:
    def __init__(self):
        self.translator = Translator()
        self.result = {'src_text': '', 'src_lang': '', 'tgt_text': '', 'tgt_lang': ''}

    def translate(self, text, lang='en'):
        translated = self.translator.translate(text, dest=lang)
        self.result['src_text'] = translated.origin
        self.result['src_lang'] = translated.src
        self.result['tgt_text'] = translated.text
        self.result['tgt_lang'] = translated.dest

        return self.result

    def translate_file(self, file_path, lang='en'):
        with open(file_path, 'r') as f:
            text = f.read()
        return self.translate(text, lang)

translator.translate() method의 파라미터는 아래와 같습니다.

  • text : 원본 텍스트
  • dest : 번역 할 언어
  • src : 원본 텍스트 언어 (지정하지 않으면 자동으로 언어 감지)
더보기

지원 언어 

LANGUAGES = {
    'af': 'afrikaans',
    'sq': 'albanian',
    'am': 'amharic',
    'ar': 'arabic',
    'hy': 'armenian',
    'az': 'azerbaijani',
    'eu': 'basque',
    'be': 'belarusian',
    'bn': 'bengali',
    'bs': 'bosnian',
    'bg': 'bulgarian',
    'ca': 'catalan',
    'ceb': 'cebuano',
    'ny': 'chichewa',
    'zh-cn': 'chinese (simplified)',
    'zh-tw': 'chinese (traditional)',
    'co': 'corsican',
    'hr': 'croatian',
    'cs': 'czech',
    'da': 'danish',
    'nl': 'dutch',
    'en': 'english',
    'eo': 'esperanto',
    'et': 'estonian',
    'tl': 'filipino',
    'fi': 'finnish',
    'fr': 'french',
    'fy': 'frisian',
    'gl': 'galician',
    'ka': 'georgian',
    'de': 'german',
    'el': 'greek',
    'gu': 'gujarati',
    'ht': 'haitian creole',
    'ha': 'hausa',
    'haw': 'hawaiian',
    'iw': 'hebrew',
    'he': 'hebrew',
    'hi': 'hindi',
    'hmn': 'hmong',
    'hu': 'hungarian',
    'is': 'icelandic',
    'ig': 'igbo',
    'id': 'indonesian',
    'ga': 'irish',
    'it': 'italian',
    'ja': 'japanese',
    'jw': 'javanese',
    'kn': 'kannada',
    'kk': 'kazakh',
    'km': 'khmer',
    'ko': 'korean',
    'ku': 'kurdish (kurmanji)',
    'ky': 'kyrgyz',
    'lo': 'lao',
    'la': 'latin',
    'lv': 'latvian',
    'lt': 'lithuanian',
    'lb': 'luxembourgish',
    'mk': 'macedonian',
    'mg': 'malagasy',
    'ms': 'malay',
    'ml': 'malayalam',
    'mt': 'maltese',
    'mi': 'maori',
    'mr': 'marathi',
    'mn': 'mongolian',
    'my': 'myanmar (burmese)',
    'ne': 'nepali',
    'no': 'norwegian',
    'or': 'odia',
    'ps': 'pashto',
    'fa': 'persian',
    'pl': 'polish',
    'pt': 'portuguese',
    'pa': 'punjabi',
    'ro': 'romanian',
    'ru': 'russian',
    'sm': 'samoan',
    'gd': 'scots gaelic',
    'sr': 'serbian',
    'st': 'sesotho',
    'sn': 'shona',
    'sd': 'sindhi',
    'si': 'sinhala',
    'sk': 'slovak',
    'sl': 'slovenian',
    'so': 'somali',
    'es': 'spanish',
    'su': 'sundanese',
    'sw': 'swahili',
    'sv': 'swedish',
    'tg': 'tajik',
    'ta': 'tamil',
    'te': 'telugu',
    'th': 'thai',
    'tr': 'turkish',
    'uk': 'ukrainian',
    'ur': 'urdu',
    'ug': 'uyghur',
    'uz': 'uzbek',
    'vi': 'vietnamese',
    'cy': 'welsh',
    'xh': 'xhosa',
    'yi': 'yiddish',
    'yo': 'yoruba',
    'zu': 'zulu',
    }

Run

간단하게 프롬프트에서 입력을 받아 처리하도록 만들었습니다. (AttributeError: 'NoneType' object has no attribute 'group' 오류 발생 시 googletrans uninstall 후 4.0.0rc1 버전으로 재설치하시기 바랍니다.)

if __name__ == '__main__':
    translator = Google_Translator()

    # Select the language you want to translate to
    tgt_lang_code = input('# Enter language code (Default: ko): ')

    if tgt_lang_code == '':
        tgt_lang_code = 'ko'

    print('>> You chose: {}\n'.format(tgt_lang_code))

    # Select the option you want to use
    input_message = '# Pick an option: text or file: \n'

    for index, option in enumerate(options):
        input_message += f'{index + 1}. {option}\n'

    input_message += 'Enter your choice: '

    option = input(input_message)

    print('>> You chose: {}\n'.format(options[int(option) - 1]))

    # Translate the text
    if option == '1':
        input_text = input('Press Enter to translate: ')
        result = translator.translate(input_text, tgt_lang_code)

        print('[{}] -> [{}]'.format(result['src_lang'], result['tgt_lang']))
        print('=' * 50)
        print('Source Text : {}'.format(result['src_text']))
        print('Target Text : {}'.format(result['tgt_text']))
    # Translate the file
    elif option == '2':
        file_path = input('Enter file path: ')
        result = translator.translate_file(file_path, tgt_lang_code)

        print('[{}] -> [{}]'.format(result['src_lang'], result['tgt_lang']))
        print('=' * 50)
        print('Source Text : [{}]\n'.format(result['src_text']))
        print('Target Text : [{}]'.format(result['tgt_text']))

텍스트를 입력하여 번역 수행

파일을 읽어 번역 수행


Source

[ GitHub ] translator

반응형