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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top