我正在开发一个应该支持两种语言的应用程序:英语和法语。但是,由于英语翻译尚未完成,我们只想用法语进行部署,稍后再添加英文翻译。
问题在于我不想从我的代码中删除英语,因为有些部分已经完成,有不同的NIB用于该语言等。相反,我只是想在我的语言中临时禁用英语应用
我所做的是将此代码作为
的第一条指令- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSArray arrayWithObjects:@"fr", nil] forKey:@"AppleLanguages"];
[defaults synchronize];
除了一件事以外它工作得很好。安装后第一次启动应用程序时,它仍然是英文版。这可能是因为尚未为此设置AppleLanguages
首选项。退出应用程序并再次启动它后,它将以法语正确显示。
是否有人知道修复,以便在第一次运行时也应用法语?
答案 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设置?