是否有可能在带有参数的复杂化本地化文本中?

时间:2016-11-15 16:18:13

标签: localization watch-os-3 apple-watch-complication

我希望在手表复杂的本地化文本中显示,该文本包含在运行时设置的参数,例如: “可用:​​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”,显示文字?

1 个答案:

答案 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存在,如果它不能与运行时参数(显然)一起使用,并且与上述解决方案相比没有提供任何优势(显然)。