none
LocBamlを用いたローカライズの確認方法 RRS feed

  • 質問

  • WPFアプリケーションでの多言語化を検討しています。

    LocBaml.exeを使用して、ニュートラル言語en-ESとして作成した実行ファイルApp.exeのen-US\app.resources.dllから

    各言語にローカライズしたxxx.resources.dllを作成します。

    日本語(ja-JP)、スペイン語(es-ES)にローカライズした場合、App.exeと同列に

    en-US\app.resources.dll、ja-JP\app.resources.dll、es-ES\app.resources.dllといったフォルダ構成となっています。

    この状態で日本語OSでApp.exeを実行すると日本語でローカライズされたstringが表示されますが、

    スペイン語でローカライズされたstringを表示する方法はありますでしょうか?

    Resources.resxを各言語毎に用意する場合は、

    InitializeComponent()の前にCurrentUICultureを変更すれば良いのですが、

    LocBamlで各言語毎にresources.dllを用意した場合、CurrentUICultureを変更してもスペイン語で表示されません。

    以下の目的でLocBamlの使用を検討しております。

    ・レジストリ値で言語切り替えを行いたいこと

    ・アプリケーションのビルド後にローカライズ対応が可能

    分かりにくい文章かとは思いますが、よろしくお願いいたします。

    2012年11月21日 8:42

回答

すべての返信

  • How to: Localize an Application

    上記ページの解説によると、AppクラスのコンストラクタでCurrentUICulture/CurrentCultureを変更すればいいようですが、いかがでしょうか?

    • 編集済み Hongliang 2012年11月21日 9:35
    • 回答としてマーク wednesday0805 2012年11月21日 10:58
    2012年11月21日 9:34
  • Hongliangさん

    上記サイトの日本語ページにその記述がなく、見落としておりました。

    AppクラスのコンストラクタでCurrentUICultureを変更することで、目的のresources.dllを読み込むことを確認いたしました。

    上記方法で目的の仕様を満たすことが出来そうです。素早いご返信に感謝いたします。

    この先は単純な疑問なのですが、

    しかし、①Resources.resxを各言語毎に用意する方法と、②LocBamlを用いた方法では、

    ①だと各コンポーネント呼び出しの前にCurrentUICultureをセットしておけば、

    例えばウィンドウ1の表示前にスペイン語、ウィンドウ2の表示前に日本語をセットしておけば、

    ウィンドウ1はスペイン語で、ウィンドウ2は日本語で表示されますが、

    ②の場合Appクラスのコンストラクタでセットしなければならない為、動的な変更は不可ということになるのでしょうか。

    そもそも同じresource.dllなのに読み込むタイミングが違う???



    2012年11月21日 10:58