2010-07-13 63 views
2

更改一個iPhone應用程序的語言已經討論manytimes,但我堅持這一個:所提供的解決方案需要的應用程序重新啓動,使更改生效。但是你如何在iPhone 4上實現這一點?按「home」將應用程序發送到背景,然後單擊應用程序圖標即可將其返回。用戶有經驗就好像應用程序已重新啓動,並想知道爲什麼語言沒有改變。謝謝你的幫助。如何更改一個iPhone應用程序的首選語言中的iOS 4

回答

0

看看蘋果的示例代碼項目AppPrefs。它展示了在將應用程序帶回前臺時如何處理「設置」應用程序中所做的更改。示例代碼處理特定於應用程序的設置,但也可用於「系統範圍」設置更改。希望這可以幫助。

+0

感謝您的意見。不幸的是,這並不適合我:聽NSUserDefaultsDidChangeNotification的作品,但我不知道如何使NSLocalizedString使用新的語言。更改我的應用程序中的語言會導致重建AppleLanguages數組: [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:[language isoCode]] forKey:@「AppleLanguages」]; 但是我只在重新啓動應用程序後纔看到更改,而不是在它回到前臺時。 – Oliver 2010-07-14 10:37:30

4

你可以編寫自己的替代NSLocalizedString。在頭文件,這樣做

#undef NSLocalizedString 
#define NSLocalizedString(key, comment) MyLocalizedStringFunction(key) 

在你的功能,加載使用一個NSBundle正確.LPROJ束,然後調用

[bundle localizedStringForKey:key value:nil table:nil]; 

得到你想要的字符串。

我不知道這是否是最好的方法:我們不得不使用它,因爲我們想支持iPhone上不存在的語言,所以您的問題可能有一個更簡單的解決方案。

+0

這對我來說非常合適。非常感謝您的建議。 – Oliver 2010-07-16 08:21:19

相關問題