BLOGakisuteが主に技術的なネタを書き溜めるブログです。2008年12月21日日曜日iPhoneアプリをローカライズ(国際化対応)してみたまずはNSLocalizedString()を利用してアプリを作る次にgenstringsコマンドを利用してLocalizable.stringファイルを自動生成するXcodeに取り込むXcodeからローカライズの設定を行う最後にかっこよく翻訳を行うinfo.plistファイルの中身をローカライズしたい(たとえばアプリ名など)ときは、InfoPlist.stringsファイルを手で作って、ローカライズ設定をして、翻訳すると良いLocalizable.stringは基本UTF-16に統一しておくことInfoPlist.stringsはUTF-16でないと動かない。「1本でも多く売りたい」というのが心情というものです。日本ではヒットしないアプリが海外では大ブレイクということも考えられますし、iPhoneアプリの市場は日本国内よりも海外のほうが圧倒的に大きいです。従って、iPhoneでアプリを作るなら、国際化対応は必須であるといえましょう!ということで、今日はそんな大事な大事な国際化のやり方を勉強してみました。Frameworkは元々非常に国際化がしやすい作りになっていますので、iPhoneアプリでもその仕組みの恩恵を受けることが出来ます!国際化の第1歩はアプリ作成からです。アプリを作らないと始まりません。view");こんな風に書き直します。第2引数はコメントです。コメントは面倒でしたらnilでも大丈夫ですが、あると翻訳時に大変便利です。アプリ側の準備が出来たら、次は翻訳文字列ファイル(Localizable.strings)を生成します。手で作っても良いのですが、genstringsという大変便利なコマンドが最初から用意されているので、こちらを利用するのが良いと思います。使い方はこんな感じです。*.mコレを実行すると、カレントディレクトリにあるすべての拡張子がmのファイルから自動的にLocalizable.stringsをつくってカレントディレクトリに保存してくれます。生成されたLocalizable.stringsはUTF-16でエンコードされています。実際の開発時にはfindコマンドを併用して、以下のように実行するのがおすすめです。"*.m")このコマンド入力によって!カレントディレクトリ以下のすべてのの拡張子がmのファイルを対象にしてLocalizable.stringsを生成してくれるソースコードが更新されていた場合、以前に作成したLocalizable.stringsの内容に新しく追加された文字列が追加される(-aオプションがないとファイルは上書き保存されてしまいます)Localizable.stringsが生成されたら、Xcodeに取り込みます。単純にファイルをXcodeプロジェクトに対してドラッグ&ドロップすれば大丈夫です。このとき、必ず文字コードを「UTF-16」にしてください。取り込み時にUTF-16にするのを忘れていたら、あとからファイルのエンコードをUTF-16にする必要があります。取り込んだら、ローカライズの設定を行います。対象のファイルを選択して右クリック、「情報を見る」ウィンドウを開きます。「ファイルをローカライズ可能にする」をクリック。「ローカリゼーションの追加」をクリック。プルダウンからJapaneseを選択。ドイツ語とかフランス語もプルダウンから簡単に選択できます。その他の言語の場合は自分で調べる必要がありそうです。成功するとこんな感じになります。「すべてのローカライズを取り除く」をクリックするだけです。以上、とても簡単です。このローカライズの設定時に文字コードの指定がUTF-16ではなくなることがあるので、もう一度設定したファイルの文字コードをチェックしておくと安心です。これで準備は出来たので、あとはLocalizable.stringsを翻訳するだけです。翻訳したらビルドしてiPhoneにインストールすれば完成!Localizable.stringsでは翻訳できない箇所、たとえばアプリ名を翻訳するときなど、Info.plistの内容を翻訳したいときは、InfoPlist.stringsと言うファイルをXcode上で作って、ローカライズ設定を行い、翻訳してビルドすればうまくいくと思います。Xibファイルについてもローカライズ設定が可能なようなのですが、Xib自体を翻訳するより、ソースコード中からラベルやタイトル名を変更するようにして、ソースコード自体をLocalizable.stringsで翻訳するようにしたほうが変更に強くて楽かと思います。トラブルシューティング以上の内容に従っても翻訳されない!というときは、まずはLocalizable.stringsが本当にUTF-16になっているか確認してみましょう。InfoPlist.stringsはUTF-16でないと動きません。Localizable.stringsについてはUTF-8でも動くそうなのですが、私の場合駄目だったので、やはりUTF-16をオススメしておきます。いずれの場合でも、UTF-8とUTF-16が混在すると確実に動きません。それでも駄目な場合は、Finderでプロジェクトのディレクトリを開き、buildディレクトリの中身を丸ごと消してから再度ビルドするとうまくいくと思います。Androidアプリエンジニアやってます。原因を調べるのにずいぶんと苦戦したので備忘録を作ります。調べたのですが、これよりよくまとまっているドキュメントを現状発見できませんでしたので、2019/06/08現在では上記のドキュメントを参照するのがベストだと思います。操作が優れているか否か」を評価点に挙げます。今回の記事は久しぶりの誰得記事です。こちらで紹介されている手法を用いるにはプライベートAPIを操作する必要があるため、おそらく審査に通りません。じこせきにんでお願いします。プロパティを使うことで簡単にアニメーションを実装させることができます。サンプルを書いてみます。Accessから秘密鍵を書き出すときに、「エラーが発生しました。項目を読み込めません。Accessのお世話になることが多いです。複数台のMacで開発を行っている場合は、証明書を認証するための秘密鍵を複数台のMacにインストールする必要があります。今年は2019年となりました。12月7日担当のakisuteです。最近フォント周りについて深く掘り下げる機会がありましたので、その際のメモを残しておこうと思います。地点では存在しないタイトルの通りですが一応補足しておきます。