0

月間カレンダー スタイルのコントロールを作成しており、今日の日付を示す文字列を表示する必要があります。したがって、英語文化のマシンでは、 と表示され'Today : 11/02/2009'ます。

フランス語など、別の文化が使用される場合は、「今日」を表すフランス語を使用したいと思います。

.NET プラットフォームは、この単語をカルチャ情報の一部として公開するので、自動的に取得できますか? 公開されているものは見つかりませんが、適切な場所を探していない可能性があります。

4

2 に答える 2

6

古い..しかし、まだ有用です (何歳ですか? 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
于 2009-02-11T05:27:27.050 に答える
2

これは、.Net ローカリゼーションのかなり包括的な概要です。

簡単に言えば、DateTime 構造体のメソッドは、システム ロケールに基づいて日付をフォーマットします。独自のロケールを指定して、デフォルトのロケールをオーバーライドできます。

編集:申し訳ありませんが、あなたの質問を読み違えました。いいえ、そんなことはありません。翻訳サイトを使用して、サポートが必要な「Today」の翻訳を取得し、それらをコード内の辞書に保持することができます。ただし、よく調べてみると、結果の文字列 "Today: xx/xx/xxx" は他の言語ではぎこちなく感じるかもしれないので、これはまったくお勧めしません。ドイツ語版の "Heute: 11.2.2009" またはフランス語の "Aujourd'hui: 11.2.2009" はカレンダーでは問題ないように見えますが、中国語や日本語ではわかりません。これは、ローカリゼーションを単なる翻訳と考えている場合に発生する可能性がある問題を示しています。

于 2009-02-11T04:02:49.920 に答える