2

このユーティリティpytranslateを見つけました。これは、Google の翻訳 API を使用してさまざまな言語を相互に翻訳します。説明どおりに機能します。

しかし、理解できない単語を選択して中クリックしてコマンドを実行するのにはうんざりしています。コマンド形式は次のとおりです。

pytranslate WORD

マウスで単語または一連の単語を選択したことを検出し、ターミナル ウィンドウの WORD の代わりに選択したテキストを使用して上記のコマンドを実行するプログラム/スクリプトはありますか?

例:

選択したテキスト:

Bonjour mondiale...

結果のコマンド/結果:

pytranslate Bonjour mondiale
Detected source language: fr
Hello World
4

4 に答える 4

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

これを入れて~/bin(PATHに含まれていることを確認してください)、実行してください。(xsel パッケージをインストールする必要がある場合があります。) プライマリ選択バッファーの現在の内容を取得し、それを pytranslate に渡します。

ボタンにしたい場合は、ターミナルでこれを実行するランチャーを作成し、bash の read コマンドを使用して「Press ENTER to continue」を実行します。

于 2009-12-07T01:43:12.640 に答える
2

Roger Pate の素晴らしいワンライナーから着想を得て、pytranslate 用の単純なループ スクリプトを作成しました。これは現在暫定的なものです - 私はまだエラーキャッチを実装していないので - 新しい編集を待ちます.

#!/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
于 2009-12-07T02:42:31.293 に答える
1

PyGTKパッケージのクリップボード サポートを使用して仕事をすることができますか? 「プライマリ」X クリップボードにアクセスできると主張しています。これは、通常、選択したテキストを見つける場所です。

于 2009-12-07T01:42:44.310 に答える
0

: この回答は、Windows を使用していない質問者にとって役に立ちませんでした。タイトルに OS が明記されていないので、Windows ユーザーがこのように来る可能性があるため、省略します。


pywin32 パッケージと win32clipboard モジュールを使用して、簡単に作成できます。たとえば、この質問を参照してください。

私は過去に、数秒ごとに定期的にクリップボードをポーリングし、変更が見つかるたびに内容を取得して何かを行うルーチンでこれを行いました。あなたの場合、 subprocess パッケージを使用して、テキストで pytranslate を呼び出します。

于 2009-12-07T01:36:02.623 に答える