Google Translate는 번역 작업에 널리 사용되는 도구로, API와 웹 기반 서비스를 통해 강력한 번역 성능을 제공합니다. 그러나, Google Translate CLI를 이용하는 것은 특정 상황에서 더 실용적이고 경제적인 선택이 될 수 있습니다. 이 글에서는 Google Translate CLI를 사용하는 이유와 방법에 대해 포괄적으로 설명하겠습니다.
1. Google Translate CLI란?
Google Translate CLI는 명령줄 환경에서 Google Translate의 번역 기능을 활용할 수 있도록 도와주는 도구입니다. 이 도구는 Google Translate 웹 인터페이스를 비공식적으로 호출하며, 대표적으로 translate-shell이 있습니다.
• translate-shell은 Google Translate API를 사용하지 않고, Google Translate의 웹 서버를 호출합니다.
• CLI(Command Line Interface)에서 실행되며, 스크립트를 통해 다양한 번역 작업을 자동화할 수 있습니다.
2. Google Translate CLI를 사용하는 이유
1. 비용 절감:
• Google Translate API는 요청당 비용이 부과되며, 대규모 번역 작업에는 많은 비용이 들 수 있습니다.
• CLI 도구는 무료로 Google Translate를 활용할 수 있습니다(다만, 상업적 사용에는 주의해야 함).
2. 간편한 설치 및 사용:
• translate-shell은 간단히 설치하여 바로 사용할 수 있습니다.
• 추가 설정 없이 명령어 하나로 번역을 실행할 수 있습니다.
3. 자동화된 워크플로우:
• CLI 도구는 Bash, Python 등과 쉽게 통합되어 대규모 자동화 번역 작업에 적합합니다.
• 예를 들어, 여러 Markdown 파일을 순차적으로 번역하거나, 텍스트 파일의 특정 섹션만 번역하는 스크립트를 작성할 수 있습니다.
4. 다양한 번역 엔진 지원:
• 기본적으로 Google Translate를 호출하지만, Bing Translator, Yandex Translate 등 다른 엔진으로 변경 가능.
5. 데이터 전송 통제:
• API를 사용할 경우 번역 요청 데이터가 Google Cloud에 저장될 수 있으나, CLI는 요청 데이터가 저장되지 않습니다.
3. Google Translate CLI 설치 및 사용 방법
3.1 설치
translate-shell을 설치하려면 다음 단계를 따릅니다.
1. Homebrew를 이용한 설치 (macOS 및 Linux):
brew install translate-shell
2. 다른 방법으로 설치 (Linux):
sudo apt-get install translate-shell
3.2 기본 사용법
• 일반 텍스트 번역:
trans -b "Hello, world!" -s en -t ko
결과: 안녕, 세상!
• 파일 번역:
Bash 스크립트를 통해 텍스트 파일의 내용을 번역할 수 있습니다.
cat input.txt | trans -b -s en -t ko > output.txt
• 언어 감지:
trans -id "Bonjour tout le monde"
결과: 프랑스어로 감지.
4. CLI와 API의 비교
항목 Google Translate CLI Google Translate API
비용 무료 유료 (1백만 자당 약 $20)
사용 편의성 간단한 설치와 빠른 실행 API 키 발급과 설정 필요
상업적 사용 제한적 (Google 약관 위반 가능) 안정적이고 법적 사용 가능
성능 Google Translate 웹과 동일 Google Translate 웹과 동일
요청량 제한 과도한 요청 시 IP 차단 가능 요청량 제한 없음 (요금제에 따라)
5. CLI 사용 시 유의사항
1. 과도한 요청 방지:
• Google Translate CLI는 공식 API가 아니므로, 과도한 요청 시 IP 차단 위험이 있습니다. 요청 사이에 지연 시간을 추가하세요.
import time
for text in texts_to_translate:
print(translate_text(text))
time.sleep(1) # 요청 간 1초 대기
2. 상업적 사용 주의:
• translate-shell은 비공식 도구로, 상업적 사용 시 Google의 약관을 위반할 가능성이 있습니다.
3. 긴 텍스트 처리:
• Google Translate는 5000자 제한이 있으므로, 긴 텍스트는 분할하여 처리해야 합니다.
def split_text(text, max_length=5000):
return [text[i:i+max_length] for i in range(0, len(text), max_length)]
6. 언제 CLI를 사용해야 할까?
• 개인 프로젝트:
• 간단한 번역 작업이 필요하거나, 비상업적 목적으로 번역을 자동화하려는 경우.
• 테스트 목적으로:
• API 비용을 부담하기 전에, 번역 작업의 워크플로우를 테스트할 때.
• 소규모 데이터:
• 번역 요청량이 적고, 긴 텍스트를 처리하지 않아도 되는 경우.
결론
Google Translate CLI는 빠르고 간단한 번역 작업에 적합하며, 번역 품질은 Google Translate 웹 서비스와 동일합니다. 그러나 상업적 사용이나 대규모 프로젝트에는 Google Translate API를 사용하는 것이 안정성과 법적 문제를 해결하는 데 더 나은 선택이 될 수 있습니다.
md파일 변환 예시
import subprocess
import re
def translate_text(text, source_lang='en', target_lang='ko'):
if not text.strip():
return text # 빈 텍스트는 그대로 반환
try:
result = subprocess.run(
['trans', '-b', f'{source_lang}:{target_lang}', text],
capture_output=True,
text=True,
timeout=10 # 타임아웃 설정
)
if result.returncode == 0:
return result.stdout.strip()
else:
return f"Error in translation: {result.stderr}"
except Exception as e:
return f"System error: {str(e)}"
def process_markdown_paragraph(paragraph):
skip_patterns = [
r"^```", # 코드 블록
r"^\s*$", # 빈 줄
r"!$begin:math:display$.*?$end:math:display$$begin:math:text$.*?$end:math:text$", # 이미지
r"$begin:math:display$.*?$end:math:display$$begin:math:text$.*?$end:math:text$", # 링크
r"^[*-]\s", # 리스트
r"^\d+\.\s", # 번호 리스트
]
if any(re.match(pattern, paragraph) for pattern in skip_patterns):
return paragraph # 번역 제외 대상을 그대로 반환
# 텍스트 번역
return translate_text(paragraph.strip())
def translate_markdown_file(input_path, output_path, source_lang="en", target_lang="ko"):
with open(input_path, "r", encoding="utf-8") as file:
content = file.read()
paragraphs = content.split('\n\n') # 문단 단위로 분리
translated_paragraphs = [process_markdown_paragraph(paragraph) for paragraph in paragraphs]
with open(output_path, "w", encoding="utf-8") as file:
file.write('\n\n'.join(translated_paragraphs))
print(f"번역 완료! 결과는 {output_path}에 저장되었습니다.")
# 예제 실행
input_md = '' # 원본 Markdown 파일 경로
output_md = "clean_translated_output.md" # 번역 결과 파일 경로
translate_markdown_file(input_md, output_md)
You know what's cooler than magic? Math.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!