2010-05-31 80 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