月間カレンダー スタイルのコントロールを作成しており、今日の日付を示す文字列を表示する必要があります。したがって、英語文化のマシンでは、 と表示され'Today : 11/02/2009'
ます。
フランス語など、別の文化が使用される場合は、「今日」を表すフランス語を使用したいと思います。
.NET プラットフォームは、この単語をカルチャ情報の一部として公開するので、自動的に取得できますか? 公開されているものは見つかりませんが、適切な場所を探していない可能性があります。
月間カレンダー スタイルのコントロールを作成しており、今日の日付を示す文字列を表示する必要があります。したがって、英語文化のマシンでは、 と表示され'Today : 11/02/2009'
ます。
フランス語など、別の文化が使用される場合は、「今日」を表すフランス語を使用したいと思います。
.NET プラットフォームは、この単語をカルチャ情報の一部として公開するので、自動的に取得できますか? 公開されているものは見つかりませんが、適切な場所を探していない可能性があります。
古い..しかし、まだ有用です (何歳ですか? VB6 古い)。
基本的に、Windows は Comctl32.dll に "Today" のローカライズ版を保持しています。loadstringex 呼び出しでそれを釣り上げることができます:
Private Const IDM_TODAY As Long = 4163
Private Const IDM_GOTODAY As Long = 4164
Public Function GetTodayLocalized(ByVal LocaleId As Long) As String
Static hComCtl32 As Long
Static hComCtl32Initialized As Boolean
Static hComCtl32MustBeFreed As Boolean
Dim s As String
If Not hComCtl32Initialized Then
hComCtl32 = GetModuleHandle("Comctl32.dll")
If hComCtl32 <> 0 Then
hComCtl32MustBeFreed = False
hComCtl32Initialized = True
Else
hComCtl32 = LoadLibrary("Comctl32.Dll")
If Not hComCtl32 = 0 Then
hComCtl32MustBeFreed = True
hComCtl32Initialized = True
End If
End If
End If
If hComCtl32Initialized = False Then
s = "Today"
Else
s = LoadStringEx(hComCtl32, IDM_TODAY, LocaleId)
If s = "" Then
s = "Today"
End If
End If
If hComCtl32MustBeFreed Then
FreeLibrary hComCtl32
hComCtl32MustBeFreed = False
hComCtl32Initialized = False
hComCtl32 = 0
End If
s = Replace(s, "&", "")
If Right(s, 1) = ":" Then
s = Left(s, Len(s) - 1)
End If
GetTodayLocalized = s
End Function
これは、.Net ローカリゼーションのかなり包括的な概要です。
簡単に言えば、DateTime 構造体のメソッドは、システム ロケールに基づいて日付をフォーマットします。独自のロケールを指定して、デフォルトのロケールをオーバーライドできます。
編集:申し訳ありませんが、あなたの質問を読み違えました。いいえ、そんなことはありません。翻訳サイトを使用して、サポートが必要な「Today」の翻訳を取得し、それらをコード内の辞書に保持することができます。ただし、よく調べてみると、結果の文字列 "Today: xx/xx/xxx" は他の言語ではぎこちなく感じるかもしれないので、これはまったくお勧めしません。ドイツ語版の "Heute: 11.2.2009" またはフランス語の "Aujourd'hui: 11.2.2009" はカレンダーでは問題ないように見えますが、中国語や日本語ではわかりません。これは、ローカリゼーションを単なる翻訳と考えている場合に発生する可能性がある問題を示しています。