iOS:无需重启即可更改本地化的xib

Moh*_*gab 3 localization objective-c localizable.strings ios

我知道有一些pod用于更改本地化的字符串文件而无需重新启动..就像iOS-CustomLocalisator 但我的问题是我的项目严重依赖于xibs并且它试图依赖于服务器本地化而不是设备本地化.

希望有办法解决这个问题.

Y.B*_*ons 6

我认为您首先需要本地化所有xib(通过单击文件检查器中的"Localize ..."按钮).如果您需要,请选择您需要的语言并对Localizable.strings执行相同的操作.

然后导入项目中的BundleLocalization文件.如果您需要更改语言,只需使用:

[[BundleLocalization sharedInstance] setLanguage:@"fr"];
Run Code Online (Sandbox Code Playgroud)

它适用于xib,storyboard和NSLocalizedString函数.唯一的"问题"是您在设置语言时需要重新加载当前视图控制器.如果你有一个UINavigationController(有一个xib或一个stroyboard,它可以使用),你可以使用这种方法:

UINavigationController *navController = self.navigationController;
UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"currentViewControllerId"];
NSMutableArray *viewControllersArray = [[NSMutableArray alloc] initWithArray:navController.viewControllers];
[viewControllersArray replaceObjectAtIndex:([navController.viewControllers count] - 1) withObject:vc];
navController.viewControllers = viewControllersArray;
Run Code Online (Sandbox Code Playgroud)