CCLocalizedString

(今更ですが)ローカライズのときに便利なCCLocalizedString関数を紹介します。iOSではNSLocalizedStringがありましたが、cocos2d-xには存在しません。そこで小 苏氏がCCLocalizedString関数を公開してくれているので、感謝しつつこれを利用しましょう。
ファイルはこちらからダウンロードできます。
http://www.cocos2d-x.org/boards/18/topics/14981?r=15087#message-15087
CCLocalizedString
しかし、最新バージョン(cocos2d-x 2.1.2)で利用するにはソースを編集しなければいけないので、導入手順も含めご紹介します。動作確認はiOSとAndroidで行っています。なお利用方法はNSLocalizedStringと同じです。

導入手順

  1. CCLocalizedString.cppの変更箇所は3ヶ所あります。

14行目 「cocoa/」を追加します。

#include "cocoa/CCString.h"

30行目 getCurrentLanguage関数の呼び出し方法変更

ccLanguageType curLanguage = CCApplication::sharedApplication()->getCurrentLanguage();

57行目 fullPathForFilename関数へ変更

fullPath = CCFileUtils::sharedFileUtils()->fullPathForFilename( fileName );

 

  1. ソースの配置

CCLocalizedString.h/.cppを
cocos2d-2.1rc0-x-2.1.2/cocos2dx/platform
へ配置します。

 

  1. cocos2d.hの編集

cocos2d-2.1rc0-x-2.1.2/cocos2dx/include/cocos2d.h

#include "platform/CCLocalizedString.h"

を追記します。

 

  1. プロジェクトへの取り込み
  • Androidの場合

cocos2d-2.1rc0-x-2.1.2/cocos2dx/Android.mk
上記ファイルにて、「LOCAL_SRC_FILES」に対して「platform/CCLocalizedString.cpp」を追加します。

LOCAL_SRC_FILES := \
platform/CCLocalizedString.cpp \
  • iOSの場合

Xcode上で、cocos2dxプロジェクトにCCLocalizedString.h/.cppを取り込みます。

 

利用方法

  1. CCLocalizedString.cppの修正

32行目よりローカライズの言語設定を行います。例えば、英語と日本語(デフォルト英語)に対応するのであれば、次のようにすれば良いでしょう。

    switch (curLanguage) {
        case kLanguageJapanese:
            fileName = "Localized_ja";
            break;
        default:
            fileName = "Localized_en";
            break;
    }

 

  1. ローカライズ用のファイルを作成する

1. で設定したファイル名のファイルを、Resourcesディレクトリに配置します。上記の場合は、

  •  Localized_en
  •  Localized_ja

を用意します。
ファイルの中身は
(キー) = “(表示する文字列)”;
の形式で記述します。例えば、キーが「HELLO」表示する文字列が「ハローワールド」の場合、

HELLO = "ハローワールド";

とします。

 

  1. ローカライズが必要な箇所にてCCLocalizedString関数を利用する。

CCLocalizedString関数の第1引数はキー、第2引数はコメントとなっています。NSLocalizedStringと同じですね。

string hoge = CCLocalizedString("HELLO", NULL);
string fuga = CCLocalizedString("HELLO", "はろーわーるど");

ただ毎回CCLocalizedStringと書くのは面倒なので、マクロ定義しておけば良いでしょう。

#define CCLS(key) CCLocalizedString(key, NULL)

すると、ソースがスッキリします。

string hoge = CCLS("HELLO");

 

  1. アプリの実行

画像だけでは判り難いですが、OSの言語設定を変更すると日本語と英語が切り替わります。
ローカライズ英語

ローカライズ日本語

One Comment

  1. Cocos2dx 〜 CocosBuilderで画像のLocalizeを行う方法 〜 | Learn iPhone, iOS, Objective-c, cocos2d and ....? says:

    […] CocosBuilderとローカライズ cocos2d-xにおけるローカライズ(多言語対応)方法 CCLocalizedString […]

Leave a Reply

You must be logged in to post a comment.