2014-02-09 24 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