Belirli bir .NET Framework 2.0 yazılım güncelleştirmesinin yüklü olduğu bir bilgisayarda bir uygulama çalıştırdığınızda veya bir Web sitesine erişmeye çalıştığınızda hata iletisi: "'Kültür' kültür adı desteklenmiyor"

Belirtiler

Microsoft Windows Server 2003'ün yüklü olduğu bir bilgisayara, aşağıdaki Microsoft Bilgi Bankası makalesinde açıklanan Microsoft .NET Framework 2.0 yazılım güncelleştirmesini yüklersiniz:
928365 Windows Server 2003, Windows XP ve Windows 2000 için .NET Framework 2.0 güvenlik güncelleştirmesi: 10 Temmuz 2007'nin açıklaması

Bilgisayarda bir uygulama çalıştırdığınızda veya bir Web sitesine erişmeye çalıştığınızda, aşağıdaki hata iletisini alabilirsiniz:
[System.ArgumentException] : 'Kültür' kültür adı aşağıdaki 13 kültür için desteklenmiyor: en-CB az-AZ-Latn uz-UZ-Latn sr-SP-Latn az-AZ-Cyrl uz-UZ-Cyrl sr-SP-Cyrl bs-BA-Cyrl sr-BA-Latn sr-BA-Cyrl bs-BA-Latn iu-CA-Latn div-MV
Ayrıca, bir uygulamanın eski kültür adı biçimini kullanan kaynakları varsa ve kullanıcının kültür adı yeni kültür adı biçimini kullanıyorsa, uygulama eski kültür adı biçimi için kaynakları bulamaz.

Neden

"Belirtiler" bölümünde açıklanan yazılım güncelleştirmesi .NET Framework 2.0 için bir toplu güncelleştirmedir. Bu güncelleştirme, kültür adlarında değişiklikler içerir. Yeni kültür adları IETF standartları (RFC 4646 ve RFC 4647) sözdizimine uygundur. Kültür adlarındaki değişiklikler, her yerel ayarın tutarlı bir tanımlayıcısı olmasını sağlayarak birlikte çalışabilirliği geliştirir.

Eski kültür adları yeni kültür adlarıyla şu şekilde eşleştirilir:
Eski kültür adıYeni kültür adı
az-AZ-Latnaz-Latn-AZ
uz-UZ-Latnuz-Latn-UZ
sr-SP-Latnsr-Latn-CS
az-AZ-Cyrlaz-Cyrl-AZ
uz-UZ-Cyrluz-Cyrl-UZ
sr-SP-Cyrlsr-Cyrl-CS
bs-BA-Cyrlbs-Cyrl-BA
sr-BA-Latnsr-Latn-BA
sr-BA-Cyrlsr-Cyrl-BA
bs-BA-Latnbs-Latn-BA
iu-CA-Latniu-Latn-CA
div-MVdv-MV
en-CBen-029

Pratik Çözüm

Bu soruna geçici bir çözüm bulmak için, eski kültür adlarını kullanan yeni yerel ayarlardan özel kültürler oluşturun. Bunu yapmak için aşağıdaki adımları izleyin.

Not Burada sağlanan örnek programı kullanmak için .NET Framework 2.0 yüklü olmalıdır.
  1. Özel bir kültür geliştirmek için kullanılabilecek bir uygulama oluşturun. Bunu yapmak için aşağıdaki adımları izleyin:
    1. Başlat'ı ve sonra Çalıştır'ı tıklatın, notepad yazın ve Tamam'ı tıklatın.
    2. Aşağıdaki kodu Not Defteri'ne yapıştırın.
      using System;
      using System.Globalization;

      public class MakeCultures
      {
      static void Main()
      {
      CreateCopyCulture("en-029", "en-CB");
      CreateCopyCulture("az-Latn-AZ", "az-AZ-Latn");
      CreateCopyCulture("uz-Latn-UZ", "uz-UZ-Latn");
      CreateCopyCulture("sr-Latn-CS", "sr-SP-Latn");
      CreateCopyCulture("az-Cyrl-AZ", "az-AZ-Cyrl");
      CreateCopyCulture("uz-Cyrl-UZ", "uz-UZ-Cyrl");
      CreateCopyCulture("sr-Cyrl-CS", "sr-SP-Cyrl");
      CreateCopyCulture("bs-Cyrl-BA", "bs-BA-Cyrl");
      CreateCopyCulture("sr-Latn-BA", "sr-BA-Latn");
      CreateCopyCulture("sr-Cyrl-BA", "sr-BA-Cyrl");
      CreateCopyCulture("bs-Latn-BA", "bs-BA-Latn");
      CreateCopyCulture("iu-Latn-CA", "iu-CA-Latn");
      CreateCopyCulture("dv-MV", "div-MV");


      }

      static void CreateCopyCulture(string strRealName, string strAliasName)
      {
      try
      {
      // Eski ada dayalı yeni bir kültür oluşturun
      CultureAndRegionInfoBuilder carib = new CultureAndRegionInfoBuilder(
      strAliasName, CultureAndRegionModifiers.None);

      carib.LoadDataFromCultureInfo(new CultureInfo(strRealName));
      carib.LoadDataFromRegionInfo(new RegionInfo(strRealName));

      carib.Register();

      // Varolan kültürün ana düzeyini eski kültür olarak değiştirin
      carib = new CultureAndRegionInfoBuilder(strRealName,
      CultureAndRegionModifiers.Replacement);

      carib.Parent = new CultureInfo(strAliasName);
      carib.Register();

      // Kaydettirildiklerini doğrulayın...
      CultureInfo ci = new CultureInfo(strAliasName);
      Console.WriteLine("Aliased culture {0} has parent of {1}.", ci, ci.Parent);
      ci = new CultureInfo(strRealName);
      Console.WriteLine("\"Real\" culture {0} has parent of {1}.", ci, ci.Parent);
      }
      catch (Exception e)
      {
      Console.WriteLine("Unable to create custom culture " + strAliasName);
      Console.WriteLine(e);
      }
      }
      }
      Not Bu örnek program, yeni kültürlerin ana düzeylerini eski kültürler olarak ayarlar. Eski kültürlerin ana düzeyleri aynı zamanda yeni kültürler olamaz, çünkü bu durum kaynak araması sırasında sonsuz yinelemeye neden olur.

    3. Dosya menüsünde, Farklı Kaydet'i tıklatın.
    4. Farklı Kaydet iletişim kutusunda Belgelerim'i tıklatın, Dosya adı kutusuna MakeCultures.cs yazın, Kayıt türü kutusunda Tüm Dosyalar'ı tıklatın ve sonra da Kaydet'i tıklatın.
    5. Not Defteri'nden çıkın.
  2. Özel bir kültür geliştirmek üzere adım 1'de oluşturduğunuz uygulamayı çalıştırın. Bunu yapmak için aşağıdaki adımları izleyin:
    1. Başlat'ı tıklatın, Çalıştır'ı tıklatın, cmd yazın ve Tamam'ı tıklatın.
    2. cd "Belgelerim" yazın ve ENTER tuşuna basın
    3. %windir%\Microsoft.NET\Framework\v2.0.50727\csc /r: sysglobl.dll MakeCultures.cs yazın ve ENTER tuşuna basın.
    4. Kültürü geliştirmek üzere programı çalıştırmak için MakeCultures.exe yazın.

Durum

Microsoft bu sorunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.
Özellikler

Makale No: 939949 - Son İnceleme: 3 Ara 2007 - Düzeltme: 1

Geri bildirim