cocos2d游戏本地化而不使用字符串文件

时间:2011-10-13 08:08:05

标签: iphone ipad localization cocos2d-iphone

我想为我的游戏添加中文。但我使用的字体文件仅适用于英语。因此我将无法使用额外的字符串文件来添加本地化。另外,我需要为中文显示一些特定的图像。所以我认为最好的选择是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
}

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

1 个答案:

答案 0 :(得分:2)

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

您可以使用单例类来管理本地化,甚至可以在应用代理中存储标记。

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

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

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