2007年1月17日水曜日

ファイルからshift-jisの行を抽出

※前のblogから記事を移動。元の公開日:2007/01/17(水) 02:09:45

---

とあるソフトウェアの英語版を配布することになったということで、プログラムの中の日本語を英語に直さなきゃならんらしい。
・メニュー
・ツールバーのポップアップヒント
・ステータスバーに表示するメッセージ
・ダイアログボックス
・ヘルプ、バージョン情報
・メッセージボックス
あたりだろうか。
だいたいはリソースの中だろうけどソースのどこかに散らばってるのもあるよね・・・

ってなわけでとりあえず一覧を作ってみるスクリプトをrubyで書いてみた。
SJISの行でなおかつ"を含んでいたら(コメントよけ)ファイル名・行番号と共に出力する。
指定ファイルがバイナリファイルだったら何もしない。

require 'nkf'

#CODES = {
# NKF::UNKNOWN => "UNKNOWN", # 0
# NKF::JIS => "JIS", # 1
# NKF::EUC => "EUC", # 2
# NKF::SJIS => "SJIS", # 3
# NKF::BINARY => "BINARY", # 4
# NKF::ASCII => "ASCII", # 5
# NKF::UTF8 => "UTF8", # 6
# NKF::UTF16 => "UTF16", # 7
#}

while file = ARGV.shift
port = open(file)
str = port.read
next if NKF.guess(str) == NKF::BINARY
port.close
num = 0
IO.foreach(file){|line|
code = NKF.guess(line)
num = num + 1
#print file + "(" + num.to_s + "): " + CODES.fetch(code).to_s + "\n"
if code == NKF::SJIS
if line.include?("\"")
print file + "(" + num.to_s + "):" + line
end
end
}
end

やってみたら結果291行・・・
多少はコメント行も残ってるけど、手作業で直すのしんどいなぁ。

0 件のコメント: