ActiveQt COM DLLの日本語化について



  • 初めまして。yebiといいます。

    ActiveQtのドキュメントを見ても、Webを検索しても関連情報が見つかりませんでしたので投稿することにしました。

    QAxFactoryを使って、COM DLLを作成しています。
    COM DLL自体は問題なく作成でき、利用できています。

    質問は、COM DLLを、QTranslatorを使って日本語化がてきるかどうか、ということです。

    QTranslatorのドキュメントには下記の注記が書いてあります。
    Note that the translator must be created before the application's widgets.

    COM DLLを呼び出すときにはwidgetが生成されてしまっているので、QTranslatorは働かないように思えます。
    試しに、クラスのコンストラクタの中でQTranslatorを呼び出してみましたが、やはり効力はありませんでした。

    QTranslatorが使えないのならば、ソースコードに日本語を埋め込むしかなくなります。

    何か情報がありましたら教えていただきたく。

    よろしくお願いいたします。



  • UIはどのように作成していますか。

    • Qt Designerでuiファイルを作成している。
    • コードで作成している。

    どちらの場合でもtr()の呼び出しを行う前に installTranslator() を実行すれば問題は無いはずです。uiファイルを使用している場合はsetupUi()の呼び出し前にinstallTranslator()を実行してください。

    また、WidgetをDynamic Translationに対応させておく方法もあります。この場合、installTranslator()を実行した際にLanguageChangeイベントが発生するのでそれに対応して文字列を設定します。

    詳しくは
    http://qt-project.org/doc/qt-5/internationalization.html#dynamic-translation
    を参照してください。

    uiファイルを作成している場合はDesignerのオプションでこれに対応するコードを作成することが出来ます。Qt CreatorではオプションのDesignerのところにあります。



  • うまくいきました。
    ありがとうございました。

    UIはコードで作成しています。

    tr()の前、というのが肝だったのですね。
    自分のコードを見直したところ、installTranslator()の前に一つだけtr()が呼び出されていました。
    順序を変えたところうまくいきました。


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.