[Cocos2d-X]現在の言語を取得する / ローカライズ

cocos2d-x

かなりテキトーですけど。

使用中の言語を取得する

CCApplication::getCurrentLanguage() によって現在の言語を取得できるけども、

コードを見ると日本語の分岐が無いので追加しないと日本語の判定には使えないので日本語の分岐を増やすこと。

CCCommon.h にある enum LanguageType にも 日本語の定数を追加しておくこと。

とりあえず凄くテキトーに書いた

クラスかファイルかにまとめておけばいいのかなぁ。

#ifndef CLcocos2dx_CLLocalize_h
#define CLcocos2dx_CLLocalize_h

#define defineLocalizedValue(__TYPE__, __NAME__) \
inline __TYPE__ localized##__NAME__ () {

#define JA                ccLanguageType lang = cocos2d::CCApplication::getCurrentLanguage(); \
                          if ( lang == kLanguageJapanese ) { return
#define EN              ; } else if ( lang == kLanguageEnglish ) { return
#define other           ; } else { return

#define if_lang_JA        ccLanguageType lang = cocos2d::CCApplication::getCurrentLanguage(); \
                          if ( lang == kLanguageJapanese ) {
#define elseif_lang_EN    } else if ( lang == kLanguageEnglish ) {
#define else_lang         } else {

#define endDefinition   ; } }

// 言語別にテキストを設定
defineLocalizedValue( const char *, TestString )
JA "日本語"
EN "Michel Quest"
other "Michel Forever"
endDefinition

// 言語 & プラットフォーム別にテキストを設定
defineLocalizedValue( const char *, CompleteTextFont )
  if_lang_JA
    #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
      return "ios";
    #elif (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
      return "android";
    #endif
  elseif_lang_EN
  	// なんか書く
  else_lang
  	// 書く
endDefinition

#endif

とりあえず醜いけどこれでいいや。

Share
関連記事