Frage

Ich schreibe eine Monats-Kalender-Stil Kontrolle und muß eine Zeichenfolge anzuzeigen, die die heutigen Datum anzeigt. So auf einer englische Kultur Maschine würde es zeigen 'Today : 11/02/2009'.

Wenn eine andere Kultur geschieht verwendet werden, wie Französisch, dann würde Ich mag das Wort Französisch verwenden für ‚Heute‘.

Ist die .NET-Plattform dieses Wort als Teil der Kultur Informationen aussetzen, damit ich es automatisch abrufen? Ich kann nichts ausgesetzt finden, aber vielleicht bin ich nicht an der richtigen Stelle suchen.

War es hilfreich?

Lösung

Alt .. aber immer noch nützlich (wie alt? VB6 alt).

Grundsätzlich hält Windows-eine lokalisierte Version von "Heute" in Comctl32.dll. Sie können es herauszufischen mit einem loadStringEx Aufruf:

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

Andere Tipps

Diese ist ein ziemlich umfassender Überblick über .Net Lokalisierung.

Auf den Punkt gebracht, Methoden der Struktur Datetime wird das Datum auf dem Systemgebietsschema basiert formatiert werden. Sie können das Standard-Gebietsschema außer Kraft setzen, indem Sie Ihre eigenen angeben.

Edit: Sorry, ich falsch verstehe Ihre Frage. Nein, es gibt nicht so etwas. Sie könnten eine Übersetzungs-Site verwenden, um die Übersetzungen von ‚Heute‘ zu erhalten, die Sie unterstützen müssen, und halten sie in einem Wörterbuch in Ihrem Code. Bei näherer Betrachtung würde ich jedoch dies nicht empfehlen, da die resultierende Zeichenfolge „Heute: xx / xx / xxx“ in anderen Sprachen umständlich fühlen. Während die deutsche Version: „Heute: 11.2.2009“ oder Französisch „Aujourd'hui: 11.2.2009“ scheint in einem Kalender in Ordnung zu arbeiten, kann ich nicht für Chinesen sagen oder Japanisch. Dies veranschaulicht die Probleme, die Sie laufen in, wenn Sie denken, Lokalisierung ist nur Übersetzung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top