夜の Discovery このページをアンテナに追加 RSSフィード

セイバーメトリクス対応!野球の成績・チーム・試合管理の決定版!『ガチャスポ ベースボール』

2008-10-31

iPhone アプリケーションをローカライズする方法

少しはまったこともあり書いておきます。


iPhone というよりは Objective-C の仕組みだと思うのですが、

iPhone の多言語対応は Localizable.strings を使ってローカライズします。


Resources フォルダ以下に各言語リソースを置くことを前提とし、

英語、日本語に対応するための手順を書きます。


  • xcode で Resources を選択後、「追加」→「新規グループ」で“English.lproj”を作成します。
  • English.lproj を選択後、「追加」→「新規ファイル」→「Mac OS X」→「Other」→「Strings File」を選択。
  • “Localizable.strings”と入力し、「次へ」を選択します。
  • 保存場所を選択し、「Resources」を選択。
  • 「新規フォルダ」から“English.lproj”を作成し、その中へ保存します。
  • 同様にして、“InfoPlist.strings”という Strings File も作成します。

それぞれのファイルの内容的は、例えば日本語なら以下のようになります。

InfoPlist.strings(アプリケーションの名称)

CFBundleName = "テストアプリケーション";
CFBundleDisplayName = "テストアプリケーション(暫定版)";

iPhone のメニューに表示される名前は CFBundleDisplayName です。(CFBundleName は使われない?)

Mac アプリの場合、CFBundleDisplayName が Finder で表示される名称、

CFBundleName が起動時のメニューバーに表示される名称らしいです。



Localizable.strings(アプリケーション内で利用する言語リソース

"iPhone" = "アイフォーン";
"Accelerometer" = "加速度センサー";

左側にキー、右側に言語リソースの値を指定します。


言語リソースをコピーして使う

一つ作ったらコピーして他言語に使いたいのですが、Finder で lproj フォルダをコピーして、

xcode から参照するだけでは iPhone がうまく認識してくれませんでした。

そこでコピーした言語リソースを読み込むには以下のようにします。

例えば Japanese.lproj を新しく作る場合、

  • Finder で lproj ファイルをコピーしてリネーム(Japanese.lproj)。
  • xcode 上で Resources フォルダの下に新規グループ“Japanese.lproj”を作成。
  • xcode 上で Japanese.lproj を選択し、「追加」→「既存のファイル」→ Resources/Japanese.lproj/ 以下の2ファイルを選択。
  • 「ディスティネーショングループのフォルダに項目をコピーする」のチェックを外す。
  • 「追加したフォルダに再帰的にグループを追加する」を選択して、「追加」をクリック。

面倒ですがこれでうまく認識してくれます。


アプリケーションから言語リソースを利用するには?

以下のようにします。

// 一つめの引数がキー、二つめの引数はコメントです
NSString* text = NSLocalizedString(@"iPhone", @"");

確認方法

iPhone で「設定」→「一般」→「言語環境」→「言語」を変更することで、

実際に言語リソースが切り替わるか確認することができます。



ヨーロッパではフランスが iPhone 利用ユーザーが一番多いらしいですし、

英語、日本語、フランス語くらいは用意して公開したいところですね。


追記

Localizable.strings ファイル内のセミコロンを忘れた場合、

特にエラーは出ませんが、その言語全体がローカライズされなくなるので注意が必要です。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証