Firefox向けの言語パックからIceweasel向けの言語パックを自動で出力するスクリプト
「Firefoxの日本語言語パックからiceweasel向けの日本語言語パックを作成してインストールする」で行った作業を自動化するスクリプトを作成した。
このスクリプトが行うのは以下の処理。
- Firefox向けの言語パックをダウンロード
- 中身を展開し、内容をIceweasel向けに修正
- 言語パックとして再び固める
- GTK+ 2のGUIダイアログで保存
- 更に、gksudoがあればIceweaselのディレクトリへ直接インストール
実行には以下のパッケージ(コマンド)が必要。
- zenity(GNOMEデスクトップ環境に含まれる)
- unzip
- zip
[任意]ファイル名: iceweasel-langpack.sh
#! /bin/sh # Firefoxの言語パックをIceweasel向けに修正 FIREFOX_VERSION=3.0b5 LANG=ja SRC_URI="download.cdn.mozilla.net/pub/mozilla.org/firefox/releases/${FIREFOX_VERSION}/linux-i686/xpi/${LANG}.xpi" WORKDIR=/tmp/iceweasel-langpack WGETOPT="--tries=3 --timeout=10" FILE_BEGINTAG="<span size='larger' weight='bold'>" FILE_ENDTAG="</span>" PATH=/bin:/usr/bin # ツールのチェック if [ ! -x /usr/bin/zenity ]; then echo "zenityがインストールされていません" exit 1 fi if [ ! -x /usr/bin/unzip ]; then zenity --error --text "unzipがインストールされていません" exit 1 fi if [ ! -x /usr/bin/zip ]; then zenity --error --text "zipがインストールされていません" exit 1 fi # XPIファイルの入手と展開 rm ${WORKDIR} -fr mkdir ${WORKDIR}; cd ${WORKDIR} if ! wget -P $(pwd) ${SRC_URI}; then # pwdでダウンロード先表示を絶対パスにする zenity --error --title "ダウンロード失敗" --text "ダウンロードに失敗しました" rmdir ${WORKDIR} exit 1 fi mkdir xpi; cd xpi/ unzip ../${LANG}.xpi mkdir jar; cd jar/ unzip ../chrome/${LANG}.jar # XPIファイル内の記述を編集 sed -i -e 's:Mozilla Firefox:Iceweasel:' -e 's:Firefox:Iceweasel:' locale/branding/brand.* sed -i -e 's: Firefox and the:">:' -e 's: Firefox logos are trademarks of the Mozilla Foundation. All rights::' -e 's: reserved.">::' locale/browser/aboutDialog.dtd rm ../chrome/${LANG}.jar -f find -print0 | xargs -0 zip -9 ../chrome/${LANG}.jar -@ cd ../ rm jar/ -fr find -print0 | xargs -0 zip -9 ../${LANG}.xpi -@ # 保存 OUTFILE=$(zenity --file-selection --title "言語パックの保存" --save --confirm-overwrite --filename=${HOME}/${LANG}.xpi) if [ $? -ne 0 ]; then zenity --info --title "キャンセル" --text "保存がキャンセルされました。 ${FILE_BEGINTAG}${WORKDIR}/${LANG}.xpi${FILE_ENDTAG}をコピー後、 一時ディレクトリ${FILE_BEGINTAG}${WORKDIR}${FILE_ENDTAG}を削除してください。" exit 1 fi cp ../${LANG}.xpi ${OUTFILE} || zenity --error --text "${OUTFILE}の保存に失敗しました" # gksudoを使用して直接Iceweaselのディレクトリに組み込む if [ -x /usr/bin/gksudo ]; then if zenity --question --title "Iceweaselへの組み込み" --text "言語パックを直接Iceweaselに組み込みますか? (gksudoを使用)"; then for ((;;)); do MOZFH=$(zenity --file-selection --title "Iceweaselのディレクトリ" --save --directory --filename=${MOZILLA_FIVE_HOME:-/}) [ $? -ne 0 ] && break # キャンセル [ -d ${MOZFH}/extensions -a -x ${MOZFH}/run-mozilla.sh ] && break # 正常 if ! zenity --question --title "間違ったディレクトリ" --text "このディレクトリは Iceweaselのディレクトリではありません。 ${FILE_BEGINTAG}run-mozilla.sh${FILE_ENDTAG}と${FILE_BEGINTAG}extensions${FILE_ENDTAG}サブディレクトリを 含むディレクトリを指定してください。 ディレクトリ選択をもう一度行いますか?"; then MOZFH= break # キャンセル fi done if [ ! -z ${MOZFH} ]; then EMID=$(sed -n -e '/<\?em:id>\?/!d; s/.*\([\"{].*[}\"]\).*/\1/; s/\"//g; p; q' install.rdf) gksudo mkdir ${MOZFH}/extensions/${EMID} && gksudo -- cp -r chrome/ chrome.manifest install.rdf ${MOZFH}/extensions/${EMID}/ && zenity --info --title "インストール完了" --text "Iceweaselのディレクトリへの 言語パックのインストールが完了しました。 アンインストールしたい場合は、ディレクトリ ${FILE_BEGINTAG}${MOZFH}/extensions/${EMID}${FILE_ENDTAG} を削除してください。" fi fi fi rm ${WORKDIR} -fr zenity --info --title "完了" --text "処理が完了しました" exit 0
(2014/10/3)サーバのURLを修正
使用したバージョン: