質問

CultureInfo オブジェクトをパラメーターとして受け入れるサービス メソッドがあります。これを使用して、指定された言語でリソースから正しい文字列を取得したいと考えています。したがって、サービスには次のようなメソッドがあります。

public string GetTranslatedString(CultureInfo c)

そしてクライアントではこのメソッドを次のように呼び出します。

ServiceReference.GetTranslatedString(CultureInfo.CurrentUICulture);

私も試してみました:

ServiceReference.GetTranslatedString((CultureInfo)CultureInfo.CurrentUICulture.Clone());

しかし、間違った結果が生成されます。カルチャ情報オブジェクトは、クライアントが存在する PC のカルチャではなく、サービスが存在する PC のカルチャを記述しているかのように渡されます。したがって、クライアントに「nl」カルチャがある場合でも、サーバーには「en」カルチャが適用されます。なぜ?オブジェクトではなくサービスに LCID を渡すことでこの問題を解決する方法はわかっていますが、説明されているアプローチが機能しない理由を本当に知りたいです。

役に立ちましたか?

解決

これを試してみてください (たった 4 つの楽しみ):

CultureInfo ci = CultureInfo.CurrentUICulture;
string text = ServiceReference.GetTranslatedString(ci);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top