2009-02-11 11 views
0

J'écris un contrôle de style de calendrier de mois, et j'ai besoin d'afficher une chaîne qui indique la date d'aujourd'hui. Donc, sur une machine de culture anglaise, cela montrerait 'Today : 11/02/2009'.Y a-t-il une chaîne 'Aujourd'hui' dépendant de la culture .NET?

Si une culture différente est utilisée, comme le français, alors je voudrais utiliser le mot français pour «Aujourd'hui». La plate-forme .NET expose-t-elle ce mot dans le cadre des informations de culture afin que je puisse le récupérer automatiquement?

Je ne trouve rien d'exposé mais peut-être que je ne cherche pas au bon endroit.

Répondre

6

Vieux .. mais toujours utile (quel âge? VB6 vieux).

Fondamentalement Windows conserve une version localisée de "Aujourd'hui" dans Comctl32.dll. Vous pouvez le pêcher avec un appel 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 
2

This est un aperçu assez complet de la localisation .Net. En résumé, les méthodes de la structure DateTime formateront la date en fonction des paramètres régionaux du système. Vous pouvez remplacer les paramètres régionaux par défaut en spécifiant les vôtres.

Editer: 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 prendre en charge et les conserver dans un dictionnaire de 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 gênant dans d'autres langues. Alors que la version allemande: "Heute: 11.2.2009", ou le français "Aujourd'hui: 11.2.2009" semblent fonctionner correctement 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 juste une traduction.

+0

Merci. Malheureusement, l'explication ne fait aucune mention d'une valeur de format ou d'une valeur Culture pour récupérer la chaîne 'Today'. –

+0

La chose à réaliser est: dans certaines langues, il peut être erroné d'utiliser leur mot pour "aujourd'hui" et ensuite fournir la date. Ils pourraient ne pas suivre cette convention. – colithium