【问题标题】:Error in internationalization iPhoneiPhone国际化错误
【发布时间】:2012-02-01 16:14:13
【问题描述】:

我使用的是 iOS 5,XCODE 4.2

在我的登录视图控制器中:

-(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

这可能是什么问题?

提前致谢

【问题讨论】:

  • 查看您的代码,如果语言不是英语而不是土耳其语,则未设置路径。
  • 我同意 onnoweb,如果不是英语或土耳其语,则未设置您的“路径”变量,当您尝试打开文件时,应用程序崩溃。
  • 好的,我已经添加了它,它现在没有崩溃,但这是国际化没有得到正确实施的一个问题
  • @onnoweb:您应该将您的评论作为答案,因为它可能是正确的。另外请注意,由于 path 是一个局部变量,它是一个垃圾指针(而不是一个 nil 指针)。

标签: iphone objective-c ios cocoa-touch internationalization


【解决方案1】:

如建议: 查看您的代码,如果语言不是英语而不是土耳其语,则似乎没有设置路径。

您可能还需要遵循 [NSBundle 本地化StringForKey:value:table:] 方法描述中的建议:

"使用用户默认的 NSShowNonLocalizedStrings,您可以更改本地化StringForKey:value:table: 的行为,以便在方法找不到本地化字符串时记录消息。如果将此默认设置为 YES(在全局域或在应用程序的域中),然后当该方法在表中找不到本地化字符串时,它会向控制台记录一条消息并在返回之前将 key 大写。”

【讨论】:

  • thanx onnoweb 但是如何解决我遇到的问题,该语言没有正确实施
  • 实际上我面临的问题是,当我单击土耳其语按钮并登录到我的应用程序时,它会向我显示土耳其语标题一秒钟然后这些消失并显示英文标题再次。第二个问题是上次应用的语言应该保留,这样当用户返回应用程序或启动应用程序时,该语言应该是最后应用的语言。但它不是那样工作的。
猜你喜欢
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
相关资源
最近更新 更多