为啥字符串本地化/国际化在 SwiftUI 中不起作用?
Posted
技术标签:
【中文标题】为啥字符串本地化/国际化在 SwiftUI 中不起作用?【英文标题】:Why is string localization/internationalization not working in SwiftUI?为什么字符串本地化/国际化在 SwiftUI 中不起作用? 【发布时间】:2020-05-26 20:34:14 【问题描述】:我的应用中有一些文本应该本地化,比如
Text(self.model.stringValue)
.stringValue = "dist"
,我创建了 Localized.strings 并添加了参考
"dist" = "the distance";
文档说文本视图会自动将字符串解释为本地化键并为您查找它们:
Text("pencil") // Searches the default table in the main bundle.
我在字符串文件上单击“本地化”并将语言添加到项目文件中,这样的答案说它应该可以正常工作:How to implement localization in Swift UI
但它只是显示“dist”而不是正确的本地化字符串。我做错了什么?
【问题讨论】:
【参考方案1】:您可以将其本地化为内联,如
Text(LocalizedStringKey(self.model.stringValue))
【讨论】:
【参考方案2】:事实证明,只有将 Text("pencil") 中的字符串作为 literal 传递时,它才会被解释为本地化键。如果您传递一个字符串类型的变量,则不会发生这种情况。答案是声明 LocalizedStringKey 类型的变量。
Text("dist") //-> implicitly treats string literal as a key; looks up and displays "the distance"
let cap1:String = "dist"
Text(cap1) //-> no lookup for explicit String variable; just displays "dist"
let cap2:LocalizedStringKey = "dist"
Text(cap2) //-> looks up explicit LocalizedStringKey value; displays "the distance"
【讨论】:
以上是关于为啥字符串本地化/国际化在 SwiftUI 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 pop to root 在这个示例代码 SwiftUI 中不起作用?
SwiftUI - 过渡动画在 GeoReader 中不起作用?