问题描述
快速创建一个本地化的字符串,使用 `NSLocalizedString(key:,value:,comment:) 但是在较旧的目标 C https://developer.apple.com/documentation/foundation/nslocalizedstring 在 xliff 文件中,似乎只有键和注释,而键似乎既充当键又充当值。
我的问题是如何为目标 C 中的 nslocalizedstring 提供键和值?
解决方法
您正在查看宏的简化形式。完整的形式叫做说
NSString * NSLocalizedStringWithDefaultValue(
NSString *key,NSString *tableName,NSBundle *bundle,NSString *value,NSString *comment
)
见https://developer.apple.com/documentation/foundation/nslocalizedstringwithdefaultvalue
只需将您不关心的内容设置为 nil。
,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,bundle,comment) \
[bundle localizedStringForKey:(key) value:@"" table:(tbl)]
#define NSLocalizedStringWithDefaultValue(key,val,comment) \
[bundle localizedStringForKey:(key) value:(val) table:(tbl)]