2014-02-09 23 views
2

我正在開發一個IOS應用程序,我想在按下按鈕時更改語言。一切都很好,但當我按下語言按鈕時,內容不會刷新,我只能在離開應用程序並回來時看到它,有沒有一種方法可以從應用程序內動態更改語言?以下是我爲改變語言而創建的操作,該應用已經本地化。按鈕來本地化iOS應用程序

-(IBAction) selectLanguage:(UIButton *) currentBtn { 

if ([currentBtn.currentTitle isEqualToString:@"fr"]) { 
    [prefs setObject:@"fr" forKey:@"appsLanguage"]; 
} 
else { 
    [prefs setObject:@"en" forKey:@"appsLanguage"]; 
    } } 

回答

0

您可以從包中加載本地化文件

NSBundle* locBundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]]; 

,然後得到這樣

NSString* str = [locBundle localizedStringForKey:key value:key table:nil]; 

的本地化字符串如果您已經使用NSLocalizedString您可以創建一個Singleton與一個輔助函數並用你的函數替換NSLocalizedString-Makro

#undef NSLocalizedString 
#define NSLocalizedString(key, _comment) [[Singleton sharedInstance] yourMethodWithKey:key] 

之後重新加載/刷新您的視圖,你應該很好。

+0

你好,謝謝你的幫助。我有點新東西,你可以請更具體一點嗎? – user3288579