SwiftUI 本地化
Posted
技术标签:
【中文标题】SwiftUI 本地化【英文标题】:SwiftUI Localization 【发布时间】:2020-08-01 16:12:48 【问题描述】:我在 SwiftUI 中遇到本地化问题。翻译有占位符时会发生问题。我收到错误 “实例方法 'appendInterpolation' 要求 'LocalizedStringKey' 符合 '_FormatSpecifiable'”
代码
struct Translation
struct school
static var location: LocalizedStringKey
return "schoolLocation %@"
翻译文件
"schoolLocation %@" = "我的学校地址是 %@";
SwiftUI 视图
var location = "Some Name"
.navigationBarTitle("\(Translation.school.location) \(location)")
如果我做错了什么,请帮助我。
【问题讨论】:
这能回答你的问题吗? How to implement localization in Swift UI 不,我有动态值的占位符和我在 LocalizedStringKey 结构中维护的键。我的代码非常适合静态本地化值。但我收到动态值的编译错误。 @Rocker 您是否尝试过从密钥中删除%@
,因为它没有必要?你可以有 "schoolLocation" = "我的学校位置是 %@";在您的翻译文件中。
仍然出现编译错误“实例方法'appendInterpolation'要求'LocalizedStringKey'符合'_FormatSpecifiable'”行.navigationBarTitle(“(Translation.school.location)(位置)”)跨度>
【参考方案1】:
您正在做的是将带有 %@
的已内插字符串返回给内插字符串。因此,您生成的字符串如下所示:"schoolLocation %@ Some Name"
。你可以这样做:
struct Translation
struct school
static func location(name: String): LocalizedStringKey
return "schoolLocation \(name)"
然后你可以像这样使用你的翻译:
var location = "Some Name"
.navigationBarTitle(Translation.school.location(name: location))
【讨论】:
有没有办法给字符串赋值?我收到错误以上是关于SwiftUI 本地化的主要内容,如果未能解决你的问题,请参考以下文章