blob: ee420407bfddef91f7b061be7370ee07f13ed38e (
plain)
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
#!/bin/sh
# prints on stderr
log () { >&2 echo "$@"; }
help ()
{
>&2 cat <<-EOF
h help
l clear output
q quit
i invert languages
p select primary
s select secondary
EOF
}
# returns available languages
languages () {
cat <<-EOF
arabic
dutch
french
german
polish
english
portuguese
spanish
romanian
hebrew
swedish
italian
turkish
japanese
ukrainian
korean
chinese
czech
hungarian
danish
persian
greek
slovak
hindi
thai
EOF
}
# translates a word
# $1: primary language
# $2: secondary language
# $3: word to translate
translate ()
{
curl -s "https://context.reverso.net/translation/$1-$2/$3" \
--compressed \
-H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0' \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' \
-H 'Accept-Language: en-US,en;q=0.5' \
-H 'Accept-Encoding: gzip, deflate, br' |
pup 'a.link_highlighted em text{}' |
sed 's/.*/\L&/' |
sort | uniq | sed 's/.*/ &/'
}
# prints the current language
current_language ()
{
log " current: $primary-$secondary"
}
select_language ()
{
tmp="$(languages | fzf)"
[ "$tmp" ] && [ "$tmp" != "$primary" ] && [ "$tmp" != "$secondary" ] &&
eval "$1=\"$tmp\""
current_language
}
# set default languages
primary=french
secondary=dutch
main ()
{
current_language
while true
do
log -n '>'
read -r prompt
test $? -eq 1 && exit 0 # quit on ctrl-d
case "$prompt" in
q) break ;;
l) clear ;;
i) tmp="$secondary"; secondary="$primary"; primary="$tmp"
current_language ;;
h) help ;; # TODO
p) select_language primary ;;
s) select_language secondary ;;
'') ;;
*) translate "$primary" "$secondary" "$prompt" ;;
esac
done
}
if [ "$1" = "--help" ] || [ "$1" = "-h" ]
then
log "usage: trl"
help
exit
fi
main
|