Mon、Tue,などと英語で表示されます。
月、火、水…のように表示するようにしたくて
以下のコードを
"en_JP"を
"ja_JP"と変更したのですが
なぜかうまくいきません。
シュミレーターの言語も日本語にしました。
お教えください。
Swift
1func getDateEText(isToday: Bool)->String { 2 3 let dayFormatter = DateFormatter() 4 5// dayFormatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "E", options: 0, locale: Locale(identifier: "en_JP")) 6 dayFormatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "E", options: 0, locale: Locale(identifier: "ja_JP")) 7 8 let todayE = Calendar.current.date(byAdding: .month, value: 0, to: dt)! 9 10 let EText = dayFormatter.string(from: todayE) 11 print(EText) 12 return EText
> うまくいきません。
では状況が全くわかりません。
実際にはなんと出力されてますか?
(英語表記で、Wedとか表示されていると予想しますが)
※追記
出力状況、記載してくれてましたね。
大変失礼しました・・・
おそらく、
https://qiita.com/kkoide1332/items/e491b6e0c2b676b0e89b
を参考にされたのではないでしょうか?
この記事は、3年前と、古い情報ですので、今だと通用しないかと思われます。
(プログラミングの記事は、1年以上すると、古い情報とみなした方がいい場合が多い)
こちらを参考にやってみてください。
https://qiita.com/rinov/items/bff12e9ea1251e895306
それでも理想の挙動にできなければ、
コメントください。
コメントつけられてたんですね。
失礼しました。
国際化問題は鬼門のようで、ターゲットの設定まできちんと行っていないとうまくいかないことも多いようです(今知りました)。
後者の記事は今年のものなので、有効な気がします。
端末の設定地域を引数に入れてるぽいので、国際化問題も回避しているような気がします。
ありがとうございます。早速試してみます。
miyabi_takatsukさん
Locale.current のことを指しているのであれば、ターゲットの Localizations が優先されるように思われます。
Japaneseを「追加しない」でLocale.current を指定すると、「en_JP」になるようで、これだと英語表記となりました。
Japaneseを追加すると「ja_JP』になるようです。
さらに困ったことに、一度 Japanese を追加したあと、プロジェクトの Localizations から Japanese を削除しても、普通にコンパイルしただけだと Japanese が残ってしまうようで、実行結果が変わりません。きちんと反映されているかどうか確認するには、一度 Clean する必要がありそうです。
回答1件
あなたの回答
tips
プレビュー