†でおきしブログ†

ウナギ食べたいヽ(•̀ω•́ )ゝ✧

【cocos2d】ローカライズファイルでbaseを消しちゃった時の復活方法【xcode】

☆結論

※以降、xcode5.1でのお話になります。

  1. 既に作成していたローカライズファイルを格納していたフォルダ(en.lprojとか)をbase.lprojにリネーム
  2. xcodeのProject Navigator上のSupporting Filesフォルダを右クリックして、Add Filesで、base.lproj内のローカライズファイル(Localizable.stringsやInfoPlist.strings)を選択
  3. するとbaseとしてLocalizationに追加されます

f:id:deokisikun:20080717041518j:plain

☆以降、蛇足

★事のはじまり

xcode上のローカライズファイルとして、EnglishとJapaneseを設定すれば良いやーと思って、xcode上のproject->info->Localizationsのbaseとかいうのが良くわからなかったので削除してたんですね。

★その後、ローカライズの挙動は…

シュミレータやiPhoneの言語設定を、English又は日本語にすると期待通りなのですが、それ以外の国にすると何と日本語でローカライズされてました…。
てっきり英語になるかと思っていたのに…。何故日本語になったのかはわかりません。

まぁ、日本語と英語以外はローカライズしていないので、それ以外の言語圏のユーザーがダウンロードする事はほとんど無いのですけれど、気持ち悪い事には変わりないので調査しました。

★結論に至るまでの試行錯誤

ネットで調べた結果、基本となるローカライズはbaseに設定してあげる必要がありました。英語を基本とする場合には、baseに英語のローカライズ内容を書き込めば良いという事です。
で、Localizationの"+"ボタン->other->Base(base)とか選んでも作成できなかったんですよね。ファイルを選べって言われるポップアップが表示されるけど何も選ぶものが無くて作成できない状態でした。
一から作ろうと思ってLocalizationを空にして試しても駄目で、むしろこの状態ではJapaneaseとかEnglishとかも同様に作れません。
そういえば、cocos2dのローカライズのやり方をネットで調べて手作業でLocalizeフォルダ及びファイルを作ったっけ…(もう作った時の事は覚えてません)。

いろいろ触っていて気づいたのですが、作成していたローカライズファイルを格納したフォルダ(en.lproj)を、xcodeのProject Navigator->Supporting Files->Add Files で追加すると認識されるんですよね。LocalizationのところにもEnglishって表示されて認識するし、フォルダ内のローカライズファイルを追加しても認識されるし、このあたりの操作感とか結構自由度があるので逆に戸惑います。
最初の結論に書いた通りフォルダ内のローカライズファイルを追加するのがベターだと思います(言語毎にフォルダで別れているとProject Navigatorの見栄えが悪いですし)。

ちなみに、上記のファイル追加を行えば特に必要の無い操作なのですが、既にローカライズフォルダが存在するのにxcodeのLocalizationの"+"ボタンから同一言語のものを作ろうとしても作れません。この場合はフォルダをリネームしてあげる(例:en.lproj→back_en.lproj)と作成できます。その後、作成されたフォルダ(例:en.lproj)を削除してリネームフォルダの名前を戻してあげると、xcodeの追加操作によってローカライズファイルを復活させたカタチになります。
あまり意味は無いのですけれど、cocos2d for iPhone を使っていると、xcodeとの連携がうまくとれないために、リネームとかファイルの差し替えとか、なんかそういう小細工を使う時がたまにあったりするので、慣れておくと良いかもしれません。

★追記
  1. [20140410]
    • よくよく調べてみると、baseはstoryboardに関するものでcocos2dでは関係ないようでした。結論から言うと日本語と英語以外の言語設定で英語を選択する方法がわかりませんでした。
    • ちなみに日本語表示の後にフランス語とかに切り替えると日本語のローカライズが選択されるようです。逆に英語→フランス語とすると英語のローカライズが選択されます。どうもiOSデバイスの言語設定で選ばれた言語に該当するローカライズファイルが無ければ、言語設定の並び順で検索して見つかったものでローカライズされるようです。言語設定をした事のあるものが順番の上位に来るので、この現象と合致します。恐らくiOSデバイスのプリセットの状態では、少なくとも日本語よりもEnglishが並び順の上位にあると思うので、他言語の人は英語表示されちゃっているから、あまり問題が顕在化していないのかな?と思われます。
    • ちなみにGameCenterを開いた時の画面上部に表示されるアプリ名が日本語で、ローカライズファイルは英語といった、上記の推測される要因とはまた違った挙動をGameCenterは見せてくれました。いやもうよくわからんです。
    • というわけで結論としては、ダウンロードして欲しい国それぞれに対して、アプリのローカライズitunes Connectのメタ情報(itunesに表示される内容)設定は行うべきなのかなと思われます。
    • storyboardとかで開発している人はこういうのに悩む必要が無いのかもしれませんけれど、触る機会があった時にまた調べてみたいと思います。

ではでは、駄文失礼しました。



cocos2d-xによるiPhone/Androidアプリプログラミングガイド (for Smartphone Developers)

cocos2d-xによるiPhone/Androidアプリプログラミングガイド (for Smartphone Developers)

cocos2dでつくるiPhoneゲーム―自由で速い、ゲーム用フレームワークを使う! (I・O BOOKS)

cocos2dでつくるiPhoneゲーム―自由で速い、ゲーム用フレームワークを使う! (I・O BOOKS)