2009年9月15日 星期二

「perfect_stardict_dic」打包星際譯王8本漢英、英漢字典成deb檔

常安裝StarDict (星際譯王)的字典檔是蠻煩鎖鎖的一件事,要先到stardict dictionaries下載所需要的字典檔,在解壓縮移動到指定的目錄裡,並不是每個人都知道要存放在那,在Ubuntu正體中文站常常都有人尋問如何裝。



現在使用perfect_stardict_dic腳本,能夠直接下載8本英漢、漢英字典,並且解壓縮打包成deb檔,這樣不管是要直接安裝,還是下次要重新安裝都相當的方便。



8本字典不一定要全部都安裝,看你的喜歡裝幾個就裝幾個哦!

2010.04.27 由於星際譯王字典檔只能到論壇下載,目前此腳本無法使用了。





下載、打包、安裝字典檔



Setp1、建立perfect_stardict_dic檔後,複制貼上程式碼[1]內容。

gedit perfect_stardict_dic





程式碼[1]



#!/bin/bash

# by hepha

# http://playubuntu.blogspot.com/

# GPL or CC-BY-NA-SA

# 版號1 (16-09-09)

Tmp=/tmp

Dic_Dir=$Tmp/dic

Uri="http://kent.dl.sourceforge.net/project/stardict/stardict-dictionaries-zh_TW/2.4.2"

All_Dic=$Dic_Dir/all_dic

linktest=`ping -c 3 168.95.1.1 2>/dev/null| grep "time="`

if [ "$linktest" = "" ]; then

echo "現在網路是斷線的,無法使用本程式"

echo "ByeBye"

exit 1

fi

File_Test (){

echo "沒有下載成功任一辭典"

exit 0

}

getArg ()

{

echo "請決定「$1」"

path=$2

yn=n

while [ $yn != "y" ]

do

echo "目前設定為:「$path」"

read -p "您的確定要設為這樣嗎? (Y/N)" -n1 yn

echo ""

if [ $yn = "n" ];

then

read -p "那麼請您重新輸入「$1」:" path

fi

done

}

sourcePath=$HOME

getArg "存放路徑" $sourcePath

mkdir -p $Dic_Dir

echo > $All_Dic

echo 歡迎使用

echo welcome to perfect_stardict_dic ver 1

echo

echo 打包星際譯王8本漢英、英漢字典成deb檔

read -p "打包deb檔後要直接安裝嗎?(Y/N)" -n1 yn

if [[ $yn = "y" || $yn = "Y" ]]; then

Stardict=`aptitude search ^stardict$ | awk '{print $1}'`

if [ $Stardict != "ii" ]; then

echo

read -p "如要立即安裝需要主程式「stardict」你是否要一併安裝?(Y/N)" -n1 yn

if [[ $yn = "y" || $yn = "Y" ]]; then

Install_Stardict=1

else

Deb_Install=1

fi

fi

fi

echo

echo 你可以選要使用的即可,不用全部都選擇

Dic0=21世紀英漢漢英雙向詞典

echo

read -p "你要使用「$Dic0」嗎?(Y/N)" -n1 yn

if [[ $yn = "y" || $yn = Y ]]; then

dic0=1

echo $Dic0 >>$All_Dic

fi

Dic1=21世紀雙語科技詞典

echo

read -p "你要使用「$Dic1」嗎?(Y/N)" -n1 yn

if [[ $yn = "y" || $yn = Y ]]; then

dic1=1

echo $Dic1 >>$All_Dic

fi

Dic2=xdict英漢字典

echo

read -p "你要使用「$Dic2」嗎?(Y/N)" -n1 yn

if [[ $yn = "y" || $yn = Y ]]; then

dic2=1

echo $Dic2 >>$All_Dic

fi

Dic3=xdict漢英字典

echo

read -p "你要使用「$Dic3」嗎?(Y/N)" -n1 yn

if [[ $yn = "y" || $yn = Y ]]; then

dic3=1

echo $Dic3 >>$All_Dic

fi

Dic4=牛津現代英漢雙解詞典

echo

read -p "你要使用「$Dic4」嗎?(Y/N)" -n1 yn

if [[ $yn = "y" || $yn = Y ]]; then

dic4=1

echo $Dic4 >>$All_Dic

fi

Dic5=朗道英漢字典

echo

read -p "你要使用「$Dic5」嗎?(Y/N)" -n1 yn

if [[ $yn = "y" || $yn = Y ]]; then

dic5=1

echo $Dic5 >>$All_Dic

fi

Dic6=朗道漢英字典

echo

read -p "你要使用「$Dic6」嗎?(Y/N)" -n1 yn

if [[ $yn = "y" || $yn = Y ]]; then

dic6=1

echo $Dic6 >>$All_Dic

fi

Dic7=cdict-big5英漢字典

echo

read -p "你要使用「$Dic7」嗎?(Y/N)" -n1 yn

if [[ $yn = "y" || $yn = Y ]]; then

dic7=1

echo $Dic7 >>$All_Dic

fi

echo

echo

Deb_Dic=`cat $All_Dic | tr "\n" "," | sed 's/^,//g ; s/.$//g'`

echo 開始下載「$Deb_Dic」中請稍後

echo

echo

if [ $dic0 -eq 1 ]; then

wget -c "$Uri/stardict-21shijishuangxiangcidian-big5-2.4.2.tar.bz2" -P $Dic_Dir

fi

if [ $dic1 -eq 1 ]; then

wget -c "$Uri/stardict-21shijishuangyukejicidian-big5-2.4.2.tar.bz2" -P $Dic_Dir

fi

if [ $dic2 -eq 1 ]; then

wget -c "$Uri/stardict-xdict-ec-big5-2.4.2.tar.bz2" -P $Dic_Dir

fi

if [ $dic3 -eq 1 ]; then

wget -c "$Uri/stardict-xdict-ce-big5-2.4.2.tar.bz2" -P $Dic_Dir

fi

if [ $dic4 -eq 1 ]; then

wget -c "$Uri/stardict-oxford-big5-2.4.2.tar.bz2" -P $Dic_Dir

fi

if [ $dic5 -eq 1 ]; then

wget -c "$Uri/stardict-langdao-ec-big5-2.4.2.tar.bz2" -P $Dic_Dir

fi

if [ $dic6 -eq 1 ]; then

wget -c "$Uri/stardict-langdao-ce-big5-2.4.2.tar.bz2" -P $Dic_Dir

fi

if [ $dic7 -eq 1 ]; then

wget -c "$Uri/stardict-cdict-big5-2.4.2.tar.bz2" -P $Dic_Dir

fi

Stardict_Dir=$Tmp/stardict

Stardict_Dic_Dir=$Stardict_Dir/usr/share/stardict/dic

mkdir -p $Stardict_Dic_Dir

for var in $Dic_Dir/stardict-*.tar.bz2

do

test -e $var || File_Test

echo 解壓縮$var

tar jxf $var -C $Stardict_Dic_Dir

done

echo

echo 開始打包「$Deb_Dic」中請稍後

echo

Size=`du --max-depth=0 -k $Stardict_Dic_Dir | awk '{print $1}'`

mkdir -p $Stardict_Dir/DEBIAN

echo "Package: stardict-dic

Version: 1

Section: universe/utils

Priority: optional

Architecture: all

Depends: stardict

Installed-Size: $Size

Maintainer: $USER

Description: $Deb_Dic

">$Stardict_Dir/DEBIAN/control

dpkg -b $Stardict_Dir $sourcePath/stardict-dic_1.0.all.deb

echo

echo 檔案打包完成存放在「$sourcePath/stardict-dic_1.0.all.deb」

echo

if [ $Install_Stardict -eq 1 ]; then

sudo apt-get install stardict stardict-common --force-yes -y

echo 開始安裝「$sourcePath/stardict-dic_1.0.all.deb」請稍後

sudo dpkg -i $sourcePath/stardict-dic_1.0.all.deb

elif [ $Deb_Install -eq ]; then

echo 開始安裝「$sourcePath/stardict-dic_1.0.all.deb」請稍後

sudo dpkg -i $sourcePath/stardict-dic_1.0.all.deb

else

echo

fi
Setp2、給予執行權限並執行perfect_stardict_dic

chmod +x perfect_stardict_dic && ./perfect_stardict_dic



安裝畫面(略過下載字典檔)









4 則留言:

  1. 這個腳本還滿方便的呢 XD,
    今天懶惰就直接抓來用了,謝謝 hepha : )。

    其實那麼多本字典那邊的程式可以寫成函數或副程序,
    程式會比較精簡。

    回覆刪除
  2. mosky
    我想改但是不會耶,你改來看看…順便學習XD

    回覆刪除
  3. 感謝熱情分享! lazyscript與Ubuntu Tweak的startdict
    字典檔安裝程序都有路徑錯誤無法下載的問題, 有了這個打包程序就不用自己一本一本去下載了! ^^

    回覆刪除
  4. to 鍵盤上暈倒的貓@@~
    不會,把deb弄起來放,下次要裝更方便了,連這腳本都省了。

    回覆刪除