2017-07-16 3 views
0

ヨーロッパの書式設定された文化のために英語をサポートしたいと思います。CultureInfo。英数字をサポートするヨーロッパ言語のフォーマット

日付はヨーロッパ形式で英語で表示する必要があります。だから、 "14:00 Sunday、16/July/2017"と表示されるべきであり、英国の方法ではありません...実際にアイルランドの文化はこれでOKです!

さらに、たとえば通貨を表示する必要がある場合は、「1.500,00ユーロ」と書式を設定します。今、英語をサポートするために、私が英国の文化を使うなら、私はポンド記号を得る。私がアイルランドの文化を使用する場合、私はヨーロッパで通貨をフォーマットする標準的な方法ではない "€1,500.00"を手に入れます。

en-USと(もしあれば)en-EUをサポートする私の申し込みの状態で、私は願っています。何か案は?私はカスタムカルチャーを作る必要がありますか?すべてのポインタ?我々のアプリケーションで

答えて

0

、全てDateTimeオブジェクトがUTCに格納され、我々の枠組みの中でヘルパーメソッドによって適切な表現に変換される:フォーマットは私達の記憶された言語から検索さ

public static string ToString(DateTime? date, string format) 
{ 
    if (date.HasValue) 
     return String.Format("{0:}"+format, date); 
    else return ""; 
} 

decimal通貨を表すプロパティも、私たちのフレームワークのヘルパーメソッドによって変換されます。このために、我々はNumberFormatInfo使用:

 numberFormat = new NumberFormatInfo(); 
     numberFormat.CurrencyDecimalSeparator = "."; 
     numberFormat.CurrencyGroupSeparator = ""; 
     numberFormat.NumberDecimalSeparator = "."; 
     numberFormat.NumberGroupSeparator = ""; 

をそして使うNumberFormatInfo作成:

price.ToString(numberFormat); 

このアプローチの最大の利点は、あなたにどのような他の誰かの思考にもかかわらず、あなた自身の好みを作成することができるということですこれらのメソッドはカスタムユーザー設定をサポートしています。

欠点は、あなたがサポートしているすべての国の言語とフォーマットを作成する必要があることです。

+0

ありがとうございます。それでも、数字や通貨を表示する方法をユーザーに尋ねたとしても、日付には問題があります... 2017年7月20日木曜日、EUの木曜日、2017年7月20日。米国では、午後7時24分、EU 19:24(PM、AMなし)。それらについての任意のアイデア? – Panos

+0

@Panos同じ解決策、別のテクニック。ユーザーのロケール設定で日付を表示するために使用する形式を含めます。これは通常、3つの要素で構成されます。 1.曜日を表示し、曜日の曜日の省略形を表示します。 (長い日付が優秀) 2. AM/PM、デジタル時間、または時間なしで時刻を表示するかどうか。 3.日付を(2017/07/13、2017/13/07または13/07/2017に)表示する形式 これらの3つの文字列ロケール値を適切な.ToString()テンプレート値に結合してから、単純にどんな方法でも日付を文字列に変換します。 – Chrotenise

関連する問題