NSURLConnection返回的NSError只有英文吗?

4
如果我在iPad上打开飞行模式并尝试建立一个NSURLConnection,我会收到一个错误提示:"网络连接似乎已断开。" 如果我在iPad上切换到英语以外的任何其他语言,仍然会得到相同的错误提示。难道不应该用当前选择的语言来显示错误信息吗?
使用以下代码:
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    NSLog(@"Error: %@",[error localizedDescription]);
}

1
这取决于是否提供了本地化描述。如果没有本地化描述,错误描述将默认为后备语言,很可能是英语。 - Wolfgang Schreurs
4
您的应用程序是否已进行其他语言的本地化?如果没有,操作系统将不会使用其本地化字符串。 - Ole Begemann
谢谢Ole,问题在于因为开发而只将英语作为我的应用程序的本地化语言。 - David
我正在做类似的事情:我想为每个 [error localizedDescription]; 显示一个自定义消息,但我找不到列表或者不知道如何做。我已经搜索了很多并阅读了大部分stackoverflow的问题,但是我找不到清晰的答案。有人能帮忙吗? - Neeku
1个回答

3

我找到了我的问题的答案,由于这与该问题有关,所以我分享它以帮助需要的人。

包含错误代码和本地化描述的文件位于/System/Library/Frameworks/Foundation.Framework/Resources/en.lproj/FoundationErrors.strings。将此文件复制并粘贴到其他位置(以避免与原始文件混淆)。现在在终端中运行以下命令将二进制文件转换为文本文件:plutil -convert xml1 FoundationErrors.strings。现在将文件拖入Xcode项目中,右键单击并选择打开为...属性列表。现在您拥有键和描述。您可以翻译(如果您需要的语言不在本地化中可用)或根据需要自定义它们,并使用所需名称保存,例如Persian.strings

现在将此代码添加到要使用它的方法中:

//persian error messages file full path
NSString * persianErrorsListFile = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Persian.strings"];
//Load file as dictionary
NSDictionary * persianErrorsList = [[NSDictionary alloc] initWithContentsOfFile:persianErrorsListFile];

NSString *errorKey = [NSString stringWithFormat:@"Err%ld", (long)errorCode];
NSString *errorMessage = persianErrorsList[errorKey];

我刚刚尝试了这种方法,但是出现了一个错误:-bash:/System/Library/Frameworks/Foundation.Framework/Resources/en.lproj/FoundationErrors.strings:权限被拒绝。 - Vishnu Kumar. S
@VishnuKumar.S 你在哪个阶段遇到了这个错误?你是否将该文件复制并粘贴到另一个可读写的目录中? - Neeku
是的,我将那个文件复制到了我的桌面上,并且给予了读写权限。但是仍然显示相同的错误:“权限被拒绝”。 - Vishnu Kumar. S
没有,就我所看到的,没有错误。我刚刚再次尝试自己操作,以确保它可以正常工作,实际上是可以的。我在那里没有收到任何错误。此外,我没有更改权限,只是将其粘贴到桌面上,并保持权限不变:http://cl.ly/image/2V1S1J0e0Y3r/Screen%20Shot%202014-03-08%20at%208.06.05%20PM.png - Neeku
好的@VishnuKumar.S。尝试使用以下命令而不是第一个命令,看看是否会出现相同的错误: plutil -convert xml1 FoundationErrors.strings -o /tmp/TextFoundationErrors.xml如果成功,文本xml文件将在/tmp/文件夹中。 - Neeku
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接