2014年3月12日 星期三

簡繁互轉:批次更改資料夾及檔案名稱

Linux找不到我需要的簡轉繁批次更改資料夾及檔案名稱這種功能的程式,想說簡繁互轉有opencc能用,在來就是用zsh寫個shell script應該不會很難才是。



初步很簡單就寫好了,可是,我忽略了資料夾遇到了有多層目錄的結構,前面的名稱改了但讀進的資料不能跟著改不然會出錯。



帅哥/刚才/叫我吗 要修改成 帥哥/剛才/叫我嗎,修改順序為第一層 帅哥/帥哥,出現錯誤在第二層中他是讀到舊的 帅哥/刚才 ,但是 帅哥 已經變成繁體字的 帥哥,那麼接下來的結構都會出現錯誤。



今過幾天思考到底要怎麼處理,結果給我想到了,我將有層次目錄結構分讀取資料分兩段讀取轉換,我用 dh 保留路徑的頭,dt保留路徑的尾巴,遇到這情形到第二層目錄先將 dh 轉為 ch讓他讀到繁體的,最後整體會變成 ch/ct這樣搬移時就沒問題了。





以下是我的原始碼大家研究一下囉,請記得要裝opencc即zsh呀否則無法正確執行;程式會自動轉換當前資料夾內所有子資料夾及檔案,所以請先切換到要目地在執行哦。



opencc 我是用 -c zhs2zhtw_vp.ini 簡體轉繁體,大陸的朋友要繁體轉簡體的話要用 -c zhtw2zhcn_s.ini 哦。



將原始碼存檔之後給執行權限執行即可。

#!/bin/zsh
test -e "conv.log" && rm "conv.log"
touch "conv.log"

for direct in **/*(/)
do
dh="$direct:h"
dt="$direct:t"
ch="$(echo "$dh"|opencc -c zhs2zhtw_vp.ini)"
ct="$(echo "$dt"|opencc -c zhs2zhtw_vp.ini)"
if [ "$dt" != "$ct" ]
then
if [ "$dh" != "." ]
then
echo "$dh/$dt" "$ch/$ct" >> "conv.log"
mv "$ch/$dt" "$ch/$ct"
else
echo "$dt" "$ct" >> "conv.log"
mv "$dt" "$ct"
fi
fi
done
for files in **/*(.)
do
convfile="$(echo "$files" | opencc -c zhs2zhtw_vp.ini)"
if [ "$files" != "$convfile" ]
then
echo "$files" "$convfile" >> "conv.log"
mv "$files" "$convfile"
fi
done



最後附上我實際轉換過程的log 有興趣的可以下載回去看一下。




Firefox.v26後有在用userChromeJS記得更新userChrome.js

忘了Firefox26、27開始,我的偏好設定內的分頁都固定在那無法調整,在網址列按☆號加入書籤按兩下不會彈出修改內容的小視窗,經過努力不懈我不會說我套件裝超多的情況下終於抓到是userChromeJS的問題。



但是userChromeJS好久以前就沒更新了,就在今天找其它的腳本發現只要將userChrome-26.js抓下替換userChrome.js以上的問題就解決了。



"userChrome-26.js,適合 FF26,在24下會讓 xul 的腳本沒法加載。"

https://github.com/ywzhaiqi/userChromeJS/blob/master/userChrome-26.js



如果你需要一些userChromeJS的腳本也可以到ywzhaiqi挖寶哦。



2013年11月20日 星期三

Vim 中文用戶手冊(繁體字)2、自動下載最新版並轉換文字(簡轉繁)與其他方式安裝



即上一篇Vim 中文用戶手冊(繁體字) 所提供的手動轉換法,此次轉而提供利用Shell Script來自動下載最新版並自動轉換文字(簡轉繁)。





如果要更快的話就用+Chu-Siang Lai 提供  chusiang/vimcdoc-tw的方法安裝,需要Pathogen或NeoBundle或Vundle這三種直接安裝他轉換好的檔案,安裝方法他寫的很詳細我這就不贅述了。



vimcdoc-cn-to-tw.zsh



wget -cq https://googledrive.com/host/0B6LhE5E9oFV3Njc3MTI3M2QtOTlhNi00ODlhLWI3MDItODJhY2VkMGYxMDk5/vimcdoc-cn-to-tw.zsh
chmod +x vimcdoc-cn-to-tw.zsh
./vimcdoc-cn-to-tw.zsh






執行畫面

source code


#!/bin/zsh

which zsh >/dev/null || (echo 請安裝zsh;exit)

which opencc >/dev/null || (echo 請安裝opencc;exit)

tmpdir=$(mktemp -d)

cd /tmp/

printf "%s\n" 下載檔案中請稍後

wget -4cq -O  vimcdoc.tar http://sourceforge.net/projects/vimcdoc/files/latest/download

printf "%s\n" 解壓檔案中請稍後

tar -xf vimcdoc.tar

cd vimcdoc-*

vimcdocdir=$PWD

name=$PWD:t

printf "%s\n" 修改檔案中請稍後

mv help_cn.vim help_tw.vim

mv doc/tags-cn doc/tags-tw

sed -i 's/help_cn.vim/help_tw.vim/g ; s/tags-cn/tags-tw/g' vimcdoc.sh

sed -i 's/set helplang=cn/set helplang=tw/' vimcdoc.vim

sed -i '/help.*Cn/s/Cn /Tw /g' help_tw.vim

printf "%s\n" "CN to TW中請稍後"

find . -type d -exec env d="$tmpdir" sh -c ' exec mkdir -p -- "$d/$1"' '{}' '{}' \;

for i in  **/*(.); opencc -c zhs2zhtw_vp.ini -i $i -o $tmpdir/$i 2>&1

rm -r $vimcdocdir

mv $tmpdir $vimcdocdir

chmod +x $vimcdocdir/vimcdoc.sh

cd -

printf "%s\n" 轉換完成,壓縮檔案中請稍後

tar cf ~/$name.tar $name

printf "%s\n" 壓縮完成存放至~/$name.tar 此檔可直接分享給別他人安裝:

printf "%s\n" 要立即安裝請進入$vimcdocdir

printf "%s\n" 安裝步驟請看原文:Vim 中文用戶手冊(繁體字) http://playubuntu.blogspot.tw/2013/10/vim.html




Vim 中文用戶手冊(繁體字)

感謝Vim Chinese Documentation將英文翻譯成中文(簡體字),但對於簡體字不太熟悉,又不想靠類似transcoding Simplified and Traditional這種plugin每次看都要簡體轉繁體一次,索性直接將簡體中文的用戶手冊轉成繁體一次搞定方便觀看。





以下將運用Opencc簡轉繁、ZshShell請先安裝好。





2013-11-21 opencc改用zhs2zhtw_vp.ini設定值from Simplified to variants and phrases of Taiwan比較接近台灣用語。



2013-10-24 接著將安還有個檔案需要改 此處漏掉了也要修改vimcdoc.vim導致helplang會保持著cn而用戶手冊語言沒有改變,原文以更正。



原因如下:


其中設置Vim 幫助的默認語言的步驟,即是在vimcdoc.vim 中,因為plugin 比vimrc 加載要晚(參考), 所以在vimrc 中的設置會被vimcdoc.vim 覆蓋掉。

Vim 中文幫助文檔







首先下載最版本的tarball,解壓縮得到vimcdoc-1.9.0(目前版號是1.9.0更新的版本版號會不一樣)。




Vim Chinese Documentation



請開啟終端機並切換至vimcdoc-1.9.0目錄並開啟Zsh Shell。

cd /path/vimcdoc-1.9.0
zsh


更改檔名與更改檔案內容


再來將幾個檔案更名cn->tw

mv help_cn.vim help_tw.vim
mv doc/tags-cn doc/tags-tw



接著將安裝檔案內容修改cn->tw

sed -i 's/help_cn.vim/help_tw.vim/g ; s/tags-cn/tags-tw/g' vimcdoc.sh
sed -i 's/set helplang=cn/set helplang=tw/' vimcdoc.vim


構建原始目錄


現在/tmp/建立vimcdoc-1.9.0對應的目錄結構

find . -type d -exec env d="/tmp/$PWD:t" sh -c ' exec mkdir -p -- "$d/$1"' '{}' '{}' \;


中文化


開始用opencc中文化(cn->tw)存放至/tmp/vimcdoc-1.9.0

for i in  **/*(.); opencc -c zhs2zhtw_vp.ini -i $i -o /tmp/$PWD:t/$i


安裝


切換至存放處,將安裝檔加入執行權限,最後執行安裝

cd /tmp/$PWD:t
chmod +x vimcdoc.sh
./vimcdoc.sh -i


設定


開啟vim設定檔

vim $HOME/.vimrc



加入以下兩行後存檔


set rtp+=/home/hepha/.vim

set helplang=tw



作用:將中文用戶手冊加入rtp(搜索運行時文件所用的目錄)及指定helplang為tw。

P.S1 set rtp+=是增加路徑,+號要記得寫哦,只有=號會出類似plugin找不到那些問題。

P.S2 加入rtp位置有可能不一樣,請看安裝時他將檔案安裝到那裡不要照抄我的。


install -m 644 vimcdoc.vim /home/hepha/.vim/plugin/vimcdoc.vim



最後重開vim在指令模式輸入:help就會看到繁體中文的用戶手冊了。



如果想將繁體的用戶手冊安裝程式保留,記得將檔案重/tmp搬出來呀,否則重新開機檔案就不見囉。

mv /tmp/vimcdoc-1.9.0 /you/path




參考資料: Vimcdoc HOWTO

translatePDF 簡體中文文字版PDF轉換為繁體中文PDF



translatePDF是一個能將簡體中文文字版的PDF轉換為繁體中文的軟體,本來想將VIM簡體中文的PDF轉成繁體中文,可是無法順利轉換


Font not translated: /F32 /KWSWHA+gbsnu66

Font not translated: /F49 /IFENFK+gbsnu30

Font not translated: /F48 /LWKBKD+gbsnu53

...more

原因如下: PDF 簡體/正體轉換 github 及 TODO


  • 處理更多不同類型中文編碼,比方 latex 產生的 pdf 目前都無法處理。PDF 放中文的方式有很多種,目前只能處理其中一種情況而已,只是許多所謂文字版的簡體 pdf 都是這種情況









經回報後以修正python print error


這裡特別做過記錄使用時遇到的一個問題:


python ./tpdfrw.py File "./tpdfrw.py", line 37 print sys.exc_info() ^ SyntaxError: invalid syntax

經由G+上的朋友+Xuetian Weng 指點:python2 的print可以用,print XXXX,python3 的 print要用,print(XXXX)。如果想要了解python2、python3的差異請看What's New In Python 3.0 — Python v3.0.1 documentation




安裝



For Ubuntu


目前沒用Ubuntu我只是照抄的。

需安裝:

pdfrw, opencc, pdftk, chardet, fontTools, 

droid-sans-fallback.ttf 

 

fontTools 可用 pip 安裝,其他可用 apt-get 安裝。




For Arch


yaourt -S opencc pdftk-bin python2-fonttools python-chardet python2-chardet python2-pdfrw




下載主程式


git clone https://github.com/tjwei/translatePDF.git
cd translatePDF
chmod +x ./tpdfrw.py




修複前面所說的Bug


vim ./tpdfrw.py

在檔案最上頭插入一行


#!/usr/bin/env python2




使用


./tpdfrw.py  --opencc-config zhs2zhtw_vp.ini --default-ttf /usr/share/fonts/wenquanyi/wqy-microhei/wqy-microhei.ttc input output

--opencc-config:OpenCC支持地區用詞轉換了

 --default-ttf 預設是用DroidSansFallback.ttf 要改用其它字型請用此參數





參考資料: