Objective C 中的 NSLocalizedString

Posted

技术标签:

【中文标题】Objective C 中的 NSLocalizedString【英文标题】:NSLocalized String in Objective C 【发布时间】:2020-12-21 22:06:46 【问题描述】:

在 swift 中使用 `NSLocalizedString(key: , value: , comment:) 创建本地化字符串 但在较旧的目标 C https://developer.apple.com/documentation/foundation/nslocalizedstring 在 xliff 文件中似乎只有键和注释,并且键似乎既充当键又充当值。

我的问题是如何在 Objective C 中为 nslocalizedstring 提供键和值?

【问题讨论】:

我认为这不是我想要的。 1.它给出了一个错误 2.但更重要的是它似乎需要一个表来查找键。在 swift 中,键值注释 -> 允许我只输入原始字符串,它们将在 xliff 文件中组织起来。我不认为这个链接能做到这一点。 【参考方案1】:

matt有正确答案;但是,直接拼出来:

在 Swift 中:

NSLocalizedString(key, value: value, comment: comment)

在目标 C 中:

NSLocalizedStringWithDefaultValue(key, nil, NSBundle.mainBundle, value, comment)

Objective C 版本让您可以深入了解它是如何完成的。这是 NSBundle.h 中 NSLocalizedString* 宏的代码。

#define NSLocalizedString(key, comment) \
        [NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:nil]
#define NSLocalizedStringFromTable(key, tbl, comment) \
        [NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:(tbl)]
#define NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment) \
        [bundle localizedStringForKey:(key) value:@"" table:(tbl)]
#define NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment) \
        [bundle localizedStringForKey:(key) value:(val) table:(tbl)]

【讨论】:

【参考方案2】:

您正在查看宏的简化形式。完整的形式叫做saying

NSString * NSLocalizedStringWithDefaultValue(
  NSString *key,
  NSString *tableName,
  NSBundle *bundle,
  NSString *value,
  NSString *comment
)

见https://developer.apple.com/documentation/foundation/nslocalizedstringwithdefaultvalue

只需将您不关心的内容设置为零即可。

【讨论】:

以上是关于Objective C 中的 NSLocalizedString的主要内容,如果未能解决你的问题,请参考以下文章

LATEX 列表中的 Objective C 代码

Objective-C中的Hello World

Objective C 中的 RSA 实现

搞懂Objective-C中的autorelease

Objective C 中的 NSLocalizedString

objective c, protocol