概要
コマンド(sh実行)で翻訳を可能にする(Shellはbashを使用)
OSはWindows(WSL2 OracleLinux)
日本語と英語、引数を自動判定して相互翻訳したい
インストール
まずtrans
コマンドを使えるようにします
wgetでDirect_Download
wget git.io/trans
chmod +x ./trans
mv ./trans $HOME/.local/bin
.bashrc
にPATH($HOME/.local/bin
)を記載
※記載済みならここは飛ばす
.bashrc
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
PATH="省略..
.bashrcを再読み込みして反映
source ~/.bashrc
trans
コマンドが使えればおk
動作確認
trans
スクリプトサンプル
translate.sh
#!/bin/bash
# 文字列が日本語文字を含むかチェックする関数
has_japanese() {
local text="$1"
# Unicode範囲で日本語文字(ひらがな、カタカナ、漢字)をチェック
echo "$text" | grep -q '[ぁ-んァ-ン一-龥]'
return $?
}
# 文字列が英語のみで構成されているかチェックする関数
is_english_only() {
local text="$1"
# 英字のみ(空白を除く)かチェック
echo "$text" | grep -q '^[A-Za-z[:space:]]*$'
return $?
}
# 言語を判定する関数
detect_language() {
local text="$1"
# 空文字チェック
if [ -z "$text" ]; then
echo "void?"
return
fi
# 日本語文字が含まれているかチェック
if has_japanese "$text"; then
trans ja:en "$text" # echo "japanese"
else
# 日本語文字を含まない場合は英語として判定
if is_english_only "$text"; then
trans en:ja "$text" # echo "english"
else
# その他の文字(記号など)が含まれる場合も英語として判定
trans en:ja "$text" # echo "english"
fi
fi
}
# 出力内容
output() {
local result="$1"
echo -e "\n$result\n"
echo "---------------------------"
return $?
}
# メイン処理
if [ "$#" -eq 0 ]; then
# 引数がない場合は対話モード
while true; do
echo -n "翻訳したい文字列を入力してください(終了はCtrl+C): "
read -r input
result=$(detect_language "$input")
output "$result"
done
else
# 引数がある場合はその文字列を判定
full_text="$*"
result=$(detect_language "$full_text")
output "$result"
fi
使い方
引数に翻訳したい言葉を指定
単語
# 英→日
translate.sh english
# 日→英
translate.sh 日本語
文章もいける
translate.sh Are you mad?
translate.sh おこなの? 激おこ?
なお翻訳精度は google翻訳レベルなのであしからず。。
参考