Existe uma string 'Today' .NET Cultura-dependente?
-
22-08-2019 - |
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.
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.