Pergunta

Estou escrevendo um controle de estilo calendário mês, e necessidade de exibir uma string que indica a data de hoje. Então, em uma máquina Inglês-cultura seria mostrar 'Today : 11/02/2009'.

Se uma cultura diferente acontece a ser utilizado, como o francês, então eu gostaria de usar a palavra francesa para 'Hoje'.

Será que a plataforma .NET expor esta palavra como parte das informações de cultura para que eu possa recuperá-lo automaticamente? Eu não consigo encontrar nada impressionados mas talvez eu não estou procurando no lugar certo.

Foi útil?

Solução

Old .. mas ainda útil (quantos anos? VB6 de idade).

Basicamente Windows mantém uma versão localizada do "Today" no Comctl32.dll. Você pode pescar-lo com um uma chamada 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

Outras dicas

Este é uma visão bastante abrangente da Net localização.

Em poucas palavras, os métodos da estrutura DateTime irá formatar a data com base na localidade do sistema. Você pode substituir a localidade padrão, especificando o seu próprio.

Edit: Desculpe, eu descaracterizou sua pergunta. Não, não há nada assim. Você pode usar um site de tradução para obter as traduções de 'Hoje' que você precisa de apoio, e mantê-los em um dicionário em seu código. Após um exame mais atento, porém, eu não recomendo este em tudo, desde a cadeia resultante "Hoje: xx / xx / xxx" pode se sentir estranho em outros idiomas. Enquanto a versão alemã: "Heute: 11.2.2009", ou o francês "Aujourd'hui: 11.2.2009" parecem ok trabalho em um calendário, não posso dizer para o chinês ou japonês. Isto ilustra os problemas que você pode executar em quando você pensa localização é apenas a tradução.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top