Domanda

Sto scrivendo un controllo calendario in stile mese, e la necessità di visualizzare una stringa che indica la data di oggi. Quindi, su una macchina inglese-cultura che avrebbe mostrato 'Today : 11/02/2009'.

Se una cultura diversa capita di essere utilizzati, come il francese, quindi vorrei usare la parola francese per 'Oggi'.

La piattaforma .NET esporre questa parola come parte delle informazioni di cultura in modo da poter recuperare automaticamente? Non riesco a trovare nulla impressionati ma forse io non sto cercando nel posto giusto.

È stato utile?

Soluzione

Old .. ma ancora utile (quanti anni? VB6 vecchio).

In sostanza Windows tiene una versione localizzata di "Oggi" in Comctl32.dll. Si può pescare fuori con una chiamata un 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

Altri suggerimenti

Questo è una panoramica piuttosto completa di .Net la localizzazione.

In breve, i metodi della struttura DateTime formatta il data base delle impostazioni internazionali. È possibile ignorare l'impostazione internazionale predefinita specificando il proprio.

Edit: Scusa, ho letto male la tua domanda. No, non c'è nulla di simile. Si potrebbe utilizzare un sito di traduzione per ottenere le traduzioni di 'Oggi' che è necessario per sostenere, e tenerli in un dizionario nel codice. A ben guardare, però, io non consiglierei questo a tutti, dal momento che la stringa risultante "Oggi: xx / xx / xxx" può sentire a disagio in altre lingue. Mentre la versione tedesca: "Heute: 11.2.2009", o il francese "Aujourd'hui: 11.2.2009" sembrano funzionare bene in un calendario, non posso dire per il cinese o giapponese. Questo illustra i problemi che si possono incontrare quando si pensa di localizzazione è solo la traduzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top