Мое приложение содержит два файла XIB для английского и арабского языков. Я хочу изменить файлы XIB при изменении языка без перезапуска приложения.Как изменить язык в ios без перезапуска приложения программно?
1
A
ответ
0
Я сделал такую же задачу в своем недавнем проекте Необходимость поддержки арабского языка & English. Где мне нужно изменить язык по выбранной опции из списка. Я создал два .xib один на арабском языке и один на английский, а затем выберите
// для установки сверток
+(void) setContentBundle{
SS AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
NSString *currentLanguage;
if([delegate.strLanguage length]> 0)
{
currentLanguage = delegate.strLanguage;
}else {
currentLanguage = @"en";
}
if ([currentLanguage isEqualToString:@"ar"]) { // If ARABIC.
languageBundle = nil;
NSString* path = [[NSBundle mainBundle] pathForResource:@"ar" ofType:@"lproj"];
languageBundle = [NSBundle bundleWithPath:path];
}else if ([currentLanguage isEqualToString:@"en"]){ // If ENGLISH.
languageBundle = nil;
NSString* path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
languageBundle = [NSBundle bundleWithPath:path];
}
}
// getting localiation key value
+(NSString *)getLocalizedStringForKey:(NSString *)key value:(NSString *)v table:(NSString *)t{
if([key isEqualToString:@"FollowUp.DepartmentKey"]){
NSLog(@"%@",key);
}
SSAppDelegate *delegate = (SSAppDelegate *)[UIApplication sharedApplication].delegate;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"KEY LIKE[c] %@",
key];
NSArray *filteredArray = [delegate.arrSystemMessages filteredArrayUsingPredicate:predicate];
NSLog(@"%@", filteredArray);
if(filteredArray!=nil && [filteredArray count]>=1){
NSMutableDictionary *dict=[filteredArray objectAtIndex:0];
if([[ContentBundleManager selectLanguage] isEqualToString:@"ar"]){
return [dict valueForKey:@"AR"];
}else{
return [dict valueForKey:@"EN"];
}
}else{
return [[ContentBundleManager getContentBundle] localizedStringForKey:key value:v table:t];
}
}
//for getting bundle
+(NSBundle *) getContentBundle{
SSAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
NSString *currentLanguage;
if([delegate.strLanguage length]> 0)
{
currentLanguage = delegate.strLanguage;
}else {
currentLanguage = @"en";
}
if ([currentLanguage isEqualToString:@"ar"]) { // If ARABIC.
languageBundle = nil;
NSString* path = [[NSBundle mainBundle] pathForResource:@"ar" ofType:@"lproj"];
languageBundle = [NSBundle bundleWithPath:path];
}else if ([currentLanguage isEqualToString:@"en"]){ // If ENGLISH.
languageBundle = nil;
NSString* path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
languageBundle = [NSBundle bundleWithPath:path];
}
return languageBundle;
}
/// and call .xib
SSBaseViewController *baseView= [SSLBaseViewController getBaseViewObjectWithBundle:nil];
/// and call string file
[baseView setHeaderTitle:[ContentBundleManager getLocalizedStringForKey:@"FollowUp.FollowUpKey" value:@"" table:nil]];
я думаю, что вам нужно для обнаружения текущего iPhone языка ввода, то в соответствии с этим вы можете использовать XIB файлы. – jamil
Возможный дубликат [Как изменить язык приложения программно БЕЗ перезапуска моего приложения?] (Http://stackoverflow.com/questions/15786501/how-to-change-app-language-programmatically-without-restarting-my-app) – rptwsthi