2010-05-31 81 views
0

我开发应该支持两种语言的应用程序:英语和法语。但是因为英语翻译还没有完成,我们希望它在法国的唯一,后来加英语翻译以后部署。设置默认语言在第一次运行

问题是,我不想从我的代码中去掉英文语言,因为有些部分已经完成了,该语言有不同的NIB等等。相反,我只想要英文语言临时禁用我的应用程序

我所做的是我把这个代码的

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

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

它的工作原理差别,除了一点细微的第一条指令。安装后第一次启动应用程序时,它仍然是英文的。这可能是因为AppleLanguages偏好尚未设置它。在我退出应用程序并重新启动后,它将以法语正确显示。

有谁知道一个修复,使法语也适用在第一次运行?

回答

3

听起来很凌乱。为什么不从目标中取消未完成的英语资源,这样他们就不会被部署?另外,你有没有看过Info.plist中的CFBundleDevelopmentRegion设置?

10

我碰到了同样的问题,我可以解决这个问题的唯一办法是在应用最早阶段的一段代码,即在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; 
} 

我不太确定这是一个好的做法,但它在我的情况下按预期工作。

+0

把这个在main.m文件后,它显示的应用程序每次在法国 – Heena 2011-09-22 05:02:52

+0

这部作品,是比另一个更好的答案。 – 2012-03-20 14:24:46

+1

实施此解决方案时遇到问题:请参阅http://stackoverflow.com/questions/22448407/set-default-language-at-first-run-ios 任何想法为什么? – Antzi 2014-03-17 06:56:03