2010-06-02 5 views
2

Pourquoi CultureInfo.DisplayName dans Sami tout à coup? Je l'utilise pour afficher une liste de noms de pays. Pas une bonne idée peut-être, mais cela a fonctionné jusqu'à récemment et je suis tout à fait sûr qu'il était en suédois (je suppose que cela aurait pu être l'anglais.)CultureInfo.DisplayName aller Sami sur moi

MSDN dit

Cette propriété représente le nom localisé de la Version .NET Framework. Par exemple, si la version anglaise de .NET Framework est installée, la propriété renvoie "English (United States)" pour le nom de culture en-US. Si la version espagnole de .NET Framework est installée, quelle que soit la langue que le système doit afficher, le nom de la culture s'affiche en espagnol et la propriété pour en-US renvoie "Ingles (Estados Unidos)".

Mais je suis assez sûr que je n'ai pas la version Sami du cadre installé.

Mon web-config a:

<globalization 
     culture="sv-SE" 
     uiCulture="sv-SE"/> 

Addition: Le code

 public static IEnumerable<KeyValuePair<string, string>> CountryList 
    { 
     get 
     { 
      Thread.CurrentThread.CurrentCulture = 
       CultureInfo.CreateSpecificCulture("sv-SE"); 
      Thread.CurrentThread.CurrentUICulture = new 
       CultureInfo("sv-SE"); 

      var cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures); 
      /*Array.Sort(countries.Select(
       x => Regex.Match(x.DisplayName, "\\(([\\w- ]+)\\)").ToString()).ToArray(), 
       countries); 
      */ 

      SortedDictionary<string, CultureInfo> d = new SortedDictionary<string, CultureInfo>(); 
      foreach (CultureInfo cultureInfo in cultures) 
      { 
       string key = Regex.Match(cultureInfo.DisplayName, "\\(([\\w- ]+)\\)").ToString(); 
       if (!d.ContainsKey(key)) 
        d.Add(key, cultureInfo); 
      } 

      var countries = d 
       .Where(x => Regex.Match(x.Value.DisplayName, "\\([A-ZÅÄÖ]").Success) 
       .Select(
       x => new KeyValuePair<string, string>(
         Regex.Match(x.Value.Name, "-(\\w+)").Groups[1].ToString(), 
         Regex.Match(x.Value.DisplayName, "\\(([\\w- ]+)\\)").Groups[1].ToString() 
         )); 
      return countries; 
     } 
    } 

Répondre

0

Je suppose que vos paramètres régionaux de fenêtre est réglé sur smj-sv ou quelque chose similar. Le .NET Framework va alors générer une culture comme décrit dans

Cultures Generated from Windows Locales

Normalement, les valeurs de votre web.config devrait remplacer le paramètre de paramètres régionaux de Windows (l'utilisateur), mais peut-être les valeurs ne sont plus récupérés depuis votre Web.config. Avez-vous vérifié que le fichier n'est pas corrompu et valide?

Pour voir s'il y a un problème avec votre web.config j'essayer de définir la langue par programmation redéfinissant la méthode InitializeCulture tel que décrit ci ici:

How to: Set the Culture and UI Culture for ASP.NET Web Page Globalization

+0

Merci pour votre suggestion . J'ai fait comme tu l'as dit. Rien de nouveau. – Martin