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的主要内容,如果未能解决你的问题,请参考以下文章