I'm not 100% sure about how SwiftUI is actually doing it since I'm not seeing any explicit attribute on those initializers, but you can achieve it using the currently private @_disfavoredOverload
attribute:
struct MyView: View {
let title: Text
@_disfavoredOverload
init<S: StringProtocol>(_ content: S) {
title = Text("not localized")
}
init(_ key: LocalizedStringKey) {
title = Text("localized")
}
var body: some View {
title
}
}
Within your example, it will output:
not localized
localized
localized
localized