Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不以编程方式重新启动应用程序的情况下更改ios中的语言?_Ios_Xib - Fatal编程技术网

如何在不以编程方式重新启动应用程序的情况下更改ios中的语言?

如何在不以编程方式重新启动应用程序的情况下更改ios中的语言?,ios,xib,Ios,Xib,我的应用程序包含两个英语和阿拉伯语的XIB文件。我想在语言更改时更改XIB文件,而不重新启动应用程序 我在最近的项目《需要支持阿拉伯语和英语》中也做过类似的工作。其中,我需要根据列表中的选定选项更改语言。我已经创建了两个.xib,一个用于阿拉伯语,一个用于英语,然后选择 //用于设置束 +(void) setContentBundle{ SS AppDelegate *delegate = [[UIApplication sharedApplication] delegate];

我的应用程序包含两个英语和阿拉伯语的XIB文件。我想在语言更改时更改XIB文件,而不重新启动应用程序

我在最近的项目《需要支持阿拉伯语和英语》中也做过类似的工作。其中,我需要根据列表中的选定选项更改语言。我已经创建了两个.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文件。如何在ios中设置ContentBundleManager可能存在重复?内容包只是根据所选语言获取xib的想法。Check+void setContentBundle它正在做同样的事情。您在项目中使用了FollowUp.DepartmentKey什么?我应该在ContentBundleManager中写什么?