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ı name
bir 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 name
yö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ı DateStart
tek 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 csc
vbc
ve kaynak kod dosyasının uzantısını olarak .cs
.vb
değ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 culture
null
GetString(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 culture
yerelleş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ı name
bir 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 name
yö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ı DateStart
tek 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 csc
olarak değiştirin vbc
ve kaynak kod dosyasının uzantısını olarak .vb
.cs
değ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.