96 lines
2.7 KiB
Bash
Executable File
96 lines
2.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
## Original command:
|
|
# curl -A "Mozilla/5.0" 'http://translate.google.com/translate_a/t?client=t&text=hello&hl=en&sl=en&tl=zh-CN&ie=UTF-8&oe=UTF-8&multires=1&prev=btn&ssel=0&tsel=0&sc=1' | sed 's/\[\[\["\([^"]*\).*/\1/'
|
|
|
|
_printhelp ()
|
|
{
|
|
cat<<EOF
|
|
Usage: ${1##*/} [-i source-language] target-language [text]
|
|
|
|
The language are specified using the international prefix (e.g. en for English,
|
|
de for German, etc.).
|
|
|
|
When omitting the source language, the service tries to guess the language from
|
|
the input content.
|
|
|
|
When omitting the text, standard input is read.
|
|
|
|
Synopsis.
|
|
|
|
-h: Show this help.
|
|
-i: Input language (optional).
|
|
-l: Show alternate translations (single words only).
|
|
|
|
Language codes:
|
|
|
|
af: Afrikaans, sq: Albanian, ar: Arabic, hy: Armenian, az: Azerbaijani, eu:
|
|
Basque, be: Belarusian, bn: Bengali, bs: Bosnian, bg: Bulgarian, ca: Catalan,
|
|
ceb: Cebuano, zh-CN, Chinese (Simplified) zh-TW, Chinese (Traditional) hr:
|
|
Croatian, cs: Czech, da: Danish, nl: Dutch, en: English, eo: Esperanto, et:
|
|
Estonian, tl: Filipino, fi: Finnish, fr: French, gl: Galician, ka: Georgian, de:
|
|
German, el: Greek, gu: Gujarati, ht: Haitian, Creole iw: Hebrew, hi: Hindi, Hmn:
|
|
Hmong, hu: Hungarian, is: Icelandic, id: Indonesian, ga: Irish, it: Italian, ja:
|
|
Japanese, jw: Javanese, kn: Kannada, km: Khmer, ko: Korean, lo: Lao, la: Latin,
|
|
lv: Latvian, lt: Lithuanian, mk: Macedonian, ms: Malay, mt: Maltese, mr:
|
|
Marathi, no: Norwegian, fa: Persian, pl: Ryba, pt: Portuguese, ro: Romanian, ru:
|
|
Russian, sr: Serbian, sk: Slovak, sl: Slovenian, es: Spanish, sw: Swahili, sv:
|
|
Swedish, ta: Tamil, te: Telugu, th: Thai, tr: Turkish, uk: Ukrainian, ur: Urdu,
|
|
vi: Vietnamese, cy: Welsh, yi: Yiddish
|
|
|
|
EOF
|
|
}
|
|
|
|
FILTER='s/\[\[\["\([^"]*\).*/\1/'
|
|
unset SL
|
|
while getopts ":hi:l" opt; do
|
|
case $opt in
|
|
h)
|
|
_printhelp "$0"
|
|
exit 1
|
|
;;
|
|
i)
|
|
SL="$OPTARG" ;;
|
|
l)
|
|
FILTER='s/\[\[\[[^[]*\[\[[^[]*\[\([^[]*\)\].*/\1/' ;;
|
|
?)
|
|
_printhelp "$0"
|
|
exit 1
|
|
;;
|
|
:)
|
|
_printhelp "$0"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
shift $(($OPTIND - 1))
|
|
|
|
if [ $# -eq 0 ]; then
|
|
_printhelp "$0"
|
|
exit 1
|
|
fi
|
|
|
|
TL=$1
|
|
|
|
shift
|
|
|
|
_translate()
|
|
{
|
|
TEXT="$(echo "$@" | tr '\n' ' ' | sed 's/[\t ]\+/%20/g')"
|
|
|
|
if [ "$SL" = "" ]; then
|
|
curl -A "Mozilla/5.0" 'http://translate.google.com/translate_a/t?client=t&text='$TEXT'&tl='$TL'&ie=UTF-8&oe=UTF-8'
|
|
else
|
|
curl -A "Mozilla/5.0" 'http://translate.google.com/translate_a/t?client=t&text='$TEXT'&sl='$SL'&tl='$TL'&ie=UTF-8&oe=UTF-8'
|
|
fi 2>/dev/null | sed -e $FILTER -e 's/"//g'
|
|
|
|
echo
|
|
}
|
|
|
|
if [ $# -ne 0 ]; then
|
|
_translate "$@"
|
|
else
|
|
_translate "$(cat)"
|
|
fi
|