cocos2d-xでローカライズ

Cocos2d-xでの多言語対応方法のメモです。
(とりあえず英語と日本語だけ。)

今回使用したバージョン

  • cocos2d-2.0-x-2.0.4

iOSでのNSLocalizedStringのようなことをするクラスを公開されている方がいらっしゃいました。
CCLocalizedString localize your app string like NSLocalizedString,easy to use! - Extensions - Cocos Forums

また、cocos2d-x 2.0.4では、cocos2d-xが日本語の判別をしてくれません。
なので、下記サイトを参考にCCCommonクラス、CCApplicationクラスに日本語の設定を足します。(iOSAndroidそれぞれ設定)
tks2.net - このウェブサイトは販売用です! - 講演 依頼 開発 イラスト ウェブ 作成 ソフトウェア デザイン リソースおよび情報

cocos2d-x 2.1.Xでは日本語設定が追加されていたので、不要だと思います。

CCLocalizedString.hとcppはClassesに追加し、ちょびっと修正します。

CCLocalizedString.cpp

/*
#include "CCApplication.h"
#include "CCCommon.h"
#include "CCFileUtils.h"
#include "CCDirector.h"
#include "CCString.h"
*/
#include "cocos2d.h"

...

		// 追加
		case kLanguageJapanese:
			fileName = "Localized_ja";
			break;

...

Localized_enとLocalized_ja(新規作成)はResourcesに追加します。
日本語のファイルは最後に空行をいれないと、変な文字が表示されました。
細かく追ってはいませんが、とりあえずファイルの最後に空行を入れておいたほうがよさそうです。

Localized_en

Title = "Title";
Help = "Help";
Quit = "Quit App";

Localized_ja

Title = "タイトル";
Help = "ヘルプ";
Quit = "アプリ終了";


Android.mkにCCLocalizedString.cppを追記します。


文字列を取得するときは、次のようにします。

const char* title = CCLocalizedString("Title","Title");

見たところ、2つ目のパラメーターは使われてなさそうです。