rgrunbla
(Rémy Grünblatt)
1
こんにちは、
Discourse(2.6.0.beta4)を Europe/Paris をデフォルトのタイムゾーンとして設定しているのですが、時刻を選択すると表示される時刻が正しくありません。スクリーンショットをご覧ください。
「20:00:00」と入力しても、表示される時刻は「今日 22:00」となってしまいます。ブラウザで実行した moment.tz.guess() は「Europe/Paris」を返すため、何が間違っているのか見当が付きません。
ご教示いただけますでしょうか?
ありがとうございます。
「いいね!」 3
sam
(Sam Saffron)
2
@j.jaffeux これの原因として考えられることはありますか?
「いいね!」 2
Benjamin_D
(Benjamin Decotte)
3
「いいね!」 3
Benjamin_D
(Benjamin Decotte)
4
tzの引用符を除去しました。長期的な解決策ではありませんが……これで動きます😁
「いいね!」 2
j.jaffeux
(Joffrey Jaffeux)
5
はい、申し訳ありません。月曜・火曜は不在でした。ローカルでは再現できませんが、同じケースだと思います。
私は以下の修正を採用しました:
技術的には、これはローカル日付のバグというより、テキスト/Markdownの表示に関するバグです。より包括的な解決策が必要かもしれません。ただし、この問題に関する苦情はローカル日付の文脈でのみ受け取っています。おそらく、その部分の使用頻度が高く、手動編集されやすいことが原因だと思われます。
「いいね!」 4
Benjamin_D
(Benjamin Decotte)
6
動いていないようです。discourse-local-dates.js.es6 の 99 行目の条件について、何か問題があるかもしれません。
if (config.timezone && moment.tz.names().includes(config.timezone))
この条件が真にならない(本来は真になるべき)ようです。
編集
修正が別のブランチにコミットされていたことに気づきました。すぐ戻ります 
…いや、確認しました。
[date=2020-12-20 time=15:00:00 timezone=„Europe/Paris“]
[date=2020-12-20 time=15:00:00 timezone=Europe/Paris]
[date=2020-12-20 time=15:00:00 timezone="Europe/Paris"]
[date=2020-12-20 time=15:00:00 timezone=«Europe/Paris»]
は、それぞれ正解、正解、誤り、誤りです。
「いいね!」 1
Benjamin_D
(Benjamin Decotte)
7
また、私のフランス語 AZERTY キーボードでは、クォートは実際には " です。« や » をコピー/ペーストなしで作る方法さえわかりません。それは多分普通のことでしょう 
j.jaffeux
(Joffrey Jaffeux)
8
私は明らかに「誤り」を非難しているわけではありません:
そして、ここが重要な点ですが、これらの引用は実際にはあなたが自分で書いているのではなく、何らかの変換が行われているのです。
「いいね!」 1
Benjamin_D
(Benjamin Decotte)
9
奇妙ですね、最後の2つは16:00になっています。
j.jaffeux
(Joffrey Jaffeux)
10
「いいね!」 1
Benjamin_D
(Benjamin Decotte)
11
もちろんですよ!でも、そのあたりでついていけなくなっちゃいました
Rails のログが欲しいってことですか?私は専門家じゃなくて、ただちょっと熱心なだけなんです!
それに、ごめんなさい。5 を 6 と読み違えたか、あるいはよくわからないけど、3 番目だけが動かないんですよね。私のミスです。4 番目はプレビューでは動かないけど、投稿後の本文では正しく動いています 
「いいね!」 1
j.jaffeux
(Joffrey Jaffeux)
12
別のプルリクエストをプッシュしました。掘り進める前に、これを待ってみてはいかがでしょうか。
「いいね!」 2
Benjamin_D
(Benjamin Decotte)
13
確認できたのは、何か問題が起きた際に「data-timezone」属性が欠落していることです。
メッセージ
Post Update (1.1ms) UPDATE "posts" SET "raw" = '[date=2020-12-20 time=12:00:00 timezone=Europe/Paris]
[date=2020-12-20 time=12:00:00 timezone="Europe/Paris"]', "self_edits" = 3, "cooked" = '<p><span data-date="2020-12-20" data-time="12:00:00" class="discourse-local-date" data-timezone="Europe/Paris" data-email-preview="2020-12-20T11:00:00Z UTC">2020-12-20T11:00:00Z</span><br>
<span data-date="2020-12-20" data-time="12:00:00" class="discourse-local-date" data-email-preview="2020-12-20T12:00:00Z UTC">2020-12-20T12:00:00Z</span></p>', "baked_at" = '2020-10-21 15:25:53.050518', "updated_at" = '2020-10-21 15:25:53.050721' WHERE "posts"."id" = 1954
「いいね!」 1
j.jaffeux
(Joffrey Jaffeux)
14
はい、変換された引用符を理解していないためです。そのため、既知の状態に強制しようとしています。
「いいね!」 2
Benjamin_D
(Benjamin Decotte)
15
お尋ねして申し訳ありません。その後は作業を進めてください。« の ; が && moment.tz.names().includes(config.timezone) の失敗の原因だと認識していました。config.timezone は HTML エスケープされている可能性がありますか?
「いいね!」 1
j.jaffeux
(Joffrey Jaffeux)
16
気にしないでください、私が間違っている可能性もあります 
つまり、あなたが尋ねていることは基本的に私が行っていることですが、あなたが期待するタイミングとは異なります。それも多分機能するでしょう。例えば、私の修正以前は、以下のようなものが:
[date=2020-12-20 time=15:00:00 timezone=«Europe/Paris»]
パースされたマークダウンではこれらの属性として現れていました:
{"date"=>"2020-12-20", "time"=>"15:00:00", "timezone"=>"«Europe/Paris»"}
これで問題が明白になります。
私の修正後は以下のように取得できます:
{"date"=>"2020-12-20", "time"=>"15:00:00", "timezone"=>"Europe/Paris"}
単に以前はクォートのすべてのケースを処理できていなかったと考えています。私が行った 2 つ目のコミットで試されましたか?
「いいね!」 2
Benjamin_D
(Benjamin Decotte)
17
はい…
ただし、生データが
[date=2020-12-20 time=15:00:00 timezone=«Europe/Paris»]
ではなく、すでに
[date=2020-12-20 time=15:00:00 timezone="Europe/Paris"]
になっているため、
「その先で何か問題が起きている」
:thinking: と思います。実際、どこで起きているのか分かりません。\« と \» がどこで導入されているのか不明です。
あ、そうか!作曲プレビューで見えました。
[date=2020-12-15 time=14:00:00 timezone="Europe/Paris"
は
[date=2020-12-15 time=14:00:00 timezone=« Europe/Paris »
になります。
「いいね!」 1
j.jaffeux
(Joffrey Jaffeux)
18
はい、おそらくフロントエンドとバックエンドの両方に問題があるのでしょう。以前の修正でドイツ語のケースは確実に改善しました。同じ正規表現をフロントエンドにも適用すればいいと思います。再現できたらいいのですが😅
明日対応します。
「いいね!」 5
Benjamin_D
(Benjamin Decotte)
22
そうだと思いますが、少し遅れています。まだ 2.6.0 beta5 です
ただ、10 月以来、その問題に関するコミットは見ていません。