1
我的要求是從應用程序內切換本地化的XIB。通常,當您本地化XIB並從設置中更改語言時,特定語言本地化的XIB將自動加載。如何在應用程序中切換本地化的Nib?
我有XIBs像下面的圖像中:
我要加載的XIB當在一個應用程序中的按鈕抽頭選擇的特定語言。這種應用的源代碼可以在here找到。
我該怎麼做?
我的要求是從應用程序內切換本地化的XIB。通常,當您本地化XIB並從設置中更改語言時,特定語言本地化的XIB將自動加載。如何在應用程序中切換本地化的Nib?
我有XIBs像下面的圖像中:
我要加載的XIB當在一個應用程序中的按鈕抽頭選擇的特定語言。這種應用的源代碼可以在here找到。
我該怎麼做?
我通過創建解決該問題的簡單方法見下文
-(void)changeControllersForLanguage:(NSString *)language{
NSString *path = [[NSBundle mainBundle] pathForResource:language ofType:@"lproj"]; //Detecting specific language lproj folder
if (path) {
//Creating Local Bundle from the language specific bundle path
NSBundle *localeBundle = [NSBundle bundleWithPath:path];
NSArray *controllers=self.tabBarController.viewControllers;
for(UIViewController *view in controllers){
[localeBundle loadNibNamed:NSStringFromClass([view class]) owner:view options:nil];
}
}
}
然後在按鈕自來水
- (IBAction)toggleLanguage:(id)sender {
UIButton *btn=(UIButton *)sender;
switch (btn.tag) {
case 1://French
[self changeControllersForLanguage:@"fr"];
break;
case 2://English
[self changeControllersForLanguage:@"en"];
break;
default:
break;
}
}
效果真的不錯調用該函數如下.. :)
你可以通過將你的語言字符串放入一個數組'NSArray * languageCodes = @ [@「」,@「fr」,@「en」]',並調用'[self changeControllersForLanguage:languageCodes [btn.tag] ];' – dasblinkenlight