makeとgnu sedでローカライズ
genstrings便利なんだけど、使うたびに全部やり直すはめになる。ので、自動化。
1、プロジェクトのディレクトリにMakefileを用意します。このMakefileはgenstringsを使用してLocalized.stringsを生成します。
LocalizeFiles=XspfMLabelMenuView.m \ XspfMMainWindowController.m \ XspfMLibraryViewController.m \ XspfMCoverFlowViewController.m \ XspfManager.m Localizable: ${LocalizeFiles} genstrings -o English.lproj $^ (cd English.lproj; ${MAKE} $@;) genstrings -o Japanese.lproj $^ (cd Japanese.lproj; ${MAKE} $@;) checkLocalizable: (cd English.lproj; ${MAKE} $@;) (cd Japanese.lproj; ${MAKE} $@;)
こんな感じ。
2、Japanese.lproj等にMakefileを用意します。こちらは置換用。
SED=/usr/local/bin/sed Loaclize_template=Localizable.strings.sed temp_file=l.text working_enc=utf-8 Localizable: Localizable.strings /usr/bin/iconv -f utf-16 -t ${working_enc} $< | ${SED} -f ${Loaclize_template} > ${temp_file} /usr/bin/iconv -f ${working_enc} -t utf-16 ${temp_file} > $< /bin/rm ${temp_file} checkLocalizable: plutil Localizable.strings
gnu sedはUTF16を扱えないようなので一旦UTF8に変換して戻してます。
Mac OS X 10.3位に入ってたsedはUTF8も扱えなかったのでgnu sed使ってます。
3、置換用のLocalizable.strings.sedを用意します。
s/Blue/ブルー/2 s/Gray/グレー/2 s/Green/グリーン/2 s/None/なし/2 s/Orange/オレンジ/2 s/Purple/パープル/2 s/Red/レッド/2 s/Yellow/イエロー/2 $a\ /* Favorites */\ "Favorites" = "お気に入り";\ \ /* Library */\ "Library" = "ライブラリ";
とか。
さらに
make Localizable
だけのシェルスクリプトターゲットを追加しておくと便利。