アプリ内の文字列ローカライズ
前回に引き続きローカライズネタ。
アプリ内の文字列をローカライズするための手順について以下に記載。
1.Loclizable.stringsをen.lproj、ja.lprojディレクトリ下にそれぞれ作成
※ genstrings -a $(find . -name "*.m") を使っても良い
2.ローカライズする文字列を "key" = "value"; の形でそれぞれのファイルに記入する
(例:"hoge" = "ほげ"; enの方は "hoge" = "hoge";)
3.アプリ中で NSString *str = @"ほげ" としている所を
NSString *str = NSLocalizedString(@"hoge", @"");
とする。
以上でNSLocalizedStringがキー[hoge]をLoclizable.strings.から探して、
対応する日本語"ほげ"を取得、画面上に日本語で表示されます。
アプリ名やシステムボタンのローカライズ
UIBarButtonSystemItemEdit等を日本語で表示するために
アプリのローカライズを行おうとして調べた所
info.plistにLocalization native development regionをJapan
と設定すれば良いとのことだったので設定してみたが上手くいかなかったので
やり方を調査しました。
ちなみに、Xcode4.2の環境です。
基本的には、InfoPlist.stringsを作成するとうまくいきました。
1.アプリのフォルダ(ソースコード等があるフォルダ)中に
en.lprojとja.lprojというフォルダを作成
2.それぞれのディレクトリ下にInfoPlist.stringsファイルを作成
3.XcodeのナビゲータエリアのSupporting Filesディレクトリ上で
右クリック[Add Files to…]を選択して先ほど作成した2ファイルをXcodeに追加する
4.iPhoneシミュレータ上で実行し、
シミュレータ上の環境設定>一般>言語環境から日本語を選択
以上の手順で「edit」と表示されていたボタンが
「編集」と表示されるようになります。
さらに、先ほど追加したファイルに
CFBundleName = "app name"; /*app nameは各アプリの名称に置き換え*/
CFBundleDisplayName = "app name"; /*app nameは各アプリの表示名称に置き換え*/
のように設定すると言語環境毎に表示するアプリの名称も変更できます。
iPhoneアプリの画面構造について
最初にiPhoneアプリ開発を始めた時、
まず最初に概要を掴む必要があると思うんですが、
最初はなかなかイメージが湧きにくい(自分はそうでした)
こともあると思うのでiPhoneアプリの画面構造について簡単にまとめ。
ユーザインターフェースを構築するオブジェクトは
基本的にUIViewクラスのサブクラスとなります。
通常、アプリを作る場合、
UIWindowを作成し、その上にアプリ独自のUIView等を乗せていきます。
さらにそのUIViewにUILabelやUIButton等のUIパーツを乗せていく事になります。
ここで登場するUIWindowもUIViewのサブクラス、
UILabelもUIViewのサブクラスと言う事になる。
UIViewは自身に子供のUIViewを保持する事が可能で、
これらを重ね合わせる事で画面要素を構築していくというのが
基本的な流れとなります。
(一部ゲーム系のフレームワーク等はもうちょっと違ったアプローチを取りますが)
この話題に限らずですが、appleの公式リファレンス結構しっかりしているので
困ったらまず公式リファレンスを確認するとよいみたいですね〜。
基本的なリファレンスは日本語訳されているので読みやすいです。
ちなみに、この話題は公式リファレンス
「iOS Viewプログラミングガイド」に詳しく載ってます。
このブログについて
長年勤めてた会社を退職して、フリーランスで活動する事に。
今後、iOS関連の仕事を中心に行っていこうという思いもあり、
アプリのサポートサイトも兼ねてブログを始める事にしました。
基本的には、iOS関連の開発に関わるこれまで溜めてた
ものや新たに発見したもの等の備忘録的ネタを中心に、
ちょいちょい雑記もアリな感じでやっていこうと思っています。
自分と同じくiOSアプリ開発者の方々に少しでも有益な情報を
発信したり、共有できればと思ってます