/
translate_clipboard.py
executable file
·73 lines (64 loc) · 2.21 KB
/
translate_clipboard.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# translate the current clipboard with translate-shell
# parameters: <language> <Replace Clipboard [True,False]>
# needs GTK3 GDK and translate-shell http://tuxdiary.com/2015/01/21/translate-shell/
import gi, os, sys
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gdk
escape_dict={'\a':r'\a',
'\b':r'\b',
'\c':r'\c',
'\f':r'\f',
'\n':r' ',
'\r':r'\r',
'\t':r'\t',
'\v':r'\v',
'\'':r'\'',
'\"':r'\"',
'\0':r'\0',
'\1':r'\1',
'\2':r'\2',
'\3':r'\3',
'\4':r'\4',
'\5':r'\5',
'\6':r'\6',
'\7':r'\7',
'\8':r'\8',
'\9':r'\9',
"'" : r" ",
'"' : r' '}
def raw_string(text):
"""Returns a raw string representation of text"""
new_string=''
for char in text:
try: new_string+=escape_dict[char]
except KeyError: new_string+=char
return new_string
def setTextToClipboard(text):
ClipboardObj = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
ClipboardObj.set_text(text, -1)
ClipboardObj.store()
def displayClipboardTranslation(language, toClipboard):
Message = ""
# Get Selection
ClipboardObj = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
ClipboardText = ClipboardObj.wait_for_text()
if (ClipboardText != None):
ClipboardText = raw_string(ClipboardText)
TranslationText = os.popen('trans -b :'+ language +' "'+ ClipboardText +'"').read()
TranslationText = TranslationText[:-1]
if TranslationText in '/bin/sh: trans: ':
Message = "Please install translate-shell translate-shell" # install translate-shell
else:
TranslationText = ClipboardText = raw_string(TranslationText)
if toClipboard:
setTextToClipboard(TranslationText)
Message = "New clipboard " + TranslationText # Neue Zwischenabglage
else:
Message = "Übersetzt " + TranslationText # Übersetzt
else:
Message = "Clipboard is empty" #Zwischenablage ist leer
# Say/braille something.
print(Message)
displayClipboardTranslation(sys.argv[1],sys.argv[2] == 'True')