¿Hay una cadena 'Hoy' .NET Cultura dependiente?
-
22-08-2019 - |
Pregunta
Estoy escribiendo un control al estilo de calendario mensual, y la necesidad de mostrar una cadena que indica la fecha de hoy. Así que en una máquina de Inglés-cultura sería una muestra de 'Today : 11/02/2009'
.
Si una cultura diferente pasa a ser utilizado, como el francés, entonces me gustaría usar la palabra francesa para 'Hoy'.
¿La plataforma .NET exponer esta palabra como parte de la información de referencia cultural para que pueda recuperarlo de forma automática? No puedo encontrar nada impresionados pero tal vez yo no estoy buscando en el lugar correcto.
Solución
Antiguo .. pero sigue siendo útil (¿qué edad? VB6 de edad).
Básicamente Windows mantiene una versión localizada de "Hoy" en Comctl32.dll. Se puede pescar hacia fuera con una llamada de 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
Otros consejos
Este es una visión bastante completa de .Net localización.
En pocas palabras, los métodos de la estructura DateTime formato a la fecha en base a la configuración regional del sistema. Puede anular la configuración regional predeterminada especificando su propio.
Edit: Lo siento, he leído mal su pregunta. No, no hay tal cosa. Se puede usar un sitio de traducción para obtener las traducciones de 'Hoy' que tiene que soportar, y mantenerlos en un diccionario en el código. Tras un examen más, sin embargo, no recomendaría esto en absoluto, ya que la cadena resultante "Hoy: xx / xx / xxx" puede sentirse incómodo en otros idiomas. Mientras que la versión en alemán: "Heute: 11.2.2009", o el francés "Aujourd'hui: 11.2.2009" parecen funcionar bien en un calendario, no puedo decir por el chino o japonés. Esto ilustra los problemas que se pueden ejecutar cuando se piensa en la localización es la traducción apenas.