我有一个Localization结构,它有助于管理本地密钥。
struct Localization {
//Home
static let HomeHeader = "Home_Header"
static let HomeStatusActive = "Home_Status_Active"
static let HomeStatusDelayed = "Home_Status_Delayed"
}
另外,我有一个名为local的字符串扩展名,它为我提供了Localizable.strings文件中的密钥。
extension String {
var local : String {
return LocalizationManager.getLocalizedString(key: self)
}
}
因此,当我需要本地化密钥时,我会像这样使用它;
titleLabel.text = Localization.HomeHeader.local
我的问题;有没有办法在不每次调用.local的情况下执行扩展以在每个struct的常量上使用?
基本上,我想打电话如下;
titleLabel.text = Localization.HomeHeader
非常感谢。
答案 0 :(得分:4)
对您迄今为止实施的内容进行微小的更改。您可以简单地在字符串后添加本地值。
struct Localization {
//Home
static let HomeHeader = "Home_Header".local
static let HomeStatusActive = "Home_Status_Active".local
static let HomeStatusDelayed = "Home_Status_Delayed".local
}
extension String {
var local : String {
return LocalizationManager.getLocalizedString(key: self)
}
}
然后你就可以像:
一样使用它titleLabel.text = Localization.HomeHeader
答案 1 :(得分:1)
请查看以下内容可能对您有所帮助
您可以将所有本地化字符串保存在一个位置
struct ConstantsLocalized {
static var key_loading: String {
return "key_loading".localized()
}
static var key_placeholder_email: String {
return "key_placeholder_email".localized()
}
}
您可以使用ConstantsLocalized.key_loading
修改强>
我需要使用此方法增加一个优势,如果你有应用程序本地化意味着用户可以从应用程序自己更改语言,那么它是最好的解决方案,因为你可以每次都获得本地化字符串
希望它有用