2011-12-29 14 views
1

私のウェブサイトに複数の言語とUIカルチャを表示したい。私は自動的にように、ブラウザからの文化をピックアップIIS 7のフラグを有効にしている:ASP.NET MVC 3の文化問題

<globalization 
    enableClientBasedCulture="true" 
    culture="en-GB" 
    uiCulture="auto:en"/> 

これは正しいリソースファイルがロードされているでは完璧に動作し、正しい文化が表示されている(GB 0.00; 0、 DEは00)。

しかし、これは私の外部サービスとの干渉の予期せぬ問題を抱えていました。たとえば、ここにPayPalとのインタフェースコードがあります。

var paymentDetails = new PaymentDetailsType 
{ 
    ItemTotal = new BasicAmountType 
    { 
     currencyID = currencyCode, 
     Value = basket.SubTotal.ToString("0.00") 
    }, 
    ... 
} 

このコードは基本的にPayPalが常に培養は小数点(例えばDE - ドイツ語)としてコンマを有するように選択されるドット小数点を、必要しかしとして、そう'50.25'ようにフォーマットされた文字列を作成しToString("0.00")'50,25'を生成するので、私のコードは失敗します。

これを修正するにはどのような方法が最適でしょうか?私はまだ文化をユーザーの文化に合わせたいと思っていますが、自分の文化を使うためにコードの特定の部分を設定したいと思います。

ToString()メソッドに特定の培養物を摂食させることができますが、これは非常にhackishと思われます。それ以上のプロのクリーンなアプローチ?

+0

特定の文化の中で餌:

Value = basket.SubTotal.ToString("0.00", CultureInfo.InvariantCulture) 

はここ二System.IFormatProviderパラメータを取りますToStringメソッドのオーバーロード(へのリンク)です。 –

答えて