Skip to content

Instantly share code, notes, and snippets.

@taozuhong
Created June 29, 2023 13:11
Show Gist options
  • Save taozuhong/0d68bab0933f06d50a332573cc038509 to your computer and use it in GitHub Desktop.
Save taozuhong/0d68bab0933f06d50a332573cc038509 to your computer and use it in GitHub Desktop.
Generate translation with AI
#!/bin/sh
# set -x
# 用戶應按需修改以下默認值:
language="en"
usage() # 本腳本的用法
{
echo "用法:$0 [选项] <POT 或 PO文件>"
echo "根据 POT 或 PO文件搜索其目录内的 LINGUAS 文件并翻译之,默认语言为英语 en-US"
echo "可用选项为:"
echo " -l 待翻译文本语言编码"
echo " -h 顯示本幫助信息,然後退出"
exit $1
}
# 執行本地化工作
while getopts l:h opt
do
case $opt in
l) language=$OPTARG ;;
h) usage 0 ;;
*) usage 0 ;;
esac
done
[ $# -eq 0 ] && usage 0;
linguas="$(dirname "$1")/LINGUAS"
echo $0 $language $linguas $1
lang_list=($(<$linguas));
for lang_dest in "${lang_list[@]}"
do
tran="trans -no-warn -b $language:${lang_dest/_/-}"
echo -n "正在翻译: $lang_dest ......"
while read -r line
do
if [ "$line" = 'msgstr ""' -a -n "$orig_str" ]
then
tran_str="$($tran "$orig_str" || $tran "$orig_str")" # 盡量避免因網絡問題而翻譯失敗
if [ -n "$tran_str" ]
then
echo msgstr \"$tran_str\"
fi
else
echo -E "$line"
orig_str=$(echo $line | sed -n 's/msgid "\(..*\)"/\1/p')
fi >> $lang_dest.po
[ "$line" = 'msgstr ""' -a -n "$orig_str" ] && echo -n .
done < "$1"
echo [done]
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment