首次运行时为iPhone应用程序设置默认语言

时间:2010-05-31 12:58:00

标签: iphone internationalization

我正在开发一个应该支持两种语言的应用程序:英语和法语。但是,由于英语翻译尚未完成,我们只想用法语进行部署,稍后再添加英文翻译。

问题在于我不想从我的代码中删除英语,因为有些部分已经完成,有不同的NIB用于该语言等。相反,我只是想在我的语言中临时禁用英语应用

我所做的是将此代码作为

的第一条指令
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSArray arrayWithObjects:@"fr", nil] forKey:@"AppleLanguages"];
[defaults synchronize];

除了一件事以外它工作得很好。安装后第一次启动应用程序时,它仍然是英文版。这可能是因为尚未为此设置AppleLanguages首选项。退出应用程序并再次启动它后,它将以法语正确显示。

是否有人知道修复,以便在第一次运行时也应用法语?

2 个答案:

答案 0 :(得分:11)

我遇到了同样的问题,我能解决的唯一方法就是在应用程序的最早阶段获得代码片段,即在main.c中:

 int main(int argc, char *argv[]) {

     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
     [defaults setObject:[NSArray arrayWithObjects:@"fr", nil] forKey:@"AppleLanguages"];
     [defaults synchronize];

     int retVal = UIApplicationMain(argc, argv, nil, nil);

     [pool release];
     return retVal;
 }

我不确定这是一个很好的做法,但它在我的案例中按预期工作。

答案 1 :(得分:3)

听起来很乱。为什么不从目标中取消选中未完成的英语资源,这样它们就不会被部署?另外,您是否查看了Info.plist中的CFBundleDevelopmentRegion设置?

相关问题