2009-04-04 7 views
6

米国では、 "。"セパレータとして使用しますが、ドイツでは "、"を使用します。私は自分のロジックがどちらかを処理するのに十分スマートであるかどうかをテストしようとしていますが、私はWindows 2000マシンをドイツ語モードにすることに失敗しているようです。どうすれば私のASP.NET/SQL Serverアプリケーションがドイツで正しく小数を扱っているかどうかをテストすることができます

私はコントロールパネル、地域オプションに行き、 "あなたのロケール"を "ドイツ"に変更しました。その後、IISとSQL Serverの両方を再起動しました。しかし、私の変更は有効ではないようです。

これらの行にはまだ "。"が表示されます。セパレータとなる。

可能System.Globalization.CultureInfoのCI =新しい 可能System.Globalization.CultureInfo( System.Threading.Thread.CurrentThread.CurrentCulture.Name)。

Response.Write(ci.NumberFormat.NumberDecimalSeparator);

私は間違っていますか?

+0

のためにコードをテスト記事

です! ;-) – Cerebrus

+0

Windows 2000で日本語のロケールを使っていたことがありました。それは悪夢でした。あなたの痛みが分かります。 –

答えて

6

これをテストする最良の方法は、あなたのweb.configファイルにグローバル化の要素を追加することで、例えば:-DEを解除するために文化を変える

<system.web> 
    <globalization culture="de-DE" uiCulture="en-US" /> 
</system.web> 

は、日付や数値の書式に影響します:あなたはまた、場合uiCultureを変更することができますuiCultureをen-USにしておくと、英語の例外メッセージが表示されます。

+0

それは働いた。ありがとう。 –

0

私が思うのは、フォーマットタブ(最初のもの)です。

+0

「数字」タブがあり、「小数点記号」が「、」になっています。 コントロールパネルは正しく見えますが、ASP.NETはまだそれがUSだと思っています。私は変わる必要がある別の場所がありますか? –

0

あなたの現在のカルチャーをドイツ語に設定することができます。

私はそれはあなたがあなたの地域設定を設定した場合、あなたは(Advanced]タブ「現在のユーザーアカウントと既定のユーザープロファイルにすべての設定を適用」することを確認しなかった地域の設定

3

を切り替えるよりも容易になるだろうと思います)?

ほとんどの場合、そうする必要があります。私はあなたの文化がWeb.configglobalization要素の "en-us"にあらかじめ設定されていないとも仮定しています。

カルチャ設定をコードで手動で設定するのではなく、システム設定によって継承させたいと思っているようです。 IMOは、変更をSQLサーバーにも伝播させる必要があるため、チェックするのに適しています。

+0

私のW2Kマシンにはそのようなものはありません。 –

+0

おっと!私はW2Kについての部分を逃した。私のXP SP2です。しかし、Win 2Kでもすべての設定を適用する方法があるはずです。 Lemmeはそれを見上げる。 – Cerebrus

+0

+1。 W2Kでは、デフォルトプロファイルの地域設定を変更するためにレジストリを手動で編集する必要があると思います。HKEY_USERS/.DEFAULT/Control Panel/Internationalを見てください。しかし、web.configにグローバリゼーション要素を追加するほうが簡単です。 – Joe

0

本当にこれをヒットしたいのであれば...仮想マシンはあなたの友人です。 しかし、ドイツ語のosを入手するには、実際にmsdnサブスクリプションが必要です。

os(WinXPまたはVista)を仮想マシンにロードし、Webサイトを参照します。

0

IISでリージョン設定が使用されているとは限りません。あなたのコードにCultureInfoを明示的に設定する必要があります。

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("de-DE"); 

、後で戻ってそれを変更します。あなただけの1時間をテストしている場合は

0

、あなたはこれを読むためにラインを変更することができます。あなたはユニットテストの束をしたい場合は、そのような文字列を使用することができます。

1

Webサーバーのロケールに応じて、小数点記号のような書式設定の問題をWebサイトで処理することは、通常は間違っています。これにより、実際にエンドユーザに必要なものを与えるのではなく、アプリの配備を難しくするサーバ設定の問題が追加されます。たとえば、単一の(カナダ!)サーバーに同じアプリケーションのフランス語と英語の展開をインストールすることができます。

また、システムロケールが従来の問題(たとえば、日本語でのみ動作するアプリケーション、または世界中のプロダクションサーバーがen-USを「正規版Windows」として実行しているなど)によって不適切なものに設定されることは、 ')。

通常、アプリケーション層では、サイトコードの展開ごとに1つのロケールオプション、またはサイトのユーザーごとに1つのロケールオプション(必要に応じて)のいずれかを処理する方が適切です。誰でもアプリにログインして、適切な番号の書式を取得することができます。

最後に、アプリのインターフェースが英語だけの場合は、とにかく英語の数字の書式を使用する方が適切かもしれません。ドイツ人はこれに慣れているでしょう。実際にはとなります。英語とドイツ語のUI規則を混在させるのは混乱します。 IMO:完全にローカライズする、またはまったくローカライズしない。

0

私は何かを明確にすることができます。あなたのマシンをドイツ語モードにして、ウェブアプリケーションをテストしたいのですが、ブラウザと同じマシン上で実行されていますか?

これが実際に実行されているとき、私たちは、サーバがドイツ外(ドイツでも、米国のロケールで設定されたマシン上でホストされている可能性が高いと思います)そうであれば、サーバ上のカルチャを設定することは本当にあなたが望むものではなく、とにかく展開するときにはできないでしょう。

また、別の問題があります。ユーザーが使用したい文化を検出できるばかげた方法はありません。 HTTPヘッダーからあらゆる種類の情報を検出することができます.IPアドレスのドメイン検索を行いますが、ドイツのスピーカーがあなたのサイトを米国から使いたい場合、あるいはアメリカ人がドイツにいて見たいと思った場合はどうなりますか? "、"小数点の区切り記号ではありませんか?

あなたのクライアントのPCがどのような文化を使っているかは問題ではありません。あなたのアプリがあなたの文化を検出したとしても、すべての賭けは外されています。正しく、あなたのユーザーが望むものではないかもしれません!

これを行う方法は、ユーザーにどの言語を使用するかを尋ね、実行時にアプリケーションでロケールを明示的に設定することです。これは、ユーザーにランゲージを選択するように要求することを意味しますが、それはユーザーに適切なロケールを使用する唯一の方法です。すべてのユーザーがドイツ語であれば、尋ねる必要はありません。ハードコードするだけです。彼のアプローチがうまくいくように聞こえたら、良いサンプルコードがここにあります:http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

幸運か、むしろVielGlück!ここで

関連する問題