Localization with SwiftUI
I have been performing a bit of localization lately on an Xcode project and was looking for a way to reduce human errors due to typos and other human errors.
The best method I found was to create a separate a simple Translation.swift file to storage all the i18n code. Here I extend the LocalizedStringKey struct with my own project based localized strings for easy access on the Xcode autocomplete menu.
import SwiftUI
extension LocalizedStringKey {
static var ourLocalizedProjectName: LocalizedStringKey {
return "OurLocalizedProjectName"
}
}
struct Translation: View {
var key: LocalizedStringKey
var body: some View {
Text(self.key)
}
init(_ key: LocalizedStringKey) {
self.key = key
}
}
struct Translation_Previews: PreviewProvider {
static var previews: some View {
Translation(.mainFooterMessage)
.environment(\.locale, .init(identifier: "en"))
}
}
And add to your Localizable.strings file, strings that correspond to the keys in the extension created earlier.
// Localized project strings
"OurLocalizedProjectName" = "Project Name";
Note, I don’t use the View anywhere in the project, other than to use it for previews in Xcode. I usually populate the view with translations and adjust the locale environment variable to see the different project translations.
Happy translating and stay save in COVIDLand.