2013-04-03 110 views
0

如果我只需要更改文本字符串,它會很簡單,但是 如何更改圖像或xib文件(每個本地化)?如何以編程方式更改應用程序語言無需重新啓動我的應用程序?

代碼設置本地化:

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"Ukrainian", @"English", nil] forKey:@"AppleLanguages"]; 

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects: @"English", @"Ukrainian", nil] forKey:@"AppleLanguages"]; 

(如果我做了這個代碼,並應用程序是這樣下一次關閉時,應用程序啓動它使用的爲所有資源選定的語言)

我該怎麼做,但沒有重新啓動應用程序?

我發現了很多例子,但是這些例子顯示瞭如何處理文本,但是如何處理另一個資源,以及我如何更新它們(對於當前選擇的語言)?

例子: Change iOS app's language on the fly

language change only after restart on iphone

+2

此問題已被單獨提出10次以上,明顯沒有任何研究。其中之一:http://stackoverflow.com/questions/4238979/how-programatically-restart-iphone-app – Rob

+1

有辦法改變動態語言... – lifetimes

回答

1

你不能這樣做(沒有越獄)。您應該以某種方式編寫應用程序,以便在重新啓動應用程序時重新啓動某些重要信息時重新開始。例如,您可以彈出所有視圖控制器並釋放它們,然後讓用戶使用正確的語言重新加載它們。

但是,請注意,通常你不應該這樣做。本地化在iOS上以相當優雅的方式解決。您只需將.strings本地化(也可選擇.nib和圖像文件),系統會爲您保留其餘部分。當用戶在設置應用程序中更改語言時,系統會終止您的應用程序。用戶下次啓動應用時,會加載正確的語言。

0

爲什麼重新啓動應用程序,我想是不是possible.But你可以做任何在applicationDidBecomeActiveapplicationWillEnterForeground方法變更

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 
} 
0

這是不可能的,

雖然有一招

1>從您的應用程序打開Safari瀏覽器自定義URL(如com.yourcompany.yourApp)

2>註冊一個定製URL與您的應用程序(從plist文件,你可以做到這一點),這將打開Safari瀏覽器中打開你的應用程序時,該自定義網址在Safari中打開。

3>關閉你的「應用程序應該在後臺運行」從你的.plist文件。 (可以通過將UIApplicationExitsOnSuspend鍵添加到應用程序的Info.plist文件並將其值設置爲YES來實現此目的。)

相關問題