WSJT-X Improved 3.2 / 260908で日本語メニューが英語で起動する場合の対処と原因2026年09月10日 07時48分31秒

WSJT-X Improved 3.2 / 260908で日本語メニューが英語で起動する場合の対処と原因

WSJT-X Improved 3.2.0 260908 AL PLUSを使用した日本人ユーザーから、 「これまで日本語だったメニューが英語表示になった」という問い合わせがありました。

同様の事象は別の日本人ユーザーでも確認されており、 日本語表示そのものが失われたわけではなく、起動時の言語選択の挙動が変わっていることが分かりました。

先に結論:日本語で起動する方法

260908で日本語GUIを使用したい場合は、起動時に次のオプションを付けます。

--language=ja

たとえばWindowsのショートカットを使用している場合は、「リンク先」の実行ファイル名の後ろに半角スペースを入れて、

"C:\WSJT\wsjtx\bin\wsjtx.exe" --language=ja

のようにします。 実際のインストール先は各自の環境に合わせてください。

この方法で260908でも正常に日本語表示になることを、複数の日本人ユーザーで確認しています。

260818と260908を同じPCで比較

原因を切り分けるため、私自身の日本語Windows環境で260818と260908を同じPC上でA/Bテストしました。

  • 260818:言語オプションなし → 日本語で起動
  • 260908:言語オプションなし → 英語で起動
  • 260908:--language=ja → 日本語で起動

少なくとも私の環境では、260818と260908の間で、 「言語を明示指定しなかった場合のデフォルト動作」 が変わっていることが確認できました。

ソースを比較すると原因が見つかりました

そこで260818と260908の完全ソースを比較しました。 直接の違いは wsjtx/main.cpp にありました。

260818では次のようになっています。

L10nLoader l10n {&a, locale, parser.value (lang_option)};

この場合、--language が指定されていなければ空の値がそのまま L10nLoader に渡されます。 そのため通常のsystem localeによる言語選択が働き、日本語Windowsでは日本語GUIが自動的に読み込まれます。

一方、260908では次の処理が追加されています。

QString language_override = parser.value(lang_option);
// Default to English unless a language was explicitly requested.
if (language_override.isEmpty()) {
  language_override = "en";
}
L10nLoader l10n {&a, locale, language_override};

つまり260908では、言語指定がない場合に "en" を明示的に設定するよう変更されています。

L10nLoader 側では "en" を明示的な英語指定として扱い、 system localeに基づくtranslationの読み込みをスキップします。 その結果、オプションなしでは英語GUIになります。

逆に --language=ja を付ければ "ja" が明示指定されるため、 日本語translationが正常に読み込まれます。

実際の挙動とソースの処理が一致

整理すると次の通りです。

  • 260818:言語指定なし → system localeを使用 → 日本語Windowsでは日本語
  • 260908:言語指定なし → "en" を設定 → 英語
  • 260908:--language=ja → 日本語

実機で確認した挙動と、ソース上の処理が完全に一致しました。

また、L10nLoader.cppL10nLoader.hpp 自体は260818と260908で変更されておらず、 言語・locale・translation周辺を確認した範囲では、今回のデフォルト動作を変える直接の差分はこの main.cpp の変更でした。

Best S&Pの日本語対応patchとは無関係です

260908には、私(JP1LRT)が提供したBest S&Pの言語依存修正patchも取り込まれています。 そのため当初、この変更との関係も念のため確認しました。

しかしこのpatchは、Best S&P内部で翻訳済み文字列を比較していた処理を、 言語に依存しない内部のtyped valueによる比較へ変更したものです。

QLocaleQTranslatorL10nLoader、 translation loading、--language の処理には触れていません。 ソースdiffでも今回の日本語GUI起動問題との直接的な関係がないことを確認しました。

これは「バグ」なのか?

260908のコードには、

// Default to English unless a language was explicitly requested.

というコメントがあるため、コード変更そのものは意図的に書かれたものと考えられます。

ただし、 「すべての非英語環境で、言語指定がなければ英語をデフォルトにする」 ことまで意図したユーザー向け仕様変更だったのか、 またその理由が何だったのかまでは、今回比較したソースだけからは判断できません。

したがって現時点では、これを「バグ」や「regression」と断定するのではなく、 260818と260908の間でデフォルトの言語選択処理が変更された という事実として整理しておくのが適切だと思います。

従来の自動言語選択へ戻す場合

もし260818までのように、言語指定がない場合はsystem localeに従う動作へ戻すのであれば、 main.cpp の処理を260818の形に戻すのが最小の修正です。

L10nLoader l10n {&a, locale, parser.value (lang_option)};

この形に戻しても、英語を明示したい場合の

--language=en

は従来通り機能します。

今回の解析結果についてはDG2YCB / Uweにも共有しています。

とりあえず困っている方へ

260908をインストールして「メニューが英語になってしまった」と困っている方は、 まずはショートカット等に

--language=ja

を追加して起動してみてください。 日本語translationそのものは正常に利用できます。

最初は単純な「日本語メニューが出ない」という問い合わせでしたが、 同一PCでのA/Bテスト、260818と260908のソース比較、 そしてtranslation loaderの処理を追うことで、今回の挙動の直接原因まで確認することができました。

73,
Yoshi / JP1LRT