2010-11-24 30 views
0

WPFコントロールを作成する必要があります。これにより、ユーザーはタイムゾーンを選択できます。このコントロールは、複数の言語をサポートする必要もあります。つまり、アプリケーションで選択した言語でタイムゾーン名を表示する必要があります。多言語タイムゾーンセレクタ

.NET 3.5は、TimeZoneInfo.GetSystemTimeZonesメソッドを呼び出すことによって、レジストリからタイムゾーンリストを取得する簡単な方法をサポートしています。このアプローチの問題点は、現在のシステムに依存していることです。つまり、異なるユーザーがそれぞれのマシンに異なるタイムゾーンリストを表示する可能性があります。ユーザーがシステムの更新を拒否した場合、そのリストの一部が期限切れになることがあります。

これを解決する方法の1つは、最新のマシンでTimeZoneInfo.GetSystemTimeZonesを呼び出して最新のリストを取得することです。それをアプリケーションにデプロイするファイルにシリアル化します。また、このリストは現在のシステム言語で返されるので、異なるWindowsローカライゼーションのすべての言語のリストを生成する必要があります。または、手動で翻訳を行うだけです。この方法では、最新バージョンのアプリケーションがあれば、ユーザーは最新のリストを取得します。

もう1つの方法は、tz databaseのような別のタイムゾーン情報ソースを使用することです。この場合、tzデータベースのタイムゾーンAPIオブジェクトを標準のTimeZoneInfoオブジェクトに変換するために、いくつかのコンバータを使用する必要があります。

このような場合や似たような場合に、どのようなアプローチをお勧めしますか?

答えて

1

私はこれがどのように問題になるかを見ています。

オプション1:(。元のためのあなたのdevのマシン)

私は最新のマシンからリストを作成し、一貫した物事を保つために、アプリでデプロイされたリソースファイルとして含まれています。

次に、通常のローカライゼーションプロセスの一部としてローカライゼーションを行います。つまり、タイムゾーンは残りのUIとともに翻訳されます。

オプション2:

は、クライアント・サーバ・アプリケーションを想定します(つまり、常にUTC時刻を受信し、送信し、クライアント上でそれらを変換)、クライアント側のタイムゾーンの使用を制限することができ、あなたができるように、 OSのタイムゾーンを使用して、実際にゾーンが何であるか気にする必要はありません。