ResourceManager ResourceManager ResourceManager ResourceManager Class

Определение

Представляет диспетчер ресурсов, обеспечивающий удобный доступ к ресурсам, связанным с языком и региональными параметрами, во время выполнения.Represents a resource manager that provides convenient access to culture-specific resources at run time.

public ref class ResourceManager
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class ResourceManager
type ResourceManager = class
Public Class ResourceManager
Наследование
ResourceManagerResourceManagerResourceManagerResourceManager
Производный
Атрибуты

Примеры

Следующий пример демонстрирует использование культуру явные и неявные текущих региональных параметров пользовательского интерфейса для получения строковых ресурсов в основную сборку и вспомогательную сборку.The following example demonstrates how to use an explicit culture and the implicit current UI culture to obtain string resources from a main assembly and a satellite assembly. Дополнительные сведения см. в разделе «Каталог расположения для вспомогательной сборки не установлены в в глобальном кэше сборок» Создание вспомогательных сборок раздела.For more information, see the "Directory Locations for Satellite Assemblies Not Installed in the Global Assembly Cache" section of the Creating Satellite Assemblies topic.

Для выполнения этого примера:To run this example:

  1. В каталоге приложения создайте файл с именем rmc.txt, содержащий следующие строки ресурсов:In the app directory, create a file named rmc.txt that contains the following resource strings:

    
    day=Friday  
    year=2006  
    holiday="Cinco de Mayo"  
    
  2. Используйте генератор файлов ресурсов для создания файла ресурсов rmc.resources из входного файла rmc.txt следующим образом:Use the Resource File Generator to generate the rmc.resources resource file from the rmc.txt input file as follows:

    resgen rmc.txt  
    
  3. Создайте подкаталог в каталоге приложения и назовите его «es-MX».Create a subdirectory of the app directory and name it "es-MX". Это имя язык и региональные параметры вспомогательной сборки, созданной в следующие три шага.This is the culture name of the satellite assembly that you will create in the next three steps.

  4. Создайте файл с именем rmc.es MX.txt в каталоге es-MX, которая содержит следующие строки ресурсов:Create a file named rmc.es-MX.txt in the es-MX directory that contains the following resource strings:

    
    day=Viernes  
    year=2006  
    holiday="Cinco de Mayo"  
    
  5. Используйте генератор файлов ресурсов для создания файла ресурсов rmc.es MX.resources из входного файла rmc.es MX.txt следующим образом:Use the Resource File Generator to generate the rmc.es-MX.resources resource file from the rmc.es-MX.txt input file as follows:

    resgen rmc.es-MX.txt  
    
  6. Предположим, что имя файла для этого примера является rmc.vb или rmc.cs.Assume that the filename for this example is rmc.vb or rmc.cs. Скопируйте следующий исходный код в файл.Copy the following source code into a file. Затем скомпилируйте и внедрить файл ресурсов главной сборки, rmc.resources, в исполняемая сборка.Then compile it and embed the main assembly resource file, rmc.resources, in the executable assembly. Если вы используете компилятор Visual Basic, используется следующий синтаксис:If you are using the Visual Basic compiler, the syntax is:

    vbc rmc.vb /resource:rmc.resources  
    

    Ниже приведен соответствующий синтаксис для компилятора C#.The corresponding syntax for the C# compiler is:

    csc /resource:rmc.resources rmc.cs  
    
  7. Используйте компоновщик сборок для создания вспомогательной сборки.Use the Assembly Linker to create a satellite assembly. Если rmc базовое имя приложения, имя вспомогательной сборки должны быть rmc.resources.dll.If the base name of the app is rmc, the satellite assembly name must be rmc.resources.dll. Вспомогательная сборка должен будет создан в каталоге, es-MX.The satellite assembly should be created in the es-MX directory. Если es-MX является текущий каталог, используйте следующую команду:If es-MX is the current directory, use this command:

    al /embed:rmc.es-MX.resources /c:es-MX /out:rmc.resources.dll   
    
  8. Запустите rmc.exe для получения и отображения строк внедренного ресурса.Run rmc.exe to obtain and display the embedded resource strings.

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

class Example 
{
    public static void Main() 
    {
    string day;
    string year;
    string holiday;
    string celebrate = "{0} will occur on {1} in {2}.\n";

    // Create a resource manager. 
    ResourceManager rm = new ResourceManager("rmc", 
                             typeof(Example).Assembly);

    Console.WriteLine("Obtain resources using the current UI culture.");

    // Get the resource strings for the day, year, and holiday 
    // using the current UI culture. 
    day  = rm.GetString("day");
    year = rm.GetString("year");
    holiday = rm.GetString("holiday");
    Console.WriteLine(celebrate, holiday, day, year);

    // Obtain the es-MX culture.
    CultureInfo ci = new CultureInfo("es-MX");

    Console.WriteLine("Obtain resources using the es-MX culture.");

   // Get the resource strings for the day, year, and holiday 
   // using the specified culture. 
    day  = rm.GetString("day", ci);
    year = rm.GetString("year", ci);
    holiday = rm.GetString("holiday", ci);
// ---------------------------------------------------------------
// Alternatively, comment the preceding 3 code statements and 
// uncomment the following 4 code statements:
// ----------------------------------------------------------------
// Set the current UI culture to "es-MX" (Spanish-Mexico).
//    Thread.CurrentThread.CurrentUICulture = ci;

// Get the resource strings for the day, year, and holiday 
// using the current UI culture. Use those strings to 
// display a message. 
//    day  = rm.GetString("day");
//    year = rm.GetString("year");
//    holiday = rm.GetString("holiday");
// ---------------------------------------------------------------

// Regardless of the alternative that you choose, display a message 
// using the retrieved resource strings.
    Console.WriteLine(celebrate, holiday, day, year);
    }
}
/*
This example displays the following output:

   Obtain resources using the current UI culture.
   "5th of May" will occur on Friday in 2006.
   
   Obtain resources using the es-MX culture.
   "Cinco de Mayo" will occur on Viernes in 2006.
*/
Imports System.Resources
Imports System.Reflection
Imports System.Threading
Imports System.Globalization

Class Example
    Public Shared Sub Main() 
        Dim day As String
        Dim year As String
        Dim holiday As String
        Dim celebrate As String = "{0} will occur on {1} in {2}." & vbCrLf

        ' Create a resource manager. 
        Dim rm As New ResourceManager("rmc", GetType(Example).Assembly)

        Console.WriteLine("Obtain resources using the current UI culture.")

        ' Get the resource strings for the day, year, and holiday 
        ' using the current UI culture. 
        day = rm.GetString("day")
        year = rm.GetString("year")
        holiday = rm.GetString("holiday")
        Console.WriteLine(celebrate, holiday, day, year)

        ' Obtain the es-MX culture.
        Dim ci As New CultureInfo("es-MX")

        Console.WriteLine("Obtain resources using the es-MX culture.")

        ' Get the resource strings for the day, year, and holiday 
        ' using the es-MX culture.  
        day = rm.GetString("day", ci)
        year = rm.GetString("year", ci)
        holiday = rm.GetString("holiday", ci)

        ' ---------------------------------------------------------------
        ' Alternatively, comment the preceding 3 code statements and 
        ' uncomment the following 4 code statements:
        ' ----------------------------------------------------------------
        ' Set the current UI culture to "es-MX" (Spanish-Mexico).
        '    Thread.CurrentThread.CurrentUICulture = ci
        ' Get the resource strings for the day, year, and holiday 
        ' using the current UI culture. 
        '    day  = rm.GetString("day")
        '    year = rm.GetString("year")
        '    holiday = rm.GetString("holiday")
        ' ---------------------------------------------------------------

        ' Regardless of the alternative that you choose, display a message 
        ' using the retrieved resource strings.
        Console.WriteLine(celebrate, holiday, day, year)
    End Sub 
End Class
' This example displays the following output:
'Obtain resources using the current UI culture.
'"5th of May" will occur on Friday in 2006.
'
'Obtain resources using the es-MX culture.
'"Cinco de Mayo" will occur on Viernes in 2006.

Комментарии

Важно!

Вызов методов этого класса для ненадежных данных представляет угрозу безопасности.Calling methods from this class with untrusted data is a security risk. Вызывайте методы класса только для надежных данных.Call the methods from this class only with trusted data. Дополнительные сведения: Data Validation (Проверка данных).For more information, see Data Validation.

ResourceManager Класс извлекает ресурсы из двоичный RESOURCES-файл, который внедряется в сборку или отдельном Resources-файле.The ResourceManager class retrieves resources from a binary .resources file that is embedded in an assembly or from a standalone .resources file. Если локализованные приложения и развертывания локализованных ресурсов в вспомогательные сборки, он ищет ресурсов для конкретного языка и региональных параметров, обеспечивает возврат ресурсов, если локализованный ресурс не существует и поддерживает ресурсов сериализация.If an app has been localized and localized resources have been deployed in satellite assemblies, it looks up culture-specific resources, provides resource fallback when a localized resource does not exist, and supports resource serialization.

Дополнительные сведения о создании и управлении ресурсами в классических приложениях и Магазин Windows 8.xWindows 8.x Store приложений, см. в следующих разделах:For more information about creating and managing resources in desktop apps and Магазин Windows 8.xWindows 8.x Store apps, see the following sections:

Классические приложенияDesktop Apps

Для классических приложений ResourceManager класс извлекает ресурсы из файлов в двоичный файл ресурсов (RESOURCES).For desktop apps, the ResourceManager class retrieves resources from binary resource (.resources) files. Как правило, компилятор языка или компоновщик сборок (AL.exe) внедряет эти файлы ресурсов в сборку.Typically, a language compiler or the Assembly Linker (AL.exe) embeds these resource files in an assembly. Можно также использовать ResourceManager объекта для извлечения ресурсов непосредственно из RESOURCES-файл, который не внедрен в сборку, путем вызова CreateFileBasedResourceManager метод.You can also use a ResourceManager object to retrieve resources directly from a .resources file that is not embedded in an assembly, by calling the CreateFileBasedResourceManager method.

Внимание!

С помощью автономные файлы resources в приложении ASP.NET нарушит развертывание XCOPY, так как ресурс остается заблокированным, пока не будет явно выпускаются по ReleaseAllResources метод.Using standalone .resources files in an ASP.NET app will break XCOPY deployment, because the resources remain locked until they are explicitly released by the ReleaseAllResources method. Если вы хотите развернуть ресурсы в приложениях ASP.NET, следует компилировать в RESOURCES-файлов во вспомогательные сборки.If you want to deploy resources with your ASP.NET apps, you should compile your .resources files into satellite assemblies.

В приложении на основе ресурсов один файл ресурсов содержит ресурсы по умолчанию языка и региональных параметров, ресурсы которого используются в том случае, если нет ресурсов для конкретного языка и региональных параметров можно найти.In a resource-based app, one .resources file contains the resources of the default culture whose resources are used if no culture-specific resources can be found. Например если язык и региональные параметры приложения по умолчанию является английский (en), ресурсы на английском языке используются всякий раз, когда не удается найти локализованные ресурсы для конкретного языка и региональных параметров, например английский (США) (en US) или французский (Франция) (fr-FR).For example, if an app's default culture is English (en), the English language resources are used whenever localized resources cannot be found for a specific culture, such as English (United States) (en-US) or French (France) (fr-FR). Как правило ресурсы для культуры по умолчанию внедряются в основную сборку приложения и ресурсы для других языков и региональных параметров внедряются во вспомогательных сборках.Typically, the resources for the default culture are embedded in the main app assembly, and resources for other localized cultures are embedded in satellite assemblies. Вспомогательные сборки содержат только ресурсы.Satellite assemblies contain only resources. Они имеют то же корневое имя файла, как основную сборку и расширением. resources.dll.They have the same root file name as the main assembly and an extension of .resources.dll. Для приложений, сборок которых не зарегистрированы в глобальном кэше сборок вспомогательные сборки хранятся в подкаталоге приложения, имя которого соответствует язык и региональные параметры сборки.For apps whose assemblies are not registered in the global assembly cache, satellite assemblies are stored in an app subdirectory whose name corresponds to the assembly's culture.

Создание ресурсовCreating Resources

При разработке приложений на основе ресурсов, вы храните сведения о ресурсах в текстовые файлы (файлы с расширением txt или restext) или XML-файлы (файлы с расширением .resx).When you develop a resource-based app, you store resource information in text files (files that have a .txt or .restext extension) or XML files (files that have a .resx extension). После этого нужно скомпилировать текста или XML-файлы с генератор файлов ресурсов (Resgen.exe) для создания двоичных RESOURCES-файл.You then compile the text or XML files with the Resource File Generator (Resgen.exe) to create a binary .resources file. Затем, можно внедрить в исполняемый файл или библиотека полученный RESOURCES-файл с помощью параметра компилятора, например /resources для компиляторов C# и Visual Basic, или можно внедрить во вспомогательную сборку с помощью.You can then embed the resulting .resources file in an executable or library by using a compiler option such as /resources for the C# and Visual Basic compilers, or you can embed it in a satellite assembly by using the . Если включить RESX-файла в проект Visual Studio, Visual Studio обрабатывает компиляции и внедрения по умолчанию и локализованные ресурсы автоматически как часть процесса построения.If you include a .resx file in your Visual Studio project, Visual Studio handles the compilation and embedding of default and localized resources automatically as part of the build process.

В идеале следует создавать ресурсы для всех языков, ваше приложение поддерживает, или по крайней мере для определенного подмножества каждого языка.Ideally, you should create resources for every language your app supports, or at least for a meaningful subset of each language. Имена файлов в двоичные RESOURCES соглашению об именовании basename. cultureName.resources, где basename — это имя приложения или имя класса, в зависимости от уровня детализации информации.The binary .resources file names follow the naming convention basename.cultureName.resources, where basename is the name of the app or the name of a class, depending on the level of detail you want. CultureInfo.Name Свойство используется для определения cultureName.The CultureInfo.Name property is used to determine cultureName. Ресурс для языка и региональных параметров приложения по умолчанию должен быть назван basename.resources.A resource for the app's default culture should be named basename.resources.

Например предположим, что сборка содержит несколько ресурсов в файле ресурсов, который содержит имя MyResources.For example, suppose that an assembly has several resources in a resource file that has the base name MyResources. Эти файлы ресурсов должны иметь имена, такие как MyResources.ja JP.resources, для языка и региональных параметров (Япония), MyResources.de.resources для немецкого языка и региональных параметров, MyResources.zh-CHS.resources для упрощенного китайского языка и региональных параметров, и MyResources.fr BE.resources французский (Бельгия) языком и региональными параметрами.These resource files should have names such as MyResources.ja-JP.resources for the Japan (Japanese) culture, MyResources.de.resources for the German culture, MyResources.zh-CHS.resources for the simplified Chinese culture, and MyResources.fr-BE.resources for the French (Belgium) culture. Файл ресурсов по умолчанию должна называться MyResources.resources.The default resource file should be named MyResources.resources. Ресурс для конкретного языка и региональных параметров обычно упаковываются во вспомогательные сборки для каждого языка и региональных параметров.The culture-specific resource files are commonly packaged in satellite assemblies for each culture. Файл ресурсов по умолчанию необходимо внедрить в основную сборку приложения.The default resource file should be embedded in the app's main assembly.

Обратите внимание, что компоновщик сборок позволяет ресурсы быть помечены как частные, но следует всегда пометить их как открытый, может осуществляться при помощи других сборок.Note that Assembly Linker allows resources to be marked as private, but you should always mark them as public so they can be accessed by other assemblies. (Так как вспомогательная сборка не содержит кода, ресурсы, которые помечены как частные, недоступны для приложения с помощью любого механизма.)(Because a satellite assembly contains no code, resources that are marked as private are unavailable to your app through any mechanism.)

Дополнительные сведения о создании упаковки и развертывания ресурсов, см. в статьях Создание файлов ресурсов, Создание вспомогательных сборок, и упаковка и развертывание Ресурсы.For more information about creating, packaging, and deploying resources, see the articles Creating Resource Files, Creating Satellite Assemblies, and Packaging and Deploying Resources.

Создание экземпляров объекта ResourceManagerInstantiating a ResourceManager Object

Вы создаете экземпляры ResourceManager объект, который извлекает ресурсы из внедренный RESOURCES-файл, вызвав один из его перегрузок конструктора класса.You instantiate a ResourceManager object that retrieves resources from an embedded .resources file by calling one of its class constructor overloads. Это жестко связывает ResourceManager объектов с определенной RESOURCES-файл и все связанные локализованные файлы .resources во вспомогательных сборках.This tightly couples a ResourceManager object with a particular .resources file and with any associated localized .resources files in satellite assemblies.

Ниже приведены две наиболее часто вызываемые конструкторы.The two most commonly called constructors are:

  • ResourceManager(String, Assembly) ищет ресурсы на два фрагмента информации, указываемое в основе: базовое имя RESOURCES-файл и сборку, в которой находится RESOURCES-файл по умолчанию.ResourceManager(String, Assembly) looks up resources based on two pieces of information that you supply: the base name of the .resources file, and the assembly in which the default .resources file resides. Базовое имя включает имя пространства имен и корневой RESOURCES-файла, без его языка и региональных параметров или расширения.The base name includes the namespace and root name of the .resources file, without its culture or extension. Обратите внимание на то, что RESOURCES-файлы, которые компилируются из командной строки, обычно не содержат имя пространства имен, тогда как сделать RESOURCES-файлы, созданные в среде Visual Studio.Note that .resources files that are compiled from the command line typically do not include a namespace name, whereas .resources files that are created in the Visual Studio environment do. Например, если файл ресурсов с именем MyCompany.StringResources.resources и ResourceManager конструктор вызывается статический метод с именем Example.Main, следующий код создает экземпляр ResourceManager объект, который может извлекать ресурсы из. файл ресурсов:For example, if a resource file is named MyCompany.StringResources.resources and the ResourceManager constructor is called from a static method named Example.Main, the following code instantiates a ResourceManager object that can retrieve resources from the .resources file:

    ResourceManager rm = new ResourceManager("MyCompany.StringResources", 
                                             typeof(Example).Assembly);
    
    Dim rm As New ResourceManager("MyCompany.StringResources",
                                  GetType(Example).Assembly)
    
  • ResourceManager(Type) ищет ресурсы в сопутствующих сборках, на основе информации из объекта типа.ResourceManager(Type) looks up resources in satellite assemblies based on information from a type object. Полное имя типа соответствует базовое имя RESOURCES-файл без расширения имени файла.The type's fully qualified name corresponds to the base name of the .resources file without its file name extension. В классических приложениях, которые создаются с помощью конструктора ресурсов Visual Studio Visual Studio создает класс-оболочку, — это полное имя которого совпадает с корневым именем RESOURCES-файла.In desktop apps that are created by using the Visual Studio Resource Designer, Visual Studio creates a wrapper class whose fully qualified name is the same as the root name of the .resources file. Например, если файл ресурсов называется MyCompany.StringResources.resources и имеется класс-оболочку с именем MyCompany.StringResources, следующий код создает экземпляр ResourceManager объект, который может извлекать ресурсы из RESOURCES-файл:For example, if a resource file is named MyCompany.StringResources.resources and there is a wrapper class named MyCompany.StringResources, the following code instantiates a ResourceManager object that can retrieve resources from the .resources file:

    ResourceManager rm = new ResourceManager(typeof(MyCompany.StringResources));
    
    Dim rm As New ResourceManager(GetType(MyCompany.StringResources))
    

Если не удается найти соответствующие ресурсы, вызов конструктора создается действительный ResourceManager объекта.If the appropriate resources cannot be found, the constructor call creates a valid ResourceManager object. Тем не менее, при попытке извлечь ресурс создается MissingManifestResourceException исключение.However, the attempt to retrieve a resource throws a MissingManifestResourceException exception. Сведения об обработке исключений см. в разделе обработка исключений MissingManifestResourceException и исключения MissingSatelliteAssembly разделе этой статьи.For information about dealing with the exception, see the Handling MissingManifestResourceException and MissingSatelliteAssembly Exceptions section later in this article.

В следующем примере показано, как создать экземпляр ResourceManager объекта.The following example shows how to instantiate a ResourceManager object. Он содержит исходный код для исполняемого файла с именем ShowTime.exe.It contains the source code for an executable named ShowTime.exe. Он также включает следующий текстовый файл с именем Strings.txt, который содержит один строковой ресурс, TimeHeader:It also includes the following text file named Strings.txt that contains a single string resource, TimeHeader:

TimeHeader=The current time is  

Пакетный файл можно использовать для создания файла ресурсов и внедрить в исполняемый файл.You can use a batch file to generate the resource file and embed it into the executable. Вот пакетный файл, чтобы создать исполняемый файл с помощью компилятора C#:Here's the batch file to generate an executable by using the C# compiler:


resgen strings.txt  
csc ShowTime.cs /resource:strings.resources  

Для компилятора Visual Basic можно использовать следующий пакетный файл:For the Visual Basic compiler, you can use the following batch file:


resgen strings.txt  
vbc ShowTime.vb /resource:strings.resources  
using System;
using System.Resources;

public class Example
{
   public static void Main()
   {
      ResourceManager rm = new ResourceManager("Strings", 
                               typeof(Example).Assembly);
      string timeString = rm.GetString("TimeHeader");
      Console.WriteLine("{0} {1:T}", timeString, DateTime.Now);   
   }
}
// The example displays output like the following:
//        The current time is 2:03:14 PM
Imports System.Resources

Module Example
   Public Sub Main()
      Dim rm As New ResourceManager("Strings", GetType(Example).Assembly)
      Dim timeString As String = rm.GetString("TimeHeader")
      Console.WriteLine("{0} {1:T}", timeString, Date.Now)   
   End Sub
End Module
' The example displays output similar to the following:
'       The current time is 2:03:14 PM

Диспетчер ресурсов и ресурсов для конкретного языка и региональных параметровResourceManager and Culture-Specific Resources

Локализованного приложения требуется ресурсов для развертывания, как описано в статье упаковка и развертывание ресурсов.A localized app requires resources to be deployed, as discussed in the article Packaging and Deploying Resources. Если сборок настроены правильно, диспетчер ресурсов определяет, какие именно ресурсы нужно извлечь на основании текущего потока Thread.CurrentUICulture свойство.If the assemblies are properly configured, the resource manager determines which resources to retrieve based on the current thread's Thread.CurrentUICulture property. (Это свойство также возвращает язык и региональные параметры текущего потока пользовательского интерфейса). Например, если приложение компилируется с по умолчанию ресурсы на английском языке в основную сборку и с ресурсами французский "и" русский язык в двух вспомогательных сборок и Thread.CurrentUICulture задано значение fr-FR, диспетчер ресурсов извлекает французский ресурсы.(That property also returns the current thread's UI culture.) For example, if an app is compiled with default English language resources in the main assembly and with French and Russian language resources in two satellite assemblies, and the Thread.CurrentUICulture property is set to fr-FR, the resource manager retrieves the French resources.

Можно задать CurrentUICulture свойство явно или неявно.You can set the CurrentUICulture property explicitly or implicitly. Определяет метод, он задается как ResourceManager извлекает ресурсов с учетом языка и региональных параметров:The way you set it determines how the ResourceManager object retrieves resources based on culture:

  • Если явно задать Thread.CurrentUICulture свойство для конкретной культуры, всегда диспетчер ресурсов извлекает ресурсы для этого языка и региональных параметров, независимо от языка браузера или операционной системы пользователя.If you explicitly set the Thread.CurrentUICulture property to a specific culture, the resource manager always retrieves the resources for that culture, regardless of the user's browser or operating system language. Рассмотрим приложение, которое компилируется с ресурсами на английском языке по умолчанию и три вспомогательных сборок, которые содержат ресурсы для английского (США), французский (Франция) и русского (Россия).Consider an app that is compiled with default English language resources and three satellite assemblies that contain resources for English (United States), French (France), and Russian (Russia). Если CurrentUICulture задано значение fr-FR, ResourceManager всегда извлекать ресурсы французского (Франция), даже если пользователь операционной системе установлен не французский язык.If the CurrentUICulture property is set to fr-FR, the ResourceManager object always retrieves the French (France) resources, even if the user's operating system language is not French. Убедитесь, что это требуемое поведение, прежде чем явно задать свойство.Make sure that this is the desired behavior before you set the property explicitly.

    В приложениях ASP.NET, необходимо задать Thread.CurrentUICulture свойство явно, так как маловероятно, что параметр на сервере будет соответствовать входящих клиентских запросов.In ASP.NET apps, you must set the Thread.CurrentUICulture property explicitly, because it is unlikely that the setting on the server will match incoming client requests. Приложения ASP.NET можно задать Thread.CurrentUICulture свойство явным образом, чтобы браузер пользователя допустимый язык.An ASP.NET app can set the Thread.CurrentUICulture property explicitly to the user's browser accept language.

    Явная установка Thread.CurrentUICulture свойство определяет текущий язык и региональные параметры пользовательского интерфейса для этого потока.Explicitly setting the Thread.CurrentUICulture property defines the current UI culture for that thread. Он не влияет на текущий язык и региональные параметры пользовательского интерфейса из других потоков в приложении.It does not affect the current UI culture of any other threads in an app.

  • Можно задать язык и региональные параметры пользовательского интерфейса всех потоков в домене приложения, назначив CultureInfo объект, представляющий этот язык для статического CultureInfo.DefaultThreadCurrentUICulture свойство.You can set the UI culture of all threads in an app domain by assigning a CultureInfo object that represents that culture to the static CultureInfo.DefaultThreadCurrentUICulture property.

  • Если явно не задано текущего языка и региональных параметров пользовательского интерфейса, а не определить язык и региональные параметры по умолчанию для текущего домена приложения, CultureInfo.CurrentUICulture свойство задается неявно Windows GetUserDefaultUILanguage функции.If you do not explicitly set the current UI culture and you do not define a default culture for the current app domain, the CultureInfo.CurrentUICulture property is set implicitly by the Windows GetUserDefaultUILanguage function. Эта функция предоставляется по многоязыкового интерфейса пользователя (MUI), который позволяет пользователю задать язык по умолчанию.This function is provided by the Multilingual User Interface (MUI), which enables the user to set the default language. Если пользователь не задал язык пользовательского интерфейса, по умолчанию используется язык установленной системы, который является языком ресурсов операционной системы.If the UI language is not set by the user, it defaults to the system-installed language, which is the language of operating system resources.

В следующем примере простых «Hello world» явно задает текущий язык и региональные параметры пользовательского интерфейса.The following simple "Hello world" example sets the current UI culture explicitly. Он содержит ресурсы для трех языков и региональных параметров: Английский (США) или en US, французский (Франция) или fr-FR и русский (Россия) или ru-RU.It contains resources for three cultures: English (United States) or en-US, French (France) or fr-FR, and Russian (Russia) or ru-RU. В текстовом файле с именем Greetings.txt содержатся ресурсы en US:The en-US resources are contained in a text file named Greetings.txt:

HelloString=Hello world!  

Ресурсы fr-FR, входящие в текстовый файл с именем Greetings.fr-FR.txt:The fr-FR resources are contained in a text file named Greetings.fr-FR.txt:

HelloString=Salut tout le monde!  

Ru-RU ресурсы, входящие в текстовый файл с именем Greetings.ru-RU.txt:The ru-RU resources are contained in a text file named Greetings.ru-RU.txt:

HelloString=Всем привет!  

Ниже приведен исходный код для примера (Example.vb для версии Visual Basic) или Example.cs для версии C#:Here's the source code for the example (Example.vb for the Visual Basic version or Example.cs for the C# version):

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

public class Example
{
   public static void Main()
   {
      // Create array of supported cultures
      string[] cultures = {"en-CA", "en-US", "fr-FR", "ru-RU" };
      Random rnd = new Random();
      int cultureNdx = rnd.Next(0, cultures.Length);
      CultureInfo originalCulture = Thread.CurrentThread.CurrentCulture;
      ResourceManager rm = new ResourceManager("Greetings", typeof(Example).Assembly);
      try {
         CultureInfo newCulture = new CultureInfo(cultures[cultureNdx]);
         Thread.CurrentThread.CurrentCulture = newCulture;
         Thread.CurrentThread.CurrentUICulture = newCulture;
         string greeting = String.Format("The current culture is {0}.\n{1}",
                                         Thread.CurrentThread.CurrentUICulture.Name,
                                         rm.GetString("HelloString"));
         Console.WriteLine(greeting);
      }
      catch (CultureNotFoundException e) {
         Console.WriteLine("Unable to instantiate culture {0}", e.InvalidCultureName);
      }
      finally {
         Thread.CurrentThread.CurrentCulture = originalCulture;
         Thread.CurrentThread.CurrentUICulture = originalCulture;
      }
   }
}
// The example displays output like the following:
//       The current culture is ru-RU.
//       Всем привет!
Imports System.Globalization
Imports System.Resources
Imports System.Threading

Module Example
   Sub Main()
      ' Create array of supported cultures
      Dim cultures() As String = {"en-CA", "en-US", "fr-FR", "ru-RU" }
      Dim rnd As New Random()
      Dim cultureNdx As Integer = rnd.Next(0, cultures.Length)
      Dim originalCulture As CultureInfo = Thread.CurrentThread.CurrentCulture
      Dim rm As New ResourceManager("Greetings", GetType(Example).Assembly)
      Try
         Dim newCulture As New CultureInfo(cultures(cultureNdx))
         Thread.CurrentThread.CurrentCulture = newCulture
         Thread.CurrentThread.CurrentUICulture = newCulture
         Dim greeting As String = String.Format("The current culture is {0}.{1}{2}",
                                                Thread.CurrentThread.CurrentUICulture.Name,
                                                vbCrLf, rm.GetString("HelloString"))

         Console.WriteLine(greeting)
      Catch e As CultureNotFoundException
         Console.WriteLine("Unable to instantiate culture {0}", e.InvalidCultureName)
      Finally
         Thread.CurrentThread.CurrentCulture = originalCulture
         Thread.CurrentThread.CurrentUICulture = originalCulture
      End Try
   End Sub
End Module
' The example displays output like the following:
'       The current culture is ru-RU.
'       Всем привет!

Чтобы скомпилировать этот пример, создайте пакетный (BAT) файл, содержащий следующие команды и запустите его из командной строки.To compile this example, create a batch (.bat) file that contains the following commands and run it from the command prompt. Если вы используете C#, укажите csc вместо vbc и Example.cs вместо Example.vb.If you're using C#, specify csc instead of vbc and Example.cs instead of Example.vb.

resgen Greetings.txt   
vbc Example.vb /resource:Greetings.resources  

resgen Greetings.fr-FR.txt  
Md fr-FR  
al /embed:Greetings.fr-FR.resources /culture:fr-FR /out:fr-FR\Example.resources.dll  

resgen Greetings.ru-RU.txt  
Md ru-RU  
al /embed:Greetings.ru-RU.resources /culture:ru-RU /out:ru-RU\Example.resources.dll  

Извлечение ресурсовRetrieving Resources

Вы вызываете GetObject(String) и GetString(String) методы доступа к определенному ресурсу.You call the GetObject(String) and GetString(String) methods to access a specific resource. Можно также вызвать GetStream(String) метод для извлечения нестроковых ресурсов в виде массива байтов.You can also call the GetStream(String) method to retrieve non-string resources as a byte array. По умолчанию в приложении, которое локализованные ресурсы, эти методы возвращают ресурс для языка и региональных параметров, определяется текущий язык и региональные параметры пользовательского интерфейса потока, в которой был сделан вызов.By default, in an app that has localized resources, these methods return the resource for the culture determined by the current UI culture of the thread that made the call. См. в предыдущем разделе диспетчера ресурсов и ресурсов для конкретного языка и региональных параметров, Дополнительные сведения об определении текущего языка и региональных параметров пользовательского интерфейса потока.See the previous section, ResourceManager and Culture-Specific Resources, for more information about how the current UI culture of a thread is defined. Если диспетчер ресурсов не удается найти ресурс для языка и региональных параметров текущего потока пользовательского интерфейса, он используется процесс перехода к получить указанный ресурс.If the resource manager cannot find the resource for the current thread's UI culture, it uses a fallback process to retrieve the specified resource. Если диспетчер ресурсов не удается найти все локализованные ресурсы, он использует ресурсы языка и региональных параметров по умолчанию.If the resource manager cannot find any localized resources, it uses the resources of the default culture. Дополнительные сведения о правила резервных ресурсов см. в разделе «Процесс использования резервных ресурсов» статьи упаковка и развертывание ресурсов.For more information about resource fallback rules, see the "Resource Fallback Process" section of the article Packaging and Deploying Resources.

Примечание

Если RESOURCES-файл указан в ResourceManager конструктор класса не найден, то попытка извлечения ресурса выдает MissingManifestResourceException или MissingSatelliteAssemblyException исключение.If the .resources file specified in the ResourceManager class constructor cannot be found, the attempt to retrieve a resource throws a MissingManifestResourceException or MissingSatelliteAssemblyException exception. Сведения об обработке исключений см. в разделе обработка исключений MissingManifestResourceException и MissingSatelliteAssemblyException исключения подразделе данного раздела.For information about dealing with the exception, see the Handling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions section later in this topic.

В следующем примере используется GetString метод для извлечения ресурсов для конкретного языка и региональных параметров.The following example uses the GetString method to retrieve culture-specific resources. Он состоит из ресурсов, скомпилированной на основе TXT-файлы для английского языка (en), французский (Франция) (fr-FR) и русского (Россия) (ru-RU) языков и региональных параметров.It consists of resources compiled from .txt files for the English (en), French (France) (fr-FR), and Russian (Russia) (ru-RU) cultures. В примере изменяется текущий язык и региональные параметры текущего пользовательского интерфейса на английский (США), французский (Франция), русский (Россия) и шведский (Швеция).The example changes the current culture and current UI culture to English (United States), French (France), Russian (Russia), and Swedish (Sweden). Затем он вызывает GetString метод для извлечения локализованной строки, которая отображается вместе с текущего дня и месяца.It then calls the GetString method to retrieve the localized string, which it displays along with the current day and month. Обратите внимание на то, что в выходных данных отображаются соответствующие локализованную строку, если текущий язык и региональные параметры пользовательского интерфейса не является шведский (Швеция).Notice that the output displays the appropriate localized string except when the current UI culture is Swedish (Sweden). Так как шведский язык ресурсы недоступны, приложение вместо этого использует ресурсы языка и региональных параметров по умолчанию, на английском языке.Because Swedish language resources are unavailable, the app instead uses the resources of the default culture, which is English.

В примере требуется файлы ресурсов на основе текста, перечисленные в следующей таблице.The example requires the text-based resource files listed in following table. Каждый имеет один строковой ресурс с именем DateStart.Each has a single string resource named DateStart.

cultureCulture Имя файлаFile name Имя ресурсаResource name Значение ресурсаResource value
en-USen-US DateStrings.txtDateStrings.txt DateStart СегодняToday is
fr-FRfr-FR DateStrings.fr-FR.txtDateStrings.fr-FR.txt DateStart Aujourd'hui c'est leAujourd'hui, c'est le
ru-RUru-RU DateStrings.ru-RU.txtDateStrings.ru-RU.txt DateStart СегодняСегодня

Ниже приведен исходный код для примера (ShowDate.vb для версии Visual Basic) или ShowDate.cs для версии кода C#.Here's the source code for the example (ShowDate.vb for the Visual Basic version or ShowDate.cs for the C# version of the code).

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

[assembly:NeutralResourcesLanguage("en")]

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.

Чтобы скомпилировать этот пример, создайте пакетный файл, который содержит следующие команды и запустите его из командной строки.To compile this example, create a batch file that contains the following commands and run it from the command prompt. Если вы используете C#, укажите csc вместо vbc и showdate.cs вместо showdate.vb.If you're using C#, specify csc instead of vbc and showdate.cs instead of showdate.vb.


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  

Существует два способа для извлечения ресурсов для конкретного языка и региональных параметров, отличных от текущего языка и региональных параметров пользовательского интерфейса:There are two ways to retrieve the resources of a specific culture other than the current UI culture:

  • Можно вызвать GetString(String, CultureInfo), GetObject(String, CultureInfo), или GetStream(String, CultureInfo) метод для извлечения ресурсов для конкретной культуры.You can call the GetString(String, CultureInfo), GetObject(String, CultureInfo), or GetStream(String, CultureInfo) method to retrieve a resource for a specific culture. Если не удается найти локализованных ресурсов, диспетчер ресурсов использует процесс резервных ресурсов для поиска подходящего ресурса.If a localized resource cannot be found, the resource manager uses the resource fallback process to locate an appropriate resource.

  • Можно вызвать GetResourceSet метод, чтобы получить ResourceSet , представляющий ресурсы для конкретного языка и региональных параметров.You can call the GetResourceSet method to obtain a ResourceSet object that represents the resources for a particular culture. В вызове метода можно определить ли диспетчер ресурсов проверяет наличие родительского языков и региональных параметров, если это не удается найти локализованные ресурсы или ли она просто возвращается к ресурсы языка и региональных параметров по умолчанию.In the method call, you can determine whether the resource manager probes for parent cultures if it is unable to find localized resources, or whether it simply falls back to the resources of the default culture. Затем можно использовать ResourceSet методы, доступ к ресурсам (локализован для этого языка и региональных параметров) по имени или перечисление ресурсов в наборе.You can then use the ResourceSet methods to access the resources (localized for that culture) by name, or to enumerate the resources in the set.

Обработка исключений MissingManifestResourceException и MissingSatelliteAssemblyException исключенийHandling MissingManifestResourceException and MissingSatelliteAssemblyException Exceptions

Если при попытке извлечь конкретный ресурс, но не удается найти диспетчер ресурсов был определен ресурс и либо не по умолчанию языка и региональных параметров или ресурсы языка и региональных параметров по умолчанию не удается найти, диспетчер ресурсов создает MissingManifestResourceException исключение при его ожидает найти ресурсы в основную сборку или MissingSatelliteAssemblyException Если ожидается, что для поиска ресурсов во вспомогательную сборку.If you try to retrieve a specific resource, but the resource manager cannot find that resource and either no default culture has been defined or the resources of the default culture cannot be located, the resource manager throws a MissingManifestResourceException exception if it expects to find the resources in the main assembly or a MissingSatelliteAssemblyException if it expects to find the resources in a satellite assembly. Обратите внимание на то, что исключение возникает при вызове метода извлечения ресурса, например GetString или GetObject, а не при создании экземпляра ResourceManager объекта.Note that the exception is thrown when you call a resource retrieval method such as GetString or GetObject, and not when you instantiate a ResourceManager object.

Исключение обычно вызывается при следующих условиях:The exception is typically thrown under the following conditions:

  • Файла или вспомогательной сборки соответствующий ресурс не существует.The appropriate resource file or satellite assembly does not exist. Если диспетчер ресурсов ожидает, что ресурсы приложения по умолчанию, внедренных в основную сборку приложения, они отсутствуют.If the resource manager expects the app's default resources to be embedded in the main app assembly, they are absent. Если NeutralResourcesLanguageAttribute атрибут указывает, что ресурсы приложения по умолчанию находятся во вспомогательной сборке, что сборка не найдена.If the NeutralResourcesLanguageAttribute attribute indicates that the app's default resources reside in a satellite assembly, that assembly cannot be found. При компиляции приложения, убедитесь, что ресурсы внедряются в основную сборку, или что необходимые вспомогательной сборки создается и соответствующее имя.When you compile your app, make sure that resources are embedded in the main assembly or that the necessary satellite assembly is generated and is named appropriately. Его имя должно задаваться в виде appName. resources.dll и он должен находиться в каталоге с именем, язык и региональные параметры, содержащиеся в ней ресурсы.Its name should take the form appName.resources.dll, and it should be located in a directory named after the culture whose resources it contains.

  • Приложение не имеет значение по умолчанию или определенных нейтрального языка и региональных параметров.Your app doesn't have a default or neutral culture defined. Добавление NeutralResourcesLanguageAttribute атрибута в файл исходного кода или файл проекта сведения файл (AssemblyInfo.vb для приложения Visual Basic) или AssemblyInfo.cs для приложения C#.Add the NeutralResourcesLanguageAttribute attribute to a source code file or to the project information file (AssemblyInfo.vb for a Visual Basic app or AssemblyInfo.cs for a C# app) file.

  • baseName Параметр в ResourceManager(String, Assembly) конструктор не задает имя RESOURCES-файл.The baseName parameter in the ResourceManager(String, Assembly) constructor does not specify the name of a .resources file. Имя должно содержать полное имя пространства имен файла ресурсов, но не его расширение имени файла.The name should include the resource file's fully qualified namespace but not its file name extension. Как правило файлы ресурсов, созданных в Visual Studio включают имена пространств имен, но файлы ресурсов, которые создаются и компилируются в командной строке — нет.Typically, resource files that are created in Visual Studio include namespace names, but resource files that are created and compiled at the command prompt do not. Можно скомпилировать и выполнить следующую программу, можно определить имена внедренные RESOURCES-файлы.You can determine the names of embedded .resources files by compiling and running the following utility. Это консольное приложение, которое принимает имя основной сборки или вспомогательную сборку в качестве параметра командной строки.This is a console app that accepts the name of a main assembly or satellite assembly as a command-line parameter. Он отображает строки, которые должны быть предоставлены как baseName параметр, чтобы диспетчер ресурсов мог корректно идентифицировать ресурс.It displays the strings that should be provided as the baseName parameter so that the resource manager can correctly identify the resource.

    using System;
    using System.IO;
    using System.Reflection;
    using System.Resources;
    
    public class Example
    {
       public static void Main()
       {
          if (Environment.GetCommandLineArgs().Length == 1) { 
             Console.WriteLine("No filename.");
             return;
          }
          
          string filename = Environment.GetCommandLineArgs()[1].Trim();
          // Check whether the file exists.
          if (! File.Exists(filename)) {
             Console.WriteLine("{0} does not exist.", filename);
             return;
          }   
          
          // Try to load the assembly.
          Assembly assem = Assembly.LoadFrom(filename);
          Console.WriteLine("File: {0}", filename);
             
          // Enumerate the resource files.
          string[] resNames = assem.GetManifestResourceNames();
          if (resNames.Length == 0)
             Console.WriteLine("   No resources found.");
    
          foreach (var resName in resNames)
             Console.WriteLine("   Resource: {0}", resName.Replace(".resources", ""));
    
          Console.WriteLine();
       }
    }
    
    Imports System.IO
    Imports System.Reflection
    Imports System.Resources
     
    Module Example
       Public Sub Main()
          If Environment.GetCommandLineArgs.Length = 1 Then 
             Console.WriteLine("No filename.")
             Exit Sub
          End If
          Dim filename As String = Environment.GetCommandLineArgs(1).Trim()
          ' Check whether the file exists.
          If Not File.Exists(filename) Then
             Console.WriteLine("{0} does not exist.", filename)
             Exit Sub
          End If   
          
          ' Try to load the assembly.
          Dim assem As Assembly = Assembly.LoadFrom(filename)
          Console.WriteLine("File: {0}", filename)
             
          ' Enumerate the resource files.
          Dim resNames() As String = assem.GetManifestResourceNames()
          If resNames.Length = 0 Then
             Console.WriteLine("   No resources found.")
          End If
          For Each resName In resNames
             Console.WriteLine("   Resource: {0}", resName.Replace(".resources", ""))
          Next
          Console.WriteLine()
       End Sub
    End Module
    

Явным образом при изменении текущего языка и региональных параметров приложения, следует также помнить, что диспетчер ресурсов получает набор ресурсов, в зависимости от значения CultureInfo.CurrentUICulture свойства, а не CultureInfo.CurrentCulture свойство.If you are changing the current culture of your application explicitly, you should also remember that the resource manager retrieves a resource set based on the value of the CultureInfo.CurrentUICulture property, and not the CultureInfo.CurrentCulture property. Как правило если вы измените одно значение, необходимо также изменить другой.Typically, if you change one value, you should also change the other.

Управление версиями ресурсовResource Versioning

Так как основная сборка, которая содержит ресурсы приложения по умолчанию отличается от вспомогательных сборок приложения, можно освободить новой версии основной сборки без повторного развертывания вспомогательных сборок.Because the main assembly that contains an app's default resources is separate from the app's satellite assemblies, you can release a new version of your main assembly without redeploying the satellite assemblies. Использовании SatelliteContractVersionAttribute атрибут для использования существующего вспомогательные сборки и диспетчеру ресурсов не для того, чтобы повторно развернуть их до новой версии основной сборки,You use the SatelliteContractVersionAttribute attribute to use existing satellite assemblies and instruct the resource manager not to redeploy them with a new version of your main assembly,

Дополнительные сведения о поддержке управления версиями для вспомогательных сборок см. в статье извлечение ресурсов.For more information about versioning support for satellite assemblies, see the article Retrieving Resources.

<satelliteassemblies > узел файла конфигурации<satelliteassemblies> Configuration File Node

Для исполняемых файлов, развернутые и работающие с веб-сайта (файлы .exe HREF) ResourceManager объект может зондировать наличие вспомогательных сборок в Интернете, которые могут снижать производительность приложения.For executables that are deployed and run from a website (HREF .exe files), the ResourceManager object may probe for satellite assemblies over the web, which can hurt your app's performance. Чтобы устранить проблемы с производительностью, можно ограничить это исследование вспомогательные сборки, которые развернуты с вашим приложением.To eliminate the performance problem, you can limit this probing to the satellite assemblies that you have deployed with your app. Чтобы сделать это, создайте <satelliteassemblies> узел в файле конфигурации приложения, чтобы указать, что вы развернули определенный набор языков и региональных параметров для приложения и что ResourceManager объекта не следует пытаться выборки данных для любого языка и региональных параметров, которого нет в этом узле.To do this, you create a <satelliteassemblies> node in your app's configuration file to specify that you have deployed a specific set of cultures for your app, and that the ResourceManager object should not try to probe for any culture that is not listed in that node.

Примечание

Предпочтительная альтернатива типу создание <satelliteassemblies> узла заключается в использовании манифест развертывания ClickOnce функции.The preferred alternative to creating a <satelliteassemblies> node is to use the ClickOnce Deployment Manifest feature.

В файле конфигурации приложения создайте раздел следующего вида:In your app's configuration file, create a section similar to the following:

<?xml version ="1.0"?>  
<configuration>  
    <satelliteassemblies>  
        <assembly name="MainAssemblyName, Version=versionNumber, Culture=neutral, PublicKeyToken=null|yourPublicKeyToken">  
            <culture>cultureName1</culture>  
            <culture>cultureName2</culture>  
            <culture>cultureName3</culture>  
        </assembly>  
    </satelliteassemblies>  
</configuration>  

Изменение сведений о конфигурации следующим образом:Edit this configuration information as follows:

  • Укажите одно или несколько <assembly> узлов для каждой основной сборки, развертывании, где каждый узел определяет полное имя сборки.Specify one or more <assembly> nodes for each main assembly that you deploy, where each node specifies a fully qualified assembly name. Укажите имя основной сборки вместо MainAssemblyNameи укажите Version, PublicKeyToken, и Culture значения атрибутов, соответствуют к главной сборке.Specify the name of your main assembly in place of MainAssemblyName, and specify the Version, PublicKeyToken, and Culture attribute values that correspond to your main assembly.

    Для Version атрибут, укажите номер версии сборки.For the Version attribute, specify the version number of your assembly. Например первая версия сборки может быть номер версии 1.0.0.0.For example, the first release of your assembly might be version number 1.0.0.0.

    Для PublicKeyToken атрибут, укажите ключевое слово null Если вы не выполнили сборку со строгим именем, или укажите маркер открытого ключа, если сборка подписана.For the PublicKeyToken attribute, specify the keyword null if you have not signed your assembly with a strong name, or specify your public key token if you have signed your assembly.

    Для Culture атрибут, укажите ключевое слово neutral обозначить основную сборку и привести к ResourceManager класс для выборки данных только для языков и региональных параметров, перечисленных в <culture> узлов.For the Culture attribute, specify the keyword neutral to designate the main assembly and cause the ResourceManager class to probe only for the cultures listed in the <culture> nodes.

    Дополнительные сведения о полные имена сборок см. в статье имена сборок.For more information about fully qualified assembly names, see the article Assembly Names. Дополнительные сведения о сборках со строгими именами см. в статье Создание и использование сборок со строгими именами.For more information about strong-named assemblies, see the article Creating and Using Strong-Named Assemblies.

  • Укажите одно или несколько <culture> узлов с имя определенного языка и региональных параметров, например «fr-FR», или имя нейтрального языка и региональных параметров, например «fr».Specify one or more <culture> nodes with a specific culture name, such as "fr-FR", or a neutral culture name, such as "fr".

Если ресурсы необходимы для любой сборки, не указан в списке <satelliteassemblies> узел, ResourceManager класса проб для языков и региональных параметров с помощью стандартных правил проверки.If resources are needed for any assembly not listed under the <satelliteassemblies> node, the ResourceManager class probes for cultures using standard probing rules.

Приложения Магазин Windows 8.xWindows 8.x StoreМагазин Windows 8.xWindows 8.x Store Apps

Важно!

Несмотря на то что ResourceManager класс поддерживается в Магазин Windows 8.xWindows 8.x Store приложений, мы не рекомендуем ее использовать.Although the ResourceManager class is supported in Магазин Windows 8.xWindows 8.x Store apps, we do not recommend its use. Этот класс используется только в том случае, при разработке Переносимая библиотека классовPortable Class Library проекты, которые могут использоваться с Магазин Windows 8.xWindows 8.x Store приложений.Use this class only when you develop Переносимая библиотека классовPortable Class Library projects that can be used with Магазин Windows 8.xWindows 8.x Store apps. Для извлечения ресурсов из Магазин Windows 8.xWindows 8.x Store приложения, используют Windows.ApplicationModel.Resources.ResourceLoader вместо этого класса.To retrieve resources from Магазин Windows 8.xWindows 8.x Store apps, use the Windows.ApplicationModel.Resources.ResourceLoader class instead.

Для Магазин Windows 8.xWindows 8.x Store приложений, ResourceManager класс извлекает ресурсы из пакета ресурсов (PRI) индекс файлов.For Магазин Windows 8.xWindows 8.x Store apps, the ResourceManager class retrieves resources from package resource index (PRI) files. Один PRI-файл (файл пакета приложения PRI) содержит ресурсы для культуры по умолчанию и всех локализованных языков и региональных параметров.A single PRI file (the application package PRI file) contains the resources for both the default culture and any localized cultures. Использование программы MakePRI для создания файла PRI, из одного или нескольких файлов ресурсов, которые находятся в формате XML-ресурсов (.resw).You use the MakePRI utility to create a PRI file from one or more resource files that are in XML resource (.resw) format. Для ресурсов, которые включены в проект Visual Studio Visual Studio обрабатывает процесс создания и упаковки в PRI-файл автоматически.For resources that are included in a Visual Studio project, Visual Studio handles the process of creating and packaging the PRI file automatically. Затем можно использовать .NET Framework ResourceManager класс для доступа к ресурсам приложения или библиотеки.You can then use the .NET Framework ResourceManager class to access the app's or library's resources.

Можно создать экземпляр ResourceManager для объекта Магазин Windows 8.xWindows 8.x Store приложения так же, как и для классического приложения.You can instantiate a ResourceManager object for a Магазин Windows 8.xWindows 8.x Store app in the same way that you do for a desktop app.

Можно затем получить ресурсы для конкретного языка и региональных параметров, передав имя ресурса, который требуется получить для GetString(String) метод.You can then access the resources for a particular culture by passing the name of the resource to be retrieved to the GetString(String) method. По умолчанию этот метод возвращает ресурс для языка и региональных параметров, определяется текущий язык и региональные параметры пользовательского интерфейса потока, в которой был сделан вызов.By default, this method returns the resource for the culture determined by the current UI culture of the thread that made the call. Ресурсы для конкретного языка и региональных параметров также можно получить, передав имя ресурса и CultureInfo , представляющий язык и региональные параметры, ресурсом которого требуется получить для GetString(String, CultureInfo) метод.You can also retrieve the resources for a specific culture by passing the name of the resource and a CultureInfo object that represents the culture whose resource is to be retrieved to the GetString(String, CultureInfo) method. Если не удается найти ресурс для текущего языка и региональных параметров пользовательского интерфейса или указанного языка и региональных параметров, диспетчер ресурсов использует список возврата языка пользовательского интерфейса для поиска подходящего ресурса.If the resource for the current UI culture or the specified culture cannot be found, the resource manager uses a UI language fallback list to locate a suitable resource.

Конструкторы

ResourceManager() ResourceManager() ResourceManager() ResourceManager()

Инициализирует новый экземпляр класса ResourceManager со значениями по умолчанию.Initializes a new instance of the ResourceManager class with default values.

ResourceManager(String, Assembly) ResourceManager(String, Assembly) ResourceManager(String, Assembly) ResourceManager(String, Assembly)

Инициализирует новый экземпляр класса ResourceManager, который ищет ресурсы, содержащиеся в файлах с указанным корневым именем, в данной сборке.Initializes a new instance of the ResourceManager class that looks up resources contained in files with the specified root name in the given assembly.

ResourceManager(String, Assembly, Type) ResourceManager(String, Assembly, Type) ResourceManager(String, Assembly, Type) ResourceManager(String, Assembly, Type)

Инициализирует новый экземпляр класса ResourceManager, который использует указанный класс ResourceSet для поиска ресурсов, содержащихся в файлах с указанным корневым именем, в данной сборке.Initializes a new instance of the ResourceManager class that uses a specified ResourceSet class to look up resources contained in files with the specified root name in the given assembly.

ResourceManager(Type) ResourceManager(Type) ResourceManager(Type) ResourceManager(Type)

Инициализирует новый экземпляр класса ResourceManager, который ищет ресурсы в сопутствующих сборках, используя сведения из указанного объекта типа.Initializes a new instance of the ResourceManager class that looks up resources in satellite assemblies based on information from the specified type object.

Поля

BaseNameField BaseNameField BaseNameField BaseNameField

Указывает имя корневой папки файлов ресурсов, в которой класс ResourceManager ищет ресурсы.Specifies the root name of the resource files that the ResourceManager searches for resources.

HeaderVersionNumber HeaderVersionNumber HeaderVersionNumber HeaderVersionNumber

Указывает версию заголовков файлов ресурсов, которую текущая реализация ResourceManager может интерпретировать и создавать.Specifies the version of resource file headers that the current implementation of ResourceManager can interpret and produce.

MagicNumber MagicNumber MagicNumber MagicNumber

Содержит номер, используемый для идентификации файлов ресурсов.Holds the number used to identify resource files.

MainAssembly MainAssembly MainAssembly MainAssembly

Задает главную сборку, содержащую ресурсы.Specifies the main assembly that contains the resources.

ResourceSets ResourceSets ResourceSets ResourceSets

Содержит объект Hashtable, который возвращает сопоставление языков и региональных параметров с объектами ResourceSet.Contains a Hashtable that returns a mapping from cultures to ResourceSet objects.

Свойства

BaseName BaseName BaseName BaseName

Возвращает имя корневой папки файлов ресурсов, в которой класс ResourceManager ищет ресурсы.Gets the root name of the resource files that the ResourceManager searches for resources.

FallbackLocation FallbackLocation FallbackLocation FallbackLocation

Получает или задает местоположение, из которого извлекаются резервные ресурсы по умолчанию.Gets or sets the location from which to retrieve default fallback resources.

IgnoreCase IgnoreCase IgnoreCase IgnoreCase

Получает или задает значение, которое указывает, позволяет ли диспетчер ресурсов выполнять поиск ресурсов с учетом регистра методами GetString(String) и GetObject(String).Gets or sets a value that indicates whether the resource manager allows case-insensitive resource lookups in the GetString(String) and GetObject(String) methods.

ResourceSetType ResourceSetType ResourceSetType ResourceSetType

Получает тип объекта набора ресурсов, используемый диспетчером ресурсов для построения объекта ResourceSet.Gets the type of the resource set object that the resource manager uses to construct a ResourceSet object.

Методы

CreateFileBasedResourceManager(String, String, Type) CreateFileBasedResourceManager(String, String, Type) CreateFileBasedResourceManager(String, String, Type) CreateFileBasedResourceManager(String, String, Type)

Возвращает объект ResourceManager, который имеет ресурсы в конкретном каталоге, вместо просмотра манифеста сборки.Returns a ResourceManager object that searches a specific directory instead of an assembly manifest for resources.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetNeutralResourcesLanguage(Assembly) GetNeutralResourcesLanguage(Assembly) GetNeutralResourcesLanguage(Assembly) GetNeutralResourcesLanguage(Assembly)

Возвращает сведения, относящиеся к конкретному языку и региональным параметрам, для ресурсов основной сборки по умолчанию путем получения значения атрибута NeutralResourcesLanguageAttribute в указанной сборке.Returns culture-specific information for the main assembly's default resources by retrieving the value of the NeutralResourcesLanguageAttribute attribute on a specified assembly.

GetObject(String) GetObject(String) GetObject(String) GetObject(String)

Возвращает значение указанного нестрокового ресурса.Returns the value of the specified non-string resource.

GetObject(String, CultureInfo) GetObject(String, CultureInfo) GetObject(String, CultureInfo) GetObject(String, CultureInfo)

Получает значение указанного нестрокового ресурса, локализованного для указанного языка и региональных параметров.Gets the value of the specified non-string resource localized for the specified culture.

GetResourceFileName(CultureInfo) GetResourceFileName(CultureInfo) GetResourceFileName(CultureInfo) GetResourceFileName(CultureInfo)

Создает имя файла ресурсов для заданного объекта CultureInfo.Generates the name of the resource file for the given CultureInfo object.

GetResourceSet(CultureInfo, Boolean, Boolean) GetResourceSet(CultureInfo, Boolean, Boolean) GetResourceSet(CultureInfo, Boolean, Boolean) GetResourceSet(CultureInfo, Boolean, Boolean)

Извлекает набор ресурсов для определенного языка и региональных параметров.Retrieves the resource set for a particular culture.

GetSatelliteContractVersion(Assembly) GetSatelliteContractVersion(Assembly) GetSatelliteContractVersion(Assembly) GetSatelliteContractVersion(Assembly)

Возвращает версию, указанную атрибутом SatelliteContractVersionAttribute в заданной сборке.Returns the version specified by the SatelliteContractVersionAttribute attribute in the given assembly.

GetStream(String) GetStream(String) GetStream(String) GetStream(String)

Возвращает неуправляемый объект потока памяти из заданного ресурса.Returns an unmanaged memory stream object from the specified resource.

GetStream(String, CultureInfo) GetStream(String, CultureInfo) GetStream(String, CultureInfo) GetStream(String, CultureInfo)

Возвращает объект потока неуправляемой памяти из заданного ресурса, используя заданный язык и региональные параметры.Returns an unmanaged memory stream object from the specified resource, using the specified culture.

GetString(String) GetString(String) GetString(String) GetString(String)

Возвращает значение указанного строкового ресурса.Returns the value of the specified string resource.

GetString(String, CultureInfo) GetString(String, CultureInfo) GetString(String, CultureInfo) GetString(String, CultureInfo)

Возвращает значение строкового ресурса, локализованного для указанного языка и региональных параметров.Returns the value of the string resource localized for the specified culture.

GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
InternalGetResourceSet(CultureInfo, Boolean, Boolean) InternalGetResourceSet(CultureInfo, Boolean, Boolean) InternalGetResourceSet(CultureInfo, Boolean, Boolean) InternalGetResourceSet(CultureInfo, Boolean, Boolean)

Предоставляет реализацию для обнаружения набора ресурсов.Provides the implementation for finding a resource set.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ReleaseAllResources() ReleaseAllResources() ReleaseAllResources() ReleaseAllResources()

Сообщает диспетчеру ресурсов, что следует вызвать метод Close() на всех объектах ResourceSet и освободить все ресурсы.Tells the resource manager to call the Close() method on all ResourceSet objects and release all resources.

ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

Применяется к

Потокобезопасность

Данный тип потокобезопасен.This type is thread safe.

Дополнительно