summaryrefslogtreecommitdiff
path: root/bin/extra/trl
diff options
context:
space:
mode:
authorRaymaekers Luca <raymaekers.luca@gmail.com>2023-08-14 11:50:41 +0200
committerRaymaekers Luca <raymaekers.luca@gmail.com>2023-08-14 11:50:41 +0200
commit67a2df82d25f52ea0937f4eed355546deae7b4b5 (patch)
tree40bc358a6d2a6b119e04229b48fd05dd74a5b81d /bin/extra/trl
parent4fbb921cd8a9da0135e0ddf54da898e080cc8c7e (diff)
parentb0ef0738b3f0cebde9ed6b1d40ca0f7cbb1385a3 (diff)
Merge branch 'main' of /var/git/dotfiles
Diffstat (limited to 'bin/extra/trl')
-rwxr-xr-xbin/extra/trl115
1 files changed, 115 insertions, 0 deletions
diff --git a/bin/extra/trl b/bin/extra/trl
new file mode 100755
index 0000000..ee42040
--- /dev/null
+++ b/bin/extra/trl
@@ -0,0 +1,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