Swift:带有局部变量注入的动态字符串
Swift: dynamic strings with local variable injections
不确定这是否可行。但我想这样做:
let version = "2.0.1"
let year = 2017
let version = "Build \(version), \(year)"
但是,我想从本地化文件获取版本字符串。即
let version = "2.0.1"
let year = 2017
let versionTemplate = NSLocalizedString("version.template", comment:"")
let version = ???? // Something done with versionTemplate
我已经研究过使用 NSExpression
,但它是否可以做到这一点或如何做到这一点并不明显。
有人这样做吗?
完全有可能
您需要使用字符串初始值设定项而不是文字。
let version = "2.0.1"
let year = 2017
let versionTemplate = String(format: NSLocalizedString("version.template", comment: ""), arguments: [version, year])
// output: Build 2.0.1, 2017
在您的 localizable.strings
文件中,您需要这样的模板:
"version.template" = "Build %@, %ld"
您可以在此处使用各种格式说明符。检查所有可能性的文档。 https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1
不确定这是否可行。但我想这样做:
let version = "2.0.1"
let year = 2017
let version = "Build \(version), \(year)"
但是,我想从本地化文件获取版本字符串。即
let version = "2.0.1"
let year = 2017
let versionTemplate = NSLocalizedString("version.template", comment:"")
let version = ???? // Something done with versionTemplate
我已经研究过使用 NSExpression
,但它是否可以做到这一点或如何做到这一点并不明显。
有人这样做吗?
完全有可能
您需要使用字符串初始值设定项而不是文字。
let version = "2.0.1"
let year = 2017
let versionTemplate = String(format: NSLocalizedString("version.template", comment: ""), arguments: [version, year])
// output: Build 2.0.1, 2017
在您的 localizable.strings
文件中,您需要这样的模板:
"version.template" = "Build %@, %ld"
您可以在此处使用各种格式说明符。检查所有可能性的文档。 https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1