我希望在手表复杂的本地化文本中显示,该文本包含在运行时设置的参数,例如: “可用:3”,其中“3”应在运行时设置 在iOS上,这很简单:一个定义了一个本地化的格式字符串,并将这个格式插入到实际参数中,例如:
let str = String.init(format: NSLocalizedString("TEST", comment:"Test"), 3)
Localizable.strings
文件包含条目
"TEST" = "Available: %i";
在watchOS 3中,如果想要更新并发症,可以使用
func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void)
在那里,如果提供了正确的并发症类型,可以选择并发症模板,并设置一些文本,例如使用:
let modularLargeTemplate = CLKComplicationTemplateModularLargeStandardBody()
modularLargeTemplate.headerImageProvider = CLKImageProvider.init(onePieceImage: UIImage(named: "Complication/Modular")!)
modularLargeTemplate.headerTextProvider = CLKSimpleTextProvider.localizableTextProvider(withStringsFileTextKey: „TEST“)
文件ckcomplication.strings
包含例如一个条目
"TEST" = "Available"
在这种情况下,复杂功能将显示“可用”。
问题是,如何添加实际值,例如“3”,显示文字?
答案 0 :(得分:0)
可以像在iOS中一样完成:
let str = String.init(format: NSLocalizedString("TEST", comment:" "), 3)
modularLargeTemplate.body1TextProvider = CLKSimpleTextProvider(text: str, shortText: str)
Localizable.strings
文件包含条目
"TEST" = "Available: %i";
如果Localizable.strings
是iOS应用的目标,那么这种方法很有用
但是,我不知道如何对CLKSimpleTextProvider.localizableTextProvider(withStringsFileTextKey: „TEST“)
做同样的事情
实际上,我无法想象为什么localizableTextProvider
存在,如果它不能与运行时参数(显然)一起使用,并且与上述解决方案相比没有提供任何优势(显然)。