locked
WCFの多言語化対応 RRS feed

  • 質問

  • お世話になります。

    参考サイトなどありましたら、ご教授頂けませんでしょうか。

    SharePoint2013にデプロイする、WCFでRESTのwebサービスを開発しています。

    クライアントへのレスポンスで返すメッセージ言語を、OSの言語環境で変更したいと思っています。

    リソースファイル(resx)を使って言語を切分けれるのではと思っていましたが、上手く切り分ける事ができませんでした。

    wcfで言語を切替える方法がありましたら、教えて頂けませんでしょうか。

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

    2014年1月27日 9:01

回答

  • 何が問題か切り分けるところからでしょうか。
    ログなり、結果なりに CurrentUICulture が何になっているか出力してみて、現状を把握してみてください。

    • CurrentUICulture が想定した言語になっていない。
      サービスを実行するアカウントを調整する必要があると考えられます。
    • CurrentUICulture が想定した言語になっているが、リソースをうまく取り出せない。
      サーバーにサテライトアセンブリが配置できていない?
    2014年1月28日 14:03

すべての返信

  • 一点確認ですが、「OS の言語環境で変更したい」とされている、「OS の言語環境」はどのマシンのことでしょうか?
    WCF のサービスの接続元でしょうか? WCF のサービスを実行するマシンのことでしょうか?

    前者であれば自分でスレッドのカルチャを変えてやらないとだめかもしれません。(参考
    後者であれば実行ユーザーアカウントの言語設定に依存している可能性があります。

    2014年1月27日 13:52
  • お世話になっております。

    ご返信ありがとうございます。

    あいまいな質問失礼いたしました。

    意図としましては、ご指摘頂きた、後者のサービスを実行するマシンです。

    サービスを実行するマシンの言語環境に合わせて、レスポンスの言語を変更したいです。

    何か方法はありますでしょうか。

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

    2014年1月27日 23:52
  • 何が問題か切り分けるところからでしょうか。
    ログなり、結果なりに CurrentUICulture が何になっているか出力してみて、現状を把握してみてください。

    • CurrentUICulture が想定した言語になっていない。
      サービスを実行するアカウントを調整する必要があると考えられます。
    • CurrentUICulture が想定した言語になっているが、リソースをうまく取り出せない。
      サーバーにサテライトアセンブリが配置できていない?
    2014年1月28日 14:03
  • ご連絡ありがとうございます。

    説明不足で申し訳ございません。

    以前、wpfでapp.xamlと各言語ファイル(rssx)定義で、プログラムで言語環境を意識する事なく、多言語対応する事ができたのですが、wcfでも同じように定義だけでできないかと思って質問させて頂きました。

    言語環境から判断して、読込むリソースを変更するよに対応していこうと思います。

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

    2014年1月29日 2:20
  • 私が言いたかったことが伝わっていない可能性が考えられたため、もう一度書きます。

    CurrentUICulture はどうなっているか、ログなどで確認できていますか?
    期待する言語になっているのであれば、resx からコンパイルしたサテライトアセンブリが正しく配置できていない可能性が考えられます。
    期待する言語になっていないのであれば、サービスが実行されているユーザーアカウントの表示言語が想定通りになっていないと考えられます。

    この段階で、プログラムによって言語を切り換えるという話はしていません。

    2014年1月29日 13:24
  • ご回答いただきありがとうございます。

    プログラムでは、次のリソースファイル(resx)を定義しました。

     Message.resx (英語を定義)

      Message.ja-jp.resx (日本語)

    wcfの実行機のCurrentUICultureは"ja-jp"となっていましたが、wcf内で取得できるメッセージは、Message.resx (英語)でした。

    サテライトアセンブリが正しく配置されていないようです。

    Message.resx・Message.ja-jp.resxは、SharePoint2013プロジェクトにおいていなく、別のクラスプロジェクトに"Resource"フォルダを切って配置しています。

    大雑把な質問で申し訳ございませんが、うまくサイトアセンブリを含んで配置できる方法はございませんでしょうか。

    2014年3月14日 9:30