将API错误代码映射到iOS中的本地化字符串

时间:2013-04-08 14:38:24

标签: ios localization mapping error-code

我正在编写一个iOS应用程序,可从我们公司的服务器下载一些统计信息。如果出现错误,API会提供错误代码和错误说明。我想保留内部日志的错误描述(总是英文),并将错误代码映射到一些本地化的字符串。哪个是解决这个问题的最佳方法?我正在考虑使用.plist文件执行映射,但不是100%确定。

2 个答案:

答案 0 :(得分:1)

只要内存占用率很低,使用带有NSDictionary的plist文件就可以了。我做了类似的事情。

但是,也要注意标准方法NSLocalizedString并为每种语言使用.Strings文件。

以下是如何使用NSLocalizedString的示例:

// Set the label using the localized string
self.label.text = NSLocalizedString(@"Select choice:", @"Prompt to make a selection.");

第一部分是您在文件Localizable.strings中定义的密钥。如果字符串文件中不存在任何条目,则使用密钥名称,因此我使密钥等于默认文本。在上面的示例中,如果找不到默认语言的条目,则只使用密钥名称@"Select choice:"

然后,您创建一个Localizable.string文件并按Localize按钮,然后为每种语言创建一个。您的西班牙语可能如下所示:

/* Contents of Localizable.strings */
"Select choice:" = "Selecciona la opción:";

当然,你可以使用英文版,如下所示:

/* Contents of Localizable.strings */
"Select choice:" = "Select choice:";

NSLocalizedString()的第二个参数是一个注释,它是可选的,但是Apple提供了一些工具来查找代码中的所有NSLocalizedString()条目,并为您生成Strings资源文件中的行,并附带注释。

答案 1 :(得分:0)

我要补充一点,如果您的API采用语言参数并以该语言返回消息,您可以使用其可用的语言(目标C):

NSArray *availableLanguages = @[@"en", @"es"]; // API's available languages
NSString *preferredLanguage = [NSBundle preferredLocalizationsFromArray:availableLanguages].firstObject;

然后将preferredLanguage传递给API。

(API甚至可能会调用它来获取它支持的语言。)

请参阅https://developer.apple.com/library/content/technotes/tn2418/_index.html