NeutralResourcesLanguageAttribute Класс

Определение

Сообщает диспетчеру ресурсов язык и региональные параметры по умолчанию приложения. Этот класс не наследуется.

public ref class NeutralResourcesLanguageAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)]
public sealed class NeutralResourcesLanguageAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class NeutralResourcesLanguageAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)>]
type NeutralResourcesLanguageAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type NeutralResourcesLanguageAttribute = class
    inherit Attribute
Public NotInheritable Class NeutralResourcesLanguageAttribute
Inherits Attribute
Наследование
NeutralResourcesLanguageAttribute
Атрибуты

Примеры

В следующем примере используется простое приложение «Hello World» для иллюстрации использования атрибута NeutralResourcesLanguageAttribute для определения культуры по умолчанию или резервной культуры. Для этого требуется создание отдельных файлов ресурсов для языков и региональных параметров английского (en), английского (США) (en-US) и французского (Франция) (fr-FR) языка и региональных параметров. Ниже показано содержимое текстового файла с именем ExampleResources.txt для англоязычной культуры.

# Resources for the default (en) culture.
Greeting=Hello

Чтобы использовать файл ресурсов в приложении, необходимо использовать генератор файлов ресурсов (Resgen.exe) для преобразования файла из его текстового формата (.txt) в двоичный (.resources) формат следующим образом:

resgen ExampleResources.txt

При компиляции приложения файл двоичного ресурса будет внедрен в основную сборку приложения.

Ниже показано содержимое текстового файла с именем ExampleResources.en-US.txt, предоставляющего ресурсы для языковых и культурных стандартов английского языка (США).

# Resources for the en-US culture.
Greeting=Hi

Текстовый файл можно преобразовать в файл двоичных ресурсов с помощью генератора файлов ресурсов (ResGen.exe) в командной строке следующим образом:

resgen ExampleResources.en-US.txt ExampleResources.en-US.resources

Затем файл двоичного ресурса должен быть скомпилирован в сборку с помощью компоновщика сборок (Al.exe) и помещен в подкаталог en-US каталога приложения, выполнив следующую команду:

al /t:lib /embed:ExampleResources.en-US.resources /culture:en-US /out:en-us\Example.resources.dll

Ниже показано содержимое текстового файла с именем ExampleResources.fr-FR.txt, который предоставляет ресурсы для французской культуры (Франция).

# Resources for the fr-FR culture.
Greeting=Bonjour

Текстовый файл можно преобразовать в двоичный файл ресурсов с помощью ResGen.exe в командной строке следующим образом:

resgen ExampleResources.fr-FR.txt ExampleResources.fr-FR.resources

Затем файл двоичных ресурсов должен быть скомпилирован в сборку с помощью компоновщика сборок и помещен в подкаталог fr-FR каталога приложения, выполнив следующую команду:

al /t:lib /embed:ExampleResources.fr-FR.resources /culture:fr-FR /out:fr-FR\Example.resources.dll

В следующем примере представлен исполняемый код, который задает текущий язык и региональные параметры, запрашивает имя пользователя и отображает локализованную строку.

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

[assembly: NeutralResourcesLanguageAttribute("en")]
public class Example
{
    public static void Main()
    {
        // Select the current culture randomly to test resource fallback.
        string[] cultures = { "de-DE", "en-us", "fr-FR" };
        Random rnd = new Random();
        int index = rnd.Next(0, cultures.Length);
        Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(cultures[index]);
        Console.WriteLine($"The current culture is {CultureInfo.CurrentUICulture.Name}");

        // Retrieve the resource.
        ResourceManager rm = new ResourceManager("ExampleResources",
                                                 typeof(Example).Assembly);
        string greeting = rm.GetString("Greeting");

        Console.Write("Enter your name: ");
        string name = Console.ReadLine();
        Console.WriteLine($"{greeting} {name}!");
    }
}
Imports System.Globalization
Imports System.Resources
Imports System.Threading 

<Assembly:NeutralResourcesLanguageAttribute("en")>

Module Example
   Public Sub Main()
      ' Select the current culture randomly to test resource fallback.
      Dim cultures() As String = { "de-DE", "en-us", "fr-FR" }
      Dim rnd As New Random()
      Dim index As Integer = rnd.Next(0, cultures.Length)
      Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(cultures(index))      
      Console.WriteLine("The current culture is {0}", 
                        CultureInfo.CurrentUICulture.Name)       

      ' Retrieve the resource.
      Dim rm As New ResourceManager("ExampleResources" , GetType(Example).Assembly)
      Dim greeting As String = rm.GetString("Greeting")
      
      Console.Write("Enter your name: ")
      Dim name As String = Console.ReadLine()
      Console.WriteLine("{0} {1}", greeting, name)
   End Sub
End Module

Его можно скомпилировать с помощью следующей команды в Visual Basic:

vbc Example.vb /resource:ExampleResources.resources

или с помощью следующей команды в C#:

csc Example.cs /resource:ExampleResources.resources

Комментарии

В настольных приложениях атрибут NeutralResourcesLanguageAttribute сообщает диспетчеру ресурсов о культуре по умолчанию приложения и расположении его ресурсов. По умолчанию ресурсы внедрены в основную сборку приложения, и атрибут можно использовать следующим образом. Это утверждение указывает, что английская (США) локализация является культурой по умолчанию приложения.

[assembly: NeutralResourcesLanguage("en-US")]
<Assembly:NeutralResourcesLanguage("en-US")>

Можно также использовать NeutralResourcesLanguageAttribute атрибут, чтобы указать, где ResourceManager можно найти ресурсы культуры по умолчанию, указав UltimateResourceFallbackLocation значение перечисления в инструкции атрибута. Это чаще всего делается, чтобы указать, что ресурсы находятся в вспомогательной сборке. Например, следующее утверждение указывает, что английский (Соединенные Штаты) является языком по умолчанию или нейтральной культурой приложения и что его ресурсы находятся во вспомогательной сборке. Объект ResourceManager будет искать их в подкаталоге с именем en-US.

[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
<Assembly:NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)>

Tip

Мы рекомендуем всегда использовать атрибут NeutralResourcesLanguageAttribute, чтобы задать культуру по умолчанию для вашего приложения.

Атрибут выполняет две роли:

  • Если ресурсы языка и региональных параметров по умолчанию внедрены в основную сборку приложения, и ResourceManager должен извлекать ресурсы, принадлежащие тому же языку и региональным параметрам, что и язык и региональные параметры по умолчанию, ResourceManager автоматически использует ресурсы, расположенные в основной сборке, вместо поиска во вспомогательной сборке. Это позволяет обойти обычную проверку сборки, улучшить производительность поиска для первого загружаемого ресурса, а также сократить рабочий набор. См. Упаковка и развертывание ресурсов, чтобы узнать, какой процесс ResourceManager используется для поиска файлов ресурсов.

  • Если ресурсы культуры по умолчанию расположены в сателлитной сборке, а не в основной сборке приложения, атрибут NeutralResourcesLanguageAttribute указывает культуру и каталог, из которого среда выполнения может загружать ресурсы.

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

Имя Описание
NeutralResourcesLanguageAttribute(String, UltimateResourceFallbackLocation)

Инициализирует новый экземпляр NeutralResourcesLanguageAttribute класса с указанным конечным резервным расположением ресурса.

NeutralResourcesLanguageAttribute(String)

Инициализирует новый экземпляр класса NeutralResourcesLanguageAttribute.

Свойства

Имя Описание
CultureName

Возвращает имя языка и региональных параметров.

Location

Возвращает расположение для класса, используемого ResourceManager для получения нейтральных ресурсов с помощью резервного процесса ресурса.

TypeId

При реализации в производном классе получает уникальный идентификатор для этого Attribute.

(Унаследовано от Attribute)

Методы

Имя Описание
Equals(Object)

Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
GetHashCode()

Возвращает хэш-код для этого экземпляра.

(Унаследовано от Attribute)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

Имя Описание
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

(Унаследовано от Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Извлекает сведения о типе объекта, который можно использовать для получения сведений о типе для интерфейса.

(Унаследовано от Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

(Унаследовано от Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к свойствам и методам, предоставляемым объектом.

(Унаследовано от Attribute)

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

См. также раздел