SwiftUI 文本和带参数的 LocalizedStringKey
SwiftUI Text and LocalizedStringKey with parameter
我正在尝试添加带有参数的 SwiftUI 本地化文本。然而,在整个应用程序中,我们使用了一个围绕本地化键的包装器,所以我们有这样的东西:
static let helloWorldText = NSLocalizedString("helloWorldText", comment: "")
有使用
label.text = LocalizationWrapper.helloWorldText
或
Text(LocalizationWrapper.helloWorldText)
而且效果很好。
然后,当涉及到添加带有参数的本地化文本时,它似乎不起作用。
所以我有一把钥匙"helloWorld %@"
我有一个 static let helloWorldWithParameter = NSLocalizedString("helloWorld %@", comment: "")
现在我尝试这样做:
Text("\(LocalizationWrapper.helloWorldWithParameter) \(name)")
Text(LocalizedStringKey(LocalizationWrapper.helloWorldWithParameter + " " + name))
Text(LocalizationWrapper.helloWorldWithParameter + " " + name)
none 有效,但 Text("helloWorld \(name)")
正常。
然后我尝试删除 NSLocalizedString,只留下 LocalizationWrapper.helloWorldWithParameter
作为一个干净的字符串,但它也没有做任何事情
我怎样才能完成这项工作?我看到了THIS,但有点脏。
使用此扩展程序
extension String {
public func localized(with arguments: [CVarArg]) -> String {
return String(format: NSLocalizedString(self, comment: ""), locale: nil, arguments: arguments)
}
}
用法:
Text(LocalizationWrapper.helloWorldWithParameter.localized(with: [name]))
还有,这个做法是正确的
static func helloWithParameter(parameter: String) -> LocalizedStringKey {
return "helloWorld \(parameter)"
}
我正在尝试添加带有参数的 SwiftUI 本地化文本。然而,在整个应用程序中,我们使用了一个围绕本地化键的包装器,所以我们有这样的东西:
static let helloWorldText = NSLocalizedString("helloWorldText", comment: "")
有使用
label.text = LocalizationWrapper.helloWorldText
或
Text(LocalizationWrapper.helloWorldText)
而且效果很好。
然后,当涉及到添加带有参数的本地化文本时,它似乎不起作用。
所以我有一把钥匙"helloWorld %@"
我有一个 static let helloWorldWithParameter = NSLocalizedString("helloWorld %@", comment: "")
现在我尝试这样做:
Text("\(LocalizationWrapper.helloWorldWithParameter) \(name)")
Text(LocalizedStringKey(LocalizationWrapper.helloWorldWithParameter + " " + name))
Text(LocalizationWrapper.helloWorldWithParameter + " " + name)
none 有效,但 Text("helloWorld \(name)")
正常。
然后我尝试删除 NSLocalizedString,只留下 LocalizationWrapper.helloWorldWithParameter
作为一个干净的字符串,但它也没有做任何事情
我怎样才能完成这项工作?我看到了THIS,但有点脏。
使用此扩展程序
extension String {
public func localized(with arguments: [CVarArg]) -> String {
return String(format: NSLocalizedString(self, comment: ""), locale: nil, arguments: arguments)
}
}
用法:
Text(LocalizationWrapper.helloWorldWithParameter.localized(with: [name]))
还有,这个做法是正确的
static func helloWithParameter(parameter: String) -> LocalizedStringKey {
return "helloWorld \(parameter)"
}