2010-05-27 15 views
3

Je veux obtenir une liste des fuseaux horaires, afin que je puisse remplir la liste déroulante. Dans .NET 3.5, nous avons l'espace de noms TimeZoneInfo, voici le code:Globalisation pour GetSystemTimeZones()

ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones(); 
foreach (TimeZoneInfo timeZone in timeZones) 
    string name = timeZone.DisplayName 

Cependant, "DisplayName" est en anglais. Comment puis-je transmettre le cultureInfo afin qu'il puisse retourner d'autres langues? J'ai essayé de définir Thread.CurrentCulture et CurrentUICulture, cela n'a pas fonctionné. Est-ce que je manque quelque chose?

Répondre

3

Cela dépend du système d'exploitation. Droit de MSDN blog:

Sur les plateformes de bas niveau tels que Windows XP et Windows Server 2003, uniquement l'affichage, Std, et les clés dlt existent. Les valeurs de la clé Display, Std et Dlt sont localisées uniquement dans la langue par défaut du système en cours d'utilisation. En raison de l'architecture de registre de fuseau horaire Windows, les paramètres CurrentUICulture n'affectent pas les valeurs de ces propriétés TimeZoneInfo.

Il semble que sur win xp et server 2003, vous n'avez pas de chance.

Sur vista, win7 et server 2008, vous devriez pouvoir obtenir une autre langue en changeant les paramètres régionaux. Interface utilisateur multilingue (MUI) Le soutien semble être la clé:

systèmes d'exploitation compatibles MUI tels que contiennent Windows Vista clés MUI_Display, MUI_Std et MUI_Dlt, qui sont indirectement contrôlée par les systèmes d'exploitation régionaux paramètres

EDIT: J'ai effectué un test rapide sur win7, le réglage de CurrentUICulture ne modifie pas la langue de sortie de ces touches. Il semble que changer les paramètres régionaux est le seul moyen. Cela vous oblige à fermer votre session pour prendre effet.