Y at-il une personne à charge de la culture .NET chaîne « Aujourd'hui »?
-
22-08-2019 - |
Question
Je suis en train d'écrire un mois de contrôle de type calendrier, et besoin d'afficher une chaîne qui indique la date d'aujourd'hui. Ainsi, sur une machine-culture anglaise, il montrerait 'Today : 11/02/2009'
.
Si une autre culture arrive à utiliser, comme le français, je voudrais utiliser le mot français pour « Aujourd'hui ».
La plate-forme .NET expose ce mot dans le cadre de l'information de la culture afin que je puisse le récupérer automatiquement? Je ne peux pas trouver quoi que ce soit exposé, mais peut-être que je ne suis pas à la recherche dans le bon endroit.
La solution
Old .. mais toujours utile (quel âge? VB6 vieux).
Fondamentalement Windows conserve une version localisée de « Aujourd'hui » dans Comctl32.dll. Vous pouvez pêcher avec un appel de 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
Autres conseils
Cette est un aperçu assez complet de .Net localisation.
En un mot, les méthodes de la structure DateTime formateront la date sur la base des paramètres régionaux du système. Vous pouvez remplacer les paramètres régionaux par défaut en spécifiant votre propre.
Edit: Désolé, j'ai mal lu votre question. Non, il n'y a pas une telle chose. Vous pouvez utiliser un site de traduction pour obtenir les traductions de « Aujourd'hui » que vous devez soutenir, et les garder dans un dictionnaire dans votre code. Un examen plus approfondi, cependant, je ne recommanderais pas du tout, puisque la chaîne résultante « Aujourd'hui: xx / xx / xxx » peut se sentir maladroit dans d'autres langues. Alors que la version allemande: « Heute: 11.2.2009 », ou les Français « Aujourd'hui: 11.2.2009 » semblent bien fonctionner dans un calendrier, je ne peux pas dire pour le chinois ou le japonais. Cela illustre les problèmes que vous pouvez rencontrer lorsque vous pensez que la localisation est la simple traduction.