diff options
Diffstat (limited to 'bin/extra/trl')
| -rwxr-xr-x | bin/extra/trl | 115 | 
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  | 
