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

RaY*_*ell 0 iphone internationalization

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

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

我做的是把这段代码作为第一条指令

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSArray arrayWithObjects:@"fr", nil] forKey:@"AppleLanguages"];
[defaults synchronize];
Run Code Online (Sandbox Code Playgroud)

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

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

rom*_*rom 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;
 }
Run Code Online (Sandbox Code Playgroud)

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