2009-12-07 3 views
2

이 유틸리티는 Google의 번역 API를 사용하여 다양한 언어를 서로 번역하는 pytranslate입니다. 설명 된대로 정확하게 작동합니다.선택한 텍스트를 명령 줄 인수로 보냅니다.

그러나 이해할 수없는 단어를 선택하는 데 지쳐서 명령을 중간 클릭하십시오.

pytranslate WORD 

내가 단어를 선택하면 감지 할 수있는 능력, 또는 내 마우스로 일련의 단어가있는 프로그램/스크립트가 있는가, 다음 선택에 위의 명령을 실행 : 명령의 형식은 같다 터미널 창에서 WORD 대신 텍스트?

예 :

선택한 텍스트 :

Bonjour mondiale... 

결과 명령/결과 :

pytranslate Bonjour mondiale 
Detected source language: fr 
Hello World 

답변

4
#!/bin/bash 
pytranslate "$(xsel -p)" 

이제 단지 (즉,이 사용자의 PATH에 포함되어 있는지 확인) ~/bin에 넣고, 그것을 실행합니다. xsel 패키지를 설치해야 할 수도 있습니다. 기본 선택 버퍼의 현재 내용을 가져 와서 pytranslate로 전달합니다.

단추로 사용하려면 터미널에서 실행하는 실행 프로그램을 만들고 bash의 읽기 명령을 사용하여 "계속하려면 Enter 키를 누릅니다"를 수행하십시오.

+0

똑똑한 하나의 라이너. – torger

0

:이 답변 Windows를 사용하지 않은 질문자에게 쓸모가 없었습니다 . 제목이 OS를 지정하지 않는다면이 방법으로 올지도 모르는 Windows 사용자에게 맡겨 둘 것입니다.


pywin32 패키지와 win32clipboard 모듈을 사용하면 쉽게 스스로를 채찍질 할 수 있습니다. 예를 들어, this question을 참조하십시오.

저는 클립 보드를 주기적으로 몇 초마다 폴링 한 루틴을 사용하여이 작업을 수행했습니다. 변경 사항을 발견 할 때마다 내용을 파악하고 그 작업을 수행했습니다. 귀하의 경우, 하위 프로세스 패키지를 사용하여 텍스트로 pytranslate를 호출하십시오.

+0

중간 단추가 마지막으로 선택한 텍스트를 지나치므로 나는 그가 * nix에 있다고 추측합니다. – richo

+0

또한 방금 전에 우연히 발견 한 Ubuntu-9.04 태그) BTW OP select 태그가 select() 시스템 호출로 처리 할 가능성이 높습니다. – richo

+0

아, 좋은 지적이야. 문구 "터미널 창"의 사용은 너무 멀리 포기해야합니다. 또한 "우분투 - 9.04"태그. :-) –

1

PyGTK 패키지에서 클립 보드 지원을 사용하여 작업을 수행 할 수 있습니까? 그것은 "기본"X 클립 보드에 액세스 할 수 있다고 주장합니다.이 클립 보드는 일반적으로 선택한 텍스트를 찾을 수있는 곳입니다.

2

로저 페이트의 훌륭한 라이너에서 영감을 얻으면 나는 파이썬 번역을위한 간단한 루핑 스크립트를 만들었습니다. 이것은 현재 잠정적입니다 - 아직 오류 잡기를 구현하지 않았으므로 새로운 수정을 기다립니다.

#!/bin/bash 
# Primary Clipboard poller using xsel (middle click) and pytranslate 
# Checks for changes every 1 second 
# If change has occured, a command is executed (pytranslate here) 
########## Information ########## 
# It now stores definitions in a text file - saves bandwith and reduces hits on google (caseless) 
# Works for Romance languagse 
#TODO 
# Character based langauges 
# Catch errors 

if [ ! -e "pytranslatecache" ]; then 
touch pytranslatecache 
fi 

while [ 1 ] 
do 
    OLDENTRY="$(xsel -p)" 
    sleep 1 
    NEWENTRY="$(xsel -p)" 
    if [ "$NEWENTRY" != "$OLDENTRY" ] ; then 
    if [ "$(grep -F -o -i "$NEWENTRY" pytranslatecache)" = "$NEWENTRY" ] ; then 
    echo "From Cache:" 
     echo "$(grep -i "$NEWENTRY" pytranslatecache)" 
    else 
    DEFINITION=""$(pytranslate -s fr "$(xsel -p)")"" 
     echo "$NEWENTRY"":"$DEFINITION 
     echo "$NEWENTRY"":"$DEFINITION >> pytranslatecache 
    fi 
    fi 
# Catch Errors - Commands 
    if [ $? != 0 ]; then 
    { 
     echo "Failed to translate string." 
    } fi 
done 
관련 문제