什么&x2019;对于SwiftUI';什么是LocalizedStringKey?

什么&x2019;对于SwiftUI';什么是LocalizedStringKey?,swift,string,localization,swiftui,Swift,String,Localization,Swiftui,SwiftUI中的String.localizedStringWithFormat(::)的等价物是什么 我知道,LocalizedStringKey.init(:)可以使用字符串插值,但据我所知,这需要在.strings/.stringsdict文件中参数化可本地化的字符串键 这与我正在使用的应用程序中当前定义本地化字符串键的方式不同。给定localizable.strings中的这些可本地化字符串: "HELLO_WORLD" = "Hello, world!"; "HELLO_WORLD_

SwiftUI中的
String.localizedStringWithFormat(::)
的等价物是什么

我知道,
LocalizedStringKey.init(:)
可以使用字符串插值,但据我所知,这需要在.strings/.stringsdict文件中参数化可本地化的字符串键

这与我正在使用的应用程序中当前定义本地化字符串键的方式不同。给定localizable.strings中的这些可本地化字符串:

"HELLO_WORLD" = "Hello, world!";
"HELLO_WORLD_PARAMETERIZED" = "Hello, %@!";
这在基金会/UIKit世界中运行良好:

NSLocalizedString(“你好,世界”,注释:)/“你好,世界!”
String.localizedStringWithFormat(NSLocalizedString(“HELLO_WORLD_参数化”,注释:),“Bob”)/“HELLO,Bob!”
但我不知道如何让它在SwiftUI中工作:

让helloWorld=LocalizedStringKey(“HELLO_WORLD”)
文本(helloWorld)//✅ 显示“你好,世界!”
文本(“HELLO_WORLD”)//✅ 还显示“你好,世界!”
LocalizedStringKey(“HELLO_WORLD_PARAMETERIZED”,“Bob”)//❌ 这将无法编译,因为LocalizedStringKey没有类似于'String.localizedStringWithFormat(::)'的格式参数。
让bob=“bob”

LocalizedStringKey(“您好,\(bob)!”/我也遇到了这个问题,多亏了一些人,我想我已经按预期的方式工作了

当我成功的时候,我正在使用XCode12 Beta 6,我无法确认/不支持其他版本

translation键需要反映将在SwiftUI中使用的插值字符串,其中每个参数都被表示参数类型的替换

在您的示例中,您希望插入一个
字符串作为参数。这对应于
%@
说明符

通过以下方式重写可本地化的
字符串

"HELLO_WORLD" = "Hello, world!";
"HELLO_WORLD_PARAMETERIZED %@" = "Hello, %@!";
要在
文本中使用它,请执行以下操作:

Text("HELLO_WORLD_PARAMETERIZED \(someStringVar)")
如果要使用
UInt
参数,请将
%llu
标识符、
%lld
用于
Int
(请参阅字符串格式说明符链接)

相同的规则适用于
.stringdict
,使用相同的模式命名密钥:

<dict>
    <key>%llu elements</key>
    <dict>
        <key>NSStringLocalizedFormatKey</key>
        <string>%#@VARIABLE@</string>
        <key>VARIABLE</key>
        <dict>
            <key>NSStringFormatSpecTypeKey</key>
            <string>NSStringPluralRuleType</string>
            <key>NSStringFormatValueTypeKey</key>
            <string>llu</string>
            <key>zero</key>
            <string>No elements</string>
            <key>one</key>
            <string>One element</string>
            <key>other</key>
            <string>%llu elements</string>
        </dict>
    </dict>
</dict>
</plist>

您已经发现所有内容都可用,因此无需添加任何内容。如果字符串不是格式化的,那么就按原样使用它,它将被自动翻译,如果您需要格式化,那么只能通过NSLocalizedString。就是这样。这可能只是在最近的Xcode12中修复的,因为它在Xcode11.5中不起作用。谢谢你的提示,抱歉,如果我运行这个应用程序,它确实可以工作,但是我希望通过Xcode预览让它工作,但不知怎么的,它不能工作
Text("\(someUIntVarValue) elements")