Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
В этой статье приводятся дополнительные замечания к справочной документации по этому API.
Свойство IgnoreCase определяет, будет ли сравнение name с именами ресурсов нечувствительным к регистру (по умолчанию) или чувствительным к регистру.
Замечание
Методы GetString могут вызывать больше исключений, чем перечислены. Одна из причин, по которой это может произойти, заключается в том, что метод, который вызывает этот метод, приводит к возникновению исключения. Например, может быть выброшено FileLoadException исключение, если произошла ошибка при развертывании или установке вспомогательной сборки, или SerializationException исключение может быть выброшено, если определяемый пользователем тип создает определяемое пользователем исключение при десериализации типа.
GetString(String)Метод
Настольные приложения
В настольных приложениях возвращаемый ресурс локализован для культуры пользовательского интерфейса текущего потока, как определено свойством CultureInfo.CurrentUICulture. Если ресурс не локализован для этой культуры, диспетчер ресурсов ищет ресурс, следуя действиям, описанным в разделе "Процесс возврата" статьи "Упаковка и развертывание ресурсов". Если не найден доступный набор локализованных ресурсов, диспетчер ресурсов переходит к ресурсам культуры по умолчанию. Если управляющий ресурсами не может загрузить набор ресурсов культуры по умолчанию, метод создает исключение MissingManifestResourceException или, если набор ресурсов ожидается в вспомогательной сборке, исключение MissingSatelliteAssemblyException. Если диспетчер ресурсов может загрузить соответствующий набор ресурсов, но не может найти именованный nameресурс, метод возвращается null.
Приложения Windows 8.x
Это важно
Хотя класс ResourceManager поддерживается в приложениях Windows 8.x, мы не рекомендуем использовать его. Используйте этот класс только при разработке проектов переносимой библиотеки классов, которые можно использовать с приложениями Windows 8.x. Чтобы получить ресурсы из приложений Windows 8.x, используйте вместо этого класс Windows.ApplicationModel.Resources.ResourceLoader.
В приложениях Windows 8.x метод GetString(String) возвращает значение строкового ресурса name, локализованного для текущих языковых параметров интерфейса вызывающего пользователя. Список культур является производным от предпочтительного списка языков пользовательского интерфейса операционной системы. Если диспетчер ресурсов не может найти соответствие name, метод возвращает null.
Пример
В следующем примере используется метод GetString для получения культуроспецифических ресурсов. Он состоит из ресурсов, скомпилированных из .txt файлов для английского языка (en), французского (Франция) (fr-FR) и российских (Россия) (ru-RU) культур. Пример изменяет текущую культуру и текущие культурные параметры пользовательского интерфейса на английский (США), французский (Франция), русский (Россия) и шведский (Швеция). Затем он вызывает метод GetString для получения локализованной строки, которая отображается вместе с текущим днем и месяцем. Обратите внимание, что результат отображает соответствующий локализованный текст, за исключением случаев, когда текущая культура пользовательского интерфейса — шведская (Швеция). Поскольку шведские языковые ресурсы недоступны, приложение вместо этого использует ресурсы языка по умолчанию, которым является английский. В примере требуются текстовые файлы ресурсов, перечисленные в следующей таблице. Каждый имеет один строковый ресурс с именем DateStart.
| Культура | Имя файла | Имя ресурса | Значение ресурса |
|---|---|---|---|
| en-US | DateStrings.txt | DateStart |
Сегодня |
| fr-FR | DateStrings.fr-FR.txt | DateStart |
Сегодня это |
| ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
Для компиляции примера C# можно использовать следующий пакетный файл. Для Visual Basic измените csc на vbc, и измените расширение файла исходного кода с .cs на .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
Ниже приведен исходный код для примера (ShowDate.vb для версии Visual Basic или ShowDate.cs для версии C#).
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: {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.
GetString(String, CultureInfo)Метод
Настольные приложения
В настольных приложениях, если culture является null, метод GetString(String, CultureInfo) использует текущие параметры пользовательского интерфейса, полученные из свойства CultureInfo.CurrentUICulture.
Возвращаемый ресурс локализован для культуры, указанной параметром culture. Если ресурс не локализован для culture, диспетчер ресурсов ищет ресурс, следуя шагам, описанным в разделе "Процесс резервирования ресурсов" темы Упаковка и развертывание ресурсов. Если не найден доступный набор ресурсов, диспетчер ресурсов переходит к использованию ресурсов культуры по умолчанию. Если управляющий ресурсами не может загрузить набор ресурсов культуры по умолчанию, метод создает исключение MissingManifestResourceException или, если набор ресурсов ожидается в вспомогательной сборке, исключение MissingSatelliteAssemblyException. Если диспетчер ресурсов может загрузить соответствующий набор ресурсов, но не может найти именованный nameресурс, метод возвращается null.
Приложения Windows 8.x
Это важно
Хотя класс ResourceManager поддерживается в приложениях Windows 8.x, мы не рекомендуем использовать его. Используйте этот класс только при разработке проектов переносимой библиотеки классов, которые можно использовать с приложениями Windows 8.x. Чтобы получить ресурсы из приложений Windows 8.x, используйте вместо этого класс Windows.ApplicationModel.Resources.ResourceLoader.
В приложениях GetString(String, CultureInfo) Windows 8.x метод возвращает значение строкового name ресурса, локализованного для указанной культуры, заданной параметром culture. Если ресурс не локализован для culture языка и региональных параметров, подстановка использует весь резервный список языков Windows 8 и останавливается после просмотра языка и региональных параметров по умолчанию. Если диспетчер ресурсов не может найти соответствие name, метод возвращает null.
Пример
В следующем примере используется метод GetString(String, CultureInfo) для получения культуроспецифических ресурсов. В примере по умолчанию используется английский (en), а также вспомогательные сборки для французских (франция) (fr-FR) и российских (ru-RU) культур. Пример изменяет текущую культуру и культуру пользовательского интерфейса на русскую (Россия) перед вызовом GetString(String, CultureInfo). Затем он вызывает метод GetString и метод DateTime.ToString(String, IFormatProvider) и передает объекты CultureInfo, представляющие французскую (Франция) и шведскую (Швеция) культуры, в каждый метод. В выходных данных месяц и день месяца, а также строка, предшествующая им, отображается на французском языке, так как GetString метод может получить ресурс французского языка. Однако, когда используется шведский язык (Швеция), месяц и день месяца появляются на шведском языке, хотя строка, предшествующая им, находится на английском языке. Это связано с тем, что диспетчер ресурсов не может найти локализованные ресурсы на шведском языке, поэтому он возвращает ресурс для английского языка по умолчанию.
В примере требуются текстовые файлы ресурсов, перечисленные в следующей таблице. Каждый имеет один строковый ресурс с именем DateStart.
| Культура | Имя файла | Имя ресурса | Значение ресурса |
|---|---|---|---|
| en-US | DateStrings.txt | DateStart |
Сегодня |
| fr-FR | DateStrings.fr-FR.txt | DateStart |
Сегодня это |
| ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
Для компиляции примера Visual Basic можно использовать следующий пакетный файл. Чтобы выполнить компиляцию в C#, измените vbc на csc и измените расширение файла исходного кода с .vb на .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
Ниже приведен исходный код для примера (ShowDate.vb для версии Visual Basic или ShowDate.cs для версии 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.