我目前正在使用具有语言更改功能的应用。但是,对于我希望在选择其他语言时进行更改的每个字符串,我必须实现以下代码
"Hello world".localize()
然而,随着应用程序变得越来越大,代码变得非常混乱,因为它们各自的视图控制器中的所有字符串都有这个.localize()附加到它。
有没有办法让我能在一个中心位置做这个.localize()的事情?
编辑:我尝试创建一个Strings.swift文件并将所有字符串放入其中。我做了这样的事。static let relevantString = "hello world".localize()
然后在视图控制器中调用
let myString = relevantString
然而,这并不好。字符串只会在我终止应用程序并重新启动后才会更改。
答案 0 :(得分:2)
您尝试使用static let
无法生成您想要的动态行为,因为您使用了常量。您可以使用只读计算属性,例如:
var relevantString : String { return "Hello World".localize() }
作为替代方案,因为您似乎更关心杂乱,您可以定义一个简单的前缀或后缀一元运算符,在其参数上调用localize()
。 Swift允许将许多符号用作运算符,因此运算符只能是单个字符。例如,您可以定义§
,以便§"Hello World"
生成本地化字符串。
HTH