0

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

4

2 回答 2

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() 条目,并为您在字符串资源文件中生成行,并附上注释。

于 2013-04-08T14:52:39.853 回答
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

于 2018-03-21T22:13:11.517 回答