Reputation: 9505
I'm trying to show a formatted date at my device's language but it keeps showing in English (even though the device is set to Portuguese).
At my ViewController I created a date:
let todaysDate: Date = Date()
And I call this function (that it's an extension of Date):
func getFullDate() -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMMM yyyy"
dateFormatter.calendar = Calendar.current
dateFormatter.locale = Locale.current
return dateFormatter.string(from: self)
}
The output is always in English:
08 March 2019
I also checked if the Locale.current is correct in the terminal and I got:
▿ en_BR (current)
I don't want to define the language hardcoded because I want to support other languages, but it's not working. Could you please give me any tips on how to solve this?
Upvotes: 8
Views: 4570
Reputation: 707
As I Understand your question. You want to change the date format with the current device language.
Set Locale as your preferred language
let formatter = DateFormatter()
formatter.timeZone = TimeZone.current
formatter.locale = Locale.init(identifier: Locale.preferredLanguages.first!)
formatter.setLocalizedDateFormatFromTemplate("ddMMMMyyyy HH:mm")
let stringDate = formatter.string(from: Date())
print(stringDate)
Output:- Show date with current device language.
08 de março de 2019 10:54
Upvotes: 4
Reputation: 775
func portugueseFormattedEn_US -> String {
Formatter.date.calendar = Calendar(identifier: .iso8601)
Formatter.date.locale = Locale(identifier: “pt-PT”)
Formatter.date.timeZone = .current
Formatter.date.dateFormat = "dd/M/yyyy, H:mm"
return Formatter.date.string(from: self)
}
in "Locale(identntfier: “pt-PT”)" you have to pass exact identifier which you want and need to set language as well.
Upvotes: 6
Reputation: 9505
Thank you very much for your help!
I just found out that I only had Localized strings for English and as rmaddy pointed out in this link with iOS 11 I also need to have a Localized string file for the language I want to support (in my case Portuguese).
So I just added support for Portuguese at Language localization section and now it's working correctly! :D
Upvotes: 1
Reputation: 1149
In order to have the app displaying the dates in Portuguese,
Strings.strings
fileUpvotes: 1