J'essaie d'afficher une date formatée dans la langue de mon appareil, mais elle continue de s'afficher en anglais (même si l'appareil est réglé sur le portugais).
Sur mon ViewController, j'ai créé une date:
â¿ en_BR (current)
Et j'appelle cette fonction (que c'est une extension de Date):
08 March 2019
La sortie est toujours en anglais:
XXX
J'ai également vérifié si le Locale.current est correct dans le terminal et j'ai obtenu:
func getFullDate() -> String { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "dd MMMM yyyy" dateFormatter.calendar = Calendar.current dateFormatter.locale = Locale.current return dateFormatter.string(from: self) }
Je ne veux pas définir le langue codée en dur parce que je veux prendre en charge d'autres langues, mais cela ne fonctionne pas. Pouvez-vous me donner des conseils pour résoudre ce problème?
4 Réponses :
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.
Cette réponse sera plus correcte si vous supprimez simplement la ligne qui définit les paramètres régionaux du formateur. Il utilisera par défaut les paramètres régionaux de l'utilisateur.
est-ce func
ou var
?
C'est une fonction.
Pour que l'application affiche les dates en portugais ,
Strings.strings
vide Merci beaucoup pour votre aide!
Je viens de découvrir que je n'avais que des chaînes localisées pour l'anglais et comme rmaddy l'a souligné dans ce lien avec iOS 11 J'ai également besoin d'un fichier de chaîne localisé pour la langue que je souhaite prendre en charge (dans mon cas, le portugais).
Je viens donc d'ajouter la prise en charge du portugais dans la section Localisation de la langue et maintenant cela fonctionne correctement! : D
Comme je comprends votre question. Vous souhaitez modifier le format de date avec la langue actuelle de l'appareil.
Définissez les paramètres régionaux comme votre langue préférée
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)
Sortie: - Afficher la date avec la langue actuelle de l'appareil.
08 mars 2019 10:54
Votre locale indique qu'elle est définie sur l'anglais (c'est ce que signifie la partie
en
).Vraiment? Mais mon appareil est en portugais et la région est également définie sur le portugais. Est-ce que je manque quelque chose?
Si votre application est uniquement localisée en anglais, cela est normal.
Voir stackoverflow.com/questions/46205763/…
Le testez-vous sur un simulateur ou sur un appareil réel?
J'ai en fait testé sur les deux et ils ont présenté le même comportement
Comme le lien rmaddy a publié le comportement a changé dans iOS11 et versions ultérieures
@dahiya_boy Le fuseau horaire n'est pas pertinent. Cela ne changera ni le format ni la langue.
C'était exactement ce que @rmaddy a souligné. Merci beaucoup!