我有如下要求: 在我的應用程序中,我提供了語言列表。現在當用戶更改語言時,它應該將所有標題和消息更改爲特定語言。實際流程就像,我有一個屏幕(視圖)設置在我的應用程序。在該設置屏幕中,我提供了語言選項。現在,當用戶選擇語言,然後在我的應用程序中,所有標題,消息應該以選定語言顯示,而無需啓動我的應用程序。iOS - 通過編程更改應用程序特定的語言,無需重新啓動應用程序
現在的問題是,當我選擇語言,例如西班牙語,然後它不會生效,無需重新啓動我的應用程序。
-(void) SetUserLanguage
{
NSString *appDataFilePath = [[NSBundle mainBundle] pathForResource:@"UserLanguageList" ofType:@"plist"];
NSDictionary *appDataDictionary = [[NSDictionary alloc] initWithContentsOfFile:appDataFilePath];
NSString* langName = [appDataDictionary objectForKey:self.pstrUserLanguage];
if(langName == nil || [langName isEqualToString:@""])
{
langName = @"en";
}
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *langArray = [defaults objectForKey:@"AppleLanguages"];
NSArray *currentLangArray = [NSArray arrayWithObject:langName];
[defaults setObject:currentLangArray forKey:@"AppleLanguages"];
[defaults synchronize];
}
上述功能是稱爲UserDataManager一個接口和實例的一部分的可用全局使用gpUserDataManager應用:如下面給出我已經使用的功能。因此,在選擇語言時,我將語言設置爲該結構,然後使用預先定義的plist文件進行映射。因此,當用戶選擇語言西班牙語時,它將值「es」設置爲上述函數中的首選語言。但要產生這種變化的效果,我需要重新啓動我的應用程序。請幫助如何達到我的要求。如果有任何疑問,請在拒絕此問題之前告訴我。
請注意,對於設置標題和顯示消息,我使用了NSLocalizedString函數。 – Premal