2014年4月5日土曜日

cocos2d-x CCLocalizedStringを使ってローカライズ対応する

どうも、俺@休み中です。

 cocos2d-x(v2.1.5)で開発したゲームアプリもローカライズ対応させよう、
ということで、 有志の方がgithubで公開しているCCLocalizedStringを使わせてもらいました。

sue602/CCLocalizedStringDemo

まず、githubからcloneしてから
CCLocalizedString.cpp/CCLocalizedString.hをドラッグ&ドロップでプロジェクトに放り込みます。

git clone https://github.com/sue602/CCLocalizedStringDemo.git

使い方はとてもシンプル。
例えば日本語圏(japan.png)・英語圏(english.png)でそれぞれ違う画像を表示させたい場合は、
表示させたいSceneで、

#include “CCLocalizedString.h”

... 中略 ...
CCSprite *someSprite = CCSprite::create(CCLocalizedString(“FILE_NAME”, “some_comment"));
とします。
第1引数(”FILE_NAME")が変換対象となるキーです。
第2引数はコメント?

次に、ローカライズ用の設定ファイルを言語ごとにResource/フォルダに用意します。
今回は日本語と英語なのでLocalized_jpとLocalized_enになります。
それぞれのファイルに、
・Localized_jp
FILE_NAME = “japan.png”;

・Localized_en
FILE_NAME = “english.png”;

のように “キー” = “値” というフォーマットで記述します。

これで端末の言語設定によって使われるファイルを切り替えられます。

ただ、このままだと日本語・英語圏以外の言語環境でアプリを起動した場合、
ファイルが見つからずにクラッシュしてしまいました。
(やり方間違えてるのかな、、)
なので、CCLocalizedString.cppを少しいじります。

    // Get data of file
    fileContents = CCFileUtils::sharedFileUtils()->getFileData( fullPath.c_str( ) , "rb", &fileSize );

    // ここから
    if (fileContents==NULL) {
        // ファイルがない場合はLocalized_enを読み込む
        fileContents = CCFileUtils::sharedFileUtils()->getFileData( "Localized_en", "rb", &fileSize );
    }
    contents.assign(fileContents,fileContents+fileSize-1);
こうしておけば、対応していない言語環境の場合は
Localized_enを読み込むことが出来ます。


以上でぇぇぇぇぇす。

0 件のコメント: