2012-02-01 64 views
0

我使用的是iOS 5时,Xcode 4.2错误在国际化iPhone

在我loginViewController:

-(IBAction)loginButton:(id)sender{ 
    textClass=[[MainScreenController alloc ] init]; 
    NSLog(@"ShowText called"); 
    textClass.selectedLanguage=currentLanguage; 
    [self.view addSubview:textClass.view] ; 
    NSLog(@"txtclaslan=%d",textClass.selectedLanguage); 
} 

在我MainViewController viewDidLoad:方法:

mainScreenTitle.text=[self languageSelectedStringForKey:@"screenTitle"]; 

而且在languageSelectedStringForKey:

-(NSString*) languageSelectedStringForKey:(NSString*) key{ 
    NSString *path; 
    if(selectedLanguage==ENGLSIH_LANGUAGE) 
     path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]; 
    else if(selectedLanguage==TURKISH_LANGUAGE) 
     path = [[NSBundle mainBundle] pathForResource:@"tr" ofType:@"lproj"]; 
    else 
     path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]; 

    NSBundle* languageBundle = [NSBundle bundleWithPath:path]; 

    NSString* str = [languageBundle localizedStringForKey:key value:@"" table:nil]; 
    return str; 
} 

这里在这个方法languageSelectedStringForKey当我加载MainViewController我的应用程序崩溃。我没有得到任何错误,只是这条线突出显示

NSBundle* languageBundle = [NSBundle bundleWithPath:path]; < Thread 1 

这是什么问题?

在此先感谢

+0

看着你的代码,似乎如果语言不是英语而不是土耳其语,那么路径没有设置。 – onnoweb 2012-02-01 16:16:54

+0

我同意onnoweb,你的'路径'变量没有设置,当不是英语或土耳其语,当你试图打开一个文件,应用程序崩溃。 – Niko 2012-02-01 16:28:56

+0

好吧,我已经添加了它,它现在没有崩溃,但这是一个国际化未得到正确实施的问题 – 2012-02-01 16:36:08

回答

0

至于建议: 你的代码看,似乎如果语言不是英语,而不是土耳其然后路径未设置。

您可能还需要遵循从这个忠告[一个NSBundle localizedStringForKey:值:表:]方法描述:

“使用用户默认NSShowNonLocalizedStrings,你可以改变localizedStringForKey的行为:值:表:要如果将此默认值设置为YES(在全局域或应用程序域中),那么当方法在表中找不到本地化字符串时,会记录消息向控制台发送一条消息,并在返回之前大写密钥。“

+0

thanx onnoweb,但如何解决我收到的问题,该语言没有得到正确实施 – 2012-02-02 07:12:42

+0

你能更具体地说明什么是不工作? – onnoweb 2012-02-02 15:18:16

+0

其实我面对的问题是,当我点击土耳其按钮并登录到我的应用程序时,它会显示土耳其语中的标题一秒钟,然后这些消失并再次显示英语标题。第二个问题是应该保留上次应用的语言,以便当用户返回到应用程序或启动应用程序时,该语言应该是所应用的最后一种语言。但它不是那样工作的。 – 2012-02-03 07:26:57