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 本地化的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:大写视图的本地化字符串,例如`文本`?

SwiftUI 实战之如何进行应用内本地化

为啥字符串本地化/国际化在 SwiftUI 中不起作用?

SwiftUI Text():使用三元条件不本地化

SwiftUI: 极简实现App内快速切换本地化语言

如何使用 SwiftUI 按钮打开本地 PDF 文件?