2012-03-12 5 views
1

私は自分のTimeSpanをReadableStringの実装に書いています。今私はそれを別の言語をサポートする必要があります。C#コードの異なる文化を「切り替え」

機能クラスは、静的パブリックメソッド(静的パブリックメソッド)(両方ともConvertと呼ばれます)を実装した静的クラスとして実装されますが、パラメータとしてTimeSpan値のみを受け取り、2番目のメソッドではCultureInfoを指定できます。必要な読み込み可能な文字列言語。

私の考えは、私の考えは、基本的なスイッチ(desiredCulture.ThreeLetterISOLanguageName)を使用し、別のString.Format結果を返すことです。

私は解決しようとしている簡単なタスクを考えれば良いアプローチですか? ThreeLetterISOを使用するのは、信頼性が高く広範囲に広がり、次に言語用の2文字コードですか?

+0

なぜあなたは独自のフォーマッタを書いていますか? [標準](http://msdn.microsoft.com/en-us/library/ee372286.aspx)と[カスタム](http://msdn.microsoft.com/en-us/library/ee372287)ではありません。 aspx) 'TimeSpan'フォーマットの文字列(.Net 4.0から入手可能)で十分ですか? – svick

+0

@svick「TimeSpan」を「2分30秒」などのようにレンダリングしたい場合や、そのようなものはありません。 –

+0

@svick、チップありがとうございますが、私はフォーマッタと同じ問題に遭遇しています。たとえば、 'output =" Time of Travel: "+ duration.ToString("%d ")+" days ";' 'days"はまだ英語であり、必要なカルチャーに応じて異なる "days"文字列を提供する必要があります。 –

答えて

0

実際にはTimeSpanをローカライズしたくないようですが、アプリケーション全体をローカライズする必要があります。それを行う方法はいくつかあります(たとえば、weird, overcomplicated way specific to WPFがあります)。

しかし私の好ましい方法は、リソースファイルを使用することです。文化に依存しない1つのリソースファイル(例:Text.resx)、サポートしたい文化ごとに1つのリソース(たとえば、ドイツ語の場合はText.de.resx)を持つことができます。現在設定されているカルチャのリソースがない場合は、カルチャーニュートラルなものが使用されます。

Visual Studioにはリソースファイル用のエディタが用意されているため、翻訳は比較的簡単です。

また、これにより、詳細情報が表示される場合があります。Walkthrough: Using Resources for Localization with ASP.NET(リソースはASP.NET固有のものではありません)。

+0

仮定が正しくない。このプロジェクトは、私が別のソリューションで使用する予定のDLLです。 'TimeSpanToReadableString'は異なる文化のためのハードコードされた文字列を持つ静的クラスになります。アプリケーションのローカライズは、コードを再利用する予定がない場合に適しています。それ以外の場合は、簡単に移植可能な純粋な.dllアセンブリでは、ハードコーディングが唯一の選択肢のようです。 –

+0

@ MaximV.Pavlov、私はそうは思わない。あなたが正しい 'CurrentUICulture'セットを持っていれば、ライブラリのコードにも影響します。そして、結果のアセンブリ(.dllまたは.exe)にリソースがコンパイルされるので、それもあなたのために働くはずです。 – svick

関連する問題