iOSアプリを開発していて、Localizable.stringsを翻訳するのってとてもめんどくさくないですか?
特に、ディレクター・エンジニアのチームで、ディレクターが翻訳をする場合、すぐに「エクセルで!」とか言ってくるので、めんどくせーなーと思ったりしながらやりますよね?
そこで、最近学びたてのRubyで勉強がてらちょっとしたスクリプトを書いてみました。(のでほんとにテキトーです。だれか書きなおして下さい)
ほんとにやってることは簡単で、Localizable.stringsの一行目がダブルクォーテーションがあるものを、適当に切ってCSVに書き出しているだけ。
動かしてみたところなんとなく動いてるっぽい。
運用としては、
- 日本語のLocalizable.stringsファイルを作る
- CSVで吐き出す
- 翻訳する
- エクセルで、他の言語のLocalizable.stringを作る
- エクセルからコピペ!
コピペ!ですが、まぁコレぐらいなら楽かな。これで抜け漏れなくなるかなぁと思います。
まぁ、ただこれどこの文言?みたいになりそうですがね!
"ここをしっかり書いておく" = "文言"
のここをしっかり書いておくを頑張ればなんとかなるのではないでしょうか?
というか、他に方法ないのかなぁ。。。と思ったり。
require "csv"
require "nkf"
# please set defaults language folder
localizedFolderName = "ja.lproj"
s = ""
File::open(localizedFolderName + "/Localizable.strings" ,"rb:UTF-16LE") do |f|
s = f.read
end
s = s.encode("UTF-8")
CSV.open("localizable.txt","w") do |csv|
csv << ["key","ja","en","for system",'=""""&$A1&""""&"="&""""&B1&""";"']
keyAry = []
s.each_line do |line|
if /^"/ =~ line
lineAry = line.split(/\"/)
splitFlag = 0
keysStr = ""
wordsStr= ""
lineAry.each do |word|
if splitFlag == 0
if /=/ =~ word
splitFlag = 1
else
keysStr += word
end
else
if /;/ =~ word
break
end
wordsStr += word
end
end
cell = []
cell << keysStr
cell << wordsStr
csv << cell
end
end
end