...물론 이 프로그램이 직접 번역하는 건 아니고, 천리안 트랜스위즈를 사용해서 번역을 해 줍니다. -_-; 원래는 HTML 파일을 번역하는 데 써 먹으려고 했던 거라서 거기에 대한 대비가 되어 있습니다. 코드는... 무지 지저분합니다 -_-
code snippet에도 올라 와 있습니다.
"""jktrans.py -- Meta Japanese-Korean translator using Chollian Transwiz
Kang Seonghoon (Tokigun) @ TokigunStudio 2005
Distributable under the GNU LGPL.
"""
import urllib, urllib2, time, re, sys
def translate(s, buf=32768):
"""Translate unicode string s, with buf-byte buffer. Returns UTF-8 string."""
avoidlist = ('image/', 'images/')
regexp = re.compile('(?:x-)?(?:shift[-_]?jis|sjis)|euc[-_]?jp|iso-2022-jp|euc[-_]?kr|ks[-_]?c?[-_]?5601(?:.1989)?', re.I)
def _translate(s):
_s = s
s = re.sub(regexp, 'utf-8', s.encode('utf-8'))
t = str(time.time())
for x in avoidlist:
s = s.replace(x, t+x.encode('base64')+t)
req = urllib2.Request(
'http://transwiz.chol.com/files1003/exec/experience_text.asp',
urllib.urlencode(
{'guid': '{3155F703-DB3B-447a-B5ED-130DC640E263}',
'trans_mode1': 'j', 'trans_mode2': 'k', 'trans_message': s}),
{'Referer': 'http://transwiz.chol.com/files1003/exec/main.asp'})
try: r = urllib2.urlopen(req).read()
except urllib2.HTTPError: return _s.encode('utf-8')
p1 = r.find('>', r.find('<TEXTAREA')) + 1
p2 = r.find('</TEXTAREA></TEXTAREA></td>', p1)
s = r[p1:p2]
for x in avoidlist:
s = s.replace(t+x.encode('base64')+t, x)
return s
t = u''; r = ''
for ss in s.splitlines():
t += ss + u'\n'
if len(t) > buf:
r += _translate(t)
t = ''
r += _translate(t)
return r
def detect_encoding(s):
"""Returns the encoding of given Japanese string."""
sa = s.decode('shift-jis', 'replace').count(u'\ufffd')
sb = s.decode('iso-2022-jp', 'replace').count(u'\ufffd')
sc = s.decode('utf-8', 'replace').count(u'\ufffd')
if sb > sa < sc: return 'shift-jis'
elif sc > sb < sa: return 'iso-2022-jp'
else: return 'utf-8'
if __name__ == '__main__':
if len(sys.argv) < 3:
print 'Usage: python %s <infile> <outfile>' % sys.argv[0]
else:
contents = file(sys.argv[1], 'rb').read()
contents = contents.decode(detect_encoding(contents), 'ignore')
file(sys.argv[2], 'wb').write(translate(contents))
- 토끼군
덤: 이 글을 올린 이후에도 이 프로그램이 정상 작동한다는 보장은 물론 없습니다.