TeraTermProject / teraterm

Other
392 stars 33 forks source link

LogAutoStart でログ出力開始に失敗した場合に気づきたい #157

Closed sempreff closed 3 months ago

sempreff commented 3 months ago

概要

LogDefaultPath が不適切に設定されていると、LogAutoStart によるログ出力開始に失敗しますが、気づけません。

期待の動作

ログダイアログで存在しないパスを指定した場合に出るエラーダイアログと同等の挙動でユーザにお知らせできると良いです。

環境

Windows10 Pro 22H2 Tera Term 5.2

nmaya commented 3 months ago

確認したいことがいくつかあります。

(1) このメッセージは、/I また /V 引数を渡されて起動したときにどうなりますか?どうなるべきだと思いますか?

(2) 「ログダイアログで存在しないパスを指定した場合に出るエラーダイアログ」はi18n対応していますか?このメッセージはどうですか?

sempreff commented 3 months ago

(1) について、 どうなるか:/I は #158 を書いた時点での想定通りの動作でした。/V はクラッシュしました。 どうなるべきか:今時点では、/I あるいは /V が指定されている場合は、インタラクションが生じないようになるべきだと思います。 (2) について、 いずれもディレクトリ名・ファイル名について日本語で表示されることを確認しています。(確認の趣旨とずれているかもしれません)

nmaya commented 3 months ago

(2)

「ログダイアログで存在しないパスを指定した場合に出るエラーダイアログ」は CVTWindow::OnFileLog() で実装されていて、"Can not create a `%s' file." がそのまま使用されている(i18n 化されていない)ことを確認しました。

sempreff commented 3 months ago

(1)

/V あるいは /I が指定されていた場合はインタラクションが生じないようにしてみました。

(2)

TTMessageBoxInfoW の message_key が NULL のものは他にもあるようですが、 メッセージをローカライズするかどうかについて、何か基準のようなものがあるでしょうか? 例えば「基本的にはローカライズする方針だけれどまだ未作業の箇所がある」というようなことでしょうか。

zmatsuo commented 3 months ago

例えば「基本的にはローカライズする方針だけれどまだ未作業の箇所がある」というようなことでしょうか。

そうですね。

MesageBox から変換してそのままなものもあると思います。 親がNULLだったり、MesageBox(A)のままだったりもあります。 メッセージはi18n化していきたいですね。

「ファイルが開けない」だど、 MSG_CANTOPENERROR などが使えそうですが、どうでしょうか (ぱっと見、MSG~ は MessageBox向けな印象です)

sempreff commented 3 months ago

途中のディレクトリが無いなどで書けない(開けない)ケースもあるし ファイルはあるけれど書けない(書き込めない)ケースもあるようだ、ということで MSG_LOGFILE_WRITE_ERROR としてみました。

nmaya commented 3 months ago

やや横道ですが新しいメッセージがあるとのことで、「i18n 対応する」ときにする作業はこれくらいです。

sempreff commented 3 months ago

ガイドありがとうございます。英語のメッセージファイルは(iniファイルで UILanguageFile=lang_utf16le\English.lng のように指定すれば)プログラムから読み込まれますが、title_defaultmessage_default はソースコード上の文字列と English が同じになるようにしておくべき、と理解しました。 また、English がベースでセクションとキーは言語間で同じになっている状態が to be と理解しました。

現状では言語間でセクションやキーの相違(過不足)があるようです。それらの修正は不要でしょうか、あるいは 別Issueを立てて対応するのが良いでしょうか? 例) English にはあるが Japanese にない DLG_SCP_SELECT_FILE_TITLE DLG_SCP_SELECT_DEST_TITLE Japanese にはあるが English にない DLG_SENDFILE_TERATERM4 等、 [TTXCheckUpdate]

nmaya commented 3 months ago

@sempreff ありがとうございます。

言語間でセクションやキーの相違(過不足)

163 を、未対応メッセージやそのあたりの棚卸し用のつもりで立てました。

sempreff commented 3 months ago

158、#165 いずれも main からブランチを作成しましたので、lng ファイルの1行目はコンフリクトすると思います。

いずれかが先にマージされたらもう片方でそれを取り込めばいいと思っていますが、マージまでの段取りがありましたらご教示ください。

zmatsuo commented 3 months ago

ソースコード上の文字列と English が同じになるようにしておくべき、と理解しました。 また、English がベースでセクションとキーは言語間で同じになっている状態が to be と理解しました。

そうですね英語ベースでね。 (英語以外(絵文字とか)をソースの文字列内に入れようとすると ソースの文字コードを検討しないといけないですね)

マージまでの段取り

ばっちり決まってはいないのですが、

改版履歴に追記して一段落ですね 内部的な変更なら書かないこともあるのですが、 エラー時にメッセージ表示するようにしたというと 追加したほうがよいかなと思います。 どうでしょう? @nmaya

その次がマージで、 これはチームメンバしかできないですよね。

nmaya commented 3 months ago

lng ファイルの1行目はコンフリクトすると思います。

悩ましいですね。並行作業していると history.html もコンフリクトしそうです。

みなさんどうしているのか分かりませんが、こんなことをしているのでしょうか?

(1) がゼロならプロジェクト側は楽ですが、そう思い通りにはならないだろうと思います。 (2) はプロジェクト側で PR を取り込んでからプロジェクト側でできないことはないですが、「歴史改変は自分だけが触れる所で行うべし」というものだったと思うので、PRする側にやってもらったほうが間違いがないと思っています。

改版履歴

「LogDefaultPath に実在しないパスが指定されていて LogAutoStart=on でログ記録が開始できないとき、エラーメッセージを表示するようにした」 こんな感じでしょうか?

zmatsuo commented 3 months ago

history.html がコンフリクトしてしまいますね。 今回はGitHub上でmargeして、改版履歴を追加しました。

gitだけを使って、GitHubを使わないマージだと、 マージしたところに(コミットea20294)に改版履歴を混ぜこんで pushするかなと思います。

クローズします。

sempreff commented 3 months ago

いずれかが先にマージされたらもう片方でそれを取り込めばいいと思っていま したが、結果的にコンフリクト対応のお手間をかけさせてしまって恐縮です。マージありがとうございました。