ResourceManager.GetString Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zwraca określony zasób ciągu dla określonej kultury lub bieżącej kultury interfejsu użytkownika.
Przeciążenia
| Nazwa | Opis |
|---|---|
| GetString(String) |
Zwraca wartość określonego zasobu ciągu. |
| GetString(String, CultureInfo) |
Zwraca wartość zasobu ciągu zlokalizowanego dla określonej kultury. |
GetString(String)
- Źródło:
- ResourceManager.cs
- Źródło:
- ResourceManager.cs
- Źródło:
- ResourceManager.cs
- Źródło:
- ResourceManager.cs
- Źródło:
- ResourceManager.cs
Zwraca wartość określonego zasobu ciągu.
public:
System::String ^ GetString(System::String ^ name);
public:
virtual System::String ^ GetString(System::String ^ name);
public string GetString(string name);
public virtual string? GetString(string name);
public virtual string GetString(string name);
member this.GetString : string -> string
abstract member GetString : string -> string
override this.GetString : string -> string
Public Function GetString (name As String) As String
Public Overridable Function GetString (name As String) As String
Parametry
- name
- String
Nazwa zasobu do pobrania.
Zwraca
Wartość zasobu zlokalizowanego dla bieżącej kultury interfejsu użytkownika obiektu wywołującego lub null jeśli name nie można go znaleźć w zestawie zasobów.
Wyjątki
Parametr name jest null.
Wartość określonego zasobu nie jest ciągiem.
Nie można odnaleźć zestawu zasobów do użycia i nie ma żadnych zasobów dla kultury domyślnej. Aby uzyskać informacje na temat obsługi tego wyjątku, zobacz sekcję "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" (Obsługa wyjątków MissingManifestResourceException i MissingSatelliteAssemblyException) w ResourceManager temacie klasy.
Zasoby kultury domyślnej znajdują się w zestawie satelitarnym, którego nie można odnaleźć. Aby uzyskać informacje na temat obsługi tego wyjątku, zobacz sekcję "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" (Obsługa wyjątków MissingManifestResourceException i MissingSatelliteAssemblyException) w ResourceManager temacie klasy.
Uwagi
Właściwość IgnoreCase określa, czy porównanie name z nazwami zasobów jest niewrażliwe na wielkość liter (wartość domyślna) lub też jako wrażliwe na wielkość liter.
Note
Metody GetString mogą zgłaszać więcej wyjątków niż są wymienione. Przyczyną, dla której może się to zdarzyć, jest sytuacja, gdy metoda wywoływana przez tę metodę zgłasza wyjątek. Na przykład FileLoadException wyjątek może zostać zgłoszony, jeśli podczas wdrażania lub instalowania zestawu satelitarnego wystąpił błąd, lub SerializationException wyjątek zdefiniowany przez użytkownika może zostać zgłoszony, jeśli typ zdefiniowany przez użytkownika zgłasza taki wyjątek w trakcie deserializacji.
Metoda GetString(String)
Aplikacje desktopowe
W aplikacjach desktopowych zwracany zasób jest zlokalizowany dla kultury interfejsu użytkownika bieżącego wątku, zgodnie z definicją właściwości CultureInfo.CurrentUICulture. Jeśli zasób nie został zlokalizowany dla tej kultury, menedżer zasobów poszukuje zasobu, wykonując kroki opisane w sekcji "Proces zastępczy zasobów" artykułu Pakowanie i wdrażanie zasobów. Jeśli nie można odnaleźć używalnego zestawu zlokalizowanych zasobów, menedżer zasobów powraca do zasobów domyślnej kultury. Jeśli menedżer zasobów nie może załadować zestawu zasobów domyślnej kultury, metoda zgłasza MissingManifestResourceException wyjątek lub, jeśli zestaw zasobów powinien znajdować się w zestawie satelitarnym, wyjątek MissingSatelliteAssemblyException. Jeśli menedżer zasobów może załadować odpowiedni zestaw zasobów, ale nie może znaleźć zasobu o nazwie name, metoda zwraca wartość null.
Przykład
W poniższym przykładzie użyto GetString metody w celu pobrania zasobów specyficznych dla kultury. Składa się z zasobów skompilowanych z plików .txt dla kultury angielskiej (en), francuskiej (Francja) (fr-FR) i rosyjskiej (Rosja) (ru-RU). Przykład zmienia bieżącą kulturę i bieżącą kulturę interfejsu użytkownika na angielski (Stany Zjednoczone), francuski (Francja), rosyjski (Rosja) i szwedzki (Szwecja). Następnie wywołuje metodę GetString , aby pobrać zlokalizowany ciąg, który jest wyświetlany wraz z bieżącym dniem i miesiącem. Zwróć uwagę, że wynik wyświetla odpowiedni zlokalizowany ciąg z wyjątkiem sytuacji, gdy bieżąca kultura UI to szwedzka (Szwecja). Ponieważ szwedzkie zasoby językowe są niedostępne, aplikacja używa zasobów kultury domyślnej, czyli języka angielskiego. Przykład wymaga plików zasobów opartych na tekście wymienionych w poniższej tabeli. Każdy z nich ma jeden zasób ciągu o nazwie DateStart.
| Kultura | Nazwa pliku | Nazwa zasobu | Wartość zasobu |
|---|---|---|---|
| en-US | DateStrings.txt | DateStart |
Dzisiaj jest |
| fr-FR | DateStrings.fr-FR.txt | DateStart |
Dzisiaj jest |
| ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
Aby skompilować przykład języka C#, możesz użyć następującego pliku wsadowego. W przypadku języka Visual Basic zmień csc na vbci zmień rozszerzenie pliku kodu źródłowego z .cs na .vb.
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
Oto kod źródłowy dla przykładu (ShowDate.vb dla wersji Visual Basic lub ShowDate.cs dla wersji języka C#).
using System;
using System.Globalization;
using System.Resources;
using System.Threading;
public class ShowTimeExample
{
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: {CultureInfo.CurrentUICulture.Name}");
string dateString = rm.GetString("DateStart");
Console.WriteLine($"{dateString} {DateTime.Now:M}.\n");
}
}
}
// 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.
Metoda GetString(String, CultureInfo)
Aplikacje desktopowe
W aplikacjach desktopowych, jeśli culture to null, metoda GetString(String, CultureInfo) używa bieżącej kultury interfejsu użytkownika uzyskanej z właściwości CultureInfo.CurrentUICulture.
Zwrócony zasób jest zlokalizowany dla kultury określonej przez culture parametr . Jeśli zasób nie został zlokalizowany dla culture, menedżer zasobów wyszukuje zasób, wykonując kroki opisanych w sekcji "Proces awaryjny zasobów" w temacie Pakowanie i wdrażanie zasobów. Jeśli nie można odnaleźć zestawu zasobów, menedżer zasobów korzysta z zasobów kultury domyślnej. Jeśli menedżer zasobów nie może załadować zestawu zasobów domyślnej kultury, metoda zgłasza MissingManifestResourceException wyjątek lub, jeśli zestaw zasobów powinien znajdować się w zestawie satelitarnym, wyjątek MissingSatelliteAssemblyException. Jeśli menedżer zasobów może załadować odpowiedni zestaw zasobów, ale nie może znaleźć zasobu o nazwie name, metoda zwraca wartość null.
Przykład
W poniższym przykładzie użyto GetString(String, CultureInfo) metody w celu pobrania zasobów specyficznych dla kultury. Domyślną kulturą przykładu jest angielski (en) i obejmuje zestawy satelitarne dla kultury francuskiej (Francja) (fr-FR) oraz rosyjskiej (Rosja) (ru-RU). Przykład zmienia bieżącą kulturę i bieżącą kulturę interfejsu użytkownika na rosyjską (Rosja) przed wywołaniem metody GetString(String, CultureInfo). Następnie wywołuje metodę GetString oraz metodę DateTime.ToString(String, IFormatProvider) i przekazuje obiekty CultureInfo, które reprezentują kultury francuską (Francja) i szwedzką (Szwecja) do każdej metody. W danych wyjściowych miesiąc i dzień miesiąca, a także ciąg poprzedzający je pojawiają się w języku francuskim, ponieważ GetString metoda jest w stanie pobrać zasób języka francuskiego. Jednak w przypadku użycia kultury szwedzkiej (Szwecji) miesiąc i dzień miesiąca pojawiają się w języku szwedzkim, chociaż ciąg poprzedzający je jest w języku angielskim. Dzieje się tak, ponieważ menedżer zasobów nie może odnaleźć zlokalizowanych zasobów języka szwedzkiego, dlatego zwraca zasób domyślnej kultury angielskiej.
Przykład wymaga plików zasobów opartych na tekście wymienionych w poniższej tabeli. Każdy z nich ma jeden zasób ciągu o nazwie DateStart.
| Kultura | Nazwa pliku | Nazwa zasobu | Wartość zasobu |
|---|---|---|---|
| en-US | DateStrings.txt | DateStart |
Dzisiaj jest |
| fr-FR | DateStrings.fr-FR.txt | DateStart |
Dzisiaj jest |
| ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
Do skompilowania przykładu języka Visual Basic można użyć następującego pliku wsadowego. Aby skompilować w języku C#, zmień vbc na csc, a następnie zmień rozszerzenie pliku kodu źródłowego z .vb na .cs.
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
Oto kod źródłowy dla przykładu (ShowDate.vb dla wersji Visual Basic lub ShowDate.cs dla wersji języka C#).
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($"{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.
Bezpieczeństwo wątkowe
Metoda GetString(String) jest bezpieczna wątkiem.
Zobacz też
Dotyczy
GetString(String, CultureInfo)
- Źródło:
- ResourceManager.cs
- Źródło:
- ResourceManager.cs
- Źródło:
- ResourceManager.cs
- Źródło:
- ResourceManager.cs
- Źródło:
- ResourceManager.cs
Zwraca wartość zasobu ciągu zlokalizowanego dla określonej kultury.
public:
virtual System::String ^ GetString(System::String ^ name, System::Globalization::CultureInfo ^ culture);
public virtual string GetString(string name, System.Globalization.CultureInfo culture);
public virtual string? GetString(string name, System.Globalization.CultureInfo? culture);
abstract member GetString : string * System.Globalization.CultureInfo -> string
override this.GetString : string * System.Globalization.CultureInfo -> string
Public Overridable Function GetString (name As String, culture As CultureInfo) As String
Parametry
- name
- String
Nazwa zasobu do pobrania.
- culture
- CultureInfo
Obiekt reprezentujący kulturę, dla której zlokalizowany jest zasób.
Zwraca
Wartość zasobu zlokalizowanego dla określonej kultury lub null jeśli name nie można jej znaleźć w zestawie zasobów.
Wyjątki
Parametr name jest null.
Wartość określonego zasobu nie jest ciągiem.
Nie można odnaleźć zestawu zasobów do użycia i nie ma żadnych zasobów dla kultury domyślnej. Aby uzyskać informacje na temat obsługi tego wyjątku, zobacz sekcję "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" (Obsługa wyjątków MissingManifestResourceException i MissingSatelliteAssemblyException) w ResourceManager temacie klasy.
Zasoby kultury domyślnej znajdują się w zestawie satelitarnym, którego nie można odnaleźć. Aby uzyskać informacje na temat obsługi tego wyjątku, zobacz sekcję "Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions" (Obsługa wyjątków MissingManifestResourceException i MissingSatelliteAssemblyException) w ResourceManager temacie klasy.
Uwagi
Właściwość IgnoreCase określa, czy porównanie name z nazwami zasobów jest niewrażliwe na wielkość liter (wartość domyślna) lub też jako wrażliwe na wielkość liter.
Note
Metody GetString mogą zgłaszać więcej wyjątków niż są wymienione. Przyczyną, dla której może się to zdarzyć, jest sytuacja, gdy metoda wywoływana przez tę metodę zgłasza wyjątek. Na przykład FileLoadException wyjątek może zostać zgłoszony, jeśli podczas wdrażania lub instalowania zestawu satelitarnego wystąpił błąd, lub SerializationException wyjątek zdefiniowany przez użytkownika może zostać zgłoszony, jeśli typ zdefiniowany przez użytkownika zgłasza taki wyjątek w trakcie deserializacji.
Metoda GetString(String)
Aplikacje desktopowe
W aplikacjach desktopowych zwracany zasób jest zlokalizowany dla kultury interfejsu użytkownika bieżącego wątku, zgodnie z definicją właściwości CultureInfo.CurrentUICulture. Jeśli zasób nie został zlokalizowany dla tej kultury, menedżer zasobów poszukuje zasobu, wykonując kroki opisane w sekcji "Proces zastępczy zasobów" artykułu Pakowanie i wdrażanie zasobów. Jeśli nie można odnaleźć używalnego zestawu zlokalizowanych zasobów, menedżer zasobów powraca do zasobów domyślnej kultury. Jeśli menedżer zasobów nie może załadować zestawu zasobów domyślnej kultury, metoda zgłasza MissingManifestResourceException wyjątek lub, jeśli zestaw zasobów powinien znajdować się w zestawie satelitarnym, wyjątek MissingSatelliteAssemblyException. Jeśli menedżer zasobów może załadować odpowiedni zestaw zasobów, ale nie może znaleźć zasobu o nazwie name, metoda zwraca wartość null.
Przykład
W poniższym przykładzie użyto GetString metody w celu pobrania zasobów specyficznych dla kultury. Składa się z zasobów skompilowanych z plików .txt dla kultury angielskiej (en), francuskiej (Francja) (fr-FR) i rosyjskiej (Rosja) (ru-RU). Przykład zmienia bieżącą kulturę i bieżącą kulturę interfejsu użytkownika na angielski (Stany Zjednoczone), francuski (Francja), rosyjski (Rosja) i szwedzki (Szwecja). Następnie wywołuje metodę GetString , aby pobrać zlokalizowany ciąg, który jest wyświetlany wraz z bieżącym dniem i miesiącem. Zwróć uwagę, że wynik wyświetla odpowiedni zlokalizowany ciąg z wyjątkiem sytuacji, gdy bieżąca kultura UI to szwedzka (Szwecja). Ponieważ szwedzkie zasoby językowe są niedostępne, aplikacja używa zasobów kultury domyślnej, czyli języka angielskiego. Przykład wymaga plików zasobów opartych na tekście wymienionych w poniższej tabeli. Każdy z nich ma jeden zasób ciągu o nazwie DateStart.
| Kultura | Nazwa pliku | Nazwa zasobu | Wartość zasobu |
|---|---|---|---|
| en-US | DateStrings.txt | DateStart |
Dzisiaj jest |
| fr-FR | DateStrings.fr-FR.txt | DateStart |
Dzisiaj jest |
| ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
Aby skompilować przykład języka C#, możesz użyć następującego pliku wsadowego. W przypadku języka Visual Basic zmień csc na vbci zmień rozszerzenie pliku kodu źródłowego z .cs na .vb.
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
Oto kod źródłowy dla przykładu (ShowDate.vb dla wersji Visual Basic lub ShowDate.cs dla wersji języka C#).
using System;
using System.Globalization;
using System.Resources;
using System.Threading;
public class ShowTimeExample
{
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: {CultureInfo.CurrentUICulture.Name}");
string dateString = rm.GetString("DateStart");
Console.WriteLine($"{dateString} {DateTime.Now:M}.\n");
}
}
}
// 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.
Metoda GetString(String, CultureInfo)
Aplikacje desktopowe
W aplikacjach desktopowych, jeśli culture to null, metoda GetString(String, CultureInfo) używa bieżącej kultury interfejsu użytkownika uzyskanej z właściwości CultureInfo.CurrentUICulture.
Zwrócony zasób jest zlokalizowany dla kultury określonej przez culture parametr . Jeśli zasób nie został zlokalizowany dla culture, menedżer zasobów wyszukuje zasób, wykonując kroki opisanych w sekcji "Proces awaryjny zasobów" w temacie Pakowanie i wdrażanie zasobów. Jeśli nie można odnaleźć zestawu zasobów, menedżer zasobów korzysta z zasobów kultury domyślnej. Jeśli menedżer zasobów nie może załadować zestawu zasobów domyślnej kultury, metoda zgłasza MissingManifestResourceException wyjątek lub, jeśli zestaw zasobów powinien znajdować się w zestawie satelitarnym, wyjątek MissingSatelliteAssemblyException. Jeśli menedżer zasobów może załadować odpowiedni zestaw zasobów, ale nie może znaleźć zasobu o nazwie name, metoda zwraca wartość null.
Przykład
W poniższym przykładzie użyto GetString(String, CultureInfo) metody w celu pobrania zasobów specyficznych dla kultury. Domyślną kulturą przykładu jest angielski (en) i obejmuje zestawy satelitarne dla kultury francuskiej (Francja) (fr-FR) oraz rosyjskiej (Rosja) (ru-RU). Przykład zmienia bieżącą kulturę i bieżącą kulturę interfejsu użytkownika na rosyjską (Rosja) przed wywołaniem metody GetString(String, CultureInfo). Następnie wywołuje metodę GetString oraz metodę DateTime.ToString(String, IFormatProvider) i przekazuje obiekty CultureInfo, które reprezentują kultury francuską (Francja) i szwedzką (Szwecja) do każdej metody. W danych wyjściowych miesiąc i dzień miesiąca, a także ciąg poprzedzający je pojawiają się w języku francuskim, ponieważ GetString metoda jest w stanie pobrać zasób języka francuskiego. Jednak w przypadku użycia kultury szwedzkiej (Szwecji) miesiąc i dzień miesiąca pojawiają się w języku szwedzkim, chociaż ciąg poprzedzający je jest w języku angielskim. Dzieje się tak, ponieważ menedżer zasobów nie może odnaleźć zlokalizowanych zasobów języka szwedzkiego, dlatego zwraca zasób domyślnej kultury angielskiej.
Przykład wymaga plików zasobów opartych na tekście wymienionych w poniższej tabeli. Każdy z nich ma jeden zasób ciągu o nazwie DateStart.
| Kultura | Nazwa pliku | Nazwa zasobu | Wartość zasobu |
|---|---|---|---|
| en-US | DateStrings.txt | DateStart |
Dzisiaj jest |
| fr-FR | DateStrings.fr-FR.txt | DateStart |
Dzisiaj jest |
| ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
Do skompilowania przykładu języka Visual Basic można użyć następującego pliku wsadowego. Aby skompilować w języku C#, zmień vbc na csc, a następnie zmień rozszerzenie pliku kodu źródłowego z .vb na .cs.
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
Oto kod źródłowy dla przykładu (ShowDate.vb dla wersji Visual Basic lub ShowDate.cs dla wersji języka C#).
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($"{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.
Bezpieczeństwo wątkowe
Metoda GetString(String, CultureInfo) jest bezpieczna wątkiem.