у меня все даты проходят через расширение для Formatter и таких методов много, под разные форматы дат
static let mediumDate: DateFormatter = {
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .none
formatter.locale = Locale.current
return formatter
}()
Locale.current это тоже расширение
extension Locale {
static var current: Locale { return Locale.init(identifier: Language.language.rawValue) }
}
вот и сам Language
enum Language: String, CaseIterable {
case english = "en"
case german = "de"
case spanish = "es"
case french = "fr"
case russian = "ru"
case japanese = "ja"
case dutch = "nl"
case portuguese = "pt"
case norway = "nb"
// other methods
}
По сути вам стоит использовать расширение для Formatter, только указывать там локаль от девайса
P.S. это возможно будет будущая статья, как использовать разные переводы и хранить их на сервере, используя только дефолтную локализацию, что бы была возможность редактировать/исправлять их без нужды обновлять само приложение.