System.Resources.ResourceManager.GetString yöntemleri

Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.

IgnoreCase özelliği, öğesinin kaynak adlarıyla karşılaştırılmasının name büyük/küçük harfe duyarlı (varsayılan) veya büyük/küçük harfe duyarlı olup olmadığını belirler.

Not

GetString Yöntemler, listelenenden daha fazla özel durum oluşturabilir. Bunun nedenlerinden biri, bu yöntemin çağırmış olduğu bir yöntemin özel durum oluşturmasıdır. Örneğin, bir FileLoadException uydu derlemesi dağıtılırken veya yüklenirken bir hata yapıldığında bir özel durum oluşturulabilir veya kullanıcı tanımlı bir SerializationException tür seri durumdan çıkarıldığında kullanıcı tanımlı bir özel durum oluşturursa bir özel durum oluşturulabilir.

GetString(String) Yöntem

Masaüstü uygulamaları

Masaüstü uygulamalarında, döndürülen kaynak, özelliği tarafından CultureInfo.CurrentUICulture tanımlandığı gibi geçerli iş parçacığının kullanıcı arabirimi kültürü için yerelleştirilir. Kaynak bu kültür için yerelleştirilmemişse kaynak yöneticisi, Kaynakları Paketleme ve Dağıtma makalesinin "Kaynak Geri Dönüş İşlemi" bölümünde açıklanan adımları izleyerek kaynağı yoklar . Kullanılabilir yerelleştirilmiş kaynak kümesi bulunmazsa, kaynak yöneticisi varsayılan kültürün kaynaklarına geri döner. Kaynak yöneticisi varsayılan kültürün kaynak kümesini yükleyemiyorsa, yöntemi bir MissingManifestResourceException özel durum oluşturur veya kaynak kümesinin bir uydu derlemesinde bulunması bekleniyorsa bir MissingSatelliteAssemblyException özel durum oluşturur. Kaynak yöneticisi uygun bir kaynak kümesi yükleyebiliyor ancak adlı namebir kaynağı bulamıyorsa yöntemi döndürür null.

Windows 8.x uygulamaları

Önemli

Sınıfı Windows 8.x uygulamalarında desteklense ResourceManager de, kullanılmasını önermeyiz. Bu sınıfı yalnızca Windows 8.x uygulamalarıyla kullanılabilecek Taşınabilir Sınıf Kitaplığı projeleri geliştirirken kullanın. Windows 8.x uygulamalarından kaynak almak için bunun yerine Windows.ApplicationModel.Resources.ResourceLoader sınıfını kullanın.

Windows 8.x uygulamalarında yöntemi, GetString(String) çağıranın name geçerli ui kültürü ayarları için yerelleştirilmiş dize kaynağının değerini döndürür. Kültür listesi, işletim sisteminin tercih edilen kullanıcı arabirimi dil listesinden türetilir. Kaynak yöneticisi ile eşleşemezse nameyöntemi döndürür null.

Örnek

Aşağıdaki örnek, kültüre özgü kaynakları almak için yöntemini kullanır GetString . İngilizce (en), Fransızca (Fransa) (fr-FR) ve Rusça (Rusya) (ru-RU) kültürleri için .txt dosyalardan derlenen kaynaklardan oluşur. Örnek, geçerli kültürü ve geçerli kullanıcı arabirimi kültürünü İngilizce (Birleşik Devletler), Fransızca (Fransa), Rusça (Rusya) ve İsveççe (İsveç) olarak değiştirir. Ardından yerelleştirilmiş dizeyi almak için yöntemini çağırır GetString ve bu dize geçerli gün ve ay ile birlikte görüntülenir. Çıktının, geçerli kullanıcı arabirimi kültürünün İsveççe (İsveç) olması dışında uygun yerelleştirilmiş dizeyi görüntülediğine dikkat edin. İsveç dili kaynakları kullanılamadığından, uygulama bunun yerine varsayılan kültürün (İngilizce) kaynaklarını kullanır. Örnek, aşağıdaki tabloda listelenen metin tabanlı kaynak dosyalarını gerektirir. Her birinin adlı DateStarttek bir dize kaynağı vardır.

Kültür Dosya adı Kaynak adı Kaynak değeri
en-US DateStrings.txt DateStart Bugün
fr-FR DateStrings.fr-FR.txt DateStart Aujourd'hui, c'est le
ru-RU DateStrings.ru-RU.txt DateStart Сегодня

C# örneğini derlemek için aşağıdaki toplu iş dosyasını kullanabilirsiniz. Visual Basic için olarak değiştirin cscvbcve kaynak kod dosyasının uzantısını olarak .cs.vbdeğiştirin.

resgen DateStrings.txt
csc showdate.cs /resource:DateStrings.resources

md fr-FR
resgen DateStrings.fr-FR.txt
al /out:fr-FR\Showdate.resources.dll /culture:fr-FR /embed:DateStrings.fr-FR.resources

md ru-RU
resgen DateStrings.ru-RU.txt
al /out:ru-RU\Showdate.resources.dll /culture:ru-RU /embed:DateStrings.ru-RU.resources

Örnek için kaynak kodu aşağıda verilmiştir (Visual Basic sürümü için ShowDate.vb veya C# sürümü için ShowDate.cs).

using System;
using System.Globalization;
using System.Resources;
using System.Threading;

public class Example
{
   public static void Main()
   {
      string[] cultureNames = [ "en-US", "fr-FR", "ru-RU", "sv-SE" ];
      ResourceManager rm = new ResourceManager("DateStrings",
                                               typeof(Example).Assembly);

      foreach (var cultureName in cultureNames) {
         CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureName);
         Thread.CurrentThread.CurrentCulture = culture;
         Thread.CurrentThread.CurrentUICulture = culture;

         Console.WriteLine("Current UI Culture: {0}",
                           CultureInfo.CurrentUICulture.Name);
         string dateString = rm.GetString("DateStart");
         Console.WriteLine("{0} {1:M}.\n", dateString, DateTime.Now);
      }
   }
}
// The example displays output similar to the following:
//       Current UI Culture: en-US
//       Today is February 03.
//
//       Current UI Culture: fr-FR
//       Aujourd'hui, c'est le 3 février
//
//       Current UI Culture: ru-RU
//       Сегодня февраля 03.
//
//       Current UI Culture: sv-SE
//       Today is den 3 februari.
Imports System.Globalization
Imports System.Resources
Imports System.Threading

<Assembly:NeutralResourcesLanguage("en")>

Module Example
   Public Sub Main()
      Dim cultureNames() As String = { "en-US", "fr-FR", "ru-RU", "sv-SE" }
      Dim rm As New ResourceManager("DateStrings",
                                    GetType(Example).Assembly)
      
      For Each cultureName In cultureNames
         Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture(cultureName)
         Thread.CurrentThread.CurrentCulture = culture 
         Thread.CurrentThread.CurrentUICulture = culture

         Console.WriteLine("Current UI Culture: {0}", 
                           CultureInfo.CurrentUICulture.Name)
         Dim dateString As String = rm.GetString("DateStart")
         Console.WriteLine("{0} {1:M}.", dateString, Date.Now)                           
         Console.WriteLine()
      Next                                           
   End Sub
End Module
' The example displays output similar to the following:
'       Current UI Culture: en-US
'       Today is February 03.
'       
'       Current UI Culture: fr-FR
'       Aujourd'hui, c'est le 3 février
'       
'       Current UI Culture: ru-RU
'       Сегодня февраля 03.
'       
'       Current UI Culture: sv-SE
'       Today is den 3 februari.

GetString(String, CultureInfo) Yöntem

Masaüstü uygulamaları

Masaüstü uygulamalarında ise culturenullGetString(String, CultureInfo) yöntemi özelliğinden CultureInfo.CurrentUICulture alınan geçerli kullanıcı arabirimi kültürünü kullanır.

Döndürülen kaynak, parametresi tarafından culture belirtilen kültür için yerelleştirilir. Kaynak için cultureyerelleştirilmemişse, kaynak yöneticisi, Kaynakları Paketleme ve Dağıtma konusunun "Kaynak Geri Dönüş İşlemi" bölümünde açıklanan adımları izleyerek kaynağı yoklar. Kullanılabilir kaynak kümesi bulunmazsa, kaynak yöneticisi varsayılan kültürün kaynaklarına geri döner. Kaynak yöneticisi varsayılan kültürün kaynak kümesini yükleyemiyorsa, yöntemi bir MissingManifestResourceException özel durum oluşturur veya kaynak kümesinin bir uydu derlemesinde bulunması bekleniyorsa bir MissingSatelliteAssemblyException özel durum oluşturur. Kaynak yöneticisi uygun bir kaynak kümesi yükleyebiliyor ancak adlı namebir kaynağı bulamıyorsa yöntemi döndürür null.

Windows 8.x uygulamaları

Önemli

Sınıfı Windows 8.x uygulamalarında desteklense ResourceManager de, kullanılmasını önermeyiz. Bu sınıfı yalnızca Windows 8.x uygulamalarıyla kullanılabilecek Taşınabilir Sınıf Kitaplığı projeleri geliştirirken kullanın. Windows 8.x uygulamalarından kaynak almak için bunun yerine Windows.ApplicationModel.Resources.ResourceLoader sınıfını kullanın.

Windows 8.x uygulamalarında yöntemi, GetString(String, CultureInfo) parametresi tarafından belirtilen kültür için yerelleştirilmiş dize kaynağının culture değerini name döndürür. Kaynak kültür için culture yerelleştirilmemişse, arama tüm Windows 8 dili geri dönüş listesini kullanır ve varsayılan kültüre baktıktan sonra durur. Kaynak yöneticisi ile eşleşemezse nameyöntemi döndürür null.

Örnek

Aşağıdaki örnek, kültüre özgü kaynakları almak için yöntemini kullanır GetString(String, CultureInfo) . Örneğin varsayılan kültürü İngilizce (en) ve Fransızca (Fransa) (fr-FR) ve Rusça (Rusya) (ru-RU) kültürleri için uydu derlemeleri içerir. Örnek, çağırmadan GetString(String, CultureInfo)önce geçerli kültürü ve geçerli kullanıcı arabirimi kültürünü Rusça (Rusya) olarak değiştirir. Ardından yöntemini ve yöntemini çağırır GetString ve her yönteme Fransızca (Fransa) ve İsveççe (İsveç) kültürlerini temsil eden nesneleri geçirirCultureInfo.DateTime.ToString(String, IFormatProvider) Çıktıda, yöntemi Fransızca dil kaynağını alabildiği için, ay ve ayın günü ile onlardan önceki dize Fransızca GetString görünür. Ancak İsveççe (İsveç) kültürü kullanıldığında, kendisinden önceki dize İngilizce olmasına rağmen ayın ayı ve günü İsveççe olarak görünür. Bunun nedeni kaynak yöneticisinin yerelleştirilmiş İsveç dili kaynaklarını bulamamasıdır, bu nedenle bunun yerine varsayılan İngilizce kültürü için bir kaynak döndürür.

Örnek, aşağıdaki tabloda listelenen metin tabanlı kaynak dosyalarını gerektirir. Her birinin adlı DateStarttek bir dize kaynağı vardır.

Kültür Dosya adı Kaynak adı Kaynak değeri
en-US DateStrings.txt DateStart Bugün
fr-FR DateStrings.fr-FR.txt DateStart Aujourd'hui, c'est le
ru-RU DateStrings.ru-RU.txt DateStart Сегодня

Visual Basic örneğini derlemek için aşağıdaki toplu iş dosyasını kullanabilirsiniz. C# dilinde derlemek için cscolarak değiştirin vbc ve kaynak kod dosyasının uzantısını olarak .vb.csdeğiştirin.

resgen DateStrings.txt
vbc showdate.vb /resource:DateStrings.resources

md fr-FR
resgen DateStrings.fr-FR.txt
al /out:fr-FR\Showdate.resources.dll /culture:fr-FR /embed:DateStrings.fr-FR.resources

md ru-RU
resgen DateStrings.ru-RU.txt
al /out:ru-RU\Showdate.resources.dll /culture:ru-RU /embed:DateStrings.ru-RU.resources

Örnek için kaynak kodu aşağıda verilmiştir (Visual Basic sürümü için ShowDate.vb veya C# sürümü için ShowDate.cs).

using System;
using System.Globalization;
using System.Resources;
using System.Threading;

public class Example2
{
    public static void Main()
    {
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("ru-RU");
        Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru-RU");

        string[] cultureNames = [ "fr-FR", "sv-SE" ];
        ResourceManager rm = new ResourceManager("DateStrings",
                                                 typeof(Example).Assembly);

        foreach (var cultureName in cultureNames)
        {
            CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureName);
            string dateString = rm.GetString("DateStart", culture);
            Console.WriteLine("{0}: {1} {2}.", culture.DisplayName, dateString,
                                               DateTime.Now.ToString("M", culture));
            Console.WriteLine();
        }
    }
}
// The example displays output similar to the following:
//       French (France): Aujourd'hui, c'est le 7 février.
//
//       Swedish (Sweden): Today is den 7 februari.
Imports System.Globalization
Imports System.Resources
Imports System.Threading

Module Example2
    Public Sub Main()
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("ru-RU")
        Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru-RU")

        Dim cultureNames() As String = {"fr-FR", "sv-SE"}
        Dim rm As New ResourceManager("DateStrings",
                                    GetType(Example).Assembly)

        For Each cultureName In cultureNames
            Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture(cultureName)
            Dim dateString As String = rm.GetString("DateStart", culture)
            Console.WriteLine("{0}: {1} {2}.", culture.DisplayName, dateString,
                                            Date.Now.ToString("M", culture))
            Console.WriteLine()
        Next
    End Sub
End Module
' The example displays output similar to the following:
'       French (France): Aujourd'hui, c'est le 7 février.
'       
'       Swedish (Sweden): Today is den 7 februari.