Pythonで* nixのコンソールトランスレーターを作成する

こんにちは。 なじみのない英語の単語やフレーズに出会ったことは確かであり、ブラウザにアクセスし、オンライン翻訳者でウェブサイトを開いて翻訳する必要がありました。



Windowsファミリのオペレーティングシステム用の翻訳者は長い間存在していましたが、Unixシステムの場合、個人的にはまだ会っていません。



はじめに!



そして始めに、Pythonプログラミング言語で記述します。 ほとんどすべての* nixシステムにあります。

翻訳者を作成するには、標準のPythonセットに含まれていないライブラリsimplejsonが必要です。 公式ウェブサイトからダウンロードできます。



ダウンロードしたら、システムにインストールするか、アーカイブのsimplesjonフォルダーをPython実行可能ファイルの横に配置します。



simplejsonを手に入れましたか? translate.pyファイルを作成し、理論から実践へと進んでください。

nanoでさえ、何でもプログラムできますが、私はGeanyエディターを好みます。



このプロジェクト構造を取得する必要があります。





ライブラリには触れないので、translate.pyファイルに移動します。

必要なライブラリをインポートします。

 #!/usr/bin/python # -*- coding: utf-8 -*- import httplib import urllib2 import simplejson as json import sys
      
      









#!/usr/bin/python # -*- coding: utf-8 -*- import httplib import urllib2 import simplejson as json import sys











最も重要で唯一の機能

 user_agent = 'Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.4) Gecko/2008120916 Gentoo Firefox/3.0.4' #    User-Agent    def translate_handler(lang,body): body = ' '.join(body) if len(sys.argv)<2: print u'$ en/ru text'; return #     try: if lang=='ru': req = urllib2.Request(unicode(u'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s' % (urllib2.quote(body),u'en%7Cru')),'utf-8') #        ,     elif lang=='en': req = urllib2.Request(unicode(u'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s' % (urllib2.quote(body),u'ru%7Cen')),'utf-8') #      elif lang=='en': print str(unicode(body,'utf-8')) else: print u'Available languages: en, ru'; return req.add_header('User-Agent',user_agent) #     User-Agent reqf = urllib2.urlopen(req) #   except urllib2.HTTPError, e: print str(e) answ=json.load(reqf) #   json   if answ['responseStatus']!=200: print str(answ['responseStatus'])+': '+answ['responseDetails'] #           elif answ['responseData']: print answ['responseData']['translatedText'] else: print u'unknown error >_<' translate_handler(sys.argv[1],sys.argv[2:]) #  
      
      









user_agent = 'Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.4) Gecko/2008120916 Gentoo Firefox/3.0.4' # User-Agent def translate_handler(lang,body): body = ' '.join(body) if len(sys.argv)<2: print u'$ en/ru text'; return # try: if lang=='ru': req = urllib2.Request(unicode(u'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s' % (urllib2.quote(body),u'en%7Cru')),'utf-8') # , elif lang=='en': req = urllib2.Request(unicode(u'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s' % (urllib2.quote(body),u'ru%7Cen')),'utf-8') # elif lang=='en': print str(unicode(body,'utf-8')) else: print u'Available languages: en, ru'; return req.add_header('User-Agent',user_agent) # User-Agent reqf = urllib2.urlopen(req) # except urllib2.HTTPError, e: print str(e) answ=json.load(reqf) # json if answ['responseStatus']!=200: print str(answ['responseStatus'])+': '+answ['responseDetails'] # elif answ['responseData']: print answ['responseData']['translatedText'] else: print u'unknown error >_<' translate_handler(sys.argv[1],sys.argv[2:]) #













念のため、コード全体を公開します。



 #!/usr/bin/evn python # -*- coding: utf-8 -*- import httplib import urllib2 import simplejson as json import sys user_agent = 'Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.4) Gecko/2008120916 Gentoo Firefox/3.0.4' def translate_handler(lang,body): body = ' '.join(body) if len(sys.argv)<2: print u'$ en/ru text'; return try: if lang=='ru': req = urllib2.Request(unicode(u'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s' % (urllib2.quote(body),u'en%7Cru')),'utf-8') elif lang=='en': req = urllib2.Request(unicode(u'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s' % (urllib2.quote(body),u'ru%7Cen')),'utf-8') elif lang=='en': print str(unicode(body,'utf-8')) else: print u'Available languages: en, ru'; return req.add_header('User-Agent',user_agent) reqf = urllib2.urlopen(req) except urllib2.HTTPError, e: print str(e) answ=json.load(reqf) if answ['responseStatus']!=200: print str(answ['responseStatus'])+': '+answ['responseDetails'] elif answ['responseData']: print answ['responseData']['translatedText'] else: print u'unknown error >_<' translate_handler(sys.argv[1],sys.argv[2:])
      
      









#!/usr/bin/evn python # -*- coding: utf-8 -*- import httplib import urllib2 import simplejson as json import sys user_agent = 'Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.4) Gecko/2008120916 Gentoo Firefox/3.0.4' def translate_handler(lang,body): body = ' '.join(body) if len(sys.argv)<2: print u'$ en/ru text'; return try: if lang=='ru': req = urllib2.Request(unicode(u'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s' % (urllib2.quote(body),u'en%7Cru')),'utf-8') elif lang=='en': req = urllib2.Request(unicode(u'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s' % (urllib2.quote(body),u'ru%7Cen')),'utf-8') elif lang=='en': print str(unicode(body,'utf-8')) else: print u'Available languages: en, ru'; return req.add_header('User-Agent',user_agent) reqf = urllib2.urlopen(req) except urllib2.HTTPError, e: print str(e) answ=json.load(reqf) if answ['responseStatus']!=200: print str(answ['responseStatus'])+': '+answ['responseDetails'] elif answ['responseData']: print answ['responseData']['translatedText'] else: print u'unknown error >_<' translate_handler(sys.argv[1],sys.argv[2:])













これで、ソフトウェア部分の開発が完了しました。 この方法でファイルを確認して実行できます。

python translate.py en hello-テキストを英語に翻訳します

python translate.py ru hello-テキストをロシア語に翻訳します



「しかし、これは便利ではありません」とあなたは言います。 実際、このような大きな起動コマンドをコンソールに入力するのは本当に難しいです。



解決策



プロジェクトフォルダーを取得して、たとえば/ usr / shareなどのディレクトリに移動します

そして/ usr / share / translateを取得します



次に、BINDIR'e(私のdebian-/ usr / bin)で、2つのファイルenとruを作成します。



ファイル/ usr / bin / ruの内容:


python /usr/share/translate/translate.py ru $$*





ファイル/ usr / bin / enの内容:


python /usr/share/translate/translate.py en $$*







合計:



このシステムには、それぞれenとruの2つの新しいコマンドがあります。

使いやすくなりました。翻訳用のテキストまたは翻訳用のテキスト



あなたはまだこのようにzayuzatすることができます:

 ferym@ferym-desktop:~$ ping -c 3 ya.ru | xargs ru $* PING ya.ru (77.88.21.3) 56 (84)  . 64   www.yandex.ru (77.88.21.3): icmp_seq = 1 TTL = 60  = 6,20  64   www.yandex.ru (77.88.21.3): 2 = icmp_seq TTL = 60  = 4,10  64   www.yandex.ru (77.88.21.3): icmp_seq = 3 TTL = 60  = 3,78  --- ya.ru   --- 3 , , 3 , 0%  ,  2001ms RTT  /  /  / mdev = 3.787/4.698/6.207/1.074 
      
      











短所:


ほとんどすべてのプログラムには欠点があります。これはローカルデータベースがないため、翻訳全体がインターネット経由で行われます。 しかし、インターネットがあらゆる家庭にあるインターネット技術の時代に-これは問題ではないと思います。



ご清聴ありがとうございました。



UPD:私は誰にも自分の意見を押し付けません。



All Articles