明日試してみたいと思うが以下メモを転機させて頂きました。
CCLocalizedString
(今更ですが)ローカライズのときに便利なCCLocalizedString関数を紹介します。iOSではNSLocalizedStringがありましたが、cocos2d-xには存在しません。そこで小 苏氏がCCLocalizedString関数を公開してくれているので、感謝しつつこれを利用しましょう。
ファイルはこちらからダウンロードできます。
http://www.cocos2d-x.org/boards/18/topics/14981?r=15087#message-15087
しかし、最新バージョン(cocos2d-x 2.1.2)で利用するにはソースを編集しなければいけないので、導入手順も含めご紹介します。動作確認はiOSとAndroidで行っています。なお利用方法はNSLocalizedStringと同じです。
ファイルはこちらからダウンロードできます。
http://www.cocos2d-x.org/boards/18/topics/14981?r=15087#message-15087
しかし、最新バージョン(cocos2d-x 2.1.2)で利用するにはソースを編集しなければいけないので、導入手順も含めご紹介します。動作確認はiOSとAndroidで行っています。なお利用方法はNSLocalizedStringと同じです。
導入手順
- CCLocalizedString.cppの変更箇所は3ヶ所あります。
14行目 「cocoa/」を追加します。
1
| #include "cocoa/CCString.h" |
30行目 getCurrentLanguage関数の呼び出し方法変更
1
| ccLanguageType curLanguage = CCApplication::sharedApplication()->getCurrentLanguage(); |
57行目 fullPathForFilename関数へ変更
1
| fullPath = CCFileUtils::sharedFileUtils()->fullPathForFilename( fileName ); |
- ソースの配置
CCLocalizedString.h/.cppを
cocos2d-2.1rc0-x-2.1.2/cocos2dx/platform
へ配置します。
cocos2d-2.1rc0-x-2.1.2/cocos2dx/platform
へ配置します。
- cocos2d.hの編集
cocos2d-2.1rc0-x-2.1.2/cocos2dx/include/cocos2d.h
に
に
1
| #include "platform/CCLocalizedString.h" |
を追記します。
- プロジェクトへの取り込み
- Androidの場合
cocos2d-2.1rc0-x-2.1.2/cocos2dx/Android.mk
上記ファイルにて、「LOCAL_SRC_FILES」に対して「platform/CCLocalizedString.cpp」を追加します。
上記ファイルにて、「LOCAL_SRC_FILES」に対して「platform/CCLocalizedString.cpp」を追加します。
1
2
| LOCAL_SRC_FILES := \ platform/CCLocalizedString.cpp \ |
- iOSの場合
Xcode上で、cocos2dxプロジェクトにCCLocalizedString.h/.cppを取り込みます。
利用方法
- CCLocalizedString.cppの修正
32行目よりローカライズの言語設定を行います。例えば、英語と日本語(デフォルト英語)に対応するのであれば、次のようにすれば良いでしょう。
1
2
3
4
5
6
7
8
| switch (curLanguage) { case kLanguageJapanese: fileName = "Localized_ja" ; break ; default : fileName = "Localized_en" ; break ; } |
- ローカライズ用のファイルを作成する
1. で設定したファイル名のファイルを、Resourcesディレクトリに配置します。上記の場合は、
- Localized_en
- Localized_ja
を用意します。
ファイルの中身は
(キー) = “(表示する文字列)”;
の形式で記述します。例えば、キーが「HELLO」表示する文字列が「ハローワールド」の場合、
ファイルの中身は
(キー) = “(表示する文字列)”;
の形式で記述します。例えば、キーが「HELLO」表示する文字列が「ハローワールド」の場合、
1
| HELLO = "ハローワールド" ; |
とします。
- ローカライズが必要な箇所にてCCLocalizedString関数を利用する。
CCLocalizedString関数の第1引数はキー、第2引数はコメントとなっています。NSLocalizedStringと同じですね。
1
2
| string hoge = CCLocalizedString( "HELLO" , NULL); string fuga = CCLocalizedString( "HELLO" , "はろーわーるど" ); |
ただ毎回CCLocalizedStringと書くのは面倒なので、マクロ定義しておけば良いでしょう。
1
| #define CCLS(key) CCLocalizedString(key, NULL) |
すると、ソースがスッキリします。
1
| string hoge = CCLS( "HELLO" ); |
- アプリの実行
0 件のコメント:
コメントを投稿