2013iOS6から実装されたStoryboardをローカライズする方法iOSではローカライズする方法が幾つかあります。Localizable.stringsを使う対応したい言語ごとに、ローカライズファイルを準備してプログラム側から文言を設定する方法です。この方法の欠点はStoryboard上のボタンやラベルに対してローカライズを適用するにあたって、全てオブジェクトにIBOutletでViewControllerと接続する必要があります。ローカライズの為だけにIBOutletを設定するのが何とも。Storyboardを対応するローカライズ毎に準備するこうすれば、IBOuteletを接続する必要もなくなります。Storyboardを分けているため、レイアウトの変更、ボタンやラベルの追加などが発生した場合に、対応する全てのStoryboardに同じ作業を行う必要がありました。Storyboardの文言だけをローカライズする今回紹介するのは上記の2つの欠点を補ってくれる素晴らしい機能(っと思っていた。)がWWDCで紹介されていたので、iOS6がリリースされたら試していようと思っていました。手順をまずは簡単な一画面のプエロジェクトを作ります。world」と入力します。Internationalization」にチェックを入れます。ダイアログが表示されるので、ローカライズしたいStoryboardを選択します。Language)が選択します。Englishを選択しておけば問題ないかと。追記:この後に日本語のローカライズファイルを追加するのですが、上手くローカライズファイルができない場合があるようです。この場合には、Storyboardを選択して、右側のインスペクタでEnglishにチェックを入れます。Localizationsから追加したい言語を選択します。ダイアログが表示されたら、ローカライズしたいStoryboardを選択します。Strings」を選択してください。ここまで行うと、Storyboard配下に、文言だけをローカライズするファイルが作成されます。Value」の形になっているのでvalueの値をローカライズする言語に合わせて書き換えます。これでローカライズは完成しました。iPhoneの言語設定を日本語、英語と切り替えるとローカライズされていると思います。この方法を使えば、Storyboardのレイアウトの変更やボタンやレベルの追加などは、Storyboard(Base)に適用されるため、1回の変更で全ての言語に適用されます。ソースコードは以下からどうぞ。GitHubhttps://github.com/tochi/StoryboardLocalizeTestこれは素晴らしい!っと途中までは思ったのですが、Storyboardのローカライズファイルは画面のオブジェクトと1対1で紐付いています。今回の例でいうと「brw-4w-pqj」というIDでStoryboardのラベルとローカライズファイルは紐付いています。その為、複数の画面で同様の文言のボタンやラベルを配置した場合には、それぞれでローカライズの文言を記述する必要があるため、ローカライズファイル内で重複が発生します。ローカライズファイルを作った後に、Storyboard上にボタンなどを追加した場合には、自分でローカライズファイルにkey=valueを記述してあげる必要があります。最終的には「Localizable.stringsを使う」方法が最も「DRY」な方法でプログラマー的にはしっくりくるかなっという感じです。適材適所で使い分けて見て下さい。Motionが思った以上に面白そうだったので弄ってみました。最近、宣伝の記事ばかりになってきたので、ここらで技術ブログだということを見せつけるために技術的な話を。