4

簡体字/繁体字を分ける必要があります。cocos2d for iPhone では、単純に「hans」と「hant」を使用しています。しかし、cocos2d-x では、コードに飛び込みます。CCApplication のコードは次のとおりです。

ccLanguageType ret = kLanguageEnglish;
if ([languageCode isEqualToString:@"zh"])
{
    ret = kLanguageChinese;
}
else if ([languageCode isEqualToString:@"en"])
{
    ret = kLanguageEnglish;
}
else if ([languageCode isEqualToString:@"fr"]){
    ret = kLanguageFrench;
}
else if ([languageCode isEqualToString:@"it"]){
    ret = kLanguageItalian;
}
else if ([languageCode isEqualToString:@"de"]){
    ret = kLanguageGerman;
}
else if ([languageCode isEqualToString:@"es"]){
    ret = kLanguageSpanish;
}
else if ([languageCode isEqualToString:@"ru"]){
    ret = kLanguageRussian;
}

return ret;

中国語の場合は「zh」のみに注意してください(簡体字/繁体字の両方、おそらく)

どうすればそれらを区別できますか?

編集: cocos2d-x を使用しており、Android で作業する必要があります。iPhoneだけではありません。ミッキーの答えはiPhoneでのみ機能します。ありがとう。

4

3 に答える 3

2

cocos2D helloworld で次のコードをテストしました。zh-Hanszh-Hantで簡体字/繁体字を分けることができます。

ステップ1。HelloWorldLayer.m では、この行を先頭に追加する必要があります。そうしないと、コンパイルに失敗します。

#import <Foundation/NSLocale.h>

ステップ2。これで、言語を取得できます。例えば、

-(id)init{
    NSString* currentLang = [[NSLocale preferredLanguages] objectAtIndex:0] ;
    NSLog(@"Language: %@", currentLang);
}
于 2012-05-25T09:37:11.517 に答える
0

cocos2dx android jni でいくつかの変更を行う必要があります: cocos2d-x-2.xx/cocos2dx/platform/android/java/src/org/cocos2dx/lib/Cocos2dxHelper.javaで、

交換

return Locale.getDefault().getLanguage();

return Locale.getDefault().toString();

したがって、CCApplication::getCurrentLanguage() で zh_CN、zh_TW を取得できます。また、CCApplication::getCurrentLanguage() で実装を更新する必要があります (cocos2d-x-2.xx/cocos2dx/platform/android/CCApplication.cpp を見つけます)。 :

ccLanguageType CCApplication::getCurrentLanguage()
{
    std::string languageName = getCurrentLanguageJNI();
    if (languageName.find("zh_CN") == 0) {
        return kLanguageChineseCN; // need define this value by yourself
    } else if (languageName.find("zh_TW") == 0) {
        return kLanguageChineseTW; // need define this value by yourself
    } else if (languangeName.find("en") == 0) {
        return kLanguageEnglish;
    } ...

    return kLanguageEnglish;
}
于 2013-08-13T09:44:35.797 に答える