728x90
반응형

Googletrans란?

주의점

공식 Google 번역 API를 사용하지 않고 우회하여 translate.google.com 를 호출하여 사용하기 때문에

비정상적인 호출에 대하여 API가 구글에 의해서 Ban이 당할 수 있으나 빠르게 구현하여 사용할 수 있다는 것이다.

※ 실제 서비스 구축에 대해서는 안정성있는 공식 API를 사용해야한다.

 

라이센스 및 제한

Googletrans는 Google 번역 API를 구현한 무료 무제한 파이썬 라이브러리이다.

이것은 Google 번역 Ajax API를 사용하여 감지 및 번역과 같은 메소드를 호출한다.

 

특징

  • 빠르고 안정적이다. translate.google.com에서 사용하는 것과 동일한 서버를 사용한다.
  • 자동 언어 감지
  • 대량 번역
  • 맞춤형 서비스 URL
  • 연결 풀링(requests.Session 사용의 이점)
  • HTTP/2 지원

 

참고사항

  • 단일 텍스트의 최대 글자 수는 15k이다.
  • Google 번역 웹 버전의 제한으로 인해 이 API는 라이브러리가 항상 제대로 작동한다고 보장하지 않는다. (그래서 안정성에 신경쓰지 않는다면 이 라이브러리를 사용해야한다.)
  • 안정적인 API를 사용하고 싶다면 구글의 공식 번역 API를 적극 추천
  • HTTP 5xx 오류 또는 #6과 같은 오류가 발생하면 Google이 클라이언트 IP 주소를 금지했기 때문일 수 있다.

 

빠르게 시작하기

1. 설치

3.0.0 버전까지 AttributeError: 'NoneType' object has no attribute 'group' 오류가 발생하여 실행이 잘 되지 않는 이슈가 있었기때문에 4.0 버전을 지정하여 설치를 해준다.

pip install googletrans==4.0.0-rc1
from googletrans import Translator

translator = Translator()

2. 번역 실행

인자값 없이 호출일 경우는 번역 언어가 기본적으로 en이 된다.

translation = translator.translate('안녕하세요.')

print('-' * 30)
print('>>> src: {}'.format(translation.src))
print('>>> dest: {}'.format(translation.dest))
print('>>> origin text: {}'.format(translation.origin))
print('>>> traslated text: {}'.format(translation.text))
print('>>> pronunciation: {}'.format(translation.pronunciation))

------------------------------
>>> src: ko
>>> dest: en
>>> origin text: 안녕하세요.
>>> traslated text: Hello.
>>> pronunciation: None

 

dest 라는 keyword 인자값으로 명시적으로 번역 언어를 지정할 수 있다.

translation = translator.translate('안녕하세요.', dest='ja')

print('-' * 30)
print('>>> src: {}'.format(translation.src))
print('>>> dest: {}'.format(translation.dest))
print('>>> origin text: {}'.format(translation.origin))
print('>>> traslated text: {}'.format(translation.text))
print('>>> pronunciation: {}'.format(translation.pronunciation))

------------------------------
>>> src: ko
>>> dest: ja
>>> origin text: 안녕하세요.
>>> traslated text: こんにちは。
>>> pronunciation: Kon'nichiwa.

 

src도 keyword 인자값으로 명시적으로 지정할 수 있으나 생략시 자동으로 감지해준다.

translation = translator.translate('안녕하세요.', src='ko', dest='ja')

print('-' * 30)
print('>>> src: {}'.format(translation.src))
print('>>> dest: {}'.format(translation.dest))
print('>>> origin text: {}'.format(translation.origin))
print('>>> traslated text: {}'.format(translation.text))
print('>>> pronunciation: {}'.format(translation.pronunciation))

3. 언어 감지

detection = translator.detect('こんにちは。')

print('-' * 30)
print('>>> lang: {}'.format(detection.lang))
print('>>> confidence: {}'.format(detection.confidence))

지원 언어

SPECIAL_CASES = {
    'ee': 'et',
}

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',
}
728x90
반응형