iPhoneアプリをローカライズする方法について、段階的なチュートリアルを見つけようとしています。私は英語を持っていて、フランス語を追加しようとしています。ドキュメントは利用可能ですが、最初から最後まで実装方法について明確な指示を与えることはほとんどありません.
1 に答える
以下は、私が探していた段階的なウォークスルーです。それはここ にあります m.
これは、iPhone、iPad、および iPod Touch 用の数学アプリの開発者である Sean Berry によるゲスト投稿です。
Me Gustaローカリゼーション!英語圏の App Store 市場は最大ですが、世界中には他にも多くの iPhone ユーザーがいます。母国語をサポートすることで、ユーザー エクスペリエンスを大幅に向上させることができます。
幸いなことに、Apple は、いくつかの API 呼び出しと組み込みの Xcode サポートにより、アプリを複数の言語で動作させることを非常に簡単にしました。これを行うプロセスはローカリゼーションと呼ばれ、その方法をお見せします!
この iPhone アプリ チュートリアルでは、私が用意した iLikeIt というサンプル アプリをローカライズします。これは、Ray のアプリ内購入に関する投稿の激怒漫画に触発されたものです。このアプリは非常にシンプルです。理想的な販売データが表示され、[お気に召しましたか?] をタップすると表示されます。顔が現れ、拡大し、消えます。しかし、今は英語のみです – だから vamos a traducir!
この iPhone アプリのチュートリアルでは Xcode 4.6.1 を使用するため、まだアップグレードしていない場合は、これを言い訳に使用してください。
はじめに 最初のステップは、この iPhone アプリ チュートリアルでローカライズするiLikeIt スターター プロジェクトをダウンロードすることです。アプリをビルドして実行すると、[You like?] をタップすると次のように表示されます。
ここでローカライズする項目が 3 つあります。 テキスト: 販売データ UI 要素: 「お好きですか?」ボタンと最後に画像 (テキストがあります!) コードからテキストを分離する ほとんどのプロジェクトと同様に、このプロジェクトのコードにはハードコーディングされた文字列がいくつか含まれています。これらのハードコードされた文字列をすべて別のファイルにプルして、ローカライズできるようにする必要があります。
Xcode でこれを行う方法は、プロジェクトに必要なすべての文字列を含む「.strings」ファイルを作成することです。次に、ハードコーディングされた文字列を関数呼び出しに置き換えて、現在の言語に基づいて「.strings」ファイルから適切な文字列を検索します。これを試してみましょう。ファイル\新規\新規ファイルに移動します。下のスクリーンショットに示すように、[iOS\Resource\Strings File] を選択し、[次へ] をクリックします。新しいファイルに Localizable.strings という名前を付けて、[保存] をクリックします。
Localizable.strings は、ローカライズされたテキストを処理するときに iOS が検索するデフォルトのファイル名であることに注意してください。これを使用しない場合は、毎回 .strings ファイルの名前を指定する必要があります。
文字列ファイルの形式は次のとおりです。 "KEY" = "CONTENT"; 「昨日 %@ アプリを販売しました」と「好きですか?」text add in: "Yesterday you sold %@ apps" = "Yesterday you sold %@ apps";
"You like?" = "You like?";
ViewController.m に切り替えて、viewDidLoad メソッドを見つけます。現在、テキストは次のように設定されています: self.numAppsLabel.text = [NSString stringWithFormat:@"Yesterday you sold %@ apps", @(1000000)];
[self.likeButton setTitle:@"You like?" forState:UIControlStateNormal];
代わりに、.strings ファイルから読み取るようにします。これを行うには、現在の行を次のように NSLocalizedString というマクロを使用するように変更します。
[self.likeButton setTitle:NSLocalizedString(@"You like?", nil) forState:UIControlStateNormal];
NSLocalizedString マクロが何をするのか知りたい場合は、NSLocalizedString をコントロールクリックし、[定義にジャンプ] を選択します。次のように定義されていることがわかります。
#define NSLocalizedString(key, comment) \
[[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
つまり、基本的には localizedStringForKey メソッドを使用して、指定されたキーの文字列を現在の言語で検索します。テーブル名に nil を渡すため、デフォルトの文字列ファイル名 (Localizable.strings) を使用します。詳細については、Apple の NSBundle Class Reference を参照してください。
もう1つ注意すべきことがあります。マクロはコメントをパラメーターとして受け取りますが、それに対して何もしていないようです! これは、これまで行ってきたように Localizable.strings に各キーと値のペアを手動で入力する代わりに、genstrings と呼ばれる iPhone SDK に付属のツールを使用して、これを自動的に行うことができるためです (大規模なプロジェクトでは非常に便利です)。 )。
この方法を使用する場合、翻訳者の補助としてデフォルト文字列の横に表示される各文字列にコメントを付けることができます。たとえば、文字列が使用されているコンテキストを示すコメントを追加できます。背景情報は十分です。試してみましょう。プロジェクトをビルドして実行すると、メイン画面に前と同じテキストが表示されます。しかし、スペイン語はどこですか?これでセットアップは簡単です。
スペイン語ローカリゼーションの追加 別の言語のサポートを追加するには、左側のペインで青い iLikeIt プロジェクト フォルダーをクリックし、次のペインでプロジェクト (ターゲットではありません) を選択します。[情報] タブの下に、ローカリゼーションのセクションが表示されます。+ をクリックして、スペイン語 (es) を選択します。
ローカライズするファイルを尋ねる別の画面が表示されるので、それらをすべて選択したままにして、[完了] をクリックします。Localizable.strings がまだ表示されなくても問題ありません。すぐに説明します。
この時点で、Xcode は、バックグラウンドで、選択した言語ごとに個別のバージョンの InfoPlist.strings と MainStoryboard.storyboard を含むいくつかのディレクトリを設定しています。これを自分で確認するには、Finder でプロジェクト フォルダーを開くと、次のように表示されます。
en.lproj と es.lproj を参照してください。これらには、言語固有のバージョンのファイルが含まれています。「en」は英語のローカライズ コード、「es」はスペイン語のローカライズ コードです。興味のある方は、言語コードの完全なリストをご覧ください。
iOS が英語版のファイルを取得する場合は en.lproj を検索しますが、スペイン語版のファイルを取得する場合は es.lproj を検索します。
それはとても簡単です!リソースを適切なフォルダーに配置すると、iOS が残りの作業を行います。しかし、待ってください。Localizable.strings はどうでしょうか。ローカライズする必要があることを Xcode に知らせるには、左側のペインで Xcode を選択し、右側のペインでファイル インスペクタを開きます。[ローカライズ] というラベルの付いたボタンが表示されます。それをクリックし、[英語] (現在は英語であるため) を選択し、最後に [ローカライズ] をクリックします。
その右側の File Inspector パネルに、このファイルが属する言語が表示されます。スペイン語の左側にあるボックスをチェックして、スペイン語のローカライズに追加します。
左パネルに戻り、Localizable.strings の横にある矢印をクリックして、サブ要素を表示します。このファイルの 2 つのバージョンを使用していることがわかります。
スペイン語のテキストを変更するには、Localizable.strings (スペイン語) を選択し、テキストを次のように変更します。
"You like?" = "~Es bueno?~";
あなたのアプリは今や世俗的です!動作することを確認してみましょう... シミュレーターでスペイン語を表示するには、Settings.app に移動し、[一般] -> [インターナショナル] -> [言語] -> [スペイン語] を選択します。アプリを削除し、Project\Clean を選択して、新しいビルドとインストールを取得します。ビルドして実行すると、次のように表示されます。
ロケールと言語 フォーマットを追加して、数字の見栄えを良くしましょう。このコードを置き換えます: self.numAppsLabel.text = [NSString stringWithFormat:NSLocalizedString(@"Yesterday you sold %@ apps", nil), @(1000000)]; これで: NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSString *numberString = [numberFormatter stringFromNumber:@(1000000)];
self.numAppsLabel.text = [NSString stringWithFormat:NSLocalizedString(@"Yesterday you sold %@ apps", nil), numberString];
ビルドして実行すると、数値が読みやすくなります。
しかし、これが問題です。スペインでは、数字をそのようにフォーマットしません。「1,000,000」ではなく「1.000.000」と書きますが、iOS シミュレーターの言語をエスパニョールに変更しても、ゼロを区切るためにコンマが使用されていることがわかります。その理由は、数値の書式設定が言語ではなく地域/ロケールに基づいているためです。スペインでその番号がどのように表示されるかを確認するには、[設定] -> [一般] -> [国際] に移動し、[地域の形式] を [スペイン語] -> [スペイン] に変更します。
アプリを再度開くと、次のように表示されます。
Apple の NSNumberFormatter クラスを使用するためだけに、その機能を無料で手に入れました! Apple のやり方で物事を行うことには価値があります。画像 画像にはテキストが含まれているため、ローカライズする必要があります。さもなければスペイン語のアプリに英語があれば、アマチュアに見えます。ilike.png を選択し、スペイン語のローカリゼーションを追加します (あなたはもうこれでベテランです!) (忘れた場合は、左側のパネルでそれを選択し、右側のファイル インスペクター パネルで [ローカライズ] ボタンをクリックします。次に、 Xcode がデフォルトのコピーを en.lproj に配置できるようにした後、右側のパネルでスペイン語のボックスをオンにします。) プロジェクト フォルダーをチェックアウトします。ilike.png は英語のフォルダー (en.lproj) に追加され、スペイン語のフォルダー (es.lproj) にコピーされています。スペイン語バージョン用に別の画像を表示するには、スペイン語フォルダー内の画像を上書きするだけです。
また、開始プロジェクトに含めて、megusta.png として保存しました。名前を ilike.png に変更し、スペイン語のフォルダー (es.lproj) に移動して、コピーした英語版を上書きします。クリーンアップして再構築すれば完了です。シミュレーターをエスパニョールに切り替えて確認してください…</p>
おめでとう!それがローカリゼーションの大部分です。