Localization
Localization
Extension
Using Extension String
import Foundation
extension String {
var localStr: String {
return NSLocalizedString(self, comment: "")
}
}
Strings File
Define file Localizable.strings
/*
Localizable.strings
*/
// MARK: - Navigation
"home.name.placeholder" = "Sense";
"home.data.info" = "My Data";
"home.user.name" = "Kautilya";
"browse.data.info" = "Browse Data";
"settings.info" = "Open Settings";
"settings.ui.mode" = "Choose UI Mode";
"settings.team.name" = "Our Core Team";
Access
Accessing the strings from localized datastore, so it is overall cleaned approach with how getter works with strings without adding extra bloat or verbose code.
home.title.text = Texts.title.rawValue.localized,
home.username.text = Texts.user.rawValue.localized,
Enums
Use enums to avoid long string access, and these enums would be limited to specific files of classes. Like this enum would be defined in specifically for specific class “home”. Home -> Texts -> Title
private enum Texts: String {
case title = "home.name.placeholder"
case user = "home.user.name"
case description = "authorization.required.description"
case cancel = "authorization.required.cancel"
case confirm = "authorization.required.confirm"
}
Third party
Lokalise - translation management system for end user clients.
Automation around localization and QA process towards supporting various languages or regions.