C'è una stringa 'Oggi' NET Cultura-dipendente?
-
22-08-2019 - |
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.
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.