diff --git a/tools/unix/translate_categories.sh b/tools/unix/translate_categories.sh index 1c22805307..2fff4e836f 100755 --- a/tools/unix/translate_categories.sh +++ b/tools/unix/translate_categories.sh @@ -1,6 +1,12 @@ #!/bin/bash -set -e -u +# Install translate-shell before using this script. +# Use `brew install translate-shell` on Mac OS X. + +# There is a rate-limit for Google which can be work-arounded by using +# another IP or IPv6. + +set -euo pipefail case $# in 1) SRC=en @@ -9,22 +15,24 @@ case $# in 2) SRC="$1" WORD="$2" ;; - *) echo "Usage: $0 word_in_English" + *) echo "Usage: $0 word_or_text_in_English" echo " or" - echo " $0 language_code word_in_given_language" + echo " $0 source_language_code word_or_text_in_given_language" exit 1 ;; esac -LANGUAGES=( en ar cs da de el es fi fr he hu id it ja ko nb nl pl pt ro ru sk sv sw th tr uk vi zh-CN zh-TW ) +# Note: default Google engine doesn't properly support European Portuguese (pt-PT) +# and always produces Brazilian translations. +LANGUAGES=( en ru ar be bg cs da de el es fa fi fr he hu id it ja ko nb nl pl pt-PT pt-BR ro ru sk sv sw th tr uk vi zh-CN zh-TW ) for lang in "${LANGUAGES[@]}"; do TRANSLATION=$(trans -b "$SRC:$lang" "$WORD" | sed 's/ *//') - # Use our categories.txt names for Chinese. - if [[ $lang == "zh-CN" ]]; then - lang="zh-Hans"; - elif [[ $lang == "zh-TW" ]]; then - lang="zh-Hant"; - fi + # Correct language codes to ours. + case $lang in + zh-CN) lang="zh-Hans" ;; + zh-TW) lang="zh-Hant" ;; + pt-PT) lang="pt" ;; + esac echo "$lang:$(tr '[:lower:]' '[:upper:]' <<< ${TRANSLATION:0:1})${TRANSLATION:1}" done