带有SwiftUI的NSLocalized字符串和值

s8vozzvw  于 2022-09-19  发布在  Swift
关注(0)|答案(3)|浏览(218)

我正在尝试本地化一个包含值的文本视图,但没有成功!

这是我通常要做的事情:

// ContentView.swift

Text("Tomato")
/* replaced by */
Text(NSLocalizedString("text-tomato", comment: ""))

// Localizable.strings (en)

"text-tomato" = "Tomato";

但有了内在的价值,我不知道该怎么做:

// ContentView.swift

Text("3 Tomatoes")
/* or */
Text("(tomatoes.count) Tomatoes")
/* replaced by */
Text(NSLocalizedString("(tomatoes.count) text-tomatoes", comment: ""))

// Localizable.strings (en)

"%@ text-tomatoes" = "%@ Tomatoes";
/* or maybe */
"(tomatoes.count) text-tomatoes" = "%@ Tomatoes";
/* or maybe */
"%@ text-tomatoes" = "(tomatoes.count) Tomatoes";

我已经尝试使用%@%lldvalue等,但没有成功。你有什么想法吗?

f8rj6qna

f8rj6qna1#

谢谢您@Alexxnd

这就是对我有效的方法:

let notAllowedChar = String(format: NSLocalizedString("TextfieldNotAllowedChar %@", comment: ""), char)

“TextfieldNotallweChar%@”->“没有权限字符‘%@’”

我在以下方面遇到麻烦:

SwiftUI.LocalizedStringKey.FormatArgument(storage: SwiftUI.LocalizedStringKey.FormatArgument.Storage.value( ...
xriantvc

xriantvc2#

您不应将NSLocalisedString与SwiftUI一起使用,而应使用普通的Text()

Text("Tomatoes", comment: "TODO item")

Text("(viewModel.tomatoesCount, specifier: "%lld") Tomatoes",
    comment: "TODO item with number")

不要忽视评论,它将有助于翻译过程中的上下文。

有关更多信息,请访问Preparing views for localization

eoigrqb6

eoigrqb63#

在发布了我的问题后,我终于找到了答案:

// ContentView.swift

Text("3 Tomatoes")
/* or */
Text("(tomatoes.count) Tomatoes")
/* replaced by */
Text(String(format: NSLocalizedString("%lld text-tomatoes", comment: ""), tomatoes.count))

// Localizable.strings (en)

"%lld text-tomatoes" = "%lld Tomatoes";

它就像一个护身符一样起作用!

其他示例:Localization with String interpolation in SwiftUI

相关问题