【问题标题】:cocos2d game localization without using string filecocos2d游戏本地化不使用字符串文件
【发布时间】:2011-10-13 08:08:05
【问题描述】:

我想为我的游戏添加中文。但我使用的字体文件仅适用于英文。因此我将无法使用额外的字符串文件来添加本地化。另外,我需要为中文显示一些特定的图像。所以我认为最好的选择是 if-else 语句。 但是当我在网上搜索时,我只发现:

NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
NSArray* languages = [defs objectForKey:@"AppleLanguages"];
NSString* preferredLang = [languages objectAtIndex:0];

我不知道如何使用它。请给我一个代码示例

另外,如果我可以在我的 Constant.h 文件中定义一个布尔值,我会在其中放置我的所有常量(例如 #define num_images_per_level 12)

喜欢:

#define chinese_or_not some_boolean_statement

那么我可以直接使用

if (chinese_or_not) {
    //display some image for chinese player only
}

请帮助我(使用代码)。谢谢你

【问题讨论】:

    标签: iphone ipad localization cocos2d-iphone


    【解决方案1】:

    您将无法为此目的使用#define,因为#define 是preprocessor directive,这意味着编译器使用它来决定应该编译哪些代码以及应该忽略哪些代码。这使得它不适用于任何运行时逻辑(在编译后会改变应用程序行为的东西)。

    您可以使用单例类来管理您的本地化,甚至可以在您的应用委托中存储一个标志。

    我会在您的应用程序委托applicationdidfinishlaunching 中查询当前语言并设置一个标志(使用单例/全局变量)并在整个应用程序中查询:

    if ([[LocalizationManager instance] getLanguage] == kChinese) {...}
    

    对于查询语言,您应该使用NSLocale class

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 2013-10-25
      • 1970-01-01
      • 2017-06-07
      相关资源
      最近更新 更多