Xcode4 & NSLocalizedString、やれやれ。

[`evernote` not found]
LINEで送る
LinkedIn にシェア

今日のハマりはこれ。

Xcode 3.2を使用して作ったプロジェクトを Xcode 4に持ってきて作業をすると、あるとき突然、ローカライズが効かなくなる。

結論から先に書くと、原因はXcode4のバグ。国際標準に則したので変えましたとドキュメントにはあるにしても、これはバグだ。

なぜ、この結論に至ったかというと、Xcode3では、ローカライズされるファイルは、Engish.lprojとかJapanese.lprojというフォルダに入っていた。
Xcode4ではXcode3で作られたプロジェクトをそのまま読み込めるので、当然、Japanese.lprojもそのまま読み込み、アプリをビルドすると、Japanese.lprojのままバンドルの中に収まる。

これはこれで、問題なく動作するのだが、

ローカライズされなくなる問題が起こるのは、Xcode4で新たにローカライズ用のファイルを作った時。
このとき、Xcode4は、en.lprojとかja.lprojというフォルダに振り分ける。
ビルドすると、バンドルにはXcode3で作ったEngish.lprojJapanese.lproj、そしてXcode4で作ったen.lprojja.lprojが存在することになる。
これで両方のフォルダをちゃんと読み込んでくれればいいが、順番で最初のものしかないものとして考えているので、EngishではなくenJapaneseではなくjaのフォルダの中身だけを読むことになる。

バグと決めつける理由は、国際標準に則するようにしたのなら、そもそも古い形式のものはエラーを出してビルドできないようにするか、もしくは、新しいものに自動的に変えるべきだと思うからである。

どうも、Xcode4は使いづらい。ナビゲーションリストからFinderにファイルをDrag & Dropできない。Xcode3では簡単にできるのに。Build settingsもわかりづらくなったし、これまで設定の必要のないものまで設定しなくちゃならないし、またそのBuild Settings自体を開くのに手間がかかる。なんだかマックの開発者というよりウィンドウズの開発者が作ったIDEみたいだ。

おやおや、いつの間にかXcode4についての愚痴になってしまった。反省。

本題に戻って、、、

で、Xcode4で読み込んだXcode3のプロジェクトだが、混在した状況を直すには、en.lproj、ja.lprojにそれぞれすべてのローカライズするファイルをぶちこみ、”Add Files to…”で、それぞれのフォルダにあるすべてのファイルを読み込めば、ディレクトリが変わって赤く表示されていたファイルも、しっかり元に戻る。

ちゃんちゃん♪

コメントを残す